BeEF 是如何工作的,它又是如何持久的?

信息安全 网页浏览器 xss javascript 浏览器劫持
2021-09-01 17:45:26

BeEF - 浏览器开发框架。我认为(想)我对它的工作原理有一个基本的工作理解。不过,最近我在看这个 DEFCON 演讲,黑客使用中间人攻击将 BeEF 钩子注入到许多浏览器中。美好的。然而,他声称即使在受害者与他的代理断开连接或导航到另一个页面后,他的钩子仍然存在,因为“JavaScript 正在缓存中运行”。只有清除缓存才能释放被钩住的浏览器。这怎么可能?

我的理解是 BeEF 漏洞利用(和钩子)是基于 JS 的,并且像 XSS 攻击一样工作,而不是利用浏览器可执行文件本身的漏洞。我知道可以在 localstorage 或 cookie 中存储一些信息,但是如何跨选项卡/会话执行 javascript?我对 BeEF 的理解是错误的吗?还是 JavaScript?我已经查找了实际的 payload.js 文件以查看它的实际作用,但我无法在任何地方找到它。谢谢四位的帮助

2个回答

BeEF 最好从 MITMf 工具运行——两者都在 Kali Linux 的大多数版本(尤其是最新版本)中可用。MITMf 有一个 BeEF 的扩展,在其他地方没有,称为BeEFAutorunBeEFAutorun 和BeEF Autorun Rule Engine (ARE)的工作方式与XSSF和 Trustwave SpiderLabs 的 beef_injection_framework 类似,但内置的 ARE 更出色并且开箱即用。MITMf 是 Ettercap(较旧)和 Bettercap(较新,包括一个牛肉盒代理模块)的竞争对手。来自TheBeefProject 的视频在这里

也就是说,BeEF 和 XSSF——无论是如何交付或自动化——都有其优点和缺点。两者都没有内置的缓存持久性功能。这种缓存技术可能只适用于支持 HTML5 离线存储的浏览器,尽管现在大多数都支持。最初的技术是由 Lavakumar Kuppan 发现的,并在他的网站和实验室(工具站点已关闭,但博客文章仍在运行)以及应用程序缓存部分的 HTML5 安全一书中进行了讨论。一个 html 清单标签可以指定一个 cache.manifest 文件存储在哪里。发起攻击需要中间人条件、代理服务器的控制、浏览器挂钩(例如,BeEF)等。执行攻击的代码已从原始代码略微现代化,并可在 GitHub 上以squid-imposter 的形式获得.

如何跨标签/会话执行 javascript?

此功能已在提供持久性的 BeEF模块中可用。特别是,BeEF 攻击者应该考虑同时使用man_in_the_browseriframe_above模块,除非他们想要临时注入。如果您只需要临时注入(例如通过您自己托管的恶意站点、XSS 或其他快速机制),那么我将使用invisible_iframe模块提供指向metasploit-framework的链接browser_autopwn 监听器。该技术在《Gray Hat Hacking The Ethical Hacker's Handbook, 4th Edition》一书中提供。我认为这本书对 BeEF 和 MetaSploit 的集成进行了最全面的介绍,但是 Mastering Kali Linux for Advanced Penetration Testing、Daniel Dieterle 的中级安全测试和浏览器黑客手册也提到了许多这些技术。

比较从 BeEF 到 XSSF 的代码很有趣。例如,在 XSSF 中跨选项卡保持持久性是由ghostifyiframeize模块执行的。我喜欢 XSSF 的一件事是直接集成到 msfconsole 命令行界面。不过, BeEF 确实提供了一个Console正在出版的一本名为 Holistic InfoSec for Web Developers 的书有一个关于配置 BeEF 的精彩部分,其中包括 Metasploit 框架集成和 BeEF 控制台的设置。作者还有一个YouTube 频道,其中 BeEF 在演示 1 和 3 中得到了广泛的介绍。XSSF 控制台在时间紧迫时非常灵活,可以执行诸如xssf_add_auto_attack detect_properties,这在现场场景和网络演习中非常有用。XSSF 隧道的设置和拆卸非常出色。BeEF 有更多的模块,如果您需要额外的控制台(BeEF 有基于 Web 和命令行的控制台,以及这个名为beefconsole.rb的第三方提供的命令行版本)和调试(例如,beef cli 选项)功能。特别棒的是MS Office检测模块——以及一个 PowerShell 友好的 Meterpreter 交付的社交工程攻击,使用hta_powershell对 Internet Explorer 进行攻击。最后,BeEF 支持WebRTC上的频道,使其成为最酷的工具之一。

我不知道这是否是他的方法,但是您可以将 window.open 事件与单击操作相关联并调用 window.focus ,这有效地为您提供了一个弹出窗口。当他们在不同的窗口开展业务时,这对于保持你的吸引力很有用。在缓存中有中毒的 javascript 文件可以让您在加载相应的网页并运行资源时挂钩系统。每次他们访问使用中毒的 javascript 文件作为资源的 site-x 时,您都拥有它们。研究 metasploit 来做到这一点。它确实需要用户清除他们的缓存。