BeEF初探体会

这几天粗略地看了下 BeEF 的文档,是将其放在浏览器攻击的集大成者来对待的,至少目前没有比 BeEF 更强大,更全面的浏览器攻击平台,未来受人看好的 蚁逅 平台也只是在操作模式上有所创新,其本质和 BeEF 还是一致的,并且从漏洞利用的全面性来说我想也不会超过 BeEF。

说到 BeEF 的功能,其实也就是探讨目前浏览器攻击能到怎么样一个水品(目前的我了解的还是太少,但并不妨碍我发表自己的观点)。


首先,最基本的常规 XSS 与探针技术,用于获取目标的私人信息,以及探测目标的操作环境,可以为下一步做准备。对于这一点 BeEF 与其他的 XSS 平台大体一致,毕竟是最基本的功能。不过需要一提的是, BeEF 的 Auto-Attack 是可定制的,也就是说我们可以在足够了解目标环境的情况下将一些模块载入 Auto-Attack,使其在 hook 初始化的时候就完成攻击。

Auto-Attack 是非常重要的,这主要是因为 BeEF 依赖于目标会话的持续控制,也就是说一旦目标怀疑访问页面的可靠性从而将其关闭的话,那么 BeEF 的会话也将关闭,导致无法调用其他模块进行进一步攻击,所以说 BeEF 是需要值守的,这是目前技术无法摆脱的难题。

下面再来谈谈 BeEF 的 Persistence 模块,这一部分的功能其实是挺惨的,几个功能都是要基于页面不被关闭,换句话说就是要得到目标的充分信任,否则一切都免谈。当然如果能欺骗目标安装恶意插件的话就另说了(仅限于 Firefox 和低版本 Chrome),虽然迷惑性还不错但是浏览器也有了相应的防御手段,还是比较困难。


按照我的理解 BeEF 的核心大致分为两块,其一是浏览器 Exploit,其二是 Social Engineering。

对于 Exploit, BeEF 的独到之处在于它能够加载 Metasploit 的 Browser 模块集,这大大增加了攻击的手段。然而现实并不是那么美好,虽然 BeEF 带了将近 300 个 Exp,但是利用的难度极大。首先,如果目标打上了所有补丁,那没有 0day 依旧免谈;其次, Exp 虽多但是必须保证成功率,否则一发打过去可能直接就导致页面关闭或是引起目标怀疑从而丢失控制。而保证成功率的关键在于掌握目标最详细的信息,以及熟悉各个 Exp 的适用条件。这两点如果是要在目标被攻击并且还未关闭标签页的这短短几十秒时间内满足,那需要攻击者极高的技术水平,而显然现在的我完全不具备。因此更合理的方法是采取 APT,第一次先获取信息,之后再实施真正的攻击。

个人感觉现在用户打补丁的意识还是有的,并且浏览器也越来越安全,漏洞的数量越来越少,利用难度越来越大,要想实现 Exp 除了 0day 还真的是难上加难啊。

不过话说回来,渗透的境界应该可以通过面对目标的难度系数来区分:

入门级: 服务端攻击 > 客户端攻击
高手级: 客户端攻击 > 服务端攻击

另外 BeEF 有一个独特的功能—— IPEC,是利用了 Inter-Protocol 技术。按我的理解就是建立一个内部的连接(环回地址的连接),而不像传统的 Reverse TCP 或者 Bind TCP 那样与外部建立连接。在 演示视频 中可以看到使用 JS hook 任意命令执行,但是这还是得基于浏览器的漏洞吧,不知道我是不是理解错了,如果真是我的理解错误那真是要颠覆了。


看了一些 Social Engineering 模块,我认为最核心的一点在于: 得到目标的信任。 这实际上应该就是社工、资料收集的重要性吧。

说实话如果能将社工处理的妥当是非常强大的(这是我看了相应模块真实的体会,而非网络上的人云亦云),但是它的难点在于准备过程非常漫长,并且没有一套固定的流程,往往需要攻击者发挥创造力。例如伪造一个 Facebook 的登录界面,这是最基本的 Phishing,但是针对这个 Phishing 又有 TabNabbing, Clickjacking 等各种不同的手段,怎么样来构造那个让用户信任的输入框,以及怎么组合这些攻击手法来骗取用户的信任,这都是非常困难的问题。

或许,我们可以找到一种低成本、低成功率的方法进行鸟枪式攻击,这倒是个不错的思路。

此外, Social Engineering 和其他的一些 Auxiliary 模块都有一个共同的问题,那就是无法摆脱同源策略的限制,这是浏览器攻击的另一大瓶颈。我们可以看到如果是对同源的扩展攻击那简直无法无天,但是一旦对于非同源的目标就束手无策了。这也是让我感觉 BeEF 不让人觉得那么 Cool 的一大原因。


大致先总结以上内容,以后再做补充。