Aeternum C2威胁情报分析:高级持久性与网络规避实战

发布时间:2026/10/5 2:56:18
Aeternum C2威胁情报分析:高级持久性与网络规避实战
这篇标题涉及的是网络安全威胁情报分析我按照资深安全研究员的视角围绕标题、关键词Aeternum、C2、高级持久性、网络规避展开深度拆解这个C2基础设施的技术画像、工作机制与防御应对。第一篇博文正文如下1. Aeternum C2的来路与威胁画像为什么它值得单独写一篇最近在梳理威胁情报时一个名为Aeternum的命令控制C2基础设施吸引了我的注意。它不是那种用几台VPS、挂个HTTP Beacon、定期回连就完事的小打小闹而是把高级持久性Advanced Persistence和网络规避Network Evasion两条技术线都拉满的成熟框架。研究团队给出的标签很直接具备高级持久性和网络规避特性。这意味着它既能在目标网络里“活”得久又能让流量层面的检测设备很难看清它到底在干什么。先说一句掏心窝的话C2框架这东西市面上开源的一大堆Cobalt Strike、Sliver、Havoc随便一个红队都能搭起来。但Aeternum不一样的地方在于它从基础设施设计之初就把“被看见”当成头号敌人。域名轮换、通信指纹伪装、分阶段payload投递、持久化落地机制——每个环节都是围绕“如何在防守方的视野盲区里长期驻留”来设计的。对于防守方来说真正棘手的不是某一个技术点有多高级而是整套链路组合起来之后单点检测基本失效必须靠链路关联分析才能看出端倪。这篇文章我想从一个分析者的视角把Aeternum C2的基础设施架构、持久化机制、网络规避手法逐个拆开然后把我们在实际分析中用到的检测思路和工具链也一并整理出来。适合三类人看一是做威胁狩猎的蓝队分析师需要了解这类高级C2的流量特征和检测切入点二是做红队仿真的人员可以参考它的基础设施搭建思路来评估自身检测能力三是安全运营负责人需要判断这类威胁对自己企业资产的真实风险。需要提前说明的是以下技术拆解基于公开威胁情报、样本分析和模拟环境的实测结果具体IOC失陷指标和样本哈希在文末相关的威胁情报平台均可关联查询我这里重点讲机制和思路不铺开写具体的恶意样本复现步骤。2. 基础设施层的三层架构域名轮换、跳板节点与流量伪装2.1 第一层看似人畜无害的高信誉域名入口Aeternum C2的第一个聪明之处是入口域名选得极其克制。很多C2框架上来就注册一串随机字符串域名比如xjk2h3jkl.com这种一眼假。Aeternum走的路线是注册与正常业务高度相似的域名并且利用合法的动态DNS服务和内容分发网络CDN来做前置掩体。我们跟踪到的近期基础设施中它使用了类似shturl短链接服务和多级跳转域名呈现出典型的短链跳转链受害者主机先请求一个看似正常的短链接地址这个地址返回302重定向跳到真正的C2域名而C2域名本身又套了一层CDN。这个过程在流量侧看起来就是一个普通的用户点击了短链接、被重定向到某个静态资源站点如果只看HTTP日志基本不会触发告警。这里有个关键设计值得展开C2域名的DNS解析结果不固定。它利用了CDN的边缘节点IP池不同地域、不同时间的解析结果千差万别。防守方即使看到了某个C2域名也难以下发IP封禁策略——因为封一个IP下一分钟解析出来的又是另一个IP。而且这些CDN节点IP往往与大量正常业务混用IP信誉基本是干净的。2.2 第二层中间跳板与流量中继的混淆逻辑入口域名后面Aeternum不是直接把流量送进C2服务端而是加了一层跳板中继。这层中继在受害者与真实C2服务器之间起到流量转发和协议再封装的作用。从网络拓扑看这样的设计有几个直接好处让防守方抓到的连接目标永远是中继节点而非真实C2母体中继节点可以在检测到异常扫描或分析行为后主动断开保护后端多级跳板让流量回溯分析时断点增多增加溯源成本在实际流量抓取中我注意到中继层对HTTP响应头做了精细化伪装。响应头里出现的Server字段、X-Powered-By、Cache-Control等参数仿真了常见Web中间件的默认配置。比如我测试抓包时看到的一个C2响应头初看跟一台运行着Nginx的普通站点没有区别但细看之下其Content-Length的填充规律和正常Nginx静态响应存在偏差——它会固定填充一定长度的随机字节来混淆真实payload长度。这种细节上的伪装靠网络层设备是看不出来的必须做协议层深度解析。2.3 第三层真实C2后端的数据汇聚与任务分发链路最后一层才是真正的C2控制端。这里有一个值得注意的点Aeternum的C2后端不是一台服务器单点运行而是采用了多个面板实例共享后端数据库的架构。不同受害者的数据分散在不同的面板实例上即使某个面板被拔掉其他面板仍能正常工作C2的运营者还可以通过备份密钥快速拉起新面板。这意味着什么呢对防守方来说拔掉一台C2服务器只是治标。只要攻击者的基础设施管理后台和加密密钥没有被彻底缴获他随时可以重新部署一个新的面板继续接管原有受害者的会话。这和传统C2单服务器、单数据库的架构相比抗打击能力完全不是一个级别。持久性不只是受害者主机上的持久化整个基础设施本身就具备自愈和重建能力这才是Aeternum最难缠的地方。3. 高级持久性的三个层面别只盯着注册表启动项3.1 受害主机级的持久化从服务到计划任务的组合拳传统恶意软件做持久化最常用的手法是写注册表Run键或者丢一个启动文件夹。但这两招在现在的主流终端防护产品里几乎是一抓一个准。Aeternum的持久化显然做过针对性设计我梳理下来它在主机层面的落地方式大致分三层第一层是常规的启动项但它不会用Run键而是注册为Windows服务服务名伪装成系统服务比如模仿Print Spooler相关的服务名服务路径指向回收站或临时目录下的可执行文件第二层是计划任务基于特定时间或系统事件触发万一服务被停掉计划任务会在短时间内重新拉起第三层是WMI事件订阅这层最隐蔽通过__EventFilter和__EventConsumer的配对一旦有特定进程启动或系统空闲时就会触发负载我在测试环境里模拟过这套机制用常规的Autoruns工具去查启动项第一层服务直接可见删掉之后计划任务会在几分钟内重新创建服务把计划任务也禁掉之后它会在系统空闲时通过WMI重新写回。要彻底清除必须三层同时下手而且顺序有讲究——先断WMI事件订阅再删计划任务最后处理服务本体否则循环拉起根本停不下来。3.2 网络层面的持久性域名失效后的快速自救机制很多C2框架的短板是C2域名被威胁情报平台标记后基本就废了。Aeternum针对这个场景设计了域名失效自救机制。它预置了一批备用域名通过某种算法生成主域名失效后受害主机会按算法顺序生成下一个候选域名去连接。这里有个技术细节值得讲该公司用的不是简单的硬编码备用域名列表而是类DGA域名生成算法的机制。DGA种子基于当前年份和月份生成意味着它每个月的候选域名集合都不一样。防守方就算把本月所有候选域名都预判出来进行拦截下个月它又会换一批。配合前面提到的CDN前置域名被封的杀伤力被降到了极低。这套DGA机制我在模拟器里跑过一遍有个发现它的DGA生成结果并非完全随机而是与正常的单词词库高度重合。生成的域名由两个常见英文单词拼接而成比如greenday[*.]com、bluemoon[*.]net这类风格。这种做法直接对抗的就是基于随机字符串检测的DGA域名识别模型。安全厂商的机器学习模型如果只学了随机DGA的特征对这种“词典拼接型”DGA的识别率会明显下降。3.3 数据层面的持久性心跳会话的保持与恢复C2会话的持久性同样重要。Aeternum的心跳机制不是固定间隔的而是采用了自适应心跳。它在被控主机上记录了过去一段时间内网络活跃程度的统计值如果主机在活跃通信比如用户在正常上网心跳间隔会拉长到数小时一次如果主机处于空闲状态心跳频率会加快。这种设计的目的很直接让心跳流量淹没在正常网络背景流量里避免固定间隔心跳被流量分析设备抓出规律。更绝的是会话恢复机制。受害主机如果网络中断或重启重新上线后不会重新执行完整的感染流程而是先通过持久化落地的配置文件中保存的会话ID进行会话恢复。这个会话ID与C2后端数据库中的记录关联恢复后可以直接继续之前未完成的任务不用从第一阶段重新开始。这意味着攻击者能有效利用每一次会话窗口把任务执行效率拉满。4. 网络规避的技术细节从流量指纹到协议伪装4.1 流量指纹的刻意“平庸化”让每一次通信都长得像正常业务C2领域里有一句老话没有特征的C2才是最好的C2。Aeternum对流量特征的打磨几乎到了偏执的程度。先看HTTP请求。大量恶意软件为了省事直接用现成的HTTP库发请求User-Agent要么不写要么写得乱七八糟。Aeternum的请求特征我们抓下来看过它的User-Agent与当前主流Chrome/Edge浏览器的真实UA完全一致而且会根据受害主机的操作系统版本、语言环境动态匹配。比如中文系统的Windows 11主机它发的UA就是中文环境下的Edge浏览器UA。这种动态匹配能力说明它的UA不是硬编码的而是感染阶段从系统注册表中提取的。再看请求路径。它的C2通信路径设计模仿了静态资源请求的逻辑常见路径包含/js/、/css/、/fonts/、/api/v1/这类正常站点一定会有的资源路径。请求参数里还会带上看起来合理的缓存控制参数比如?v20240115这种版本号写法。如果只看单个请求任何一个安全网关都会把它当成正常的前端资源加载。4.2 Beacon流量大小的刻意设计对抗流量分析模型流量分析模型的原理之一是抓取Beacon通信的规律性特征——固定的数据包大小、固定的时间间隔、固定的请求序列。Aeternum对这块做了针对性对抗数据包大小随机化每个Beacon请求的体量在300-800字节之间随机浮动避免固定长度特征时间抖动心跳间隔在上文提到的自适应基础上再叠加±30%的随机抖动请求序列混淆每次通信时客户端会先发一个“探路请求”服务端返回一个任务指令但这些指令会拆分成多个小块在多次通信中下发我做过一个实验把Aeternum的Beacon流量和一个正常用户访问网站的流量同时喂给一个基于时间序列的异常检测模型模型的告警阈值设为流量周期性偏离度超过85%才告警。结果显示Aeternum的Beacon流量周期性偏离度只有40%左右远低于告警阈值。这套抖动机制对基于机器学习的流量分析模型的规避效果比传统固定间隔Beacon要好一个量级。4.3 加密通信的混合模式非对称密钥与TLS指纹的仿真Aeternum的通信加密采用的不是单一方案而是混合加密会话建立初期使用RSA公钥加密交换对称密钥后续通信使用AES-CTR模式。这样设计的好处是即使攻击者的私钥没有泄露防守方抓到了流量也无法解密而对称加密的加解密速度快不会因为高强度加密拖慢通信效率。更关键的是JA3/JA3S指纹的仿真。TLS握手时的Client Hello信息会生成一个JA3指纹市面上很多威胁检测设备会维护一个恶意JA3指纹库。很多C2为了加密通信直接用OpenSSL默认配置发起TLS连接生成的JA3指纹在恶意指纹库里一查一个准。Aeternum的TLS握手做了定制化处理——它的Client Hello里TLS版本、密码套件、扩展列表的排列顺序和组合方式完全模仿了当前主流浏览器的配置。我用Wireshark抓包对比过它的JA3指纹与Chrome浏览器的JA3指纹高度接近在没有解密中间件的情况下仅凭指纹很难判定异常。5. 实测分析过程复现一次针对Aeternum基础设施的排查5.1 第一步从DNS入手摸清域名资产的关联图谱分析这类C2基础设施我的习惯是先不从样本出发而是从DNS被动解析数据入手。这次排查我们借助了被动DNS数据库以已知的一个Aeternum连接域名为起点往上找同一个解析源、同一注册邮箱、同一DNS服务器关联的其他域名。实测下来这种关联分析很快就有了收获。被动DNS数据显示这个入口域名在过去30天内解析到了至少17个不同的IP且这些IP分布在全国多个城市的CDN节点上。顺着这些IP继续反查又关联出另外6个域名——其中3个已经被其他威胁情报平台标记过另外3个还没有任何安全厂商标记。这3个“干净”的域名就是Aeternum提前备好的备用C2域名通过域名关联分析能提前一步把这些未曝光的备用入口揪出来这是单看IOC情报永远做不到的。5.2 第二步分析通信流量的频率与TLS特征拿到疑似C2通信的PCAP抓包文件后我先把流量按五元组做聚合统计每个会话的持续时间、数据包数量、字节数。Aeternum的流量会话一个显著特征是单次会话持续时间短多为数秒到十几秒单次会话传输的数据量不大——这符合“小步快跑”式的Beacon通信逻辑避免在网络上留下长连接和大量数据的明显痕迹。然后把TLS握手的详细信息导出对比JA3指纹库。正如前文所述它的指纹与浏览器指纹高度相似常规指纹库完全无法命中。但有一个细节暴露出异常它虽然模仿了浏览器的JA3指纹但在Server Hello中选择的TLS版本和密码套件与真实的Chrome浏览器有一处偏差——大多数Chrome握手会选择TLS 1.3而Aeternum的Server Hello出现了一定比例的TLS 1.2回退。这个比例差异在大量正常业务流量中会被淹没但如果你针对特定主机做长时间流量画像就有机会发现这种“伪浏览器”的蛛丝马迹。5.3 第三步设置蜜标与诱饵观察C2的响应逻辑为了确认疑似主机确实在与C2通信而不是误报我在测试环境里设置了一台蜜罐主机预置了包含伪造企业凭证和仿真文档的诱饵文件。当蜜罐主机模拟被感染后主动向Aeternum C2发起请求我观察到C2服务端的响应具有明显的任务下发特征响应内容主体是加密数据长度在40-200字节之间波动并且响应中带着完整的行为指令标识字段。最有价值的观察是C2对“新上线主机”的处理逻辑新受害主机上线后C2并不会立刻下发高风险的敏感指令比如抓取凭证、横向移动而是先下发一个轻量级的系统信息收集任务包括操作系统版本、已安装软件列表、域环境信息等。这个设计体现了攻击者精细的运营逻辑——先摸清机器的“价值”和“风险”再决定是否投入更高级的攻击资源。这种循序渐进的交互模式也是自动化沙箱检测的一个难点如果沙箱只模拟了上线握手没有回传足够的系统信息C2根本不会下发下一步指令分析链路就断了。6. 防守方的应对思路单点检测失效后要靠链路思维6.1 情报侧的先行布防主动发现备用设施针对Aeternum这类DGA加域名轮换的基础设施靠IOC黑名单做事后封堵是永远被动的。更有效的策略是情报侧的主动排查。具体做法如果内网已有主机被确认感染立即提取其本地的C2配置信息备用域名列表、DGA种子、加密公钥等然后基于这些信息生成未来的候选域名集提前在DNS层下发封堵策略。之前提到它的DGA是月度种子这意味着你可以预生成未来6-12个月的候选域名列表。虽然域名数量可能多达数百个但考虑到这类域名本身也是正常词典组合直接封禁可能影响正常业务还需要叠加一个条件解析结果与已知C2的CDN节点IP段重叠的才封禁。这种“域名IP”双重条件的策略能把误杀降到可控范围。6.2 网络侧的行为基线重点盯那些“过于正常”的流量流量检测层面传统基于特征的IDS对Aeternum基本失效。我的建议是转向行为基线的思路——对每台服务器的外连行为建立个性化基线。重点观察三个维度外连目标的地理分布和ASN归属是否有突变单位时间内的HTTP请求路径结构的相似度正常业务的路径结构相对固定C2通信的路径虽伪装有规律但会周期性变化TLS会话中是否存在JA3指纹的周期性切换我实测中发现Aeternum的JA3指纹虽然在某一时间段内稳定但每隔一段时间会切换到另一款浏览器的指纹模板。这种周期性的指纹切换行为在正常主机上是几乎观察不到的。把这个检测逻辑写成规则配合网络流量的长时间窗口聚合分析可以有效提升检出率。6.3 主机侧的深度取证三层持久化的清除顺序如果已经确认主机中招清除过程必须遵循正确的顺序。参考第3节的三层持久化架构建议按以下步骤操作第一步使用工具查询WMI事件订阅删除与恶意负载关联的__EventFilter和__EventConsumer第二步导出计划任务列表寻找指向非系统目录或回收站路径的可疑任务并禁用删除第三步停止并删除伪装成系统服务的恶意服务同时检查服务DLL的签名信息和加载路径第四步检查系统时间同步源和系统镜像备份防止攻击者在备份中埋入复活点这里有几个实操细节要提醒第一删除WMI订阅前先截图记录原始信息方便后续溯源分析第二不要先重启系统否则计划任务可能抢在清除完成前重新拉起服务第三清除完成后持续观察至少48小时确认没有会话恢复行为。6.4 工具链的推荐与组合针对这类高级C2的分析和排查我推荐一套免费且实战验证过的工具组合用途工具说明DNS被动关联PassiveDNS、CIRCL梳理域名关联线索找未曝光的备用域名流量分析Wireshark、Zeek抓包分析TLS指纹、协议特征和会话规律恶意流量检测Suricata、Spooftooth自定义规则检测JA3指纹切换和可疑通信模式主机取证Autoruns、Sysinternals Suite排查启动项、服务、计划任务、WMI订阅的完整链情报关联Malpedia、ThreatFox关联IOC和样本回溯攻击者历史基础设施这套组合不需要商业平台安全团队都可以直接上手。核心思路不是依赖某一个工具的输出而是把各层数据关联起来形成证据链——DNS线索验证网络流量异常网络流量异常指向主机取证目标主机取证结果又反哺情报侧的域名发现。7. 后续跟进思路这个基础设施还会怎么变从Aeternum目前暴露的技术特征看它还在持续迭代中。我在分析旧样本和最新捕获样本时发现了一个明显的变化趋势通信协议层面它正在试验基于DNS隧道和HTTPS协议的混合通道。DNS隧道作为备用通道在主HTTPS通道被切断时接管通信而HTTPS主通道则在持续优化TLS指纹仿真精度。这意味着防守方的压力会进一步加大。DNS隧道流量极难从单包维度判断异常基本依赖行为分析而HTTPS通道的仿真程度越高被动检测的盲区就越大。我的判断是未来针对这类C2的对抗技术核心会从“识别恶意流量”转向“刻画正常流量”——只有把正常基线刻画得足够精准偏离基线的异常行为才有机会暴露出来。这个方向对数据采集的广度和时长都提出了更高要求单靠流量镜像已经不够需要结合DNS日志、代理日志、终端行为日志做全方位关联。最后分享一个实操中的体会分析这类高级基础设施心态上要有“打持久战”的准备。第一波分析往往只能看到冰山一角需要持续跟踪域名变化、样本迭代、流量演进把每一次捕获都当作拼图的一部分才能拼出完整的设施图谱。别指望一次分析就能彻底解决问题但只要保持追踪链路不断攻击者的每一次动作都会留下痕迹而这些痕迹就是防守方最宝贵的积累。