信息来源:Kaspersky discovers C++ version of BellaCiao malware | Securelist (2024年12月20日)
一、事件概述:从 .NET 到 C++,Charming Kitten 的技术升级
在高级持续性威胁(APT)的世界中,攻击者不仅追求隐蔽性,也在不断演进其开发技术栈。卡巴斯基近期发现,伊朗背景的著名 APT 组织 Charming Kitten(又名 APT35、Phosphorus、TA453)正在将其标志性的后门工具 BellaCiao 从 .NET 平台迁移到 C++,并推出了一个名为 BellaCPP 的新变种。
这一转变标志着 Charming Kitten 正在构建一个更隐蔽、更难检测、更持久的远程控制框架。与传统的 .NET 恶意软件相比,C++ 编写的 BellaCPP 能更好地规避内存扫描、减少运行时依赖,并更深度地集成到操作系统中。
更关键的是,BellaCPP 的发现表明:攻击者正在用“未知样本”替换“已知样本”,以在清除旧威胁后仍能保留在网络中。
二、发现过程:同一台机器上的“双生恶意软件”
BellaCPP 的发现源于一次对亚洲某机构的入侵调查。
- 安全研究人员首先发现了一例典型的 .NET 版 BellaCiao 恶意软件(MD5:
14f6c034af7322156e62a6c961106a8c); - 但进一步排查时,卡巴斯基的遥测系统在同一台机器上检测到另一个可疑样本;
- 经分析,该样本是一个名为
adhapl.dll的 DLL 文件,后被命名为 BellaCPP(SHA256:e4e3f09c4257269cef6cfbebc83c8a60376ce5e547080502e3e408a3f9916218)。
📌 关键警示:
即使清除了已知的 BellaCiao 样本,攻击者仍可能通过 BellaCPP 等“新型”后门维持对系统的控制。这凸显了彻底排查与纵深防御的重要性。
三、BellaCPP 技术分析:C++ 实现的隐蔽服务
1. 基本信息
- 文件名:
adhapl.dll - 路径:
C:\Windows\System32\ - 类型:PE32+ DLL(x86-64),可作为 Windows 服务运行
- 导出函数:
ServiceMain—— 表明其设计为系统服务组件
🔍 将恶意 DLL 部署在
System32目录并注册为服务,是典型的持久化驻留手法。
2. 核心执行流程
BellaCPP 的执行逻辑高度结构化,与 .NET 版 BellaCiao 保持一致,但实现更为底层:
- 解密三个关键字符串(使用 XOR 密钥
0x7B):C:\Windows\System32\D3D12_1core.dllSecurityUpdateCheckDNSRecords
- 动态加载外部 DLL:
- 尝试加载
D3D12_1core.dll(一个不存在的文件); - 若加载成功,则调用
SecurityUpdate函数; - 卡巴斯基推测:该 DLL 可能是一个缺失的载荷,用于创建 SSH 隧道。
- 尝试加载
- 域名生成算法(DGA):
- 使用与 BellaCiao 相同的模式生成 C2 域名:11<5个随机字母><目标标识符>.<国家代码>.systemupdate[.]info
- 例如:
1abcde12345.ir.systemupdate.info - 通过 DNS 请求获取 C2 IP,若返回特定 IP,则触发后续操作。
- 创建 SSH 隧道:
- 若 DNS 响应匹配预设值,BellaCPP 将创建一个 SSH 隧道;
- 将本地端口
49450映射到攻击者控制的服务器; - 实现反向连接,绕过防火墙限制。
🔍 技术亮点:
BellaCPP 本身不包含 SSH 功能,而是通过加载外部模块实现,这种“分阶段加载”策略极大降低了 IOC 暴露风险。
四、BellaCiao 的演进:从 .NET 到 C++ 的战略转型
1. BellaCiao 的历史与特点
BellaCiao 最早于 2023 年 4 月出现,是一个基于 .NET 的后门,具备以下能力:
- 创建隐蔽的 WebShell;
- 建立反向 SSH 隧道;
- 实现持久化远程访问。
其最大特点是:PDB 路径包含丰富信息,如:
\MicrosoftAgentServices\\MicrosoftAgentServices2\\MicrosoftAgentServices3\
这些路径不仅暴露了开发者的命名习惯,还暗示了版本迭代过程,为安全研究人员提供了宝贵的归因线索。
2. 为何转向 C++?
卡巴斯基分析认为,Charming Kitten 推出 BellaCPP 的主要原因包括:
| 优势 | 说明 |
|---|---|
| 规避检测 | .NET 程序易被内存扫描和反编译,C++ 更难分析 |
| 减少依赖 | 不依赖 .NET Framework,可在更多系统上运行 |
| 提升隐蔽性 | 可作为系统服务运行,行为更接近正常组件 |
| 支持模块化 | 支持动态加载外部 DLL,实现功能扩展 |
📌 战术意图:
从“易被发现的 .NET 后门”转向“更接近系统底层的 C++ 组件”,实现长期潜伏。
五、归因分析:为何指向 Charming Kitten?
尽管 BellaCPP 是一个新样本,但多项证据强烈指向其与 Charming Kitten 的关联:
| 证据 | 分析 |
|---|---|
| 共存于同一主机 | 与已知的 BellaCiao 样本同时存在 |
| C2 域名模式一致 | 使用systemupdate[.]info及相同的 DGA 算法 |
| 行为逻辑相同 | 域名生成、SSH 隧道、端口暴露等行为完全一致 |
| 开发风格延续 | PDB 路径命名习惯(如MicrosoftAgentServices)被继承 |
✅ 卡巴斯基评估:中高置信度认定 BellaCPP 为 Charming Kitten 所使用。
六、攻击目标与战略意图
✅ 已知受害者:
- 亚洲某机构(具体国家未公开);
- 结合 Charming Kitten 的历史活动,目标可能涉及:
- 政府与外交机构;
- 学术与研究单位;
- 人权组织与媒体。
🔍 攻击动机:
- 长期情报收集:通过 SSH 隧道实现稳定远程访问;
- 供应链渗透:利用可信域名(如
systemupdate.info)伪装更新服务; - 规避追踪:使用 DGA 和动态加载技术,降低被封禁风险。
七、防御难点与技术挑战
❗ BellaCPP 的四大反检测特性:
| 特性 | 说明 |
|---|---|
| 无文件落地(部分) | 核心功能由外部 DLL 实现,主程序仅负责加载 |
| 合法路径部署 | 位于System32,签名可能被滥用或伪造 |
| 服务化运行 | 以 SYSTEM 权限运行,难以被普通用户察觉 |
| DGA 域名生成 | C2 地址动态变化,难以通过黑名单阻断 |
八、防御建议
✅ 企业应采取的措施:
| 措施 | 说明 |
|---|---|
| 监控 System32 目录的异常 DLL | 检测非微软签名的 DLL 文件写入 |
| 审计 Windows 服务注册 | 查找可疑服务,尤其是以dllhost.exe或svchost.exe启动的 |
| 启用 DNS 日志分析 | 检测*.systemupdate[.]info类似域名的 DNS 查询 |
| 阻止未知 SSH 隧道 | 监控出站 SSH 连接,尤其是映射本地端口的行为 |
| 部署 EDR/XDR 解决方案 | 检测ServiceMain导出、DLL 动态加载等异常行为 |
| 定期排查“已清除”威胁的残留 | 攻击者可能部署新型后门替代旧样本 |
✅ 个人用户建议:
- 不随意下载未知来源的软件;
- 使用可靠的安全产品;
- 定期检查系统服务和启动项。
九、趋势洞察:APT 攻击的“跨语言演进”
BellaCPP 的出现,揭示了现代 APT 组织的一个新趋势:
| 趋势 | 表现 |
|---|---|
| 从 .NET 到原生代码 | 更多组织将后门从托管代码迁移到 C/C++ |
| 从单一到多阶段 | 主程序仅负责加载,核心功能由外部模块实现 |
| 从静态到动态 | 使用 DGA、内存加载、延迟执行等技术规避检测 |
| 从“广撒网”到“精控” | 针对特定目标定制样本,甚至包含用户名路径 |
这表明,今天的 APT 攻击已不再是“病毒传播”,而是一场“软件工程级别的渗透战”。
十、结语
BellaCPP 的发现提醒我们:
最危险的威胁,未必是全新的,而是“旧组织的新面孔”。
Charming Kitten 并未放弃其经典的 BellaCiao 框架,而是将其用 C++ 重新实现,使其更隐蔽、更持久、更难清除。这种“换皮不换心”的策略,正是高级威胁的典型特征。
面对这类“持续进化”的对手,我们必须从“查杀已知”转向“监控异常、理解行为、预测演进”的主动防御体系。
唯有如此,才能在这场无声的网络战争中,真正“断其根、绝其后”。