订阅以接收新文章的通知:

一场复杂网络钓鱼骗局的机制及我们如何成功阻止它

2022/08/09

14 分钟阅读时间
The mechanics of a sophisticated phishing scam and how we stopped it

2022 年 8 月 9 日,Twilio 宣布 遭到一次针对性的网络钓鱼攻击。在Twilio 受到攻击的大约同一时间,我们发现了一次针对 Cloudflare 员工的类似攻击。虽然确实有个别员工上当受骗,然而,通过使用我们自己的 Cloudflare One 产品,以及发放给每位员工的物理安全密钥(用于访问我们的所有应用),我们成功防御了这次攻击。

我们确认没有任何 Cloudflare 系统受到入侵。我们的 Cloudforce One 威胁情报团队 能够执行额外的分析来进一步剖析攻击的机制,并收集关键的证据来协助追踪攻击者。

这是一次针对员工和系统的复杂攻击,我们认为大多数组织都有可能遭到入侵。鉴于攻击者以多个组织为目标,我们希望分享我们所看到的详细情况,以帮助其他公司识别和缓解这一攻击。

针对性的短信

2022 年 7 月 20 日,Cloudflare 安全团队收到报告,称员工收到了看起来合法的短信,指向一个看似是 Cloudflare Okta 登录页面的网址。这些信息开始于 2022 年 7 月 20 日 22:50 UTC。在不到一分钟内,至少 76 位员工在其个人和工作手机上收到了短信。一些员工家属也收到了信息。我们还未能确定攻击者如何收集到这些员工的电话号码,但已经检查过我们员工目录服务的访问日志,没有发现任何入侵的迹象。

Cloudflare 运营一个全天候的安全事件响应团队(SIRT)。Cloudflare 的每位员工都受过向 SIRT 报告任何可疑情况的训练。SIRT 收到的报告中,超过 90% 被确认并非威胁。员工被鼓励报告任何情况,过度举报也没有关系。然而,这次 SIRT 收到的报告是一次真正的威胁。

员工收到的短信如下:

它们来自与 T-Mobile SIM 卡相关联的 3 个电话号码:(754) 268-9387, (205) 946-7573, (754) 364-6683 和 (561)524-5989。它们指向一个看似官方的域:cloudflare-okta.com。该域是通过域名注册服务商 Porkbun 于 2022 年 7 月 20 日 22:13:04 UTC 注册的,距离上述网络钓鱼攻击发动不到 40 分钟。

Cloudflare 构建自己的安全注册产品,部分是为了能够监控使用 Cloudflare 品牌的域名被注册的情况,并及时将其关闭。然而,由于这个域注册时间很短,尚未作为新的 .com 注册发布,以至于我们的系统未能检测到其注册,我们的团队尚未采取行动来将其终止。

一旦点击上述链接,就会进入一个网络钓鱼页面。该钓鱼页面托管于 DigitalOcean,看起来是这样的:

Cloudflare 使用 Okta 作为身份提供商。该钓鱼页面设计成与合法的Okta 登录页面完全相同。该钓鱼页面提示访问页面的人输入用户名和密码。

实时网络钓鱼

根据员工收到的内容,以及其他受到攻击的公司在VirusTotal 等服务发布的内容,我们得以分析了这次网络钓鱼攻击的有效负载。受害者在钓鱼页面提交后,其凭据被即时通过信息服务 Telegram 转发给攻击者。这个实时转发很重要,因为该钓鱼页面也会提示输入基于时间的一次性密码(TOTP)。

估计攻击者会实时收到凭据,并在受害者公司的实际登录页面输入,而且对很多组织而言,这一操作会生成一个代码并通过短信发送给员工,或显示在密码生成器上。然后员工将在钓鱼站点上输入 TOTP,后者也会被转发给攻击者。随后攻击者会在TOTP 代码过期前使用它来登录该公司的实际登录页面,从而击败大多数双因素身份验证措施。

尽管不完美,但仍受到保护

我们证实三位 Cloudflare 员工被钓鱼信息骗到并输入了凭据。然而,Cloudflare 并不使用 TOTP 代码。实际上,Cloudflare 的每一位员工从 YubiKey 这样的供应商获发放一个 FIDO2 兼容的安全密钥。由于该硬件密钥与用户关联,并实施源绑定,即使这样复杂的实时钓鱼攻击也无法收集到足够的信息来登录到我们的任何系统。虽然攻击者尝试使用泄露的用户名和密码凭据登录我们的系统,但他们无法通过硬件密钥的要求。

