VilNE项目:利用DNS重绑定技术实现受害者内网渗透

本文详细介绍了VilNE项目的开发过程,该项目通过DNS重绑定技术绕过浏览器同源策略限制,实现对受害者内网资源的端口扫描和攻击。文章探讨了技术原理、工具实现及浏览器防护机制的演变,揭示了内网安全存在的盲点。

VilNE项目

:本文最初发表于2022年1月18日的infosecamateur.com网站

去年年中,我沿着一条思路探索,进入了一个有趣的领域——尽管后来Log4Shell事件让人们对这类问题有所认识,但我认为这个领域仍未被充分重视。这就是后来形成的VilNE(受害者发起的局域网利用)项目。我决定将我的学习成果和行业现状记录下来。

背景

去年年中,我读到一篇关于DNS重绑定的有趣博客文章(https://medium.com/@brannondorsey/attacking-private-networks-from-the-internet-with-dns-rebinding-ea7098a2d325),该技术可用于诱骗浏览器忽略跨域请求限制并攻击内部资源。

说实话,我只是想通过浏览器进行一些实验,更多地了解CORS(跨域资源共享)。虽然我的脚本技能和JavaScript水平都比较基础,但我还是成功创建了一个XMLHTTP请求工具,用于尝试访问内部资源。

正如预期的那样,CORS阻止了这些请求,但我发现了一个有趣的现象:如果IP本身处于离线状态,请求失败的时间会显著缩短。这意味着通过扫描子网,可以确定IP/端口是否在线,攻击者基本上可以通过诱骗受害者访问页面来对其网络进行端口扫描。

然后我开始思考……虽然CORS阻止浏览器读取响应,但这并不意味着请求无法发送。我花了很长时间研究各种僵尸网络攻击边界设备,知道有大量攻击只涉及简单的GET或POST请求。我敢打赌,内部网络将是一个巨大的安全盲点,和/或补丁修复的优先级不会相同。

我还清楚地记得Neutrino和Angler等漏洞利用工具包的影响和难度,如果受感染的网站被用来攻击本地网络而不是单台机器,会发生什么?

VilNE的诞生

最初几个版本的VilNE确实有效,我成功构建了一个基本的端口扫描器,还可以发送任意的GET或POST请求——但如前所述,就像许多脚本语言一样,我通常能实现所需功能,但方法可能不是最优的。幸运的是,我有个朋友(向Steve Stone致敬)对此比我了解得多。他在用Vue-JS和Axios重写这个工具的HTTP请求组件时,可能对我的尝试笑了笑。

在这个阶段,工具(http://vilne.infosecamateur.com/ - 仅HTTP)诞生了,但在我们进行初步测试时,很明显我们无法使用HTTPS托管它。这是由于另一个浏览器限制(相对较新),不允许下载"混合内容"——即HTTPS页面不能请求HTTP内容,因为这会给中间人攻击提供在安全通道中注入恶意内容的机会。但是,我们可以反过来做,即HTTP可以请求HTTPS内容。

后续发展

我在Twitter上没有大量粉丝,但我确实认为我有一些有趣的演示想要分享——最终我觉得这可能是安全思维中的一个巨大盲点,人们需要认识到这一点,而且我找不到太多相关文献。希望通过获得更广泛的关注,有人能给我指点更多信息(这最终确实发生了)。

获得关注很困难,但当我制作了一个演示GIF,展示使用VilNE在稍作修改的DVWA(该死的易受攻击的Web应用程序)中弹出shell时,它终于开始受到关注。

接下来的几天让我非常兴奋——有大量的互动(截至写作时有55k展示)和许多反馈和想法。正如预期的那样,我稍微重新发明了轮子,例如扫描内部网络并不是什么新鲜事。最终创建了一个Chrome补丁,对CORS施加了额外限制,使得GET/POST只有在"预检"检查(检查跨域策略)之后才会发送——尽管如此,我相信有解决方法(例如使用图像来触发GET请求)以及在本地托管页面。

未来展望

自从最近的Chromium更新以来,通过POST进行这种攻击已经不起作用,除非页面是从本地机器下载和运行的。我确信可能有解决方法,但表面上来自受感染或水坑网站的风险已经降低。然而,阻止GET请求会更加困难,我唯一的想法是对从非RFC1918地址托管的页面到RFC1918地址的任何类型的内容请求实施全面限制,但可能有一些明显的破坏因素我没有看到。

Log4Shell主导了2021年的最后一段时间,我认为它展示了漏洞利用可以多么容易。最终解决这个问题再次归结为深度防御和"基础"。最小权限、分段、补丁管理和监控,就像对待边界一样,不仅有助于防止这些攻击,还有助于在其路径上阻止它。

最后思考

这是我第一个真正的网络安全项目,帮助我在这个行业中感觉不那么像冒名顶替者,但它让我在探索那些看起来有趣、具有挑战性的领域和深入挖掘假设方面获得了额外的信心。我期待尝试各种想法,尽管我需要更有效地发现其他人做过类似工作的地方。

可能有争议的是,我认为攻击系统通常比防御系统更容易。这并不是要贬低漏洞开发等领域的一些惊人工作(尽管我认为我还不理解这一点!),但组织需要缓解和防御新出现威胁所需的根本性但巨大的思维转变使这尤其具有挑战性。

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