对现代网络钓鱼策略的技术探索,从基本的 HTML 页面到高级 MFA 绕过技术,并分析 2025 年网络钓鱼者使用的基础设施设置和交付方法。
介绍
2025 年,网络钓鱼仍然是地球上最普遍的网络攻击类型。事实上,全球电子邮件流量的 1.2% 是网络钓鱼。每天有 34 亿封电子邮件,但只有很少一部分会导致入侵,因为“只有” 3% 的员工会点击恶意链接。然而,当他们这样做时,这对他们的公司来说可能是灾难性的。91 % 的网络攻击始于向目标发送恶意电子邮件。考虑到这一点,我们很容易理解为什么网络钓鱼仍然是威胁行为者最喜欢的初始访问媒介之一。
在 Quarkslab,我们的对手模拟团队经常开展高级网络钓鱼活动,作为我们为客户提供的渗透测试和现实培训课程的一部分。
这篇博文的目的是回顾当今网络钓鱼攻击所使用的方法。我们采取进攻性的方法,分析所使用的技术以及恶意电子邮件如何传递给受害者。我们还将研究任何网络钓鱼活动的骨干,也称为基础设施。本次技术回顾将仅关注电子邮件网络钓鱼,不包括短信网络钓鱼、语音网络钓鱼和其他形式的社会工程攻击。
高级网络钓鱼技术
把自己置于攻击者的角度。如果你想要入侵一个组织,你会怎么做?当然是网络钓鱼,毕竟这是一条阻力较小的道路,但该怎么做呢?
在本节中,我们将看到网络钓鱼活动中用于检索受害者凭证甚至会话的不同方法。所有这些方法都有其优缺点。
经典方法
HTML 页面
在高级网络钓鱼技术中提到经典的 HTML 网络钓鱼页面可能有点奇怪,但这可能是最常用的。此方法包括制作一个模仿合法网站外观的 HTML 页面。例如,微软是网络钓鱼活动中被模仿最多的公司,网络钓鱼者经常复制其登录页面以窃取受害者的凭据。
Microsoft 登录页面
网络钓鱼者只需要一个看起来与原始页面相似的页面,这意味着他可以删除或禁用任何不必要的元素。在上面的例子中,我们可以禁用除“下一步”按钮之外的所有按钮。链接也是如此。
💡自定义重定向
另一种选择是当用户点击不需要的按钮时将用户重定向到虚假错误页面。尝试在合法网站上触发错误并复制其设计。不要忘记调整文本以匹配新的错误。
由于我们只想保留外观,因此必须删除所有 JavaScript 脚本,主要是因为它可能会向原始网站发送 HTTP 请求,从而让它们有机会检测到我们的钓鱼页面。但要小心,因为如今的网站都是在浏览器中动态生成的,因此您只应在所需页面完全加载后才“转储”它。如下面的屏幕截图所示,页面源代码(左)和加载后的页面(右)具有不同的主体。
页面加载前后 <body> 的区别
在多步骤页面(例如 Microsoft 的页面)上,保留某些动画效果可能会很有趣,让受害者觉得页面更真实。在下面的示例中,我们可以看到一个带有点的动画,然后页面更改为要求用户输入密码。保留这些熟悉的效果有助于降低用户的警惕性,因为它们会给用户留下这样的印象:他们的电子邮件确实正在被检查。
电子邮件和密码提示之间的转换
一旦受害者发送了他们的凭证,就将他们重定向到合法网站或显示错误页面。
💡无后退
不要使用 POST 请求发送表单,而是使用 JavaScriptfetch()或执行此操作ajax,然后使用 重定向用户window.location.replace(url)。这将阻止他们使用“后退”按钮返回我们的钓鱼页面。
棘手的方法
浏览器中的浏览器
2022 年,一位名为 mr.d0x ( @mrd0x ) 的安全研究员介绍了一种名为“浏览器内的浏览器 (BITB) 攻击”的技术。他从一个简单的问题开始:如何让“检查 URL”的建议不那么可靠?事实上,URL 通常是网站合法性的极好指标,因为它无法被欺骗。此外,许多网站都为用户提供了使用受信任的第三方(例如 Microsoft、Apple、Google 甚至 GitHub)进行身份验证的选项。
Canva 登录页面上的多个第三方身份验证器
例如,点击“继续使用 Google”时,会弹出一个窗口,要求您使用 Google 帐户登录。
使用 Google 弹窗登录(来源:mr.d0x)
这就是诡计所在。网络钓鱼者可以仅使用 HTML、CSS 和 JavaScript 来重现此行为。我们可以通过将登录过程从我们不寻常的域移到具有明显合法 URL 的虚假浏览器页面来增强经典的 HTML 网络钓鱼页面。虚假浏览器窗口是一个可以像真实窗口一样拖放的 iframe,使其更加逼真。这允许您创建与您希望检索的凭据无关的借口,只需添加“使用 X 连接”按钮即可。
BITB 演示(来源:mr.d0x)
mr.d0x 存储库提供了 Windows 和 MacOS 模型。他甚至为这两个操作系统制作了明暗主题,可根据受害者的喜好进行显示。
💡不仅仅是一个假浏览器
mr.d0x 最初的概念验证展示了一个假浏览器被打开,但我们可以扩展这个想法。例如,网络钓鱼者可以诱骗用户将其凭据输入到假的 SSL VPN 客户端(如 FortiClient)中。
伪造验证码
一个名为Blind Eagle (APT-C-36)的 APT 组织试图部署恶意软件,他们使用了一种巧妙的网络钓鱼技巧。这种网络钓鱼技术伪装成一个虚假的 Google reCAPTCHA 挑战,供人工验证。然而,它不是简单地勾选复选框或选择出现某些内容的方框,而是要求用户进行组合按键。
伪造的 reCAPTCHA 挑战(来源:JohnHammond)
它依赖于受害者不知道他们正在使用的键盘快捷键。在后台,脚本会用 PowerShell 单行代码填充受害者的剪贴板。受害者将按照说明打开“运行”菜单。然后他们会粘贴恶意代码并执行它,以为他们完成了 CAPTCHA 挑战。John Hammond(@_JohnHammond)发布了一个基于此网络钓鱼技巧的 POC,可以在他的存储库中找到。他的版本似乎比 Blind Eagle 制作的版本更合法。此外,他还添加了一个诱饵 HTA 文件,该文件将执行恶意代码并显示虚假错误消息以看起来不那么可疑。
💡 JH 使用的执行方法,但由于我们正在运行任意命令,我们可以决定使用任何我们想要的方法来执行我们的有效载荷。你基本上有远程命令执行,唯一的限制就是你的想象力(和一些检测)。
懒惰方法
中间人攻击者
称这种技术为“懒惰”可能具有误导性,但它需要的编码技能较少。让我向您介绍一种称为“中间人”或 AITM 的技术。其概念与中间人 (MITM) 攻击非常相似。其目的是将自己置于受害者(或客户端)和服务器之间,充当反向代理。网络钓鱼者将其服务器配置为在客户端连接时向合法网站发送请求,并向其发送响应。这个过程对受害者完全透明。
使用反向代理进行透明网络钓鱼(来源:mrgretzky)
我们不需要编写任何 HTML 或 CSS,因为该页面将由合法网站返回并由受害者的浏览器加载。为此,我们需要在客户端发送的请求中动态替换我们想要代理的每个域。我们可以使用由 Kuba Gretzky( @mrgretzky )开发的Evilginx 3.0作为 AITM 网络钓鱼工具。正如 Evilginx 存储库中提到的,这种技术最有趣的部分是,它不仅允许我们捕获凭据,还可以捕获会话(cookie、令牌等),从而绕过 MFA 身份验证。
Evilginx 3.3 CLI
使用 Evilginx 相当简单,完整文档可在此处找到,但这里只是简要介绍。我们在 Internet 上的暴露主机上部署静态编译的 Go 二进制文件。我们创建 DNS 记录以将我们的网络钓鱼域指向我们的 Evilginx 实例,该实例将充当 Web 和 DNS 服务器。最后,我们使用配置文件配置 Evilginx,在配置文件中我们指定域、监听接口等(也可以从 CLI 中执行)。这是网络部分,现在我们需要创建“phishlets”,即针对特定网站的配置文件,以便获取发送给受害者的网络钓鱼链接。
Phishlet 是用 YAML 编写的,它定义了反向代理应如何针对特定目标采取行动。例如,我们可以使用proxy_hosts指令指定要代理的域。我们还可以使用进行动态字符串替换。要捕获的凭据和会话分别在和指令sub_filters中定义,方法是指定要查找的正则表达式模式。phishlet 格式在此处有完整描述。auth_tokenscredentials
💡精心策划的响应
使用网络钓鱼程序,我们可以使用js_inject指令来指示反向代理将自定义 JavaScript 添加到返回的响应中。能够在受害者的浏览器中执行 JavaScript 是一种超能力,你可以做很多事情,从修改样式到键盘记录等等。
另一个具有相同用途和工作方式(反向代理)的工具是Modlishka ,这是 Piotr Duszyński( @drk1wi )创建的工具。但是,该工具的维护频率不如 Evilginx。它也没有提供一种简单的方法来捕获使用 cookie 以外的其他方式(例如 JWT)进行身份验证的会话。但可以通过用 Go 为 Modlishka 开发自己的插件来解决这个问题。
Modlishka 起始信息
混合方法
无框架浏览器中的浏览器
我们已经看到许多有效但有缺点的技术。将这些技术组合成一种“混合”技术实际上可以提高其有效性,甚至可以“绕过”一些网络钓鱼 (IoP) 指标。让我介绍一下“无框架 BITB”,这是一种利用包含真实代理身份验证页面的虚假浏览器窗口的技术。它由 Wael Masri ( @waelmas01 ) 开发。该工具背后的想法很简单:使用带有虚假 URL 的 BITB 技术,但同时嵌入真实的身份验证页面。
BITB 使用 iframe 加载钓鱼页面,但 Microsoft、Google 或其他大公司会检测并阻止此行为。为了解决这个问题,BITB 效果是通过使用自定义 HTML 代码替换原始身份验证页面的元素来实现的。这样,就无需将页面插入 iframe,只需使用 CSS 的魔力即可。最后,用户与我们的页面进行交互,该页面似乎在“后台”使用不相关的 URL 运行,并显示由 Evilginx 代理的原始身份验证页面,并进行了大量样式修改,例如窗口中的虚假 URL。这些元素加强了用户对我们钓鱼页面的信任,让他们觉得整个过程都是合法的。
无框 BITB 的实际应用(来源:Wael Masri)
YouTube 上有一个完整的视频,演示了这次攻击并解释了其功能。此外,重现此 POC 的所有步骤都可以在Wael 的存储库中找到。
💡 BITB 一切
这个 POC 展示了使用 Microsoft 登录页面创建 BIBT 的能力。但是这可以在任何其他公司完成。需要做一些工作来开发适当的模板。
重型方法
无VNC
在本节中,我们将了解一些可用于网络钓鱼的重型技术。但为什么我称它们为重型技术?只是因为它们需要攻击者投入更多资源。到目前为止,我们已经了解了在受害者浏览器中加载网络钓鱼页面的技术,让受害者完成繁重的工作。现在我们将了解迫使我们自己加载页面并将其显示给受害者的技术。
其中一种技术是使用noVNC 。mr.d0x( @mrd0x )详细介绍了这一点,他也是 BITB 技术背后的安全研究员。但据他所说,这项技术在本文之前就已经提到过了。无论哪种方式,概念都是一样的:以信息亭模式托管 Web 浏览器并通过 Web VNC 授予访问权限。由于受害者使用我们的浏览器进行身份验证,因此这可以有效绕过 2FA 身份验证,因为我们可以通过转储浏览器的配置文件来重用其会话。您必须记住,您已授予 VNC 访问您的实例的权限,这意味着受害者可能会尝试逃离信息亭模式并访问远程机器的其他部分。为了防止这种情况,我们需要尽可能地强化 VNC。
一个名为 EvilnoVNC 的优秀项目解决了上述问题。该项目由红队网络安全专家 Joel Gamez Molina(@JoelGMSec)开发,使用 Docker 容器对浏览器进行沙盒处理并降低逃逸风险。该项目已在许多会议上展示。Joel 让它变得非常易于使用,例如,如果您想钓鱼 Google 帐户,请运行以下命令。
EvilnoVNC 正在运行(来源:JoelGMSec)
就是这样。它将负责生成容器,在信息亭模式下在浏览器中打开所需的网页,甚至在设置时根据受害者的浏览器设置dynamic分辨率1920x1080x24。
受害者访问钓鱼页面时的视图(来源:JoelGMSec)
受害者的个人资料保存在“下载”文件夹下,允许将其导入浏览器并使用刚劫持的身份验证会话浏览网站。
💡保持登录状态
正如 Joel 在他的博文中提到的,某些会话 cookie 无法通过导入在其他浏览器中重复使用。例如,这适用于 Google 和 Microsoft。您需要保持会话“运行”,而不是关闭 EvilnoVNC。
WebRTC
重度攻击包括网络钓鱼攻击,通常称为“中间浏览器”(BITM)。在将浏览器置于浏览器内(BITB),然后将我们自己置于客户端和网站之间(AITM),现在我们将浏览器置于客户端和我们试图进行网络钓鱼的网站之间(BITM)。但是,我们如何才能做到这一点而不让受害者访问远程计算机?答案很简单:通过流式传输浏览器。目标不需要直接与浏览器交互 - 我们可以。事实上,目标的操作会在受控浏览器中复制,这意味着我们对用户的输入有更大的控制权。
Forrest Kasler ( @FKasler )制作的一款名为 CuddlePhish 的出色工具可以执行这种精确的攻击。他使用 WebRTC,这是一项专为屏幕共享等功能而设计的技术。浏览器在 Xvfb(X 虚拟帧缓冲区)中运行,Xvfb 是一个经常用于客户端测试的 X11 服务器,并使用 Puppeteer 进行控制。这样,目标执行的操作就会代理到攻击者浏览器,给人一种所显示内容是真实网页的错觉。
CuddlePhish 实际应用(来源:FKasler)
CuddlePhish 有一个管理部分,允许您针对会话采取多项操作。钓鱼者可以将用户重定向到其他页面,控制浏览器,将控制权交还给受害者,甚至在目标通过身份验证后抓取 cookie。“发送有效载荷”功能非常方便,因为它会强制下载攻击者在受害者浏览器中选择的任意文件。
CuddlePhish 管理面板
💡 STUNning 回退
正如 Forrest 在他的博客文章(以及 git repo 上的故障排除部分)中提到的那样,由于 NAT 限制,某些网络现在可能允许 STUN。为了解决这个问题,我们可以部署或拥有 TURN 服务器,将其绑定到端口 443 并使用coTURN添加 TLS 。默认情况下,它将接受 STUN 和 TURN 请求,因此如果 STUN 被阻止,CuddlePhish 将回退到 TURN。
比较
我们已经看到许多可用于网络钓鱼目标的技术。所有这些技术都有其优点,但也有一些缺点。在本节中,我们将根据几个标准回顾它们的优缺点:
-
系统独立:无论目标平台是什么,都能够在所有主流操作系统(Windows、MacOS、Linux)上无缝运行。
-
可扩展:能够同时评估众多目标,同时保持高效的资源利用率,防止计算或基础设施需求呈指数级增长。
-
2FA Bypass:绕过多因素身份验证机制的能力,包括推送通知、短信验证码和基于身份验证器应用程序的令牌。
-
真实:能够模仿合法服务和用户界面,消除目标经常学习的熟悉指标。
-
移动兼容:通过移动设备访问时仍能保持全部功能。
HTML 页面
-
优点:HTML 可在所有浏览器和操作系统上运行,而后端即使面对大量目标,也能保持对服务器资源的轻度占用。我们保留对视觉元素的完全控制,从而能够完美再现合法目标应用程序,同时在任何设备上都具有极大的灵活性。钓鱼服务器与合法应用程序之间没有直接连接,从而降低了触发检测的风险。
-
缺点:它无法处理 2FA 机制,因为它无法与合法服务通信。一些明显的迹象仍然存在,例如 URL 与真实网站不对应,这通常是目标寻找的迹象。还值得记住的是,创建和维护一个干净的页面需要时间,因为它可能会不断发展。
浏览器中的浏览器
-
优点:真实感远胜于简单的 HTML 页面,因为我们可以欺骗整个 URL 栏。用户的注意力从主页转移到模拟的浏览器窗口。资源和基础设施要求低,具有与 HTML 页面相同的凭据记录器,因此可以轻松同时管理大量目标。
-
缺点:这种方法无法处理 2FA 机制,因为它无法与远程合法服务通信。窗口样式可能因操作系统而异,即使在 Linux 等同一操作系统中,也可以根据桌面管理器及其主题使用不同的窗口样式。由于移动设备不使用窗口,因此不支持此方法。
伪造验证码
-
优点:只需一个简单的 HTTP 服务器和一个 HTML 页面即可实现此技术。此方法的结果是执行目标上的远程命令。
-
缺点:由于按键组合的原因,此方法目前仅适用于 Windows,因此它特定于平台。虽然无法直接绕过 2FA 身份验证,但攻击者可以使用远程代码执行来执行会话窃取。向目标显示的 CAPTCHA 是不寻常的;不存在这样的挑战,如果用户知道这一点,这会增加检测到的机会。
中间人攻击者
-
优点:无需开发即可有效实施此技术,因为它充当受害者和远程应用程序之间的反向代理。资源和基础设施要求也很低,因为单个服务器可以处理大量目标。它适用于任何设备,完全独立于平台。通过位于中间,所有流量都会经过攻击者,攻击者可以中继 2FA 身份验证阶段并捕获会话,从而绕过此安全措施。
-
缺点:高级用户可以分辨合法域名和网络钓鱼者使用的域名之间的区别。
无框 BITB
-
优点:该技术是对经典 BITB 方法的改进,保留了所有优点。与原始方法相比,另一个优势是能够绕过 2FA。
-
缺点:该技术保留了原有技术的缺点。窗口样式可能与目标环境不匹配,因此可能存在网络钓鱼。由于移动设备不使用窗口,因此该技术仅用于桌面设备。
无VNC
-
优点:受害者通过自己的浏览器直接向网络钓鱼者的浏览器进行身份验证,并将会话存储在攻击者端。此方法适用于任何设备,因为它可以在呈现页面之前调整浏览器分辨率。这也适用于移动设备。
-
缺点:如果浏览器没有得到充分保护,这种技术不仅允许用户访问浏览器,还可以访问整个计算机,如果用户发现突破口,则会增加被攻击的风险。由于它需要对计算机的完全访问权限,因此每个实例只能对一个目标进行钓鱼,这意味着随着目标数量的增加,资源需求会迅速增加。URL 将与原始 URL 不同,为有意识的受害者留下已知的钓鱼迹象。
WebRTC
-
优点:受害者通过视频流直接在网络钓鱼者的浏览器中进行身份验证。这有效地绕过了 2FA,因为会话存储在攻击者的浏览器中。可以支持所有设备,包括移动设备。
-
缺点:连接速度慢时可能会出现显示问题,网页模糊不清,看起来很可疑。URL 与原始域不匹配。虽然这种方法可扩展,但由于它为每个受害者生成一个 dockerized 浏览器实例,资源需求将迅速增加。
网络钓鱼基础设施
当渔民出海捕鱼时,他需要一艘可靠、耐用的船,以便他可以信赖它来完成任务。对于出海捕鱼的钓鱼者来说也是如此:他需要一套能够满足其需求的强大基础设施。在本节中,我们将了解这些需求是什么,以及如何满足这些需求。
托管
运行网络钓鱼活动所需的最低配置可能是云端的简单 VPS,具有非常低的技术规格,例如 1 个 vCPU 和 2 GB RAM。我们还需要一个目标可以连接的公共 IP 地址。这几乎就是执行上述任何技术所需的全部内容。但是,对于更干净的方法,我们希望划分每个服务并正确处理敏感数据,基础架构模式可能看起来有所不同。
首先,如上所述,我们将处理敏感数据,例如有效会话 cookie 或明文凭证。为了降低这些数据被他人窃取的风险,重要的是不要将其存储在 VPS 上,而要将其存储在您有完全访问权限的机器上。即使此服务器经过强化,它仍然暴露在互联网上,并且可能通过不为公众所知的漏洞受到攻击,从而导致严重的信息泄露。好的做法是设置一个暴露的反向代理,将请求转发到内部本地服务。这些本地服务通常由网络钓鱼工具、SMTP 服务器和其他有用的应用程序组成,我们将在后面详细介绍。
仅暴露反向代理
其次,我们必须选择一个或多个符合借口的域名。对于这一部分,您有几种选择:注册新域名、注册过期域名、使用受信任的域名。
注册一个与借口完全匹配的新域名,引诱受害者毫不怀疑地上钩,听起来很诱人。但请注意,域名的“年龄”是网络钓鱼检测的一个关键方面。最近注册的、尚未在互联网上出现过的新域名可能会使您的网络钓鱼更加可疑。域名需要一些时间和请求才能进行分类。事实上,对您的域名进行良好的分类将降低掉入垃圾邮件或被公司代理阻止的可能性。以下是检查您域名分类的列表:
-
https://global.sitesafety.trendmicro.com/
-
https://www.fortiguard.com/webfilter
-
https://urlfiltering.paloaltonetworks.com/query/
-
https://sitereview.bluecoat.com/#/
-
https://sitelookup.mcafee.com/en/feedback/url
-
https://www.talosintelligence.com/reputation_center
如果您想跳过分类部分,您可以注册一个已经获得分类的过期域名。查找此类域名的最佳方法是使用ExpiredDomains.net。该网站列出了所有过期域名,并允许您使用高级过滤器搜索它们。您甚至可以创建具有特定条件的监视列表,并在域名被删除时收到电子邮件警报。请务必检查域名信誉,因为有些域名可能已被归类为“网络钓鱼域名”。
ExpiredDomains.net 主页
ExpiredDomains.net 上的高级过滤搜索
找不到合适的过期域名,或者无法对新域名进行分类?让我们借用一个受信任的域名。这个想法很简单:使用云服务获取域名。事实上,例如,在 Azure 上创建 VM 时,它也会影响公共 IP 地址。Azure 允许您为其某个域设置自定义子域名。下面,我们决定添加“auth”作为子域,最终用于诱骗受害者提供其 Azure 凭据,以防其成为目标。
Azure 中公共 IP 地址的 DNS 名称配置
最终结果是您拥有一个可解析为您的 VM 的子域auth.francecentral.cloudapp.azure.com 。
对网络钓鱼者虚拟机的 DNS 解析
同时,此子域名受益于 Microsoft Azure 域名的声誉。它通过了我们使用上面提供的列表执行的所有检查。当然,可以使用其他主要云提供商(例如 Amazon Web Services (AWS) 和 Google Cloud Platform (GCP))来实现相同的结果。
经过多次检查,分类结果良好,声誉良好
💡糟糕的 Punycode
Punycode 是一种长期用来欺骗人类的技术,它向人们展示一个与原始 URL 非常相似的 URL。例如,网络钓鱼者可能会注册一个与 apple.com 非常相似的域名 аррӏе.com。如果您没有注意到,组成 apple 的所有字母都已被看起来相似的 unicode 字符替换。但是,您的浏览器将在 URL 栏中显示 xn--80ak6aa92e.com。如今,电子邮件提供商也会检测到这种技术,收到的电子邮件几乎总是被标记为垃圾邮件。
编排
编排在这里被定义为不同元素之间的协调,以产生预期的效果。我们可以将编排视为基础设施的大脑,即中心点。虽然没有完美的工具可以扮演这个角色,但我发现Gophish是最佳选择。Gophish 自称是“专为企业和渗透测试人员设计的开源网络钓鱼工具包”。事实上,它有几个不错的功能,而且易于部署,使其成为网络钓鱼者的仪表板。
Gophish 允许您同时管理多个活动。每个活动都是一组配置,其中包含启动数据、钓鱼 URL、目标人群等。基本上,您可以创建按名字、姓氏、电子邮件和职位描述的“群组”,然后影响这些群组的活动。
您还可以设置“发送配置文件”,这实际上是活动中用作发件人的身份。发件人字段可以个性化以符合您的借口。发送配置文件允许您使用给定的凭据(或匿名)连接到 SMTP 中继或服务器并使用它来发送电子邮件。一个很酷的功能是能够通过发送测试电子邮件来检查活动是否能正常进行。
Gophish 允许用户直接在浏览器中创建电子邮件和登录页面模板,然后导入它们。模板中可以使用一些占位符,例如姓名或电子邮件地址,使定制的电子邮件对目标更具说服力。登录页面可以为空,并在创建电子邮件模板时指定不同的 URL。这样,Gophish 可用于发送和跟踪活动结果,同时仍采用其他网络钓鱼技术
Gophish 活动追踪页面
创建网络钓鱼活动的典型流程如下:1. 添加或导入目标组 2. 创建或导入电子邮件模板 3. 创建登录页面(仅适用于经典 HTML 页面) 4. 创建发送配置文件并测试发送电子邮件 5. 创建和安排活动 6. 获利
💡无缝集成
Kuba Gretzky创建了一个 Gophish 分支,可与他的 Evilginx 工具集成。这使网络钓鱼者能够从 Evilginx 提供的 2FA 绕过中受益,同时保留 Gophish 提供的活动管理和跟踪功能。您甚至可以将 Gophish 模板中的占位符与 Evilginx 的js_inject功能结合使用,这允许您将自定义 JavaScript 注入代理响应中。
保护
在反向代理重定向器后面设置基础设施是一个很好的起点,但这还不够。我们需要进一步加强它。目的是尽可能地控制谁访问了您的钓鱼页面,因为链接将包含在您发送给目标的电子邮件中。在到达预期收件人之前,它将通过各种检测机制(如沙盒)进行多次分析,这些机制会尝试在垃圾邮件到达收件箱之前将其捕获。钓鱼者可以采用与合法网站相同的方法来保护其页面免受机器人和不良访问的侵害。
可以在反向代理级别实施的基本保护是根据访问者的用户代理和 IP 地址将访问者列入白名单。这可以使用 Nginx 配置来实现。
您可以使用运算符对用户代理进行(不区分大小写)匹配,~*如下例所示。这将阻止用户代理中包含“googlebot”、“curl”或“python”的任何访问者。我们也可以做相反的事情,只授权被标识为目标使用的某些用户代理。在下面的例子中,如果目标不使用 Firefox、Chrome 或 Safari,它将被阻止。
location / {# if contains one of the following, blockif ($http_user_agent~* "googlebot|curl|python") { return403; }# if doesn't contain one of the following, blockif ($http_user_agent !~* "gecko|chrome|applewebkit") {return403; }}
要允许或阻止来自特定 IP 地址的请求,我们可以使用ngx_http_access_moduleNginx 的。例如,如果您只想允许来自法国的连接,则可以将此列表添加到您的 Nginx 配置中,如下所示。
location / {allow1.179.112.0/20;allow2.3.0.0/16;allow2.4.0.0/14;[...]denyall;}
这些保护措施非常基础,因为可以通过修改用户代理和使用代理来轻松绕过它们。为了改进这一点,我们可以使用外部提供商来帮助我们对抗机器人。例如,网络钓鱼者可以使用 Cloudflare 来访问其页面。免费套餐具有 SSL 证书(比经常被滥用的 LetsEncrypt 更受信任)、Web 应用程序防火墙和简单的机器人缓解等强大功能。通过激活“攻击模式”,Cloudflare 会显示一个带有其替代 CAPTCHA Turnstile 解决方案的插页页面,迫使用户在继续之前解决它。
受“攻击模式”保护的网页
另一个选择是使用 Google reCAPTCHA 并设置您自己的页面,如果用户通过挑战,该页面会将用户重定向到最终页面。一个好方法是模仿 Google 著名的“异常流量”页面。用户可能熟悉这个有时会出现的简单页面,这会增加对诱饵的信心。
假冒 Google 异常流量页面
如果作为网络钓鱼者,我们遵循这条路径并开始构建自己的重定向机制以允许特定用户访问页面,那么在粒度方面我们将没有任何限制。例如,我们可以只允许目标访问网络钓鱼页面一次,并阻止任何进一步的尝试。或者,没有那么严格,只允许已识别的非机器人访问者访问该页面。一种解决方案是使用Fingerprint,这是一个收集指标并使用“智能信号”对其进行评估的脚本。通过这种方式,我们可以授权第一个人类访问者访问该页面,同时将 Fingerprint 生成的标识符与插入 URL 中的唯一标识符相关联。另一个试图访问同一 URL 的访问者将被阻止,因为这两个标识符不匹配。
指纹生成的唯一标识符
💡智能信号
Fingerprint 不仅可以分配唯一标识符或检测机器人,还可以分析浏览器数据以获取访问者的精确资料。通过这种方式,Fingerprint 可以检测到一些有趣的信息,这些信息可以帮助确定访问者是否是有效目标:
-
虚拟机
-
模拟 Android 设备
-
隐身模式
-
用户代理欺骗
交付方式
现在我们已经了解了网络钓鱼者如何设置和保护其基础设施,让我们仔细看看他是如何设法将恶意电子邮件偷偷发送到目标收件箱的。本节将介绍网络钓鱼者发送看似令人信服的网络钓鱼电子邮件的不同方式,从而诱导目标点击链接并被欺骗。
发件人
当然,作为网络钓鱼者,我们可以花时间设置 SMTP 服务器,强化其配置并使其在互联网上获得信任。但是,这种方法需要时间,有时仍然会失败。为了绕过信誉过滤器并实现高传递率,攻击者通常会决定求助于已经到位并随时可用的知名解决方案。
既然互联网上有这么多 SMTP 中继服务器可供使用,为什么还要花时间设置呢?原因之一可能是实际欺骗目标域。这是一种在目标域缺少某些 DNS 记录时篡夺目标域的策略。检测此类错误配置的一个好工具是Spoofy。它会检查 DNS 记录并根据响应告诉您域是否可欺骗。您还可以参考此表来了解域是否可欺骗。如果是,如果您发送的恶意电子邮件假装来自同一域,则很有可能它就会进入受害者的收件箱。
Spoofy 识别的可欺骗域名
否则,我们可能会利用互联网上一些开放或配置错误的 STMP 服务器。这正是网络钓鱼者所做的。他们利用服务器可能配置错误(例如没有适当的身份验证)的事实来发送他们的活动。值得一提的是,这些服务器可能已经在之前的活动中被使用过,因此他们的声誉可能会受到影响。
为了解决这个问题,我们可以求助于第三方营销和邮件服务,例如Mailchimp、Mailjet或SendGrid。这些平台经常被滥用,因为它们提供了可信的发送基础设施,网络钓鱼者可以将其与自己精心挑选的域名配对。此外,这些服务还为攻击者提供了有用的功能,例如能够跟踪电子邮件是否已正确发送。大多数第三方邮件服务都提供免费套餐,允许您每月发送大约数千封电子邮件,下面是免费套餐比较表:
云服务提供商已成为另一个吸引网络钓鱼者的载体,因为它们提供具有可信基础设施的电子邮件服务。例如,Microsoft Entra ID (Azure) 提供格式为 <tenant>.onmicrosoft.com 的域,这对于社会工程学来说特别有效。由于这些电子邮件源自 Microsoft 的基础设施,因此它们会自动显得更值得信赖,并且更有可能进入收件箱。当人们在发件人的地址中看到 Microsoft 域时,他们更倾向于放松警惕并信任电子邮件的内容。例如,我们可以通过创建租户“helpcenter”并将我们的用户命名为“support”来冒充 Microsoft 支持团队,这将使我们的目标相信这是一封权威电子邮件。
伪造的 Microsoft 支持账户
想要更加自信?商业电子邮件入侵 (BEC) 将网络钓鱼提升到了一个全新的水平。网络钓鱼者不会创建虚假账户或伪造身份,而是利用他们已经通过网络钓鱼或暴力攻击入侵的合法公司电子邮件账户。当用于内部网络钓鱼时,这些电子邮件一定会以极高的信任度到达您的最终收件箱。即使以外部用户为目标,这些被入侵的账户也会受益于公司的既定声誉、现有关系和合法域名,从而保证他们的电子邮件能够到达目标的收件箱。
💡钓鱼式攻击
钓鱼式攻击者想要达到目的,一种隐秘的方法是先钓鱼一个更脆弱、意识更薄弱的目标。然后,利用受害者的账户,他可以接触到那些对外部攻击更有意识但对来自内部合作者的电子邮件没有怀疑的目标。这种技术特别危险的地方在于,只要借口不背叛你,就可以抑制大量的钓鱼指标。
虽然这并不是什么新鲜事,但滥用联系表单的现象又重新出现,而且比以往更加流行。网络钓鱼者以两种方式使用这些表单:要么在提交联系表单时,指定的电子邮件地址会收到邮件副本,要么只有钓鱼目标公司会收到邮件。在这两种情况下,攻击者都会滥用合法服务向目标发送恶意链接。有趣的是,邮件被投递的可能性非常高,而且网络钓鱼者想要发送的邮件数量可能没有限制。
电子邮件外观
我们已经了解了如何将电子邮件发送给目标,以及如何最大限度地提高其到达收件箱而不是垃圾邮件文件夹的机会。在目标没有注意到或已经确信发件人是合法的情况下,他们现在需要通过电子邮件的外观来说服他们。我们必须利用几种偏见来鼓励受害者继续认为一切都是真实的。
网络钓鱼者会复制电子邮件布局,开始利用“视觉熟悉度”。作为人类,我们容易受到“单纯曝光效应”的影响,这是一种偏见,即我们对以前见过的东西产生自然偏好。攻击者在设计电子邮件时自然会依赖这种效应,因为它会自动触发目标的积极第一反应。布局可以包括徽标、标题、副标题、文本、图像和页脚。这些是大多数自动电子邮件中常见的元素,例如 Microsoft 或 DocuSign 发送的电子邮件。最近,后者已在许多主题网络钓鱼活动中使用,当有人与您共享文档时,会重现相同的电子邮件。
以 DocuSign 为主题的网络钓鱼电子邮件(来源:卡巴斯基)
品牌模仿的工作原理是试图重现潜在受害者经常看到和识别的某些模式和细节。网络钓鱼者利用这种一致性偏见来满足目标随着时间的推移而形成的某些期望。例如,上面的网络钓鱼电子邮件屏幕截图重复了下面电子邮件的某些关键元素,这是从 DocuSign 收到的合法电子邮件(图形元素最近已更新)。结构是相同的:一个图标位于彩色横幅的中央,上面有要采取的操作和一个按钮,然后是文档发件人及其消息,最后是包含信息和说明的经典页脚。
原始 DocuSign 电子邮件
💡 HTML 徽标
图像(尤其是公司徽标)用于冒充品牌并增强电子邮件的可信度。但是,大多数电子邮件客户端会阻止远程内容或 base64 编码的图像。绕过此限制并保留图像优势的一种方法是仅使用 HTML 和 CSS 重新创建徽标。例如,此要点可用于创建 Microsoft 徽标。请记住不同电子邮件提供商和客户端之间的 CSS 兼容性,因此始终建议在与目标相同的环境中检查渲染。
我们对电子邮件合法性的认知也会因权威偏见而改变,因为我们往往较少质疑权威人物。一般来说,来自经理或同等职位的人的电子邮件,如果带有与原始电子邮件相同的签名,会更有说服力,让目标更少有空间去思考该行为的合法性。当一个假冒的 IT 管理员要求你“根据新政策更改密码”时,也会发生同样的行为,因为这是为了你的“安全”,你会遵守。
最后,网络钓鱼者会试图施加压力以获得更快的响应,再次减少您的思考时间,并可能导致您最初不打算采取的行动。这被称为“紧迫性偏见”。即使这种偏见通常通过借口以书面形式表达,但视觉方面可以帮助加强这种效果。例如,如果我们以前面的伪 IT 管理员为例,电子邮件包含一些指导说明、截止日期以及未执行操作的后果。所有这些元素都将以粗体或彩色文本突出显示。字体也可以精确选择以引起注意。下面是一个简单的借口示例,其中突出显示了滥用紧迫性偏见的元素:
采用多种偏见的网络钓鱼电子邮件
关联
链接是需要精心制作的最后一个元素。在本节中,我们将探讨网络钓鱼者使用的不同技术,以使他们的恶意链接看起来更可信,并绕过电子邮件过滤器等安全措施。
URL 缩短器是一种将长 URL 转换为短版本的服务。虽然这些服务最初是为了使共享链接更容易而创建的,尤其是在有字符限制的平台上,但它们现在经常被滥用于网络钓鱼活动。带有免费计划的热门 URL 缩短器包括Bitly、T.ly、Rebrandly(或免费版)、Short.io、Cutt.ly。
这些服务为网络钓鱼活动提供了几个关键优势。主要的好处是能够使用信誉评分高的可信域(使用前面提到的分类工具进行测试),同时保持简短、干净的 URL。许多服务还提供自定义子域和路径功能,允许网络钓鱼者创建与其借口完全一致的链接,例如:
-
https://bit.ly/office-365-sign-in
-
https://t.ly/account-microsoftonline-com
-
https://rebrand.ly/login-microsoftonline-com
-
https://microsoftonline.short.gy/login
-
https://cutt.ly/sign-in-to- continue
信誉良好的域名和精心设计的路径相结合,使得这些缩短的 URL 在网络钓鱼活动中特别有效。当目标看到熟悉的缩短域名后跟相关关键字时,他们可能更倾向于信任该链接。
跨站点脚本 (XSS) 和开放重定向漏洞为网络钓鱼者提供了重大机会。当网站接受用户控制的输入时,就会发生这些漏洞,这些输入会指定一个 URL,用户将被重定向到该 URL,而无需进行适当的验证。攻击者利用这些漏洞,通过利用受信任的域使其恶意链接看起来合法。
这种技术特别有效,因为初始域名是合法且受信任的,会立即给受害者带来安全感。重定向会自动发生,用户几乎没有时间注意到域名的变化,因为他们会无缝转移到恶意网站。大多数用户已经习惯于只检查 URL 的开头是否合法,这使得开放重定向成为一种特别具有欺骗性的方法。
让我们来看一个具体的例子。安全研究员 Jip ( @jipisback )最近在 X 上分享了一种滥用 YouTube 重定向功能的方法。以下是其帖子中描述的步骤:
-
查找任何描述中包含外部链接的 YouTube 视频
-
复制重定向 URL,其形式如下:https://www.youtube.com/redirect?event=video_description&redir_token=TOKEN&q=URL&v=VIDEO_ID
-
修改 q 参数以指向你的网站
-
利润
我们制作了一个重定向到 Quarkslab 网站的示例: 链接
https://www.youtube.com/redirect?event=video_description&redir_token=QUFFLUhqbmhkMTluUmZ4VVhPMk84TXdjTDN1NEFaVFhnZ3xBQ3Jtc0tsRkdrdlR5djhhSk1Uc3JxcFUzcXpETzkxT2dUWnFIOGpsYmExR3lDWHB6Q0ZMNFVhbllLYnM2WERDbFpOSDNmZmdkTkVBa0VFQnhsM2taWDZSMVlaUEJyZTZaY1JxaGpDMk1kdTk2X2IzNllIcHZ2Yw&q=https%253A%252F%252Fwww%252Equarkslab%252Ecom%252Fpentest%252Dproactive%252Dthreat%252Dmitigation%252F
💡重定向链
当利用开放重定向漏洞时,请使用 URL 缩短器作为重定向目标,而不是实际的网络钓鱼域。此技术有两个主要优点:它可以防止易受攻击的应用程序记录您的实际网络钓鱼域,并增加了另一层混淆,使用户更难检测到网络钓鱼。
云提供商为攻击者提供了一种强大的方法来创建看似合法的 URL,这些 URL 可以绕过安全解决方案,甚至可以欺骗那些对网络钓鱼有所了解的用户。这些平台提供受信任的域名,这些域名继承了主要科技公司的声誉。下表列出了可用于恶意目的(例如网络钓鱼)的服务的非详尽列表。
云提供的域名已成为完美的网络钓鱼工具,这些域名以Microsoft、Amazon和Google等可信赖的品牌名称为特色,可轻松通过安全检查。这些域名带有受信任的 SSL 证书,安全解决方案很少阻止它们,因为它们承载着合法的业务流量。它们通常被归类为“商业/技术”而不是“可疑”。虽然云提供商确实试图通过关闭可疑网站来防止滥用,但攻击者通常可以长时间不被发现地执行他们的活动。
例如,像 auth.francecentral.cloudapp.azure.com这样的域名 (在托管部分前面提到过)应该通过所有安全检查,同时对于将“Azure”识别为 Microsoft 产品的用户来说似乎是合法的。
结论
网络钓鱼的格局已发生重大变化,不再只是简单的 HTML 页面,而是更先进的技术,如浏览器中的浏览器 (BITB)、中间人攻击者 (AITM)和基于 WebRTC 的方法。一些方法甚至结合起来,创造出更强大的方法,如无框 BITB。这些方法在绕过多因素身份验证和创造令人信服的用户体验方面表现出越来越高的复杂性。
同时,利用云提供商域和复杂传递方法的基础设施改进使恶意电子邮件越来越难以检测。根据 Fortra 的数据,2024 年Cloudflare Workers 滥用增加了104% ,Cloudflare Pages 滥用增加了 198%。但他们意识到了这些滥用行为,并试图尽快做出回应。
随着人工智能的出现,攻击者拥有了更强大的工具来创建更令人信服的活动。然而,防御者也可以利用这项技术来检测网络钓鱼企图,通过识别人类可能错过的网络钓鱼细微指标。
有效防御网络钓鱼需要采用多层次的方法,结合技术控制和人员意识。组织需要实施高级电子邮件过滤、端点保护和网络监控,同时让安全团队和员工了解新的网络钓鱼技术。
原文始发于微信公众号(Ots安全):超越陷阱:深入探究现代网络钓鱼方法
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论