伪装成10086官网流量的Cobalt Strike木马深度分析
字数 5305
更新时间 2026-05-10 17:43:01

Cobalt Strike 木马伪装 10086 官网流量攻击样本分析与防御教学文档

一、样本概述

本教学基于GR_Specialist_Riyadh_Application.zip恶意压缩包样本,该样本通过多重规避手法(隐藏文件、快捷方式诱导、白加黑 DLL 加载)落地 Cobalt Strike 远控木马,并伪造中国移动 10086 官网流量逃避检测。核心特征包括:内置 IP 字符串作为加密载体、内存混淆反检测、伪造 Referer 头伪装正常访问。

二、样本基本信息

属性 详情
压缩包名称 GR_Specialist_Riyadh_Application.zip
文件大小 14719923 字节(约 14MB)
修改时间 2026-04-29 14:39:13
MD5 9E0B9674F112BEB7CDC0AD5FECA7D5E7
SHA1 689B4D9A5B7B0A71BD78B8C95B51EEFFDA561F19
CRC32 64F7DD02

三、攻击流程与技术细节

(一)阶段1:压缩包隐藏文件规避

  • 现象:压缩包大小 14MB,解压后仅 4MB,存在大量隐藏文件(通过复制粘贴生成)。
  • 验证方法:开启系统“显示隐藏文件”功能,可看到大量冗余隐藏文件;关闭则仅显示少量可见文件。

(二)阶段2:快捷方式诱导执行

1. 关键文件:CV_Omar_AlFarsi_Government_Relations.pdf.lnk

属性 详情
文件大小 4012769 字节
修改时间 2025-11-24 18:00:08
MD5 A5B38D64AEDB3695EFE71917091DB403
SHA1 DD98C0708E792D7E452AAA1725CB68C39FA230AF
CRC32 D3E85FE6
  • 执行逻辑:快捷方式指向系统命令 C:\Windows\System32\rundll32.exe url.dll,FileProtocolHandler ".\__init\msedge.exe",诱导用户点击后加载 __init 目录下的 msedge.exe

(三)阶段3:白加黑 DLL 加载(核心规避手法)

1. 伪装正常的 msedge.exe

  • 真实身份__init\msedge.exe 实为 2.7.0.0 版本 openvpn.exe(带正常数字签名),用于绕过杀毒软件对“未知可执行文件”的检测。
  • 文件信息
    • 大小:929352 字节
    • 版本:2.7_git.0
    • 修改时间:2024-06-15 07:23:14
    • MD5:673ECDC537C00AF133BB9689F09FB412

2. 恶意 DLL:libcrypto-3-x64.dll

  • 文件信息

    • 路径:__init\libcrypto-3-x64.dll
    • 大小:1909320 字节
    • 版本:2.7_git.0
    • 修改时间:2026-04-16 20:31:28
    • MD5:109887D26F3AEF625300E537D2F41237
  • 恶意特征

    • CRYPTO_get_ex_new_index 函数有实际代码,其余导出函数为空(规避 DLL 导出表检测);
    • 内置海量 IP 地址字符串(作为加密载荷载体);
    • 通过 GetProcAddress 动态获取 API 地址(规避静态导入表检测)。

3. 正常 DLL(辅助文件)

  • libpkcs11-helper-1.dll(MD5:F10226993F09C1E8F78E1FBC8E674802)
  • libssl-3-x64.dll(MD5:62E05538396D1403D1B3B02CD75767CC)
  • 作用:配合 msedge.exe(openvpn.exe)正常运行,降低用户怀疑。

(四)阶段4:解码与解密恶意载荷

1. IP 字符串转十六进制载荷

  • 样本调用 RtlIpv4StringToAddressA 函数,将内置 IP 地址字符串转换为十六进制载荷,转换后大小:0x12C04 * 4 = 0x4B010 字节。

2. 异或解密 shellcode

  • 对转换后的载荷执行异或算法解密,得到 Cobalt Strike Beacon shellcode。

(五)阶段5:内存混淆反检测

  • 操作
    1. 调用 VirtualAllocExNuma 申请内存;
    2. 调用 SystemFunction036(RtlRandomEx)填充随机数;
    3. 将解密后的 shellcode 拷贝至随机内存,干扰内存特征检测。

(六)阶段6:shellcode 执行与 C2 通信

1. 运行 shellcode

  • 调用 VirtualProtect 修改内存属性为可执行,再通过 EnumCalendarInfoA 触发 shellcode 执行。

2. Cobalt Strike Beacon 配置(核心 C2 信息)

通过 CobaltStrikeParser 工具提取配置,关键信息如下:

配置项 详情
Beacon 类型 HTTPS
C2 服务器 111.229.112.67:8443(中国-上海市,腾讯云厂商)
伪装流量 Referer 头:https://10086.cn/https://shop.10086.cn/mall_100_100.html
休眠时间 30000 ms(30 秒)
抖动率 37%
User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4044.62 Safari/537.36
水印(Watermark) 666666666(Cobalt Strike 破解版常用标识)

四、关键 IOC(入侵指标)

类型
LNK 文件 MD5 A5B38D64AEDB3695EFE71917091DB403(CV_Omar_AlFarsi_Government_Relations.pdf.lnk)
恶意 DLL MD5 109887D26F3AEF625300E537D2F41237(libcrypto-3-x64.dll)
正常 exe MD5 673ECDC537C00AF133BB9689F09FB412(msedge.exe/openvpn.exe)
C2 地址 111.229.112.67:8443

五、防御与检测建议

1. 静态检测

  • 检查压缩包内是否存在大量隐藏文件(开启“显示隐藏文件”验证);
  • 校验 msedge.exe 的数字签名真实性(虽为 openvpn.exe 签名,但路径异常);
  • 扫描 libcrypto-3-x64.dll 的导出表(仅 CRYPTO_get_ex_new_index 有代码)。

2. 动态检测

  • 监控 rundll32.exe 加载非系统目录的 msedge.exe
  • 检测 libcrypto-3-x64.dll 的动态 API 调用(GetProcAddress 批量获取函数);
  • 拦截 Referer 头包含 10086.cn 的可疑 HTTPS 请求(结合 C2 地址 111.229.112.67:8443)。

3. 内存检测

  • 排查 VirtualAllocExNuma 申请的内存中是否存在随机数填充 + shellcode 特征;
  • 监控 EnumCalendarInfoA 等非常规函数的回调执行(可能为 shellcode 入口)。

4. 网络防御

  • 封禁 IOC 中的 C2 地址(111.229.112.67:8443);
  • 对 Referer 头为 10086.cn 的异常流量进行深度包检测(DPI)。

六、总结

该样本通过“隐藏文件→快捷方式诱导→白加黑 DLL→IP 字符串加密→内存混淆→伪装 10086 流量”的完整链条实现攻击,核心规避点在于利用合法程序(openvpn.exe)签名DLL 导出表空函数IP 字符串作为加密载体。防御需结合静态特征、动态行为、内存特征、网络流量多维度检测。

相似文章
相似文章
 全屏