社会工程攻击和双因素身份验证

对于企业来说,社会工程攻击是持续的威胁,因为这种攻击瞄准的是安全中最薄弱的环节:人员。典型的社会工程攻击会获取受害者的用户名和密码,并保存好以备稍后利用。而双因素身份验证(2FA)或多因素身份验证(MFA)通常被视为这种威胁的解决方案。

2FA是在典型的用户名和密码模式之上增加了一层额外的身份验证,两种常见双因素身份验证方式是一次性密码和推送通知。一次性密码由辅助设备(例如硬件令牌)生成,并绑定到特定用户,这些密码通常在30秒到60秒内过期,不能重复使用。而推送通知方式则是向用户的移动设备发送提示,要求用户确认其登陆尝试。这两种方式都可保护用户免受传统网络钓鱼攻击,毕竟这些钓鱼攻击只会捕获用户名和密码。

实时网络钓鱼

尽管安全专业人员强烈建议个人和商业应用使用2FA,但这并不是一个完美的解决方案。实时网络钓鱼技术就可成功攻破2FA,这种网络钓鱼攻击涉及攻击者与受害者之间的实时交互。

简单的例子是要求用户除用户名和密码外还要输入一次性密码的钓鱼网站。当用户在钓鱼网站完成身份验证后,他们会看到“登录成功”的页面,而一次性密码还未被使用,只是被攻击者获取。在这一点来看,攻击者有短暂的时间窗口以在密码过期前利用受害者的登陆凭证。

当然,这种类型的社会工程攻击并不是新鲜事。早在2010年就有关于实时网络钓鱼攻击的报道。然而,由于人们认为发起这种攻击很困难,这种类型的攻击基本被忽略了。本文旨在改变这种看法,提高人们对这个问题的认识,并激励大家开发新的解决方案。

工具说明

为了改进社会工程攻击评估,我们开发了一个名为ReelPhish的工具,它简化了实时网络钓鱼技术。该网络钓鱼工具的主要组件在攻击者的系统运行。它包含一个Python脚本,用于侦听攻击者钓鱼网站的数据,并使用Selenium框架驱动本地安装的Web浏览器。通过导航到指定的网页,与HTML对象进行交互以及抓取内容,该工具可控制攻击者的Web浏览器。

ReelPhish的辅助组件位于钓鱼网站本身。嵌入在钓鱼网站中的代码发送数据(例如捕获的用户名和密码)到在攻击者机器运行的钓鱼工具。当钓鱼工具收到信息后,它会使用Selenium启动浏览器并向合法网站进行身份验证。该钓鱼Web服务器和攻击者系统之间的所有通信均通过加密的SSH通道进行。

通过通过会话令牌来跟踪受害者,令牌包含在钓鱼网站和ReelPhish之间的所有通信中。该令牌允许钓鱼工具为身份验证工作流维持状态,工作流涉及多个页面。由于这个钓鱼工具可感知状态,因此它可从受害者发送信息到合法Web身份验证门户,反之亦然。

示例

我们已经在很多Mandiant红队成功地使用了ReelPhish和这种方法,其中我们遇到最常见的情况是使用双重认证的面向外部的VPN门户网站。为了执行社会工程攻击,我们复制了真正VPN门户的HTML、JavaScript和CSS,并使用这些代码来创建与原始网站功能类似的钓鱼网站。

为了改进我们的实时钓鱼工具,我们将服务器端代码嵌入到钓鱼网站,与攻击者机器上运行的工具进行通信。我们还建立了SSH通道连接到网络钓鱼服务器。当钓鱼网站的身份验证表单被提交时,所有提交的凭证通过通道发送到攻击者系统上的工具,然后该工具在攻击者的系统启动新的Web浏览器实例,并在真正的VPN地址提交证书。图1展示了这个过程。

图1:ReelPhish流程图

我们已经在VPN地址看到多个双因素身份验证的变体。在某些情况下,令牌通过身份验证表单本身的“辅助密码”字段中传递。在其他情况下,用户必须响应手机上的推送请求。如果钓鱼网站与真实网站行为相同,则在提交凭证后,用户可能会接收传入的推送请求。 

在有些时候下,我们不得不开发更高级的钓鱼网站以处理多个身份验证页面,并可在钓鱼Web服务器和攻击机器上运行的工具之间来回传递信息。我们的脚本能够处理所有这些情况--通过跟踪钓鱼网站上受害者的会话以及将其与攻击者系统运行的特定web浏览器实例相关联。图1展示了我们的工具在攻击情况下的一般运作流程。

目前我们正在GitHub公开发布这个工具,如有任何反馈和问题也可提交到Git Respository。

结论

请不要放弃2FA;虽然这不是一个完美的解决方案,但它确实增加了额外的安全保护。2FA安全机制可能也会有失效的时候,企业必须做好准备来缓解这种失效带来的影响。

请考虑为所有服务配置2FA保护,以便在攻击者成功绕过2FA保护时将攻击影响降到最低。同时,降低最大会话持续时间将限制攻击者感染资产的时间。执行每个用户账号最多只能有一个并发会话的政策可防止攻击者与受害者同时处于活跃状态。如果出现问题的服务是VPN,则实施严格的网络分段。VPN用户应该只能够访问各自角色和职责所需要的资源。最后,让用户认识、避免和报告任何潜在社会工程活动。

通过发布ReelPhish,我们希望让大家了解部署多层安全防御的必要性,并建议大家不要单纯依赖任何单一安全机制。本文的工具旨在帮助安全专业人员从头至尾执行彻底的渗透测试。

在我们与Mandiant Red Team合作期间,进入企业的内部网络只是第一步。本文介绍的工具可协助第一步的成功,然而,根据目标内部部署的安全措施不同,整体成功性差异很大。企业应始终努力评估安全性以及改善整体安全。

项目地址:https://github.com/fireeye/ReelPhish

本文翻译自FireEye

声明:本文来自安全内参,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。