开始社会工程学攻击行动

作为红队队员,我们钟爱社会工程学攻击。不仅因为它通常包含低技能攻击,而且因为它也很容易以非常低的成本来策划一场值得我们高度信赖的战役。只需设置几个假域名、服务器、策划一些电子邮件、假装丢掉一些 bad USB,然后就可以结束一天的工作了。

译者注: 这里提到的低技能攻击, 原文是 low skillset attacks,我的理解是无需太多技能的攻击,比如踩点、垃圾收集……

在衡量的指标方面,我们一般用捕捉到的明显的信息,例如发送的电子邮件数量、点击了钓鱼链接的用户数量以及键入密码的用户数量。我们也试图发挥创意,为雇用我们的公司带来实质性价值。这方面的一个例子是 DefCon 会议举办的的社会工程学竞赛,在这个竞赛中参赛选手要通过社工的方式来入侵公司和雇员。如果你不熟悉这个竞赛的话,那我简略地介绍一下:参赛选手们需要在有限的时间内针对目标公司找到一些 flag。通过获取公司信息,如他们的 VPN 、他们使用的杀毒软件类型、员工的特定信息或让员工访问钓鱼 URL 等方法,可以捕获 flag。如果你想查看比赛中的使用的所有 flag,请查看2017年的比赛报告:http://bit.ly/2HlctvY 。 这些类型的攻击可以通过教导员工学会发现恶意行动并向相关负责团队报告从而帮助公司提高内部安全意识。

在本章中,我们将粗浅的接触一些用来进行社会工程学攻击的工具和技术。对于社会工程学攻击,没有正确或错误的答案。只要能发挥作用,在我们的书里就是好的。

近似域名(Doppelganger Domain)

在上本书中我们讲了很多关于近似域名的内容。如今近似域名仍然是获取初始凭证或者植入恶意软件的最成功方法之一。最常用的技术是购买一个与目标公司的URL非常相似的域名,或者是目标公司 URL 的一个常见拼写错误的域名。

在上一本书中,我们举了一个例子,如果我们的目标公司有 mail.cyberspacekittens.com 这个域名,我们将购买 mailcyberspacekittens.com 这个域名,并设置一个假的 Outlook 页面来获取登录凭证。当受害者进入假网站并输入密码时,我们会收集这些数据并将其重定向到公司的有效电子邮件服务器(mail.cyberspacekittens.com)。这给受害者留下这样的印象:他们只是第一次意外地输错了密码,因此,再次输入正确密码并登录他们的帐户。

这种方法最巧妙地一点是你甚至不用做任何网络钓鱼的操作。因为有些人就是会打错域名或者手误漏掉 “mail” 和 “cyberspacekittens” 之间的点(.),然后进入了错误的网页并输入他们的登录凭证。我们会提示让受害者把我们的恶意网站添加为书签,这样可以让受害者每天都访问我们的恶意网页。

如何克隆验证页面

快速克隆Web应用程序登录验证页的最佳工具之一是 TrustedSec 公司开发的社会工程学工具包(Social Engineering Toolkit,简称 SET)。这是任何需要获取身份凭证的社工活动的标准工具包。你可以从 https://github.com/trustedsec/social-engineer-toolkit 下载这个工具包。

配置 SET:

  • 将 SET 配置为使用 Apache(而不是默认的 Python )
    • 将配置文件按照以下内容修改:
    • gedit /etc/setoolkit/set.config
      • APACHE_SERVER=ON
      • APACHE_DIRECTORY=/var/www/html
      • HARVESTER_LOG=/var/www/html
  • 启动 SET:
    • cd /opt/social-engineer-toolkit
    • setoolkit
  • (1) Spear-Phishing Attack Vectors (鱼叉式钓鱼攻击)
  • (2) Website Attack Vectors(网站攻击)
  • (3) Credential Harvester Attack Method (凭证收集攻击方法)
  • (4) Site Cloner(站点克隆器)
  • 输入你的攻击服务器的 IP
  • 克隆目标站点
  • 打开浏览器,转到攻击服务器并测试

所有文件都会被储存在 /var/www/html 文件夹下,密码存储在 Harvester* 下。下面是社工活动中克隆页面时的一些比较好的做法:

  • 搭配使用 Apache 服务器 + SSL
  • 把所有图像和资源移到本地(而不是从被克隆的站点调用)
  • 就我个人而言,我喜欢使用我的 PGP 公钥来存储所有记录的密码。这样,如果服务器受到入侵,就无法在没有私钥的情况下恢复密码。PHP gnupg_encrypt 和gnupg_decrypt 支持这一做法。

使用双因素验证的身份凭证

我们看到越来越多的客户使用双因素认证(2FA),对于红队来说双因素认证是一个巨大的麻烦,因为它们不可能被随意绕开。在以前我们必须创建一些定制化的页面,这样可以处理其中的一些情况。但现在我们有了 ReelPhish,这是 FireEye 公司制作的一个工具。当受害者在我们的钓鱼网页上输入登陆凭证时,ReelPhish 允许红队利用 Selenium 和 Chrome 来自动触发双因素验证。

ReelPhish

  • 克隆需要双因素认证的攻击目标站点。
  • 使用你的攻击工具箱,解析登录到真实站点的流量。在我的例子中,我打开了 Burp Suite 来获取身份验证所需要的所有 post 参数。
  • 修改克隆站点,使其使用 ReelPhish。访问 /examplesitecode/samplecode.php 并输入你的身份验证所需的所有必要参数。
  • 受害者进入克隆站点并进行身份验证。
  • 凭证被传输到攻击者手中。
  • ReelPhish 将在真实站点进行身份验证,触发双因素验证。
  • 受害者收到双因素验证的验证码或电话验证。
  • 受害者被重定向到真实站点重新登录(他们会认为他们在第一次登录时登陆失败了)。

如下图所示,我们现在应该有一个经过身份验证了的会话来绕过双因素验证。虽然 ReelPuish 看起来很像是支持 Linux ,但我在 Kali 中运行它时遇到了一些问题。所以最好是在 Windows 中运行 ReelPuish。你可以在 FireEye 公司的网站上找到更多关于 ReelPhish 的信息: https://www.fireeye.com/blog/threat-research/2018/02/reelphish-real-time-two-factor-phishing-tool.html

开始社会工程学攻击行动 - 图1

还有一些其他工具可以处理不同的双因素验证绕过的情境:

还有一件事,当对需要双因素认证的网络资源进行身份验证时,请确保你在得到身份凭据后要尝试使用多种不同的身份验证方法。我的意思是,一些产品可能在 Web 门户网站的身份验证页面使用了双因素验证,但在 API、旧的客户端或所有的应用程序终端上可能并没有使用双因素验证。我们已经看到许多应用程序在公共终端上要求双因素验证,但在应用程序的其他部分则缺乏相应的安全保护。