Intercepter-NG 0.9.10发布:网络渗透与中间人攻击新特性详解

Intercepter-NG 0.9.10版本带来多项重大更新,包括网络扫描增强、TLS暴力破解支持、流量篡改限制、HSTS欺骗技术、SSL中间人攻击优化、组策略劫持攻击及针对iOS设备的社交工程攻击向量等关键技术改进。

拦截全球!Intercepter-NG 0.9.10发布

2015年7月29日

简介

非常高兴推出Intercepter-NG 0.9.10新版本,该版本显著扩展了工具的应用范围。本文将不以枯燥的新功能列表形式呈现,而是描述新的攻击向量,包含技术细节和黑客故事元素。让我们开始吧…

网络扫描

一如既往进行了许多修复和小改进,无需一一列举。经常使用该工具的用户知道,网络扫描模式特别是Smart Scan功能是主要模式之一。除了熟悉的IP和MAC地址、网卡制造商和操作系统信息外,现在还增加了计算机名称输出。

在同一时间段内,现在还可以获取Netbios名称或iOS设备名称。后者使用基于Apple Bonjour协议的MDNS协议进行解析。所有获取的名称现在保存到缓存文件中,如果在后续扫描中由于某种原因未动态获取主机名信息,则将从缓存中获取。这里还可以提到新增的Auto ARP Poison功能,该功能在专家设置中启用。在自动毒化模式下,只需将1个主机添加到目标列表,Intercepter将自动以特定间隔扫描网络并自动添加新目标。

暴力破解模式

此模式增加了对SMTP和POP3协议的TLS支持,以及TELNET认证暴力破解。现在发生超时时,活动线程将从同一位置重新启动,暴力破解过程继续。新增Single Mode,指示每个新的L/P对应关系应通过建立新连接进行检查,这对某些协议可以提高工作速度。工作日志保存在brute.txt中。

流量篡改

多次收到实现流量替换功能的请求,这些请求得到了关注,但不要过早高兴。对于反问"您具体为什么需要此功能?",一些用户难以回答或说只是为了玩笑更改web流量中的词语。为了避免向每个开玩笑者解释为什么结果并不总是符合预期,只能替换相同大小的数据,不改变数据包长度。该限制完全与技术实现问题无关,分割以太网帧并重新计算相应TCP字段没有任何困难。一切取决于应用层协议。以HTTP为例。

假设浏览器打开site.com/file.txt,其中包含字符串"12345"。响应GET请求,服务器将返回HTTP头,其中指定传输数据的长度—Content-length: 5。如果我们将"12345"替换为"12356"会发生什么?浏览器将只下载5字节,丢弃添加的"6",如果我们减小数据大小,将"12345"替换为"1234",浏览器将只获得4字节并等待服务器再发送1字节,直到连接因超时而断开。这正是设置此大小限制的原因。可以替换文本数据和二进制数据,二进制模式的语法与C语言相同—"\x01\x02\x03"。如果需要在HTTP流量中进行替换,必须在设置中启用"Disable HTTP gzip encoding"选项。

HSTS欺骗

如承诺的那样,现在有了进行SSL Strip时绕过HSTS的方法。绕过技术相对简单,但实现中存在特定复杂性,因此不应期望特殊结果。以使用Chrome浏览器的Yandex邮件为例。如果访问ya.ru,右上角会有https链接"Войти в почту",SSL Strip很容易处理。接下来将打开授权表单,其中通过POST方法将数据发送到passport.yandex.ru。即使"剥离"了https,授权仍将通过SSL进行,因为主机passport.yandex.ru已包含在Chrome的预加载列表中。为了最终拦截数据,我们需要将主机名passport.yandex.ru替换为其他名称,以便浏览器不检测到此资源应严格通过安全连接访问。例如,可以将passport.yandex.ru替换为paszport.yandex.ru,这种情况下数据将以明文形式发送到更改的域名。但由于paszport.yandex.ru域名不存在,还需要进行DNS欺骗,即客户端在解析paszport.yandex.ru时应获得来自passport.yandex.ru的原始IP地址。此过程已自动化,在攻击期间不需要用户额外干预。唯一需要的是预先在misc\hsts.txt中编制替换列表。默认情况下,那里有几条yandex、gmail、facebook、yahoo的记录。重要的是要理解,如果用户在浏览器中输入facebook.com,此绕过技术不允许拦截会话或授权,因为浏览器会立即打开网站的安全版本。这种情况下,只有从其他资源获取facebook.com链接时才能进行攻击,例如在google.com上输入facebook时。实现攻击的主要问题包括网站与其子域的不可预测逻辑以及web代码特性,这些可能使任何绕过HSTS的尝试无效。因此不应将任何网站添加到列表中,即使Intercepter-NG中默认存在的域也有其特性且并不总是正常工作。为每个资源搭建临时解决方案并不理想,未来可能会进行一些通用改进,但目前,如他们所说,as is。

