导语:Fireye公司Mandiant分部发布了一款新工具ReelPhish,旨在帮助安全人员进行行渗透测试,更好的应对社会工程中的实时双因子钓鱼行为。

一、社会工程和双因子认证 

社会工程活动对企业来说是一个持续的威胁,因为它瞄准的是安全最薄弱环节:人。典型的攻击将捕获受害者的用户名和口令,保存下来以便攻击者后续重新使用。双因子身份认证(2FA)或多因子身份认证(MFA)通常被视为是解决这些威胁的方案。

2FA在典型的用户名和口令之上增加了一层额外的认证。两种常见的2FA是一次性口令和推送通知。一次性口令由辅助设备(如硬件令牌)生成,并绑定到特定用户。这些口令通常在30到60秒内过期,不能重复使用。推送通知向用户的移动设备发送提示,并要求用户确认他们的登录。这两种方式都可以保护用户免受传统钓鱼活动的攻击,这些钓鱼活动只捕获用户名和密码组合。

二、实时钓鱼

虽然安全专业人员强烈建议在个人和商业软件中使用2FA,但这并不是一个可靠的解决方案。因为使用实时钓鱼技术可以成功击败2FA,这些钓鱼攻击涉及攻击者与受害者之间的实时交互。

举个简单的例子,就是钓鱼网站除了用户名和密码外,还会提示用户输入一次性口令,一旦用户在钓鱼网站上完成认证,他们就会看到一个通用的“登录成功”页面,但实际一次性口令仍然未被使用,可是已经被捕获。此时,攻击者有一个短暂的时间差,在到期前重新使用受害者的凭证。

利用这些技术的社会工程行动并不新鲜。早在2010年就有关于实时钓鱼的报道。然而,此类攻击大多时候都被忽视,因为发现这种攻击很困难。本文旨在改变这种看法,提高对问题的认识,并推出新的解决方案。

三、工具说明

行在攻击者的系统上。它包含一个Python脚本,用于侦听攻击者钓鱼网站的数据,并使用Selenium框架驱动本地Web浏览器。该工具能够通过导航到指定的网页、与HTML对象进行交互以及抓取内容来控制攻击者的web浏览器。

ReelPhish的次要组件位于钓鱼网站本身。嵌入在钓鱼网站中的代码将数据(如捕获的用户名和密码)发送到攻击者计算机上运行的钓鱼工具。一旦钓鱼工具收到信息,它将使用Selenium启动浏览器并向合法网站发起身份认证。钓鱼web服务器与攻击者系统之间的所有通信均通过加密的SSH隧道进行。

通过会话令牌跟踪受害者,会话令牌包含在钓鱼网站和ReelPhish之间的所有通信中。该令牌允许钓鱼工具维护包含独特挑战值的多个页面的认证流程状态。由于钓鱼工具具备态势感知能力,因此能够将受害者的信息发送到合法的Web认证门户,反之亦然。

四、案例

我们已经成功地使用了ReelPhish和这个方法来处理了众多Mandiant Red Team的挑战。最常见的情况是使用双因子身份认证对外的VPN。为执行社会工程攻击,我们复制了真实VPN的HTML、JavaScript和CSS。我们使用此代码创建与原始网站类似的钓鱼网站。

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

图1: ReelPhish 流程图

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

某些情况下,我们不得不开发更先进的钓鱼网站,可以处理多个身份认证页面,并在钓鱼web服务器和攻击机器上运行的工具之间来回传递信息。我们的脚本通过跟踪钓鱼网站上受害者的会话并将其与攻击者系统上运行的特定Web浏览器相关联来处理这些情况。图1展示了我们的工具在攻击情况下如何运行。

我们在FireEye GitHub Repository上公开发布了这个工具。

五、结论

不要放弃2FA,虽然它不是一个完美的解决方案,但确实能增加一层安全性。2FA是一种安全机制,会像其他机制一样失败,企业必须做好准备减轻失败带来的影响。

配置2FA保护的所有服务,以便在攻击者成功绕过2FA时将影响降到最低。降低会话最大持续时间将限制攻击者的破坏时间。每个用户帐户最多只能有一个并发会话,可以防止攻击者与受害者同时处于活动状态。如果有问题的服务是VPN,则实施严格的网络隔离。VPN用户应该只能够访问自己所需的资源。最后,培训用户认识、避免和汇报社会工程攻击。

源链接

Hacking more

...