但这个钓鱼页面并非只是为了获取登录凭据和TOTP 代码。如果有人通过了这些步骤,钓鱼页面就会开始下载钓鱼有效负载,其中包括 AnyDesk 的远程访问软件。该软件一旦被安装,攻击者就能远程控制受害者的机器。我们确认,我们没有任何团队成员走到了这一步。然而,如果确实到了这一步,我们的端点安全软件也会阻止该远程访问软件的安装。

我们如何响应?

我们对该事件采取的主要响应行动如下

1. 用 Cloudflare Gateway 阻止该钓鱼域名。

Cloudflare Gateway 是一个安全 Web 网关解决方案,提供威胁和数据保护,附带 DNS/HTTP 过滤功能,并原生集成 Zero Trust。我们在内部使用这个解决方案,以主动识别恶意域名并予以阻止。我们的团队将该恶意域名加入到Cloudflare Gateway,以阻止所有员工对其进行访问。

Gateway 对恶意域名的自动检测也识别出了该域名并将其屏蔽,但由于该域名注册并发送消息的时间间隔非常短,在一些员工点击这些链接之前,系统尚未自动采取行动。鉴于这次事件,我们正在努力加快识别和阻止恶意域名的速度。我们还实施了对新注册域名的访问控制,这一功能已经向客户提供,但我们内部还没有实施。

2. 识别所有受影响的 Cloudflare 员工,并重置被泄露的凭据

我们对网络钓鱼短信的收件人与登录活动进行比对,识别威胁行为者利用我们员工账户登录的尝试。我们识别了因硬件密钥(U2F)要求而被阻止的登录尝试,其表明已输入正确密码但第二因素未通过验证。对于三位员工已泄露的凭据,我们重置了其凭据和任何活动会话,并对其设备进行扫描。

3. 识别和下线威胁行为者的基础设施

威胁行为者的网络钓鱼域是通过 Porkbun 新注册的,托管在DigitalOcean上。针对 Cloudflare 的钓鱼域是在首轮钓鱼攻击发动前不到一小时内设置的。该站点使用 Nuxt.js 前端,Django 后端。我们与 DigitalOcean 合作关闭了攻击者的服务器。我们还与 Porkbun 合作获得了对该恶意域的控制权。

从失败的登录尝试中,我们能够确定威胁行为者利用了 Mullvad VPN 软件,且显然是在 Windows 10 机器上使用谷歌 Chrome浏览器进行操作。攻击者使用的 VPN IP 地址为 198.54.132.88和198.54.135.222。这些 IP 地址被分配给美国专业服务器提供商Tzulo,该公司网站声称他们的服务器位于洛杉矶和芝加哥。实际上,前者运行于位于多伦多地区的一台服务器上,后者运行在华盛顿特区地区的一台服务器上。我们阻止了这些 IP 地址访问我们的任何服务。

4. 更新检测,以识别任何后续的攻击企图

根据从这一攻击中获得的信息,我们将更多信号加入到原有的检测机制中,以专门识别这一攻击行为者。截至本文撰写时,我们还没有发现任何针对我们员工的更多攻击。然而,来自该服务器的情报显示,攻击者当时还对其他组织发动了攻击,包括 Twilio。我们与这些组织取得联系,并分享了有关攻击的情报。

5. 审计服务访问日志,以确定是否有其他攻击迹象

以上攻击之后,我们筛查所有系统日志,以寻找来自这个特定攻击者的任何额外指纹。鉴于 Cloudflare Access 是所有Cloudflare 应用的中央控制点,我们可以搜索日志以查找攻击者可能破坏了任何系统的任何迹象。鉴于员工的电话成为了目标,我们也仔细检查了员工目录提供商的日志。我们没有发现任何破坏迹象。

吸取的教训及正在采取的额外措施

我们从每一个攻击中学习。即使攻击并不成功,我们也正在根据所了解到的情况进行额外的调整。我们正在调整 Cloudflare Gateway 的设置,以限制或隔离对过去 24 小时内注册的域上所运行网站的访问。任何包含“cloudflare”、“okta”、“sso” 和 “2fa” 等术语但不在允许列表中的网站,也将通过我们的浏览器隔离技术运行。我们也越来越多地使用 Cloudflare Area 1 的网络钓鱼识别技术来扫描 Web,寻找任何针对 Cloudflare 的网页。最后,我们正在加强 Access 实施,以防止来自未知 VPN、民用代理和基础设施提供商的任何登录。所有这些都是我们提供给客户的相同产品中的标准功能。

