
引言
近年来,随着电子邮件安全防护技术的不断升级,传统基于HTML链接或可执行文件的钓鱼攻击已逐渐被现代邮件网关识别并拦截。然而,攻击者也在持续升级其战术,利用PDF附件作为钓鱼载荷的传播媒介,通过伪造身份诱导用户输入敏感信息,从而绕过传统安全检测机制。
本文将从技术角度剖析此类攻击的实现原理、攻击链路、检测难点、防御方案,辅以代码示例,为安全研究人员与企业构建可实操的反钓鱼思路。

一、PDF为何成为钓鱼攻击的理想载体?
PDF因其跨平台兼容性、格式稳定性以及对富媒体内容(如JavaScript、表单、超链接)的支持,长期以来被广泛用于正式文档交换。然而,这些特性也使其成为攻击者的“完美伪装工具”。
1.1 技术特性支持伪装
嵌入JavaScript:PDF支持内嵌JavaScript(通过/JS或/JavaScript对象),可在打开时自动执行。
交互式表单(AcroForm/XFA):允许创建登录框、输入字段,模拟真实网站界面。
外部资源加载:可通过/URI动作加载远程内容,实现动态钓鱼页面跳转。
视觉欺骗性强:支持高保真图像嵌入,易于伪造品牌LOGO、UI界面。
1.2 绕过传统邮件过滤机制
大多数邮件安全网关(如Proofpoint、Mimecast、Cisco ESA)主要依赖以下规则检测恶意附件:文件哈希黑名单(如VirusTotal)、可执行文件扩展名(.exe, .bat, .js)、HTML/URL提取与信誉评分。
而PDF文件通常被视为“静态文档”,不会触发深度沙箱分析,尤其是当其不包含已知恶意宏或二进制代码时。
二、攻击链路分析
一个典型的PDF钓鱼攻击流程如下:
钓鱼邮件→伪装品牌PDF附件→用户打开PDF→诱导填写表单或点击链接→跳转至仿冒登录页→窃取凭证

PDF木马快捷方式 图源:火绒
示例场景:伪装为“Microsoft账户安全警告”
攻击者发送一封标题为“Your Microsoft Account Requires Verification”的邮件,附件名为security_alert.pdf。该PDF包含:
微软官方LOGO
“Verify Your Identity”按钮(实际为超链接)
输入框提示:“Enter your email and password to secure your account”
点击按钮后,用户被重定向至一个与login.live.com高度相似的钓鱼网站。
三、技术原理与代码示例解析
我们通过Python和PyPDF2、pdfminer等库来分析此类PDF的结构特征。
3.1 检测PDF中的JavaScript

注:上述代码仅为简化示例,实际中需处理加密PDF、间接对象引用等问题。
3.2 分析交互式表单字段(AcroForm)

3.3 提取并分析超链接

四、基于行为与机器学习的防御
4.1 构建PDF威胁评分模型
我们可以为PDF文件构建一个综合风险评分系统:


特征权重说明
包含JavaScript30高风险行为
存在密码输入框25直接用于凭证窃取
外链指向非常规域名20如短链、新注册域名
嵌入图像与知名品牌匹配15使用图像识别比对
文档创建时间异常(未来时间)10常见于伪造文档
4.2 沙箱环境中的动态行为监控
建议在隔离环境中使用PDF沙箱(如Cuckoo Sandbox + PDFAnalyzer插件)监控以下行为:
自动提交表单数据到远程服务器
执行app.launchURL()调用
修改注册表(Windows环境下)
创建临时文件或下载第二阶段载荷
五、企业级防御建议
5.1 邮件网关策略增强
对所有PDF附件进行沙箱分析
禁止PDF中执行JavaScript(通过策略模板)
对包含表单的PDF添加警告水印
5.2 终端防护
配置Adobe Reader禁用JavaScript:Edit > Preferences > JavaScript > Uncheck
部署EDR解决方案监控PDF进程行为(如AcroRd32.exe网络连接)
5.3 用户教育
强调“永不通过PDF输入账号密码”
培训识别钓鱼特征:拼写错误、非官方域名、紧迫性语言
六、结语
PDF钓鱼攻击的本质是利用用户对“文档”的信任心理,将原本安全的信息载体转变为攻击跳板。我们必须超越“文件类型”的表层判断,深入文档结构、行为逻辑与上下文语义,构建多层防御体系。随着AI生成内容技术的发展,攻击者可能自动生成高度个性化钓鱼PDF。安全无小事,应警惕每一份“看似无害”的PDF。
作者:庞佳、芦笛 中国互联网络信息中心
编辑:芦笛(公共互联网反网络钓鱼工作组)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。