另一个细节,在当前实现中,为了进行DNS欺骗,DNS服务器必须不在本地网络中,以便能够看到到网关的dns查询并以所需方式响应。

重要的是要注意,新版本中SSL Strip本身的工作显著改进。

强制下载和JS注入

两项创新都涉及HTTP Injection模式。Forced Download可以俄语翻译为"强制下载",这正是目标端在web冲浪时发生的情况。访问网站时,会提示下载攻击者指定的文件,根据浏览器设置,它可能自动下载,用户选择是否运行。

如您所理解,可以添加具有任意内容的.exe文件到强制下载中,而且此文件的来源将是用户当前访问的网站。知道目标打算打开adobe.com,您可以提供flashplayer.exe,此文件的来源将指定为adobe.com或其子域之一。一次性提供后强制关闭,需要再次注入需重新勾选相应选项。

JS Inject未明确出现在控制元素中,因为它本质上是最普通的http注入,但有一个区别。替换一个文件为另一个时,例如将.jpg图片替换为指定图片,正是将一个内容替换为另一个。替换.js脚本很可能会破坏资源工作,因此新版本中js注入不将一个脚本替换为另一个,而是将其附加到现有脚本中,添加注入额外代码的可能性而不影响原始代码。

SSL中间人攻击

逐渐接近最有趣的新功能。新版本中完全重写了SSL MiTM代码。现在它快速稳定工作。证书生成算法也发生变化,其中添加了额外的dns记录,所有证书使用单一密钥签名(misc\server)。这意味着将此外自签名证书添加到目标计算机的受信任列表后,可以监听到任何资源的SSL流量(没有SSL Pinning的地方)。Cookie Killer功能现在也适用于SSL连接。出现了黑名单(misc\ssl_bl.txt)和白名单(misc\ssl_wl.txt)。其中可以排除或相反严格指定应或不应应用SSL MiTM的IP地址或域。指定extra ssl port时不再需要指定read\write类型,只需指定端口号。所有流量写入ssl_log.txt。

组策略劫持

Intercepter-NG中的又一个杀手级功能。尽管技术并非由我公开,但这是此攻击的第一个公开且完全功能的实现。详细描述在此处和此处。

再次SMB给Microsoft带来麻烦,因为借助此漏洞,大约一个半小时内可以获得对域中任何计算机的访问(域控制器除外)。本质是什么。

每90 + 0到30分钟的随机分钟数,域成员从DC请求组策略。这通过SMB进行,通过打开网络地址\DC\SYSVOL\domain.name\Policies\UUID\gpt.ini。

此文件内容如下:

[General] Version=12345

此数字是当前组策略的相对版本。如果自上次更新以来版本未更改,则获取组策略的过程停止,但如果版本不同—则需要更新它们。此阶段客户端向域请求活动的CSE(客户端扩展),包括各种登录脚本、计划任务等。自然,中间人攻击者可以替换控制器生成的文件形式任务之一。这种情况下利用将非常简单,但所有这些CSE默认禁用,唯一能做的就是修改注册表,因为在更新组策略时客户端还请求另一个文件—GptTmpl.inf,通过它可以添加或删除条目。两篇文章的作者为演示代码执行决定使用众所周知的方法—AppInit_Dll。在所需注册表键中写入从网络路径加载自己的dll,之后系统中新创建的进程执行任意代码。但此方法仅适用于概念验证,因为AppInit_Dll默认已禁用多年。因此任务是找到另一种远程执行代码的方式,且无需等待重启,如向Run键添加自动启动时。

进行了许多尝试以某种方式实现期望目标但无结果,直到一个好人(thx man)提示了一个我以前不知道的非常有趣的注册表键。

