一场持续八年的"慢性"收割
2026年6月,安全研究员Bob Diachenko做例行扫描时,发现了一个暴露在公网上的开放目录。里面是一份数据库,装着来自194个国家、约8.6万台FortiGate防火墙和FortiProxy VPN网关的有效管理员凭证——几乎覆盖了全球一半暴露在互联网上的Fortinet设备。
这不是零日漏洞利用,不是邮件钓鱼,也不是任何传统意义上的"入侵"。攻击者只是登录了这些设备,像拿着原配钥匙开门一样自然。
但更麻烦的是,这些凭证不是一夜之间偷来的。攻击者花了八年时间,通过一系列未修补的FortiOS漏洞持续收割。其中最关键的一个"漏洞",其实是Fortinet自己在固件升级中留下的设计缺陷。
攻击链路:从凭据收集到内网渗透
第一阶段:八年累积的凭据采集
发起这次行动的威胁行为体讲俄语,目前还没明确归属到某个APT组织,不过从语言特征和基础设施运营方式来看,应该是高水平的网络犯罪集团。他们通过两条并行管道获取初始凭证:
- 持续利用八年来未修补的FortiOS CVE,其中包括多个已被CISA列入KEV(已知被利用漏洞目录)的SSL VPN漏洞。攻击者对暴露的FortiGate管理界面和SSL VPN门户做全天候扫描,对超过320,777个目标发起约11.6亿次凭证尝试——这是工业化级别的自动化。
- 利用FortiOS密码哈希的版本裂缝。旧版FortiOS(7.2.11之前)用salted SHA-256存储管理员密码哈希。SHA-256本身是强哈希算法,但设计上速度极快——GPU暴力破解的理想目标。Fortinet在后续版本中引入了PBKDF2慢哈希,但有个致命问题:只有用户下次成功登录时,密码才会被重新哈希。也就是说,那些升级了固件但管理员账户没有重新登录的设备,内存里仍然是可被GPU快速破解的旧哈希。
第二阶段:GPU农场暴力破解——AI热潮的"副产品"
这一步是整条链里最有意思的。
攻击者没有自建破解基础设施,而是通过Vast.ai(一个GPU算力租赁平台)按小时租用了约36个GPU工作节点,组成一个45块GPU的分布式破解集群。控制这些GPU的是一个暴露在公网上的Hashtopolis v0.14.3协调平台,管理面板地址为 85.11.187.8:8443。
Hashtopolis是开源的分布式哈希破解管理工具,后端调用Hashcat执行密码恢复。这个集群的处理能力足够在短时间内把大量旧版FortiOS的salted SHA-256哈希还原成明文。
用一张信用卡的预算复现了国家级情报机构才负担得起的算力——让这种"平民化超算"成为可能的,是生成式AI浪潮催生的大规模GPU算力商品化。这大概是这次攻击里最值得关注的"非技术"环节。
第三阶段:内网横向移动——拿到管理员,而不是绕过管理员
拿到明文管理员凭证后,攻击者执行了一系列高度针对性的后利用操作:
- 创建虚假管理员账户:在攻陷的FortiGate上创建名为
forticloud、fortiuser、fortinet-support、fortinet-tech-support的伪造账户。这些名字看起来像官方支持账号,在日志审查中很容易被忽略。 - 部署被动网络嗅探器:在防火墙上跑自定义嗅探脚本,把捕获的数据写到
fg_capture.log,持续收割流经边界的明文凭证(VPN登录、内部应用认证等)。 - AD/LDAP枚举:使用自定义工具
ad_enum.py和ad_full_audit.py对内网Active Directory和LDAP环境做全面枚举,绘制权限图谱。 - 密码喷洒与横向移动:用
spray_admin.sh和spray_da.py对内网域管理员账户做密码喷洒。拿到域管理员权限后,整张内网基本就是囊中之物。 - 数据外泄:通过
backup_dfs.py等工具挂载受害者的SMB/DFS共享,批量窃取文件。
第四阶段:防火墙变成跳板
从MITRE ATT&CK框架看,攻击者用到的核心技术点:
- T1595(主动扫描):对暴露的FortiGate和MSSQL目标做大规模主动扫描,筛选可攻击目标。
- T1133(外部远程服务):把SSL VPN当作外部远程访问入口。
- T1110(暴力破解):密码喷洒+凭证填充,对32万个目标发了11.6亿次凭证尝试。
- T1078(有效账户):用泄露和破解的合法管理员账户做认证,而不是利用漏洞——这种行为在日志里看起来完全正常。
访问被暴露的数据目录后,研究人员还发现了至少一个有效的SSL VPN配置文件(vpn5.conf),指向某个受害组织的内部网络。
"Pattern 53":安全基础设施成为首要攻击面
FortiBleed不是孤立事件,它是研究人员命名的"Pattern 53"行为模式的一个具体案例——核心意思是:攻击者把安全基础设施本身当作首要攻击跳板,而不是次要目标。
传统攻击链的逻辑是:先突破外围 → 在内网横向移动 → 最后才试图控制安全工具来掩盖行踪。Pattern 53把这个顺序整个翻了过来:防火墙本身是入口,SIEM本身是首个立足点,网络管理平台本身是配置推送攻击面。
为什么这样更高效?因为安全产品天生就有特权访问:FortiGate默认持有通向内部网络的凭据;Splunk默认能读取网络上所有日志源;Cisco SD-WAN Manager默认可以向每个边缘设备推送配置。攻陷安全产品,等于继承了产品被设计出来时就拥有的全部访问权限——不需要额外横向移动,权限就内建在产品的设计意图里。
为什么这比零日漏洞更危险
FortiBleed没用任何零日漏洞。攻击者利用的是:
- 旧版FortiOS中salted SHA-256的哈希弱点(CWE-916:计算强度不足的密码哈希)
- 升级后密码未被重新哈希的设计缺陷(CWE-522:凭据保护不足)
- 管理界面缺乏认证尝试限制(CWE-307:未充分限制认证尝试次数)
- 部分设备仍在使用默认或硬编码凭证(CWE-798,CWE-1392)
这些都不是传统意义上的"漏洞",而是配置与设计缺陷。安全团队习惯用CVE和漏洞利用指标来衡量风险,但FortiBleed绕过了整个漏洞模型——它攻击的是身份,不是代码。
Fortinet已经确认,受影响范围仅限于未应用FG-IR-26-060和FG-IR-25-647修复措施、且未启用MFA的设备。不过根据SOCRadar的分析,约35%被破解的凭证来自信息窃取恶意软件泄漏的老旧数据库——密码复用现象意味着攻击者甚至可以跳过暴力破解,直接用已经公开的凭据登录。
检测与防御建议
如果你的环境里有FortiGate,建议立刻做这几件事:
- 检查设备是否存在未授权的管理员账户,特别是
forticloud、fortiuser、fortinet-support、fortinet-tech-support这些用户名。 - 在所有FortiGate上启用MFA,重点是管理员登录和SSL VPN访问。
- 强制所有管理员在固件升级后重新登录一次,触发PBKDF2重新哈希。
- 限制管理界面对公网的暴露,只允许从信任IP或内部网络访问。
- 审查是否有异常流量记录到
fg_capture.log,这是嗅探器活动的典型痕迹。 - 检查Hashtopolis实例 85.11.187.8:8443 是否有连接记录——这个IP是攻击者的编排基础设施。
结尾
FortiBleed暴露了一个不太舒服的事实:我们最信任的安全设备——边界防火墙——恰恰是我们最不放心不下的攻击面。防火墙被设计成控制访问的守护者,但一旦守护者的钥匙被复制,整个信任模型就垮了。
用研究人员的话说:"Patch the firewall. Patch the SIEM. Patch the management plane. Then check whether any of them were already used as the door before you got there."——修补防火墙,修补SIEM,修补管理平面,然后看看它们是不是在你介入之前就已经被当成门用了。
技术附录
MITRE ATT&CK 技术映射
技术编号 | 技术名称 | 攻击链阶段 | 具体应用 |
|---|---|---|---|
T1595 | Active Scanning | 侦查 | 对320,777个FortiGate目标进行大规模主动扫描 |
T1590 | Gather Victim Network Information | 侦查 | 收集FortiGate目标的暴露信息与网络架构 |
T1583 | Acquire Infrastructure | 资源开发 | 通过Vast.ai租用约36个GPU工作节点 |
T1190 | Exploit Public-Facing Application | 初始访问 | 利用面向公众的FortiGate管理接口和SSL VPN门户 |
T1133 | External Remote Services | 初始访问 | 利用SSL VPN作为外部远程访问入口 |
T1110 | Brute Force | 凭据访问 | 结合密码喷洒与凭证填充,约11.6亿次凭证尝试 |
T1078 | Valid Accounts | 持久化/防御规避 | 使用泄露和破解的合法管理员账户进行认证 |
T1078.003 | Valid Accounts: Local Accounts | 持久化 | 创建虚假管理员账户(forticloud等) |
失陷指标(IOC)
类型 | 值 | 描述 | 核验依据 |
|---|---|---|---|
IP:Port | 85.11.187.8:8443 | Hashtopolis v0.14.3 编排平台实例 | 文章明确描述为攻击者控制的C2/编排基础设施 |
CWE漏洞类型映射
CWE编号 | 漏洞类型描述 |
|---|---|
CWE-307 | Improper Restriction of Excessive Authentication Attempts(认证尝试次数未充分限制) |
CWE-916 | Use of Password Hash With Insufficient Computational Effort(密码哈希计算强度不足) |
CWE-522 | Insufficiently Protected Credentials(凭据保护不足) |
CWE-256 | Plaintext Storage of a Password(密码明文存储) |
CWE-798 | Use of Hard-coded Credentials(硬编码凭证使用) |
CWE-1392 | Use of Default Credentials(默认凭证使用) |
攻击者工具清单
工具名称 | 类型 | 功能描述 |
|---|---|---|
Hashcat | 密码破解工具 | 从FortiOS配置哈希中恢复明文密码 |
Hashtopolis v0.14.3 | 分布式破解协调平台 | 管理约45个GPU的分布式破解集群 |
spray_da.py | 密码喷洒脚本 | 域管理员账户密码喷洒 |
spray_admin.sh | 密码喷洒脚本 | 管理员账户密码喷洒 |
ad_enum.py | 内网枚举工具 | Active Directory环境信息收集 |
ad_full_audit.py | 内网审计工具 | AD/LDAP环境枚举与权限分析 |
backup_dfs.py | 数据外泄工具 | SMB/DFS数据收集与外泄 |
spider.py | 文件枚举工具 | 内网文件系统遍历 |
smb_test.py | SMB连接测试工具 | SMB共享连接验证 |
参考来源
- https://www.dugganusa.com/post/three-weeks-three-vendors-the-security-infrastructure-is-the-target-pattern-53-at-scale
- https://intel.threadlinqs.com (FortiBleed威胁情报页面)
- https://www.hudsonrock.com/blog/fortibleed-75000-fortinet-firewalls-compromised-global-enterprises-exposed-claim-your-ethical-disclosure
声明:本文来自奇安信威胁情报中心,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。