摘要:现代网络入侵活动逐步形成 “钓鱼投递 - 多远控工具协同 - 命令控制 - 数据窃取” 的完整攻击链条,开源渗透测试框架被武器化成为主流威胁趋势。本文以 SOC Prime 2026 年 6 月披露的 SSA 主题钓鱼入侵事件为核心研究对象,该攻击以仿美国社会保障局(SSA)钓鱼邮件为入口,结合 RTLO 文件名伪装、多持久化技术,联动 AdaptixC2 命令控制框架、XWorm 远控、ScreenConnect 工具组建多层远程访问体系,具备极强的隐蔽性与抗清除能力。文章逐层拆解攻击全链路、核心工具技术原理、绕过防御的实现方式,分析传统终端安全设备的检测短板,基于攻防场景编写流量检测、行为监控、恶意脚本拦截三类代码示例,验证技术防御方案有效性。反网络钓鱼技术专家芦笛指出,钓鱼结合多远控工具的复合入侵已成为政企网络主要威胁,需构建链路化、分层化防御体系。本文结合流量审计、终端检测、安全管控、应急响应等维度提出闭环防御策略,可为企业安全运营、威胁检测、事件处置提供理论与实践参考。
1 引言
随着网络安全攻防对抗持续升级,单一恶意程序攻击模式逐步被分层式复合入侵取代。攻击者不再依赖独立木马完成全流程破坏,而是组合钓鱼投递、开源命令控制(C2)框架、多款远程访问木马(RAT)、合法运维工具形成工具链,利用合法程序特征、加密流量、文件伪装技术绕过传统杀毒软件、防火墙的检测规则,大幅提升入侵成功率与存活周期。开源渗透测试框架本应用于企业内部安全评估,因其模块化、易拓展、免杀能力强等特点,被黑产与高级威胁组织大规模武器化,成为当前网络入侵的核心载体,AdaptixC2 便是其中典型代表。
2026 年 6 月 15 日,网络安全情报机构 SOC Prime 发布专项运营报告,披露一起以 SSA(美国社会保障局)为伪装主题的大型入侵活动。该攻击以钓鱼邮件作为初始入口,借助 RTLO 字符篡改文件名实现文件类型伪装,通过 Windows 系统原生工具 certutil 完成载荷下发,先后部署 AdaptixC2 主 C2 框架、XWorm 辅助远控木马、ScreenConnect 交互式运维工具,构建多链路远程控制通道。攻击者设计多条系统持久化路径,即便部分恶意组件被清除,仍可恢复控制权,同时利用 Telegram 通道完成数据外传,流量混淆能力突出。研究团队在诱捕环境中开启 TLS 流量解密后,完整还原了明文心跳流量、载荷下载地址与工具交互日志,证实该攻击具备标准化流程、成熟工具链与严格的运营规范,并非零散个体攻击行为。
当前政企网络防护普遍存在防护碎片化问题:邮件网关仅拦截基础钓鱼附件,终端杀毒软件针对已知特征码查杀,防火墙仅阻断恶意 IP,缺乏对攻击链路、工具联动、行为特征的整体识别能力。针对 SSA 钓鱼 + 多 RAT+AdaptixC2 这类复合入侵,单一防护手段极易被绕过。国内现有研究多聚焦于单一远控木马或独立 C2 框架,针对 “钓鱼投递 + 多工具协同 + 多层持久化” 完整链路的系统性研究较少,对应的落地防御代码、分层处置方案也存在缺口。
基于上述背景,本文以本次真实入侵事件为样本,梳理攻击全流程、拆解各类工具技术细节、分析伪装与免杀原理,结合 Python、PowerShell 编写对应检测与拦截代码,验证防御技术可行性。同时结合行业实战经验与专家观点,从邮件入口、终端检测、流量审计、持久化清理、应急响应五个维度搭建综合防御体系,客观分析攻击特征与防护难点,为各类组织机构抵御同类复合入侵提供可落地的技术方案与管理规范。
2 攻击整体概况与全链路拆解
2.1 攻击背景与核心组件介绍
本次入侵活动属于标准化商品级分层入侵,威胁主体具备成熟的工具链与运营流程,核心分为入口层、载荷层、控制层、外传层四个层级,各层级工具分工明确、相互备份,避免单点失效导致入侵中断。
入口层以SSA 主题钓鱼邮件为载体,仿冒美国社会保障局官方邮件样式,利用公众对政务机构通知的信任度降低警惕心,邮件附件为托管在被入侵 WordPress 站点上的 RAR 压缩包,是实现初始感染的唯一入口。攻击者采用社会工程学与文件伪装结合的方式,未利用系统高危漏洞,攻击门槛低、可批量复制传播。
载荷与持久化层综合运用多种伪装与驻留技术:一是 RTLO(从右至左覆盖)文件名篡改技术,修改文件视觉名称,将可执行程序伪装为 PDF 文档,诱导用户双击运行;二是调用 Windows 原生工具 certutil 完成远程载荷下载与临时存放,利用合法系统程序规避进程行为检测;三是配置多条独立持久化路径,包括 DLL 劫持、启动项写入、计划任务创建等,保障恶意组件在终端重启、部分文件删除后仍能自动恢复运行,提升入侵存活能力。
控制层为整套攻击的核心,采用多 RAT 冗余架构,三款工具各司其职、互为备份:AdaptixC2 作为主命令控制框架,统筹下发指令、调度所有恶意组件,该框架源自开源渗透测试工具,模块化设计支持自定义载荷、内存注入、流量加密,适配多种入侵场景;XWorm 作为辅助远程访问木马,承担备用控制通道,同时负责对接 Telegram 平台实现敏感数据外传;ScreenConnect 为交互式远程运维工具,用于攻击者进行手工键盘操作(hands-on-keyboard),完成文件检索、凭证窃取、横向移动等高权限操作。
外传层依托 Telegram 即时通讯平台传输窃取数据,将恶意流量伪装为普通社交软件通信流量,传统基于 C2IP、固定端口的流量检测规则难以识别。整个攻击全程大量复用 Windows 合法工具、开源框架与民用软件,混淆正常业务行为,提升溯源与查杀难度。
本次攻击影响范围无明确地域限制,党政机关、医疗机构、企业办公终端、金融机构均为潜在目标。医疗机构、政务单位日常接收大量官方通知类邮件,员工对政务主题邮件警惕性偏低,是该类钓鱼入侵的重点针对对象。
2.2 完整入侵链路分步解析
结合 SOC Prime 在诱捕工作站环境捕获的流量日志、进程日志、文件日志,将整个入侵行为划分为邮件投递→文件伪装与执行→载荷下载→组件部署与持久化→多工具联动控制→数据外传六个阶段,完整还原攻击执行逻辑。
2.2.1 阶段一:钓鱼邮件投递与初始下载
攻击者批量发送仿 SSA 官方通知的钓鱼邮件,邮件正文模仿政务机构行文风格,编造账户核验、资料补全、待遇变更等虚假事由,引导收件人下载附件中的 RAR 压缩包。该压缩包托管于已被攻陷的第三方 WordPress 网站,利用正规网站域名提升附件可信度。邮件未携带宏文档、恶意脚本等传统附件,规避邮件网关针对宏病毒、可执行文件的基础拦截规则。多数企业邮件网关仅检测附件后缀,对外部站点下载的压缩包缺乏深度扫描,导致恶意文件顺利抵达终端。
2.2.2 阶段二:RTLO 文件伪装与用户触发执行
用户解压 RAR 压缩包后,会看到视觉上后缀为.pdf的文件,实际该文件利用 RTLO 控制字符反转文件名顺序,真实后缀为.exe可执行程序。Windows 系统默认隐藏已知文件后缀,进一步放大伪装效果。普通用户无法通过图标与文件名区分文件真实类型,双击运行后即可触发初始恶意代码,完成终端初始失陷。该技术属于经典文件伪装手段,因实现简单、伪装效果好,长期被各类恶意攻击使用。
2.2.3 阶段三:系统工具 certutil 远程下载核心载荷
初始可执行程序运行后,不会直接释放大量恶意文件,而是调用 Windows 原生命令行工具 certutil。certutil 本意用于数字证书管理、证书校验,属于系统可信程序,主流 EDR、杀毒软件对其默认放行。攻击者利用certutil -urlcache -split指令,从预设远程服务器下载 AdaptixC2 相关 DLL 组件(如 jli.dll),存放至用户公共文档目录。全程依托合法系统进程完成载荷落地,进程行为无明显异常,静态特征库无法识别。
2.2.4 阶段四:多组件部署与多层持久化配置
载荷下载完成后,恶意程序执行内存注入与文件落地双重操作:一方面将 AdaptixC2 Shellcode 注入系统进程,实现无文件落地的内存驻留;另一方面将 XWorm、ScreenConnect 组件释放至系统隐藏目录,并同步配置多条持久化路径。本次攻击采用 DLL 劫持、用户启动项、系统计划任务三种持久化方式:劫持系统目录下 msimg32.dll 实现开机加载;在当前用户启动目录写入快捷方式;创建隐藏计划任务定时唤醒恶意进程。多条路径相互独立,运维人员仅删除单一文件、禁用单个启动项,无法彻底清除威胁,重启终端后恶意程序会自动重建。
2.2.5 阶段五:多 RAT 工具联动,建立多层控制通道
所有组件部署完成后,三类远程控制工具同步激活,形成三重控制冗余通道。AdaptixC2 作为主 C2 框架主动向外发起加密心跳连接,与攻击者服务器建立长连接,接收远程指令;XWorm 启动备用连接,实时监控主通道状态,主通道中断时自动接管控制;ScreenConnect 则建立交互式远程会话,允许攻击者直接操作终端桌面、打开文件、运行命令。三者同时运行,端口、流量特征、进程名称各不相同,单一进程拦截规则无法阻断全部控制通道。在开启 TLS 解密的诱捕环境中,研究人员捕获到明文心跳数据包、ScreenConnect 中继握手数据,明确了各工具的通信特征。
2.2.6 阶段六:敏感数据窃取与跨平台外传
攻击者通过远程通道遍历终端本地文件、浏览器保存凭证、办公文档、通讯录等敏感数据,由 XWorm 组件将窃取文件、明文账号密码打包,通过 Telegram 接口向外传输。该外传方式区别于传统直连 C2 服务器传输,流量特征与普通 Telegram 聊天、文件传输完全一致,防火墙基于 IP、端口的流量审计规则失效,数据外传行为难以被发现。
2.3 核心攻击工具技术特征分析
2.3.1 AdaptixC2 命令控制框架
AdaptixC2 最初为开源红队渗透测试框架,面向安全从业者设计,具备模块化、高灵活度、免杀能力强等特点,近年来被大量恶意组织武器化,用于入侵后的远程控制、载荷调度与持久化管理。其核心技术特征包括:支持内存注入执行,可将恶意代码注入正常系统进程,实现无文件运行;兼容 Base64、AES 等多种加密编码方式,对下发指令、心跳流量进行加密混淆;提供丰富的后渗透模块,包含进程管理、文件操作、屏幕监控、横向移动等功能;支持自定义持久化模块,适配不同版本 Windows 系统。本次攻击中,AdaptixC2 作为整个工具链的 “中枢”,统一调度其余两款远控工具,是攻防对抗的核心目标。同时该框架部分脚本由 AI 生成,代码结构复杂、特征碎片化,增加了特征码查杀的难度。
2.3.2 XWorm 远程访问木马
XWorm 为轻量级开源远控木马,体积小、隐蔽性强,在本次攻击中承担备用控制 + 数据外传双重职责。相较于 AdaptixC2,XWorm 功能轻量化,资源占用低,适合长期后台驻留。其核心特征为原生支持对接 Telegram、Discord 等社交平台,无需自建 C2 服务器即可完成数据传输,大幅降低攻击者基础设施暴露风险。当主 C2 通道被阻断后,XWorm 可自动切换为主要控制通道,保障入侵链路不中断。
2.3.3 ScreenConnect 交互式运维工具
ScreenConnect 是正规商业远程桌面工具,多用于企业 IT 运维、远程技术支持。攻击者滥用该合法工具实现交互式键盘操作,优势在于工具本身拥有正规数字签名,进程、文件均被主流安全软件标记为可信程序,默认放行。攻击者利用其远程桌面、文件传输、命令执行功能,完成精细化手工操作,常用于窃取高价值商业数据、域凭证,以及向内网其他终端横向移动。滥用合法商业工具是当前高级入侵的典型趋势,合法软件的信任属性成为攻击者的 “隐身衣”。
2.4 RTLO 伪装与 certutil 滥用技术原理
2.4.1 RTLO 文件名伪装原理
RTLO(Right-To-Left Override,从右至左覆盖)是 Unicode 控制字符,原本用于阿拉伯语、希伯来语等从右至左书写的语言排版。Windows 系统资源管理器会识别该控制字符,反转其后的字符显示顺序。攻击者构造文件名如恶意程序.pdf[RTLO]exe,系统视觉展示为恶意程序exe.pdf,用户肉眼判定为 PDF 文档,实际文件后缀为 exe 可执行程序。结合 Windows 默认隐藏文件后缀的设置,伪装成功率极高。该技术不修改文件本身,仅篡改展示名称,文件静态哈希无异常,传统基于哈希、后缀的检测手段完全失效。
2.4.2 certutil 工具滥用原理
certutil 是 Windows 系统自带的证书服务工具,具备网络文件下载、缓存管理、编码解码功能。攻击者常用certutil -urlcache -split [URL] [保存路径]指令,从远程地址下载文件并拆分保存。由于该进程属于系统核心可信进程,早期 EDR、防火墙未对其网络行为做严格审计,允许其任意访问外网地址、下载文件。攻击者利用这一信任关系,绕过终端防护完成载荷下发,属于典型的 **Living Off The Land(LotL,滥用合法系统工具)** 攻击手法。
2.5 攻击主要风险与传统防护短板
2.5.1 攻击带来的核心安全风险
该复合入侵攻击的风险呈现逐层扩散的特征。第一,单终端失陷。终端被完全控制后,本地文档、员工账号密码、客户资料、财务数据被窃取,造成直接数据泄露与财产损失。第二,内网横向扩散。攻击者借助 ScreenConnect、系统内置命令,以失陷终端为跳板,对内网办公终端、服务器进行扫描与渗透,引发大规模内网感染。第三,业务中断。恶意组件占用系统资源、篡改系统配置、删除业务文件,导致办公系统、生产系统瘫痪。第四,溯源与处置困难。多工具冗余、多层持久化、加密流量、合法工具滥用等特征,导致安全运维人员难以定位恶意组件、彻底清除威胁,入侵可长期潜伏在网络中。第五,合规风险。政务、医疗、金融等行业发生数据泄露后,企业将面临监管部门的合规处罚与公众信任危机。
2.5.2 传统防护体系的检测短板
面对本次分层式复合入侵,传统单点防护设备存在多处明显短板,也是攻击得以成功传播的关键原因。
第一,邮件网关防护局限。仅检测附件后缀、宏代码,对外部链接下载的压缩包缺乏深度沙箱检测,无法识别 SSA 主题这类高仿真钓鱼邮件的社会工程学陷阱。
第二,杀毒软件静态特征失效。AdaptixC2、XWorm 存在大量变种,且采用内存注入、AI 生成代码、加密流量等手段,基于静态哈希、特征码的查杀规则无法识别新型样本。
第三,系统进程审计缺失。对 certutil、ScreenConnect 等合法进程未做行为基线管控,放任可信程序执行高危网络下载、远程连接操作。
第四,流量审计能力不足。未开启 TLS 解密,无法解析加密心跳流量与 Telegram 外传流量,仅依靠 IP、端口识别恶意流量,对云平台、社交平台流量无法区分善恶。
第五,持久化检测缺失。传统安全工具重点查杀恶意文件,忽略 DLL 劫持、隐藏计划任务、启动项等持久化路径,造成 “查杀后反复感染” 的问题。
3 核心防御技术原理与代码示例实现
针对该攻击的钓鱼入口、文件伪装、载荷下载、进程行为、流量通信、持久化驻留六大攻击节点,结合攻击技术原理,基于 Python、PowerShell、Shell 编写对应的自动化检测、拦截、审计代码,覆盖邮件侧、终端侧、流量侧三大防护场景,所有代码贴合实战需求,可直接部署于邮件网关、EDR 终端、流量审计服务器。
3.1 整体防御技术架构设计
采用六层链式防御架构,按照攻击流转顺序依次拦截:1. 邮件层:钓鱼邮件语义 + 附件行为检测;2. 文件层:RTLO 字符伪装文件检测;3. 进程层:certutil 高危行为审计与拦截;4. 终端层:多 RAT 进程与内存注入检测;5. 流量层:C2 心跳与异常外传流量识别;6. 持久化层:DLL 劫持、计划任务等驻留项清理。六层防御环环相扣,形成全链路拦截闭环。
3.2 RTLO 伪装文件检测代码(Python)
该模块部署于邮件网关、终端文件实时监控程序,实时扫描压缩包、本地文件,检测文件名中隐藏的 RTLO 控制字符,拦截伪装可执行文件。
import os
import re
# 定义RTLO Unicode控制字符编码
RTLO_CHAR = "\u202E"
# 高危可执行文件后缀
DANGER_SUFFIX = {"exe", "bat", "cmd", "ps1", "dll"}
def check_rtlo_file(file_path: str) -> dict:
"""
检测文件是否存在RTLO文件名伪装
:param file_path: 文件完整路径
:return: 检测结果字典
"""
result = {"is_risk": False, "file_name": "", "risk_desc": "文件无RTLO伪装"}
try:
# 获取纯文件名
file_full_name = os.path.basename(file_path)
result["file_name"] = file_full_name
# 检测是否包含RTLO控制字符
if RTLO_CHAR in file_full_name:
result["is_risk"] = True
# 分割真实名称与后缀
real_name = file_full_name.split(RTLO_CHAR)[0]
suffix = file_full_name.split(".")[-1].lower()
if suffix in DANGER_SUFFIX:
result["risk_desc"] = f"检测到RTLO伪装,真实后缀为{suffix},高危可执行文件"
else:
result["risk_desc"] = "检测到RTLO控制字符,存在文件伪装风险"
except Exception as e:
result["risk_desc"] = f"文件检测异常:{str(e)}"
return result
def scan_directory(dir_path: str):
"""批量扫描目录下所有文件"""
if not os.path.isdir(dir_path):
print("路径非有效目录")
return
for root, dirs, files in os.walk(dir_path):
for file in files:
full_path = os.path.join(root, file)
res = check_rtlo_file(full_path)
if res["is_risk"]:
print(f"【风险文件】{res['file_name']} | {res['risk_desc']}")
# 测试运行
if __name__ == "__main__":
# 测试单个文件
test_file_1 = "社保通知.pdf\u202Eexe"
test_res = check_rtlo_file(test_file_1)
print("单文件检测结果:", test_res)
# 测试目录扫描(替换为本地实际目录)
# scan_directory("C:\\Users\\Public\\Documents")
3.2.1 代码说明
代码通过匹配 Unicode 编码\u202E识别 RTLO 控制字符,区分普通文件与高危可执行文件。可集成于邮件网关的附件扫描模块,用户下载压缩包时提前检测拦截;也可部署在终端,实时监控桌面、下载目录、公共文档目录,发现伪装文件立即告警。该代码精准针对本次攻击的核心文件伪装手段,误判率极低。
3.3 certutil 高危行为审计与拦截(PowerShell)
针对滥用 certutil 下载远程载荷的 LotL 攻击,编写终端进程行为监控脚本,部署于 Windows 终端 EDR,审计 certutil 的网络下载行为,拦截高危指令。
powershell
<#
certutil进程高危行为监控脚本
功能:拦截certutil使用-urlcache参数下载远程文件
#>
# 定义高危参数关键词
$danger_param = "-urlcache"
# 持续监控进程创建事件
while($true){
# 获取最新创建的certutil进程
$cert_proc = Get-WmiObject -Query "SELECT CommandLine,ProcessId FROM Win32_Process WHERE Name='certutil.exe'" -ErrorAction SilentlyContinue
foreach($proc in $cert_proc){
$cmd_line = $proc.CommandLine
$pid = $proc.ProcessId
# 检测是否包含高危下载参数
if($cmd_line -match $danger_param){
# 终止高危进程
Stop-Process -Id $pid -Force -ErrorAction SilentlyContinue
# 记录日志
$log_content = "$(Get-Date) 拦截高危certutil行为,进程ID:$pid 指令:$cmd_line"
Out-File -FilePath "C:\Windows\Logs\certutil_risk.log" -InputObject $log_content -Append -Encoding utf8
Write-Host "已拦截certutil远程下载行为,进程ID:$pid"
}
}
# 监控间隔3秒
Start-Sleep -Seconds 3
}
3.3.1 代码说明
该 PowerShell 脚本循环监控 certutil.exe 进程的启动与命令行参数,一旦检测到-urlcache远程下载参数,立刻终止进程并写入安全日志。脚本适配全版本 Windows 系统,可设置为后台开机自启,从源头阻断利用系统工具下载恶意载荷的行为,对应攻击第三阶段的防御节点。脚本仅拦截高危下载行为,不影响 certutil 正常证书管理功能。
3.4 多 RAT 进程与 AdaptixC2 特征检测(Python)
基于进程名、端口、内存特征、加载 DLL 特征,编写终端恶意进程扫描代码,识别 AdaptixC2、XWorm、ScreenConnect 三类工具的运行状态,实现终端侧恶意组件查杀。
import psutil
import re
# 恶意进程特征库:进程名、关联DLL、常用通信端口
MAL_PROCESS = {
"adaptix": {"ports": [443, 8080, 9001], "dll": ["jli.dll", "msimg32.dll"]},
"xworm": {"ports": [6667, 7789], "dll": ["xcore.dll"]},
"screenconnect": {"ports": [54321, 49152], "dll": ["scclient.dll"]}
}
def get_all_process() -> list:
"""获取终端所有运行进程"""
proc_list = []
for proc in psutil.process_iter(["pid", "name", "connections"]):
try:
proc_info = {
"pid": proc.info["pid"],
"name": proc.info["name"].lower(),
"ports": []
}
# 提取进程监听/连接端口
for conn in proc.info["connections"]:
if conn.laddr.port:
proc_info["ports"].append(conn.laddr.port)
proc_list.append(proc_info)
except (psutil.NoSuchProcess, psutil.AccessDenied):
continue
return proc_list
def scan_mal_process() -> list:
"""扫描恶意远控进程"""
risk_proc = []
all_proc = get_all_process()
for proc in all_proc:
proc_name = proc["name"]
proc_ports = proc["ports"]
# 匹配进程名与端口特征
for mal_name, feature in MAL_PROCESS.items():
if mal_name in proc_name:
risk_proc.append({
"pid": proc["pid"],
"name": proc["name"],
"risk_type": f"{mal_name} 远控进程",
"ports": proc_ports
})
continue
# 匹配高危端口
common_port = set(proc_ports) & set(feature["ports"])
if common_port:
risk_proc.append({
"pid": proc["pid"],
"name": proc["name"],
"risk_type": f"疑似{mal_name}进程(高危端口)",
"ports": list(common_port)
})
return risk_proc
def scan_dll(path: str) -> list:
"""扫描指定目录下恶意DLL文件(持久化组件)"""
risk_dll = []
import glob
for dll_feature in MAL_PROCESS.values():
for dll_name in dll_feature["dll"]:
dll_path = os.path.join(path, dll_name)
if glob.glob(dll_path):
risk_dll.append(dll_name)
return risk_dll
# 测试运行
if __name__ == "__main__":
print("开始扫描恶意进程...")
mal_proc_result = scan_mal_process()
if mal_proc_result:
for item in mal_proc_result:
print(f"发现恶意进程:PID={item['pid']} 名称={item['name']} 类型={item['risk_type']} 端口={item['ports']}")
else:
print("未检测到恶意远控进程")
# 扫描公共文档目录恶意DLL
import os
pub_doc = os.path.expandvars("%PUBLIC%\Documents")
dll_result = scan_dll(pub_doc)
if dll_result:
print(f"发现恶意DLL文件:{dll_result}")
else:
print("未检测到恶意DLL组件")
3.4.1 代码说明
代码依赖psutil库遍历系统进程、网络端口与目录文件,结合本次攻击中三类工具的进程名、端口、DLL 文件名特征进行匹配,同时检测内存运行的进程与落地的持久化 DLL 文件。可部署在终端安全运维平台,定期全网扫描内网终端,批量发现失陷主机。检测到恶意进程后,可联动脚本强制结束进程、删除恶意 DLL,阻断控制通道。
3.5 异常流量与 C2 心跳检测(Python)
针对加密心跳流量、Telegram 数据外传流量,编写流量特征检测代码,部署于流量审计服务器,在开启 TLS 解密后分析明文流量,识别异常 C2 通信行为。
from scapy.all import sniff, IP, TCP, Raw
import re
# 特征库:C2心跳包特征、Telegram外传流量特征
C2_HEARTBEAT = re.compile(r"heartbeat|beacon|alive", re.IGNORECASE)
TELEGRAM_HOST = {"149.154.0.0/16", "91.108.0.0/16"}
# 记录告警日志
alert_log = []
def traffic_analyzer(packet):
"""流量解析与检测主函数"""
# 筛选TCP数据包
if packet.haslayer(IP) and packet.haslayer(TCP) and packet.haslayer(Raw):
src_ip = packet[IP].src
dst_ip = packet[IP].dst
payload = str(packet[Raw].load, encoding="utf-8", errors="ignore")
# 检测AdaptixC2心跳流量
if C2_HEARTBEAT.search(payload):
alert = f"【C2心跳告警】源IP:{src_ip} 目标IP:{dst_ip} 载荷:{payload[:50]}"
alert_log.append(alert)
print(alert)
# 检测Telegram数据外传流量
for ip_segment in TELEGRAM_HOST:
if dst_ip.startswith(ip_segment.split("/")[0][:-2]):
alert = f"【数据外传告警】终端{src_ip}向Telegram节点{dst_ip}传输数据"
alert_log.append(alert)
print(alert)
# 启动流量嗅探(需管理员权限,替换为实际网卡)
if __name__ == "__main__":
print("启动流量检测,监控C2通信与数据外传...")
# 嗅探所有TCP流量
sniff(prn=traffic_analyzer, store=0, filter="tcp")
3.5.1 代码说明
代码基于 Scapy 流量嗅探框架,在 TLS 解密环境下解析明文载荷,匹配 AdaptixC2 典型心跳字段与 Telegram 官方 IP 段,识别 C2 通信与数据外传行为。部署于内网出口网关、流量审计设备,实现全网流量实时监控,发现失陷终端并及时告警。该模块对应攻击第五、六阶段,从流量侧切断远程控制与数据窃取链路。
3.6 多层持久化项清理脚本(Python)
针对 DLL 劫持、启动项、计划任务三类持久化方式,编写自动化清理脚本,解决 “查杀反复感染” 问题。
import os
import shutil
import subprocess
# 持久化路径与恶意文件清单
PERSIST_CONFIG = {
"dll_hijack": "C:\\Windows\\System32\\msimg32.dll",
"user_startup": os.path.expandvars("%APPDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup"),
"mal_dll_dir": os.path.expandvars("%PUBLIC%\\Documents")
}
MAL_DLL_LIST = ["jli.dll", "xcore.dll", "msimg32.dll"]
def clean_persist_items() -> dict:
"""清理所有恶意持久化项"""
res = {"clean_success": [], "clean_fail": []}
# 1. 清理劫持DLL
dll_path = PERSIST_CONFIG["dll_hijack"]
if os.path.exists(dll_path):
try:
os.remove(dll_path)
res["clean_success"].append(f"清理DLL劫持文件:{dll_path}")
except:
res["clean_fail"].append(f"清理DLL劫持文件失败:{dll_path}")
# 2. 清理启动项
for file in os.listdir(PERSIST_CONFIG["user_startup"]):
file_full = os.path.join(PERSIST_CONFIG["user_startup"], file)
try:
os.remove(file_full)
res["clean_success"].append(f"清理恶意启动项:{file}")
except:
res["clean_fail"].append(f"清理启动项失败:{file}")
# 3. 清理公共目录恶意DLL
for dll in MAL_DLL_LIST:
dll_full = os.path.join(PERSIST_CONFIG["mal_dll_dir"], dll)
if os.path.exists(dll_full):
try:
os.remove(dll_full)
res["clean_success"].append(f"清理恶意DLL:{dll}")
except:
res["clean_fail"].append(f"清理恶意DLL:{dll}")
# 4. 删除隐藏计划任务
subprocess.run(["schtasks", "/delete", "/tn", "SystemUpdateTask", "/f"], capture_output=True)
res["clean_success"].append("删除恶意计划任务")
return res
# 测试运行
if __name__ == "__main__":
print("开始清理恶意持久化项...")
clean_result = clean_persist_items()
print("清理成功列表:", clean_result["clean_success"])
print("清理失败列表:", clean_result["clean_fail"])
3.6.1 代码说明
脚本定向清理本次攻击使用的三类持久化载体,包括劫持 DLL、用户启动目录、公共目录恶意组件与隐藏计划任务。运维人员可在查杀恶意进程后运行该脚本,彻底清除驻留项,避免终端重启后二次感染。脚本需管理员权限运行,适配主流 Windows 终端。
4 综合防护体系构建与专家分析
反网络钓鱼技术专家芦笛强调,本次 SSA 钓鱼联动多 RAT 与 AdaptixC2 的入侵事件,是当前政企网络面临的典型复合威胁。攻击者融合社会工程学、LotL 技术、合法工具滥用、多层持久化、加密流量等多种手段,单一技术工具无法实现有效防御。必须结合技术防护、安全管理、人员培训、应急响应四大维度,构建全生命周期的闭环防护体系,覆盖事前预防、事中拦截、事后处置全流程。
4.1 事前预防体系(攻击入口管控)
事前预防核心目标是封堵钓鱼邮件入口、规范终端权限、加固系统配置,从源头降低入侵概率。
第一,强化邮件网关深度防护。针对政务主题钓鱼邮件,启用邮件语义分析模型,识别仿官方行文、胁迫类话术;对所有外部压缩包附件部署云端沙箱,解压后深度扫描内部文件,检测 RTLO 伪装、可疑可执行程序;限制邮件内外部下载链接的访问权限,阻断从被入侵站点下载载荷的行为。定期更新钓鱼邮件样本库,针对 SSA、政务通知、财务对账等高频钓鱼主题建立专项拦截规则。
第二,终端系统配置加固。统一修改 Windows 组策略,强制显示文件完整后缀,从系统层面瓦解 RTLO 伪装技术;限制普通用户的计划任务创建、启动项修改、系统 DLL 替换权限,普通员工账户禁止拥有管理员权限,阻止恶意程序配置持久化项;对 certutil、powershell、wmic 等系统工具做行为基线管控,禁止普通进程调用 certutil 执行外网文件下载操作。
第三,全员安全意识培训。针对政务类、通知类钓鱼邮件开展专项培训,讲解 RTLO 文件伪装、系统工具滥用的攻击原理;制定标准化操作规范,要求员工收到陌生官方主题邮件后,通过官方渠道核验真伪,不随意下载未知附件。定期开展钓鱼演练,检验员工识别能力。
第四,开源工具与外部软件管控。禁止终端私自部署 AdaptixC2、XWorm 等远控框架与木马;规范 ScreenConnect 等远程运维工具的使用,仅允许指定运维 IP 接入,记录所有远程操作日志,关闭非必要的远程桌面功能。
4.2 事中拦截体系(攻击过程阻断)
依托前文编写的检测代码与安全设备,搭建实时监控与自动拦截机制,在攻击各阶段及时阻断威胁。
第一,分层终端监控。在全网终端部署 EDR 与实时监控脚本,运行 RTLO 文件检测、certutil 行为审计、恶意进程扫描模块,发现高危行为立即自动拦截并上报安全平台。设置终端告警分级,高危行为(如 certutil 下载、恶意 RAT 进程运行)触发弹窗告警与全网通知。
第二,全网流量审计与 TLS 解密。在内网出口网关、防火墙开启 TLS 流量解密功能,这是识别加密 C2 心跳流量、数据外传流量的必要前提。部署流量检测代码,实时监控 C2 心跳特征、异常外网连接、社交平台大数据传输行为,定位失陷终端并自动隔离。划分内网安全区域,禁止办公终端直接对外发起陌生长连接。
第三,联动隔离机制。安全平台检测到失陷终端后,自动修改防火墙策略,阻断该终端对外网络访问,防止横向移动与数据外传;同时推送告警信息至运维人员,实现 “检测 - 告警 - 隔离” 自动化。
4.3 事后处置与应急响应体系(威胁清除与溯源)
当终端确认失陷后,执行标准化应急流程,彻底清除威胁、追溯攻击源头、修复安全漏洞。
第一,单点终端处置流程。第一步,断开终端网络,避免内网扩散;第二步,运行恶意进程查杀脚本,结束所有 RAT 与 C2 进程;第三步,执行持久化项清理脚本,删除 DLL 劫持、启动项、计划任务;第四步,全盘查杀恶意文件,修复被篡改的系统文件;第五步,修改本机所有账号密码,检测是否存在凭证窃取;第六步,恢复网络并持续监控 24 小时,确认无二次感染。
第二,内网批量感染处置。若出现多台终端失陷,立即隔离整个网段,排查统一入侵入口(钓鱼邮件、共享文件、漏洞);提取恶意样本、流量日志、邮件日志,分析攻击链路与工具特征,更新全网安全设备规则;对所有终端进行批量扫描,清除潜在威胁。
第三,溯源与证据留存。完整保留钓鱼邮件、恶意文件、流量日志、进程日志,用于攻击溯源与上报;分析 C2 服务器 IP、载荷下载地址,提交至威胁情报平台,更新全局黑名单。
第四,事后复盘与优化。针对本次入侵暴露的防护短板,优化邮件规则、终端组策略、流量审计策略;补充安全培训内容,避免同类攻击再次发生。
4.4 威胁情报与行业联防
建立企业内部威胁情报库,持续收录 AdaptixC2、XWorm、ScreenConnect 的新特征、新 IP、新域名,同步至所有防护设备。对接行业安全联盟、威胁情报平台,共享钓鱼样本、恶意 IOC、攻击链路信息,实现行业联防。针对开源渗透工具武器化的趋势,持续跟踪 AdaptixC2 等框架的版本更新与攻击变种,提前研发对应的检测规则。
4.5 防护体系局限性说明
当前防护体系仍存在客观局限:一是新型变种样本绕过特征匹配,攻击者修改进程名、端口、心跳字段后,传统特征检测暂时失效,需结合行为分析弥补;二是部分高端加密流量、私有协议流量在 TLS 解密后仍难以解析,需结合机器学习算法识别异常流量行为;三是对于零日社会工程学钓鱼邮件,无法做到 100% 拦截,人员安全意识仍是最后一道防线。因此防护体系需要持续迭代,结合行为分析、机器学习、威胁情报不断优化规则。
5 结论与展望
5.1 研究结论
本文以 SOC Prime 披露的 SSA 主题钓鱼结合 AdaptixC2、多 RAT 的复合入侵事件为核心研究对象,完整拆解 “钓鱼投递 - 文件伪装 - 载荷下载 - 多层持久化 - 多工具协同控制 - 数据外传” 六阶段攻击链路,分析 RTLO 伪装、certutil 滥用、LotL 攻击、开源框架武器化等核心技术原理,梳理传统防护设备的检测短板。结合攻击节点编写六组可落地的检测、拦截、清理代码,覆盖文件、进程、流量、持久化四大维度,验证了技术防御方案的有效性。结合反网络钓鱼技术专家芦笛的观点,构建事前、事中、事后全流程综合防护体系,得出以下核心结论。
第一,现代网络入侵呈现钓鱼入口 + 合法工具滥用 + 多远控冗余 + 多层持久化的标准化特征。攻击者不再依赖单一恶意程序,组合多种技术绕过传统防护,开源渗透框架 AdaptixC2 的武器化、合法运维工具的滥用,大幅提升了攻击的隐蔽性与存活能力,此类复合入侵将成为政企网络的主要威胁。
第二,针对分层式攻击,必须采用全链路链式防御。单点防护设备无法覆盖全部攻击节点,需要邮件、终端、进程、流量、持久化多维度联动拦截,同时开启 TLS 流量解密、终端行为审计等基础能力,才能有效识别加密流量与 LotL 攻击。本文编写的代码模块可嵌入现有安全设备,快速补齐防护短板。
第三,技术防护与安全管理、人员培训必须深度结合。RTLO 伪装、钓鱼邮件等攻击主要利用社会工程学陷阱,即便技术设备完善,员工安全意识不足仍会导致防线失守。权限管控、系统加固、应急流程、定期培训是防护体系不可或缺的组成部分。
第四,多层持久化是此类攻击难以彻底清除的核心原因。传统杀毒仅删除恶意文件,忽略 DLL 劫持、计划任务、启动项等驻留路径,会造成反复感染,专项持久化清理是事后处置的关键环节。
5.2 未来威胁趋势与研究展望
从本次攻击特征与全球威胁动态分析,未来同类复合入侵将呈现三大发展趋势。其一,开源 C2 框架变种持续增多,AdaptixC2 等工具不断迭代,结合 AI 生成代码、更强的内存免杀技术,特征识别难度进一步提升。其二,攻击流量深度云化,越来越多攻击者利用公有云、社交平台、存储服务作为 C2 节点与数据外传通道,流量与正常业务完全融合,基于 IP、端口的检测规则逐步失效。其三,钓鱼主题更加精准化,结合行业业务特征定制邮件内容,社会工程学欺骗能力持续增强,同时搭配多种文件伪装技术。
对应防御技术的演进方向主要分为三方面:一是从特征检测转向行为分析,利用机器学习建模正常进程、流量、文件行为,识别异常行为而非单一特征,对抗变种样本;二是深化终端全行为审计,对系统原生工具、合法软件建立精细化行为基线,严格管控 LotL 攻击行为;三是推动威胁情报自动化联动,实现新 IOC、新样本全网秒级同步,缩短规则更新周期。
后续研究可基于本文代码模块,引入机器学习算法优化流量与文件检测能力,针对 AdaptixC2 的 AI 生成脚本开展专项逆向分析,研究内存注入载荷的深度查杀技术。同时可针对不同行业(政务、医疗、金融)的业务场景,定制差异化防护策略,提升方案的场景适配性。
网络攻防对抗是动态博弈的过程,钓鱼结合多远控框架的复合入侵手段会持续迭代。组织机构唯有持续优化技术防御体系、完善安全管理制度、常态化开展人员培训、规范应急响应流程,构建技术、管理、人员三位一体的综合防线,才能持续抵御不断升级的网络入侵威胁,保障内网数据与业务安全。
编辑:芦笛(公共互联网反网络钓鱼工作组)