渗透测试者如何烹饪? 数字安全实习生的入学测试

Digital Security中的Hack 2019夏季已经全面展开,这意味着该是时候说出我们如何招募人员了。



在关于如何选择年轻专家进行“ Shack Summer of Hack 2019”(特别是安全审计部)实习的大量,有趣的材料之下。

考虑一下,在我们看来,一个五分之一学期的人应该知道什么才能成功地完成工作。

让我们分析一下我们折磨着这些家伙的许多艰巨任务,包括代表其中一个。

选择安全审核部门实习中最有趣的部分是我们的个人资料。 每年我们都会汇聚整个部门,讨论我们认为对实际安全领域的现代专家需要哪些技能,回顾今年必须解决的最有趣的任务,并写下一些知识领域,没有这些知识很难想象成功的审计师。 当所有的笑话都被开玩笑并且讲出故事后,底线仍然是一系列想法。

今年,我们遵循以下要求:

  • 设备Web应用程序的基本知识及其攻击;
  • 基于浏览器的保护和访问控制机制的基本知识(是的,相同的SOP和CORS,如果没有它们);
  • 基本的代码阅读能力以及了解其背后逻辑的能力;
  • 了解计算机网络的运行及其中的路由;
  • 具有类似Linux的系统的经验;
  • 不怕陌生技术的能力。 谷歌搜索和系统化收到的信息的能力;
  • 还有一小撮Android(虽然不是必需的,但这是我们的一时冲动)。

提出问题后。 我们从访谈中提出的问题中部分地借鉴了它们,但是有一半以上是专门为这份问卷准备的。 我们的专家花了自己的时间准备流量转储,争论如何更好地提出问题,以及哪些漏洞“过于具体,为什么要折磨学员”。 对于这种热情,我们不禁摘下帽子(当然是白色的)。

每个问题的分析包括两个部分。 第一部分是我们其中一位受训者的答案-Danila Korgik_0 Leontyeva(他是出版物的作者),第二部分是堆积在问卷中的专家的意见。



哈Ha!

首先,有点抒情离题。
更具体地说,“我如何找到有关Summ3r 0f h4ck的信息”。
我听到了Denis RybinIlya Bulatov在RuCTF2019会议上的演讲中宣布实习的消息。

从字面上看,经过4天,哈勃(Habr)上发布了有关实习机会的帖子

当天晚上,我在安全审核部门打开了任务,使自己沉浸在工作中。 今天,我将与读者分享我必须面对的困难以及可以提供的解决方案。



1号 php源代码


检查代码。 描述您看到的缺陷以及如何修复它们。



作业解析
第4行-使用md5哈希。
问题-使用hashcat可以在合理的时间内对md5进行残酷的处理。
如何解决?

使用更多的“资源密集型”哈希算法。
在这种情况下,您必须完全拒绝用户cookie,并将所有逻辑绑定到phpsession。

第5行-PostgreSQL注入。
如何解决?
使用准备好的语句。
执行准备好的语句以验证登录

$query = "SELECT username FROM login WHERE username=?"; $stmt = $conn->prepare($query); $stmt->execute(array($username)); $username = $stmt->fetchColumn(); if($username == FALSE) { die(" !"); } 

11行-一些失败的决定。

  1. 会话寿命过长。 一年很多。 如果成功劫持了cookie,则攻击者可能会长时间访问用户帐户。
  2. 缺少httpOnly标志。 如果设置为TRUE,则只能通过HTTP协议访问cookie。 也就是说,在这种情况下,Cookie将无法用于JavaScript之类的脚本语言。
  3. 没有Cookie哈希。
  4. 缺少设置安全标志。 安全标志指示应通过安全HTTPS连接从客户端发送cookie。 如果设置为TRUE,则只有在建立安全连接后,客户端的cookie才会发送到服务器。

如何解决?
默认情况下,在php中,会话生存期只有24分钟,让我们实现它。
设置安全标志httpOnly。

在这种情况下,您应该拒绝奇怪的用户cookie,并将所有逻辑绑定到phpsession。

18行-XSS(英语跨站点脚本-“站点脚本”)。
如何解决? 将所有可能的字符转换为相应的HTML实体。

 $query = htmlentities($query, ENT_QUOTES, "UTF-8"); 