在键[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\currentversion\image file execution options]中可以为任何.exe文件指定调试器。例如指定calc.exe必须通过c:\path\debuger.exe打开,一旦启动计算器—首先打开调试器,其命令行中将是calc的路径。这似乎几乎是现成的解决方案,因为尽管在特定条件下,但成功执行代码而无需重启。当时我接受了用户不可避免参与获取访问过程的限制,即可以通过调用IE或Chrome或任何其他应用程序执行代码而不是计算器,但出现了新问题。如果受攻击用户没有管理权限,即使获得shell也无法删除先前添加到注册表的调试器,这意味着攻击停止或重启后—被利用的应用程序停止工作,因为欺骗的网络地址与debuger.exe不再存在。 需要找到方法获取不仅是shell访问,而且必须是管理员权限。省略所有后续困难描述结果。获取组策略后系统必须应用它们,为此调用svchost并创建具有SYSTEM权限的新进程taskhost.exe。作为taskhost.exe的调试器插入立即一石二鸟—我们不仅获得具有SYSTEM权限的shell,而且立即获得它,无需用户任何手动干预。攻击完全自动化,可以选择一组目标并在一个半到两小时内获得一系列具有最大权限的活动shell会话。甚至不必自己是域成员。唯一需要的是启用Network access: Let Everyone permissions apply to anonymous users。测试时,为了不等待一个半小时,从控制台运行gpupdate足够。在修补的Windows 7\8.1上测试,域中有2008R2\2012R2服务器。

哪些保护措施?Microsoft发布了MS15-011补丁,引入所谓的UNC Hardened Access,需要手动配置。公告中有趣的短语:

“在系统上配置较少用户权限的用户帐户可能比使用管理用户权限操作的用户受影响小。”

如已清楚,对任何用户威胁同样高。

尽管GP Hijacking有全部潜力,但在我看来,此版本的另一项创新值得特别关注…

甜点

最后要讨论的不能称为新功能。更是在Intercepter-NG中联合使用一系列现有解决方案时打开的攻击向量。

此情况重点在无线网络和移动设备,特别是iOS设备—Iphone和Ipad。众所周知,简单arp毒化这些设备几乎无济于事。拦截浏览器中开放网站的cookie可能是唯一可指望的,因为大多数情况下用户通过各种服务的官方应用程序工作,其中与服务器的通信通过SSL进行。即使尝试进行SSL MiTM,也不会成功,应用程序只会停止与不受信任证书工作。因此认为手机和平板电脑默认对网络拦截有相当好的保护。

但想象以下情况,普通用户坐在Instagram应用程序中浏览feed。 突然应用程序停止工作,抱怨无连接,用户在浏览器中打开instagram.com,其中弹出alert文本"为在instagram.com上继续工作安装新安全证书",关闭消息后屏幕上出现安装新证书的请求。事件进一步发展当然取决于用户,但他最终安装提供证书的概率相当高,因为情况非常可信:应用程序停止工作,访问网站,看到必要更新警告,更新—一切工作,尽管实际上攻击者替换了自己的证书现在读取所有SSL流量。Forced Download、JS Inject和稳定工作的SSL MiTM的实施允许快速实现类似场景:

  1. 进行.js注入,嵌入alert(‘Please install new certificate for %domain%.’); 在模板%domain%中将替换发生注入的网站名称。

  2. 强制下载misc\server.crt—Intercepter-NG中的根证书。

  3. 启用SSL MiTM(以及用于注入工作的ssl strip)。

  4. 启动攻击后目标设备上的SSL连接将停止工作,浏览器中将发出带证书的alert。

自然出现的问题,除了被动拦截已建立会话外,对SSL流量做什么。Cookie Killer来帮忙,它可靠工作,例如在Facebook应用程序上。 iOS上有自己的圣杯—iCloud,但清零cookie无助于重置其会话。正是为iCloud,以及Instagram和VK,添加了iOS Killer功能,重置指定应用程序的会话并允许拦截重新授权。此技巧不能用于AppStore,因为那里可能使用SSL Pinning。此向量在IOS 5\6和8.4上测试。

结语

计划添加通过LUA或DLL插件自主创建处理程序的可能性,但根据用户反应,似乎没有人有实际兴趣。新版本很可能在明年,可能秋季发布Intercepter-NG的Android功能更新。问题、反馈、功能请求总是欢迎。就此结束。

新功能演示在视频中呈现。

项目联系人: 网站:sniff.su 邮件:intercepter.mail@gmail.com 博客:intercepter-ng.blogspot.ru Twitter:twitter.com/IntercepterNG

信息提供用于教育目的,作者不对应用此材料后果负责。

作者:Intercepter

18:04

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计