这一攻击还使我们目前做得好的三件事情变得更加重要。第一,要求硬件密钥来访问所有应用。和 Google 一样,自从推出硬件密钥以来,我们还没有遭遇任何成功的钓鱼攻击。通过像 Cloudflare Access 这样的工具,即使对传统应用使用硬件密钥也变得简单易行。如果您的组织对我们如何推出硬件密钥感兴趣,请联系[email protected],我们的安全团队将乐于分享我们在此过程中学到的最佳实践。

第二,使用 Cloudflare 自身技术来保护我们的员工和系统。Cloudflare One 的 Access 和 Gateway 等解决方案对于在这次攻击中保持领先至关重要。我们实施的 Access 要求对每一个应用使用硬件密钥。它还为所有应用的身份验证创建一个中央日志位置。如有必要,我们还可以在这里终止可能受到入侵的员工的会话。Gateway 让我们能够迅速关闭类似这样的恶意网站,并了解哪些员工可能已被攻击所欺骗。这些都是我们作为 Cloudflare One 套件的一部分向Cloudflare 客户提供的功能,这次攻击证明了它们的有效性。

第三,拥有多疑但不责难的文化对安全至关重要。落入网络钓鱼骗局的三名员工没有受到训斥。我们都是人,都会犯错。至关重要的是,如果确实犯错了,就要上报而非隐瞒。这起事件再次证明了为什么安全是 Cloudflare 每个团队成员工作的一部分。

事件的时间线

2022-07-20 22:49 UTC 攻击者向 Cloudflare 员工及其家人发送了100 多条短信。
2022-07-20 22:50 UTC 员工开始向 Cloudflare 安全团队报告短信。
2022-07-20 22:52 UTC 证实攻击者的域在用于企业设备的 Cloudflare Gateway 中被阻止。
2022-07-20 22:58 UTC 通过聊天软件和电子邮件向所有员工发送警告信息。
2022-07-20 22:50 UTC 至
2022-07-20 23:26 UTC
监控 Okta 系统日志和 Cloudflare Gateway HTTP 日志中的遥测信息,以定位凭据泄露。在发现后清除登录会话并暂停帐户。
2022-07-20 23:26 UTC 钓鱼网站被托管服务商下线。
2022-07-20 23:37 UTC 重置泄露的员工凭据。
2022-07-21 00:15 UTC 深挖攻击者的基础设施和能力

破坏的指标

类型 上下文和 MITRE 映射
cloudflare-okta[.]com 托管于 147[.]182[.]132[.]52 网络钓鱼 URL T1566.002: 网络钓鱼:发送给用户的鱼叉式网络钓鱼链接。
64547b7a4a9de8af79ff0eefadde2aed10c17f9d8f9a2465c0110c848d85317a SHA-256 T1219: 威胁者分发的远程访问软件

你可以做什么

如果您的环境中发现了类似的攻击,欢迎联系 [email protected],我们乐于分享有关保障企业安全的最佳实践。另一方面,如果您有兴趣了解我们如何实施安全密钥的更多信息,请参阅我们的 博客文章,或发送电邮到 [email protected]

最后,如果您想和我们一起检测并缓解下一次的攻击,我们的检测和响应团队正在招贤纳士, 欢迎加入我们

我们保护整个企业网络,帮助客户高效构建互联网规模的应用程序,加速任何网站或互联网应用程序抵御 DDoS 攻击,防止黑客入侵,并能协助您实现 Zero Trust 的过程

从任何设备访问 1.1.1.1,以开始使用我们的免费应用程序,帮助您更快、更安全地访问互联网。要进一步了解我们帮助构建更美好互联网的使命,请从这里开始。如果您正在寻找新的职业方向,请查看我们的空缺职位
Security (CN)Phishing (CN)Cloudflare Gateway (CN)Cloudflare Access (CN)简体中文

在 X 上关注

Matthew Prince|@eastdakota
Daniel Stinson-Diess|@shellcromancer
Cloudflare|@cloudflare

相关帖子

2024年4月12日 13:00

Cloudflare 如何确保客户不会受到 Let's Encrypt 证书链变更的影响

Let's Encrypt 的交叉签名链将于 9 月份到期,这会影响使用过时的信任存储的旧设备(Android 7.1.1 或更早版本)。为使客户免受这一变更的影响,Cloudflare 将在续订时更换 Let's Encrypt 证书,改用其他证书颁发机构 (CA)...

2024年3月08日 14:05

Log Explorer:在没有第三方存储的情况下监视安全事件

借助 Security Analytics + Log Explorer 的综合功能,安全团队可以在 Cloudflare 中本地分析、调查和监控安全攻击,无需将日志转发给第三方 SIEM,从而缩短解决时间并降低客户的总体拥有成本...