我们将明确指出编码方式,以避免将其替换为UTF-7。

 header("Content-Type: text/html; charset=utf-8"); 

第20行-身份验证系统和会话存储的缺陷。

问题-如果在cookie用户中设置以base64编码的用户ID,则可以登录到他的帐户!

如何解决? 在授权用户时,我们将会话记录在数据库中,而在安装会话时,我们将检查其在数据库中的存在。

  $query = "SELECT sessions FROM login WHERE sessions=?"; $stmt = $conn->prepare($query); $stmt->execute(array($_COOKIE["user"])); $session = $stmt->fetchColumn(); if($session == TRUE) { do_login($_COOKIE["user"]); } 


专家评论D:
问卷与未来的实习生会面的第一个问题是主要的和众所周知的网络漏洞。 唯一的困难是需要在PHP的源代码中查看它们。 但是,没有人将任务设置为“隐藏错误”。

以下是可以按照检测频率顺序在此列表中检测到的漏洞的列表:

即使远离网络的候选人注意到使用MD5算法的密码哈希 。 但是,也存在一些有趣的细微差别,例如,许多候选人使用了​​非常错误的术语,试图用自己的话语来描述问题。 “算法漏洞”,“单向函数”,“冲突的存在”和其他奇怪的变化进入了战斗,经过仔细研究,发现它们不过是一组无法揭示本质的大字眼。 当然,在这里我们参加了一次会议,并没有发现那些正准备踏上学习信息安全智慧之路的人们的缺点。 要获得“抵消”,提及威胁就足够了,以至于在破坏数据库的情况下,攻击者可以在可接受的时间内整理出md5哈希值,并以清晰的形式接收密码(或等效字符串)。 而且,当然,许多人提到基于彩虹表的使用缺乏盐和蛮力。 我们也对此类评论持肯定态度,尤其是如果受访者解释了这是威胁的原因。

潜在的SQL注入。 很难添加一些东西; 在形成对数据库的调用时,将用户输入的登录名和密码直接与请求连接在一起。 如果在此阶段不太可能操作密码值(从中获取哈希值),那么对于潜在的攻击者而言,向用户名中注入密码将不会很困难。

输出不必要的调试信息,从而导致XSS攻击。 通过仔细阅读清单,您可以注意echo调用,该调用以页面上的HTML注释向数据库显示生成的请求。 当然,对页面的其他信息的这种结论完全是可选的,并且很可能在进行测试后被开发人员完全忘记了。 这样的附加信息对攻击者非常有益,并且可以更好地了解应用程序的工作方式。 但是,不幸的是,这只是麻烦的一半。 事实是,攻击者可以操纵查询变量的内容,并且在将其内容显示给用户之前无法对其进行过滤或转义-存在潜在的XSS攻击。 但是,由于strupupper功能的位置不佳,其开发可能仍然令人头疼。 攻击者注入的向量将是大写的,并且如果HTML标记不存在这种问题,那么Javascript就会受到这种冒犯。 可以使用浏览器控制台轻松验证。



好吧,至少,显然,攻击者将不得不转向所谓的“无脚本攻击”或复杂的过滤器绕过技术(在这种情况下,JSFUCK会这样做),因此存在安全风险的事实并不能消除这一点。

会话管理机制的逻辑错误是任务中最有趣的部分。 它的发现不仅需要逐行读取源代码,还需要了解整个列表的逻辑。 通过注意到“记住我”块中包含base64编码用户ID的cookie的设置,可能会感觉出了问题。 对这种机制的逻辑的进一步分析使我们想到:“事实证明,知道或通过id的攻击者可以登录任何帐户而无需输入用户名和密码?!”。 是的,的确,攻击者可以独立生成一个cookie用户,并为其分配由base64编码的任何id值。 使用不带用户名和密码的cookie发送请求将触发do_login函数并登录到其他人的帐户。

考生的回答中提到这四个漏洞直接影响了他们的分数。

但是,很大程度上取决于响应的质量。 提到纠正情况的方式,对影响攻击可行性的其他因素进行评论,使用正确的术语以及构建思想的能力,对其他弱点或潜在威胁的评论-所有这些使我们感到很高兴,并导致最终评级提高。




2号 重量


在研究Web应用程序时,您发现该应用程序使用JWT令牌作为授权。

您会看到哪些安全问题,会进行哪些检查?

