某中型公司的营销经理正经历着一个令人沮丧的周二。一个关键客户会议的 Zoom 链接无法正常加载,浏览器显示缺少编解码器的错误。随后出现了一个带有“修复”按钮的有用弹窗。它要求经理复制一行代码,打开 PowerShell,并粘贴该命令以解决问题。几秒钟内,经理回到了会议中,却完全没有意识到他们刚刚邀请了一个威胁行为者进入公司的内部网络。这就是 ClickFix 社会工程学策略的核心,其最新演变是微软称之为 TerminalFix 的活动。
我最近在实验室分析了该活动的一个样本。该恶意软件的技术复杂性值得注意,但心理操纵才是攻击的真正引擎。攻击者已从技术漏洞转向我所称的“人为辅助执行”。当他们可以简单地通过说服人类绕过自己机器上的每一个安全控制时,他们就不再需要在浏览器中寻找零日漏洞。从风险角度来看,这绕过了整个网络周界的概念。
TerminalFix 活动始于受损的网站或恶意广告。当用户访问页面时,他们会看到一个模仿 Cloudflare CAPTCHA(验证码)或浏览器更新通知的逼真覆盖层。这是一个聪明的选择,因为用户习惯于信任这些界面。十年来,我们一直被告知验证码是我们证明自己是人类且安全的方式。攻击者通过将安全仪式转变为感染矢量,颠覆了这种信任。
在 TerminalFix 变体中,用户被指示执行一系列手动步骤来“验证”其身份或修复渲染错误。指令告诉用户按下特定的组合键,如 Windows 键 + R,或直接打开 Windows 终端。当用户遵循这些步骤时,网站会悄悄地将恶意命令复制到系统剪贴板。当用户粘贴他们认为是验证密钥的内容时,实际上粘贴的是启动多阶段感染的 PowerShell 单行命令。
观察威胁格局,这种方法非常有效,因为它避开了许多传统的邮件网关过滤器。收件箱中没有可扫描的恶意附件,也没有可疑链接。交互完全发生在浏览器和用户的本地环境中。按照设计,该命令通常会被混淆,或使用合法的系统工具(如“powershell.exe”或“msiexec.exe”)来下载下一阶段,这使得基础杀毒软件很难标记初始执行。
早期的 ClickFix 活动通常依赖 Windows 运行(Run)对话框来执行短命令。虽然对于简单的下载器存根有效,但运行对话框的字符限制限制了初始脚本的复杂性。TerminalFix 则转而针对 Windows 终端或 PowerShell。这种改变不仅仅是外观偏好。终端窗口可以接受明显更长的多行脚本,其中包括用于环境检查和反分析例程的内置逻辑。
微软研究人员认为,引导用户进入 PowerShell 增加了复杂脚本成功执行的可能性。现代 Windows 版本通常默认在 PowerShell 会话中打开终端,为攻击者提供了开箱即用的强大脚本环境。这种复杂性允许攻击者在任何次要负载到达磁盘之前进行初始侦察。脚本可以检查机器是否加入域,寻找特定的安全软件,或确定它是否在恶意软件研究人员使用的虚拟机内运行。
在幕后,初始 PowerShell 命令会下载一个 ZIP 压缩包。该压缩包内是一个合法的可执行文件和一个恶意 DLL。攻击者使用了一种称为 DLL 侧加载(DLL sideloading)的技术。当合法程序运行时,它会寻找运行所需的特定库文件。攻击者在同一文件夹中放置一个同名的恶意文件。系统加载了恶意代码而不是真正的库。这是一种在受信任应用程序的进程名称下隐藏恶意活动的隐蔽方式。
攻击链并未止步于简单的文件执行。TerminalFix 使用隐写术将其二级负载隐藏在看似无害的 PNG 图像文件中。这是一种针对基于网络的流量检测的应对措施。防火墙可能会拦截可执行文件的直接下载,但不太可能标记来自看似合法域名的一系列图像下载。恶意 DLL 从这些图像中提取隐藏代码,并在内存中组装最终负载。
该活动中最危险的组件之一是基于 Python 的反向隧道 C2 植入程序。该植入程序使用加密的 WebSocket 通道与攻击者的基础设施建立持久连接。它通过此通道隧道传输任意 TCP 流量。主动地讲,这对于事件响应人员来说是一场噩梦。它实际上将攻击者置于内部网络中,就好像他们物理插在办公室的以太网端口上一样。
如果发生涉及此反向隧道的违规事件,攻击者可以直接看到组织的域控制器、文件共享和内部应用程序。他们可以绕过许多面向外部的安全控制,因为他们的流量源自受信任的内部主机。微软研究人员观察到攻击者利用这种访问权限来提升权限并窃取敏感数据。在某些情况下,这种访问直接导致勒索软件在整个企业范围内的部署。
安全社区对于 TerminalFix 是否是一个真正独特的威胁存在激烈的辩论。包括来自 Proofpoint 的 Tommy Madjar 在内的一些研究人员认为,使用终端窗口并不是新进展。他们指出,早在 2024 年初的 ClickFix 活动就已经使用终端窗口来执行负载。从这个观点来看,TerminalFix 只是 ClearFake 或 ErrTraffic 等既有集群的又一次迭代。
我通过 Signal 与几位持有这种怀疑态度的威胁情报分析师进行了交流。他们认为这些活动是社会工程学诱饵的持续演变,而不是一组独特的、品牌化的威胁。无论我们称之为 TerminalFix 还是 ClearFake 的变体,技术现实都是一样的。攻击者正成功地从自动化漏洞利用转向操纵用户行为。这种转变要求我们重新思考如何防御端点。
在架构层面,问题在于我们构建的系统通过命令行向标准用户提供了巨大的权力。虽然开发人员和系统管理员需要这些工具,但典型的办公室职员很少需要接触 PowerShell。TerminalFix 活动利用了这种能力的过度配置。如果用户有权运行创建持久网络隧道的脚本,那么整个组织的安全就取决于该单一用户不被欺骗。
防御 TerminalFix 需要技术限制和用户教育相结合。撇开补丁不谈,最有效的技术对策是对不需要 PowerShell 和 Windows 运行对话框的用户进行限制。组织可以使用组策略(GPO)或 AppLocker 为这些工具创建“默认拒绝”姿态。如果我之前例子中的营销经理尝试打开 PowerShell 并收到“此操作已被管理员限制”的消息,攻击就会立即失败。
然而,广泛的限制并不总是可行。许多现代软件工具依赖终端执行来进行安装和更新。正如 Tommy Madjar 所指出的,甚至像 Claude Code 这样合法的开发工具也建议采用涉及将命令粘贴到终端的安装方法。这为用户创造了一个混乱的环境。他们被告知永远不要从网站粘贴命令,但随后他们的官方企业工具却要求他们这样做。这就是为什么教育是人为防火墙的关键任务组件。
培训必须超越简单的“不要点击”建议。用户需要理解受信任来源的概念以及剪贴板的特定危险。我建议组织开展专门模仿 ClickFix 技术的网络钓鱼模拟。看到虚假验证码如何轻易地引导至终端提示符,对大多数员工来说都是一次大开眼界的经历。当用户理解攻击背后的“原理”时,他们在面对真实威胁时更有可能具备韧性。
从取证角度来看,安全团队应监控异常的父子进程关系。像 Chrome 或 Edge 这样的浏览器很少会成为 PowerShell 会话的父进程,而该会话随后又会生成具有网络活性的 Python 解释器。这些信号是 TerminalFix 入侵的细粒度指标。建立正常终端使用的基准允许 SOC 在攻击者能够在网络中横向移动之前识别出这些异常。
来源:Microsoft Threat Intelligence, MITRE ATT&CK (Techniques T1547.001, T1574.002, T1027.003), Proofpoint Threat Research.
本文仅供信息和教育目的,不能替代专业的网络安全审计或事件响应服务。


