导读 研究人员发布了两个工具——Muraen和NecroBrowser。它们可以自动绕过2FA进行钓鱼攻击,大多数防御措施都无法抵御它们。

渗透测试人员和攻击者为他们的武器库添加了一个新的工具,这种工具可以绕过双因素身份验证(2FA) 自动化钓鱼攻击,而此过程不易被检测和阻止。该工具使此类攻击更容易部署,因此组织机构应该相应地调整其反钓鱼培训。
这个新工具包在上个月阿姆斯特丹举办的黑客大会 (Hack in the Box) 上发布,几天后在GitHub上发布。它有两个组件:一个被称为Muraena的透明反向代理和一个被称为NecroBrowser 的Docker容器(用于自动化无头Chromium实例)。

中间人式攻击

大多数人所熟悉的传统网络钓鱼攻击是由虚假登录页面组成的,这些页面在攻击者控制的web服务器上,并由与目标网站名称相似的自定义域名提供服务。然而,这种静态攻击对使用双因素身份验证的在线服务无效,因为没有与合法网站进行交互来触发生成一次性代码。没有这些代码,攻击者就无法使用钓鱼凭证登录。
为了绕过2FA,攻击者需要让他们的钓鱼网站充当代理,代表受害者转发请求到合法网站,并实时回传。最终目标不仅是为了获取用户名和密码,而是真正网站用来关联登录账号的活动会话令牌(也被称为会话cookie)。通过将这些会话cookie放在浏览器中,可以直接访问与它们关联的帐户,而不需要进行身份验证。
这种基于代理的技术并不新鲜,人们一直知道它们的存在,但是进行这样的攻击需要技术知识,并且需要配置多个独立的工具,比如将NGINX web服务器当做反向代理使用。准备好工具后,攻击者需要在窃取的会话cookie过期之前手动使用它们。此外,有些网站使用子资源完整性 (Subresource Integrity, SRI) 和内容安全策略 (Content Security Policy, CSP) 等技术来防止代理,有些网站甚至会根据标题来屏蔽自动化的浏览器。
Muraena和NecroBrowser的出现是为了破解这些防御措施,并使大部分过程自动化。这意味着现在很多攻击者可以发起绕过2FA的钓鱼攻击。这些工具是由浏览器开发框架项目 (Browser Exploitation Framework Project , BeEF) 的前核心开发人员Michele Orru和Bettercap项目的成员Giuseppe Trotta共同开发的。

Muraena和NecroBrowser是如何工作的?

Muraena是用Go编程语言编写的,这意味着它可以在任何Go可用的平台上被编译和运行。一旦部署完成,攻击者就可以配置他们的钓鱼域名,并为其获得合法的证书——例如,通过非营利性的Let's Encrypt证书颁发机构。
该工具包含一个充当反向代理的小型web服务器和一个爬虫程序。该爬虫程序可以自动确定从合法网站代理哪些资源。代理在传递来自受害者的请求之前重写这些请求。
爬虫程序会自动生成一个JSON配置文件,然后可以手动修改该文件来绕过更复杂网站上的各种防御机制。该软件包包括对谷歌、GitHub和Dropbox的示例配置文件。
一旦受害者登陆一个由Muraena提供支持的钓鱼网站,登录过程就会和真正的网站完全一样。网站会要求用户输入他们的2FA验证码。当他们提供验证码并完成身份验证之后,代理会窃取会话cookie。
会话令牌通常由浏览器存储在一个文件中,并在后续请求中提供服务。这种方法可以使网站自动向浏览器提供一段时间内不需要密码登陆而(会话长度)访问帐户的权限。Muraena可以自动将收集到的会话cookie传送给它的第二个组件NecroBrowser,而NecroBrowser可以立即开始滥用这些cookie。
NecroBrowser是一个可以通过API进行控制的微服务,进行配置以后可以通过在Docker容器内运行的Chromium无头实例执行操作。根据可用的服务器资源,攻击者可以同时生成数十个或数百个这样的容器,每个容器都有一个从受害者那里窃取的会话cookie。
僵尸浏览器实例执行的操作可以完全自动化。例如,根据账户类型的不同,可以对电子邮件进行截屏、启动密码重置、将恶意密钥上传到GitHub或者在邮箱添加恶意转发地址。浏览器实例还可以用来收集社交网络上联系人和朋友的信息,甚至可以通过类似蠕虫的攻击向这些朋友发送钓鱼信息。

如何防范自动钓鱼攻击

不幸的是,很少有技术解决方案能够完全在服务器端阻止这种钓鱼攻击。Muraena的出现说明SRI和CSP等技术的效果有限,攻击者可以以自动化的方式绕过它们。此外,该工具表明2FA不是一个完美的解决方案。
然而基于代理钓鱼攻击无法突破某些2FA措施——那些使用支持通用第二因素 (Universal 2nd Factor, U2F) 标准的USB硬件令牌的企业。这是因为这些USB令牌通过浏览器建立了与合法网站的加密验证连接,而不是通过攻击者的反向代理。与此同时,基于短信验证码或移动验证软件的解决方案很容易受到攻击,因为受害者必须手动输入这些验证码,而他们可能会在钓鱼网站上做这些事情。
另一种技术解决方案是为浏览器安装扩展,这种扩展程序可以检查用户是否在正确的网站上输入了他们的凭证。谷歌为Chrome开发了一个名为Password Alert的扩展,当用户试图在任何不属于谷歌的网站上输入谷歌凭证时,它会发出警告。
培养用户保持警惕,确保他们在正确的域名和正确的网站上进行身份验证非常重要。TLS/SSL和有效证书的存在不足以证明该网站是合法的,因为人们现在可以轻松免费获得证书,所以大多数钓鱼网站也可以使用HTTPS。

原文来自:http://zhuanlan.51cto.com/art/201906/597730.htm

本文地址:https://www.linuxprobe.com/two-factor-authentication-bypass.html编辑:冯瑞涛,审核员:逄增宝

Linux命令大全:https://www.linuxcool.com/