JWT令牌:

 eyJhbGciOiJOb25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6InNla2EiL CJpYXQiOjE1MTYyMzkwMjIsInJvbGUiOiJub2JvZHkiLCJpc0FkbWluIjoiRmFsc2UiLCJwYX Nzd29yZCI6IjFkMDBjYUgifQ.F7Y1mCAmg5-QFok-rkpLdwe8prCyiKsCyJ-3Z5f7luI 

作业解析
Dan JSON Web令牌(JWT)。
它的结构-> [base64url(HEADER)]。[Base64url(PAYLOAD)]。[Base64url(SIGNATURE)]
[base64url(HEADER)] = eyJhbGciOiJOb25lIiwidHlwIjoiSldUIn0
base64url解码-> {“ alg”:“无”,“ typ”:“ JWT”}
可以立即注意到以下事实:没有使用签名的签名算法(“ alg”:“ None”)。 一些JWT库不支持“无”算法,即签名算法。 当alg标头为“ none”时,服务器端将不执行签名验证。
也就是说,您可以在base64url中写入任何有效负载,并且其签名不会得到验证。
这使我们可以创建具有管理员权限的用户。

同样,有效负载部分不使用aud这样的标头(定义了JWT令牌所针对的接收者)和exp(令牌的生存期)的事实简化了我们的生活。

估计有效载荷
eyJhbGciOiJOb25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6ImhhY2siLCJpYXQiOjE1MTYyMzkwMjIsInJvbGUiOiJub2JvZHkiLCJpc0FkbWluIjoiVHJ1ZSIsInBhc3N3b3JkIjoiaGFjayJ9

base64url解码有效载荷-> {“ sub”:“ 1234567890”,“ name”:“ hack”,“ iat”:1516239022,“ role”:“ nobody”,“ isAdmin”:“ True”,“ password”:“ hack »}

专家评论D:
在审核员的工作中,常常必须应对新技术,理解新技术的能力非常重要。 将问卷中的这个问题包括在内,我们认为除了名称之外,大多数候选人几乎都没有听说过JWT代币的技术。 因此,这个问题首先是针对从公共资源搜索和分析信息的能力。 结果,一个在“ JWT”和“ jwt漏洞”的请求下错过了Google发行的人可能会得出以下结论:

1.此令牌没有签名算法,因此攻击者能够修改令牌内的任何字段,JWT令牌的概念并未对此进行假设。

2.令牌内的字段以明文形式包含用户的密码;在令牌中存储此类信息至少是一种不好的做法。 在大多数情况下,您可以拒绝这样的决定,从而提高安全性。

3.记住缺乏签名以及我们修改令牌内字段的能力,因此可以合理地假设更改isAdmin的值可以将我们的特权增加为管理员特权。

4.很少有人在其答案中提到的另一个有趣的想法涉及以下事实:在JWT令牌的字段中转移用户输入的能力。 在正常情况下,攻击者无法以任何方式影响令牌中的数据,这意味着开发人员经常可以忽略处理程序代码中其他检查的引入。 这是一个简单的主意:但是让我们尝试不通过GET / POST参数而是通过令牌字段进行经典攻击。 这会产生意想不到的好结果。 在评估此问题和其他问题时,我们高度赞赏这种具有正确行动依据的创新方法。

许多候选人在他们的答案中都简要介绍了JWT令牌的结构和使用方式,这对我们来说很有趣,但首先,我们评估了有关安全性的答案的各个方面。




3号 CORS / CSRF / IDOR / ???



在Web应用程序中,使用以下请求更改用户密码(请参阅选项1)。 您看到哪些潜在的安全威胁? 您将执行哪些检查? 如果发生以下行为,情况是否会发生变化(请参阅选项2)? 解释你的答案。

作业解析
选项1
“您看到哪些潜在的安全威胁?”

1)缺少访问控制。
如果未检查用户密码更改请求的号码,则可以为系统中的任何注册用户更改密码。
如何解决? -从数据库中匹配JSESSION和请求的id-shnik。

2)进行CSRF攻击的能力
我们将授权用户引诱到我们控制的主机上,并在请求后代表受害人进入example.com更改密码。
如何解决? -添加CSRF令牌。

选项2
“您看到哪些潜在的安全威胁?”
CORS政策中的缺陷。
建议您将Access-Control-Allow-Origin标头列入白名单。

如何解决? --

1)修改.htaccess文件

 <ifmodule mod_headers.c> Header always set Access-Control-Allow-Origin: "https://whitelist.domain.ru" Header always set Access-Control-Allow-Methods "PUT" </ifmodule> 

2)PHP

 <?php header('Access-Control-Allow-Origin: “https://whitelist.domain.ru”); header('Access-Control-Allow-Methods: PUT'); ?> 

“情况会随着以下行为而改变吗?”

是的 由于在第二种情况下,使用了PUT请求,这一点很重要,因为使用PUT请求会使CORS请求“困难”,这又完全剥夺了我们进行CSRF攻击的机会+缺少诸如Access-Control-Allow-Credentials这样的标头:true剥夺了我们与其他http标头和用户cookie一起发送的能力。

专家评论一:
让我们按顺序考虑在给定查询中可见的主要问题是什么:

1)确实,由于在请求中看到了用户的数字标识符“ 10012”,因此第一步是检查是否可以更改其他用户的密码? 指定其他人的ID是否足够?
IDOR类的漏洞相当容易利用,并且通常具有很高的严重性。

2)更改密码的请求是通过POST方法发生的,未观察到CSRF令牌,并且内容类型为“文本/纯文本”。 可能会伪造这样的请求。

因此,为了更改受害者的密码,攻击者只要说服他们访问“恶意”链接就足够了。

3)在响应标头中,服务器显示所用软件的版本 。 可以将其称为“漏洞”,但最好将其隐藏起来-攻击者可以轻松地在上面找到众所周知的1天漏洞,再加上所用软件的价值,可以大大简化进一步攻击的计划。

4)我们很高兴看到这样的句子:“如果将数据格式从JSON更改为XML会发生什么?”

事实是,现代框架很聪明,杂乱无章,可以处理不同格式的数据。 而且,在解析XML时,通常会允许使用危险的XXE漏洞。 在其帮助下,入侵者可以“进入”内部网络,可以从服务器读取配置文件,并偶尔执行RCE。

5)我还想看到“为什么更改密码时不检查旧知识 ?”这样的说法。

至于“ Variant No. 2”,其中有一个“陷阱”-这里使用了CORS头,并且请求的Content-Type已经设置为“ application / json”。

绝大多数候选人犯的错误是以下形式的答案:“-这是Allow-Origin中的星号,这意味着您可以从任何站点发送请求!”

不,你不能。 首先,缺少Allow-Credentials:True标头,这意味着浏览器应“使用cookie”执行请求,因此该请求将是匿名的,没有会话。 其次,即使存在这样的标题,浏览器仍将仅由于“星号”而禁止发送cookie。 禁止将它们组合使用,并忽略浏览器。



4号 网络转储


想象一下,您进入了公司的内部网络,并拦截了下面附加了转储的流量。 描述您将尝试进行哪些攻击以及使用哪些工具?

转储: yadi.sk/d/qkLcfwSCzdxcwg

作业解析
1)LLMNR欺骗<
本地子网上的攻击者可以侦听并响应广播消息,声称所请求的主机名是其自己的IP地址。
这导致以下事实:发出请求的客户端计算机已连接到攻击者的计算机,并且可能会根据协议尝试进行身份验证。

使用的实用程序是Intercepter-NG,它是githab VindicateTool上的一个项目。

2)HSRP滥用。
有问题的-当“ preempt”参数设置为1时,由于优先级较高,攻击者有机会“挤出”其他路由器。 将HSRP发送到多播后,受控路由器将成为网络中的主路由器(活动路由器),所有流量都将通过该路由器。 实际上,我们是来实现mitm攻击的。

对于此攻击媒介,我们需要知道组和密码。
从提供给我们的流量转储中,我们可以识别出该组(即-3)和密码。 在本例中,密码为默认密码-cisco。

使用的工具是耶尔森氏菌,船cap。


X专家评论:
该问题的目的是确定受训人员对进行MitM攻击的现代(而不是现代)技术的熟悉程度。 让我们看一下基于现有流量转储的潜在方案:

1)ARP欺骗
ARP欺骗是实施MitM攻击的最古老,最简单的方法。 它包含向主机A发送免费ARP请求。

主机B的IP地址是IP地址,我们的MAC地址是MAC地址。 这样的请求使您可以修改主机A上的ARP表,从而在尝试联系主机B时强制其向我们的设备发送请求。主机B通常是默认网关。

推荐工具:bettercap,arpspoof

2)LLMNR,NBNS欺骗
链接本地多播名称解析和NetBIOS名称服务是用于解析本地网络上的主机名的协议。 与DNS协议不同,没有专用的服务器来存储所有信息;而是将请求广播到网络上的所有主机,如果请求中的主机名与设备的主机名匹配,它将发送响应。

正如答案中正确指出的那样,攻击者可以通过在响应中发送其IP地址来响应此类请求,这将导致以下事实:受害人将来会联系攻击者的设备,而不是其主机名出现在请求中的设备。 此外,攻击者可以向受害者请求NTLM身份验证,这会使受害者设备发送NTLM哈希,该哈希可以进一步用于暴力破解。

推荐工具:响应者

3)WPAD欺骗
WPAD欺骗可以归因于LLMNR和NBNS欺骗的特殊情况。 Web代理自动发现协议用于自动配置HTTP代理服务器。

设备发送带有wpad主机名的LLMNR / NBNS请求,接收相应的IP地址,并尝试通过HTTP访问wpad.dat文件,该文件存储有关代理设置的信息。

结果,攻击者可以执行LLMNR / NBNS欺骗,并向受害者提供其wpad.dat文件,结果,所有HTTP和HTTPS通信都将通过攻击者。

推荐工具:Responder,mitm6

4)路由器广告
从转储中可以看到,网络上有启用了IPv6的设备。 在网络上时,您可以尝试将消息发送到受害IPv6路由器广告,以更改默认网关或DNS服务器。

路由器公告(RA)消息是SLAAC(无状态地址自动配置)机制的一部分,对于不使用DHCPv6服务器或与之结合使用而自动获得网络上的IPv6地址,这是必需的。 这是通过定期向路由器发送多播RA消息来实现的,其中包含默认网关地址,网络前缀,DNS服务器地址,域前缀。

推荐工具:原始数据包

5)DHCP欺骗
同样,在转储中,每隔一定时间重复来自同一设备的DHCP发现请求。 您可以得出有关该网络中没有DHCP服务器的结论,并通过将受害者指定为设备的默认网关来响应下一个Discover请求。

推荐工具:耶尔森氏菌

6)HSRP欺骗
此外,可以在转储中看到HSRP数据包。 热备路由器协议可以提高充当默认网关的路由器的可用性。 IP-, -. Hello - , . HSRP, , , HSRP .

: Yersinia

7) STP-
Spanning Tree Protocol L2- . BPDU-, , . BPDU-, , , , , , , , STP, , .

: Yersinia



№5. NGINX config



- nginx. , ?

: pastebin.com/nYp7uVbB

nginx, :
1) 86 , http X-Managed secured, nginx /management/
2) API 70 105 .


J:
, . nginx , web-, nginx web- /. nginx , , , .

, , , . , . , , .

gixy .

Gixy 4 :

1) Alias travesal:

80 :

 location /static { alias /prod_static/; } 

- , . : //host/static../etc/passwd. - alias: , /static, /prod_static/, : /prod_static/../etc/passwd, /etc/passwd. alias traversal

2) Http Splitting (CRLF injection)
nginx , , . HTTP-.
: github.com/yandex/gixy/blob/master/docs/ru/plugins/httpsplitting.md

3) -
75 «rigin» . , - , , production.host.evil.com .
: github.com/yandex/gixy/blob/master/docs/ru/plugins/origins.md

4) add_header
nginx : add_header, , , , . CSP .
: github.com/yandex/gixy/blob/master/docs/ru/plugins/addheaderredefinition.md


, gixy, . :

1) 17 default_type text/html. : , , nginx Content-Type, default_type. , Content-Type: text/html. HTML- , , , XSS- .

2) POST-
29-30 , . , “” POST-. . 但是! SSRF , , , , .

3) php-fpm
48 , FastCGI- unix , 9000. , , . , PHP-.

4) “” CSP
production.host Content-Security-Policy, Javascript, .

5) “” CORS
76-77 CORS, , cookie .

6) , 86 . secured /managed.

7) , , , -. , , , /user/{userid} IDOR.

, , , .



№6. Linux Permissions


Linux ?

~ () Debian
C ( , /etc/passwd).
, ftp , ~.

:
* root@server:~# ls ~ftp
* welcome.msg
:
* root@server:~# cat ~ftp/welcome.msg
* Welcome, archive user %U@%R!
, : :
* root@amorale:~# echo ~ftp
* /srv/ftp


K:
, :

  • ACL
  • capabilities

, , :
“ , root” .

, Linux/Unix .
, “ ” — .
, , funky_test.txt

 -rwxrw-rx 1 alice interns 12  4 13:00 funky_test.txt 

, Linux/Unix :

  • - — “rwx” alice
  • — “rw” interns
  • — “rx” others

read, write, execute .

, — , :

  • , read
  • , read
  • read

, read . , execute .

, .

, , . :

1. , ls.

2. — POSIX Access Control Lists .

c .


1

, alice interns . funny_test.txt :

 $ whoami alice $ id uid=1001(alice) gid=1001(alice) groups=1001(alice),1002(interns) $ ls -la ----rwx--- 1 alice interns 12  4 13:00 funky_test.txt $ cat funky_test.txt cat: funky_test.txt: Permission denied $ 

2

funky_test.txt 604. bob , interns :

 $ whoami bob $ id uid=1002(bob) gid=1003(bob) groups=1003(bob),1002(interns) $ ls -la funky_test.txt -rw----r-- 1 alice interns 12  4 13:00 funky_test.txt $ cat funky_test.txt cat: funky_test.txt: Permission denied 


alice , . , permission_denied :

 $ id uid=1001(alice) gid=1001(alice) groups=1001(alice),1002(interns) $ ls -la ----rwx--- 1 alice interns 12  4 13:00 funky_test.txt $ chmod 777 funky_test.txt $ ls -la funky_test.txt -rwxrwxrwx 1 alice interns 12  4 13:00 funky_test.txt $ cat funky_test.txt secret_pass 

bob .


, « », :

  • ID effective UID
  • GID effective GID
  • others.


, — , “” , , , :

  • , , others
  • , , others

.

POSIX Access Control Lists


— /. , ACL, , “ +

POSIX ACLs, — , . ACL, .

例子

. alice funky_test.txt ,

 -rwxrw-rx 1 alice interns 12  4 13:00 funky_test.txt 

ACL. getfacl , , ACL, , ls .

 $ getfacl funky_test.txt # file: funky_test.txt # owner: alice # group: interns user::rwx group::rw- other::rx 

, ACL . , bob :

 setfacl -mu:bob:rwx funky_test.txt 

+

 ls -l funky_test.txt -rwxrwxr-x+ 1 alice interns 12  4 13:00 funky_test.txt 

:

 getfacl funky_test.txt # file: funky_test.txt # owner: alice # group: interns user::rwx user:bob:rwx group::rw- mask::rwx other::rx 

ACL . :

  1. . effective UID effective GID — . , ACL, . , , , , , .
  2. ACL mask , ACL owner, group, others


, , , — .

, ACL, , :

  • ACL, ;
  • , ACL, .





№7. Network Dump II


. , , , .

: yadi.sk/d/e3gNme4MBo6tFQ

— .
, .
, .



, SMB-, , , . SMB object list (File -> Export objects -> SMB… ).

— .


( SMB object list)


(NotTruePass.jpg)

.

“” TCP-… . . :(

, . .


( desktop.ini)

“” . , NTLM, , , NTLM “Pass-the-hash”. «-».

“” :

 1)User - 1 Account: IEUser Domain: WIN7 Host: WIN7 hex dump session key - 49 0c 38 3e f8 eb 63 88 79 0f 62 84 09 84 d2 dc 2) User - 2 Account: winwin Domain: WIN7 Host: WIN7 hex dump session key - 8d f6 1b 35 79 a3 78 d3 2e 81 09 f1 95 4f 71 0a 3) User - 3 Account: 192.192.192.29 Domain: WIN7 Host: WIN7 hex dump session key - c3 19 e0 21 1b e2 63 c6 03 9e e7 38 1b 56 f0 d1 

. MSEDGEWIN10.

— :

1) SMB Relay.
.
, MITM-
(. ).

— , , .
. , .

, , , .

2) NTLM Relay.
, NTLM-.

, NTLM-.

.
, , , .

K:
, , :

  1. ( )
  2. — /
  3. ,

, :


Wireshark, Protocol Hierarchy Statistics Conversations .

Protocol Hierarchy Statistics — .



Conversations — , .





:

  1. (60%) — TCP, , , SMB. Protocol hierarchy SMB 40%, TCP, , 20% SMB.
  2. 192.192.192.128 192.192.192.129. SMB .



.

— SMB.

, — wireshark — ExportObject .
tcp stream . , , tcp stream , . , .

, , , , . , .

.
SMB .

NTLM- “ntlmssp”. info , 3 :



, .







Net-NTLMv2-, :

  • challenge
  • response

Net-NTLMv2 hashcat .

, WIN7\winwin WIN7\192.192.192.129 — , . WIN7\IEUser — , , , , , SMB.

Net-NTLM , , Wireshark. , PCredz (https://github.com/lgandx/PCredz)



IEUser ( ) hashcat.



, .

6, , SMB/NTLM , DNS .

, , NT LM NTLMv1 (Net-NTLMv1) , NTLMv2 (Net-NTLMv2) ( ).

- NT LM NTLM , NTLM NTLMv1 NTLMv2 . , . .

, NTLMv1/NTLMv2 — challenge-response . , .

NT LM — “ ” — .

:

  • PassTheHash — , , . 但是 , NT . PassTheHash NTLMv2 — . , “” , , .
  • NTLM Relay — , , NTLM. , .
  • Spoofing, Windows: LLMNR, NetBios
  • : MS17-010, / , .



:

  • ( )
  • ,
  • eternalBlue
  • NTLM relay
  • NTLM relay — SMB
  • , (ARP-spoofing, DNS )




№8. SSH Pivoting Tricks



(10.0.10.0/24), SSH Linux- (10.0.20.5) (10.0.20.0/24). , . , , // Linux-.

, , :

nmap

?

:

1) ping.
-> ping -b 10.0.20.255
ping , , .
, .
.
, CentOS 7.
.


( )

, . :(



2) ARP- .
->
Debian — arp-scan --interface=/* */ 10.0.0.0/16
Linux arp, ( Debian) - , arp-scan.
arp-scan, , , .

KryaKrya:
, , , Pivoting. , , , , , .

, ping , ARP- (arp -a), (route). , netcat (nc -h), , (nc -vnz 10.0.20.3 0-1000). , , , , , , - bash, python .

— SSH-, SOCKS- SSH, .
ssh -D 1337 user@10.0.20.5 -f -N

. nmap SOCKS- proxychains .

proxychains nmap 10.0.20.0/24
nmap 10.0.20.0/24 --proxy socks4://10.0.20.5:1337

nmap - SOCKS-. SYN- ( nmap ) SOCKS-, SOCKS- TCP- , SYN- , SYN, SYN ACK. CONNECT- (-sT), nmap SOCKS-.

nmap -sT 10.0.20.0/24 --proxy socks4://10.0.20.5:1337

, - , , . , Linux-, nmap -sT , , , , , , .



№9. Android SSL pinning bypass


Android. , HTTPS.

1) , HTTP .

2) , SSL-pinning, ?

«, HTTP-.»

.
proxy host wifi.

Android , , .

— ( ) — ( , ).
, MITM, Android 6.0, , .

6.0, .

« , SSL-pinning, ?»

, SSL-pinning.

SSL-pinning — , , «» .

HTTPS-, , «». , .

, MITM-, .

, , , .

— Frida.
Frida — Dinamic Instrumentation Toolkit, , .
, Frida Javascript.
Frida , , , «True» «False», .

Frida:

1. , . -.

2. Frida. Root.

.
APK- . , , .
. apk META-INF .

“” APK-.
APK smali Java, , .
, , .


I:
, MITM HTTPS .

, Proxy WiFi. ProxyDroid, iptables .

, Root , , ?

SSL-Pinning, , , “Frida+Objection”. , :)



№10. ?


, .

“ ”. , , dns-rebinding.

. 感谢您的关注!



Digital Security

, .
3 ( - ). 0 5 2.5, 3.1337.

. , 50 . , “ ” - )

. 29 , 43.5. 24% .

:



, , , , , . , , . .

, , , , .

, , :



( !), , , , “ ”.

- , , . , , Summer of Hack 2019.

, . .

Source: https://habr.com/ru/post/zh-CN461077/


All Articles