CHAINSHOT恶意软件与CVE-2018-5002漏洞利用分析教学文档
1. 概述
CHAINSHOT是一种利用Adobe Flash Player漏洞(CVE-2018-5002)的多阶段攻击活动,影响Adobe Flash Player 29.0.0.171及之前所有版本。该攻击活动因其每个阶段都依赖于前一阶段的输出而得名。
2. 攻击链分析
2.1 初始感染载体
攻击始于恶意Excel文档,包含一个Shockwave Flash ActiveX对象,具有以下关键特性:
- Movie特性:包含Flash应用的URL,以明文形式下载执行
- FlashVars特性:包含4个URL的长字符串,传递给下载的Flash应用
2.2 Flash下载器分析
下载的Flash应用是一个混淆的下载器,执行以下操作:
- 在内存中创建随机的512位RSA密钥对
- 保留私钥在内存中
- 将公钥模数(n)发送到攻击者服务器
- 服务器使用硬编码的指数(e=0x10001)加密128位AES密钥
- AES密钥用于加密漏洞利用和shellcode payload
- 加密的payload返回给下载器
- 下载器使用内存中的私钥解密AES密钥和payload
3. RSA密钥破解过程
3.1 获取模数
通过网络抓包获取发送到服务器的模数(n):
0x7df305d5bcc659e5497e482bd0b507c44808deee8525f24b2712dc4a29f5c44e1e08c889a64521bbc67136ced11ace55b9bc2c1c7c96630aa515896b2f7341fd
3.2 因子分解
使用Factoring as a Service项目将模数分解为两个素数:
- P: 58243340170108004196473690380684093596548916771782361843168584750033311384553
- Q: 113257592704268871468251608331599268987586668983037892662393533567233998824693
3.3 生成私钥
使用公开工具创建PEM格式的私钥:
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJAffMF1bzGWeVJfkgr0LUHxEgI3u6FJfJLJxLcSin1xE4eCMiJpkUh
u8ZxNs7RGs5VubwsHHyWYwqlFYlrL3NB/QIDAQABAkBog3SxE1AJItIkn2D0dHR4
dUofLBCDF5czWlxAkqcleG6im1BptrNWdJyC5102H/bMA9rhgQEDHx42hfyQiyTh
AiEA+mWGmrUOSLL3TXGrPCJcrTsR3m5XHzPrh9vPinSNpPUCIQCAxI/z9Jf10ufN
PLE2JeDnGRULDPn9oCAqwsU0DWxD6QIhAPdiyRseWI9w6a5E6IXP+TpZSu00nLTC
Sih+/kxvnOXlAiBZMc7VGVQ5f0H5tFS8QTisW39sDC0ONeCSPiADkliwIQIhAMDu
3Dkj2yt7zz04/H7KUV9WH+rdrhUmoGhA5UL2PzfP
-----END RSA PRIVATE KEY-----
3.4 解密AES密钥
使用OpenSSL解密AES密钥:
openssl rsautl -decrypt -in enc_aes.bin -out dec_aes.bin -inkey private_key.pem
解密后的AES密钥:
0xE4DF3353FD6D213E7400EEDA8B164FC0
3.5 解密payload
使用AES-CBC模式解密payload,初始向量(IV):
0xCC6FC77B877584121AEBCBFD4C23B67C
解密命令:
openssl enc -nosalt -aes-128-cbc -d -in payload.bin -out decrypted_payload -K E4DF3353FD6D213E7400EEDA8B164FC0 -iv CC6FC77B877584121AEBCBFD4C23B67C
4. Flash漏洞利用分析
4.1 Shellcode执行机制
漏洞利用通过executeShellcodeWithCfg32方法执行shellcode,关键步骤如下:
- 创建shellcode模板并填充占位符
- 设置shellcode入口点(如0xA543000)
- 使用NtProtectVirtualMemory修改内存权限为RWE(读-写-执行)
- 通过
call edi执行shellcode payload
4.2 状态消息机制
漏洞利用每个阶段会发送状态消息到攻击者服务器:
| 状态消息 | 描述 |
|---|---|
| 1 | 漏洞利用开始 |
| 2 | 漏洞利用成功 |
| 3 | shellcode执行成功 |
| 4 | DLL注入成功 |
| 5 | 最终payload执行成功 |
消息通过假PNG图片发送,URL包含/stab/目录。
5. Shellcode Payload分析
5.1 第一阶段:FirstStageDropper.dll
功能:
- 加载内存中的SecondStageDropper.dll
- 调用导出函数
__xjwz97 - 包含两个资源:x64 DLL SecondStageDropper.dll和kernel模式shellcode
- 绕过安全产品检测(EMET、Kaspersky、Bitdefender)
- 收集并发送加密的系统信息到攻击者服务器
5.2 安全产品绕过技术
检测的安全产品模块:
- EMET: emet.dll, emet64.dll
- Kaspersky: klsihk.dll
- Bitdefender: avcuf32.dll, avcuf64.dll
5.3 第二阶段:SecondStageDropper.dll
功能:
- 最终payload的下载器
- 收集受害者系统信息
- 检查并绕过特定进程(见表2)
- 通过HTTPS与C2通信获取最终payload
5.4 进程规避列表
SecondStageDropper.dll会检查并规避以下进程:
| 进程名 |
|---|
| ollydbg.exe |
| procexp.exe |
| procexp64.exe |
| procmon.exe |
| procmon64.exe |
| tcpview.exe |
| tcpvcon.exe |
| autoruns.exe |
| autorunsc.exe |
| filemon.exe |
| regmon.exe |
| wireshark.exe |
| dumpcap.exe |
| hookexplorer.exe |
| pe-sieve.exe |
| sysmon.exe |
| procdump.exe |
| procdump64.exe |
| procexp.exe |
| procexp64.exe |
| procmon.exe |
| procmon64.exe |
6. 网络通信分析
6.1 C2域名
CHAINSHOT通过HTTPS与以下域名通信:
- contact.planturidea[.]net
- dl.nmcyclingexperience[.]com
- tools.conductorstech[.]com
6.2 通信路径
- 初始下载器:发送RSA公钥模数
- 漏洞利用:状态消息发送到
/stab/目录 - FirstStageDropper:用户信息发送到
/home/和/log/目录 - SecondStageDropper:最终payload下载
6.3 加密机制
用户数据使用Rijndael算法加密,发送到服务器。
7. 基础设施分析
攻击者使用相同的SSL证书跨多个域名,通过搜索证书发现更多相关基础设施。域名来自相同的托管服务商和注册商,但分布使用以减小怀疑。
8. 重现攻击环境
8.1 服务端模拟
使用XAMPP本地Apache服务器模拟攻击者服务器:
- 将攻击域名解析为localhost
- 镜像攻击者服务器目录结构
- 设置HTTP header匹配PCAP响应
- 所有请求文件使用gzip编码
8.2 动态分析工具
使用公开工具进行动态分析:
- OpenSSL:解密AES密钥和payload
- offzip:解压zlib压缩的shellcode
- IDA Pro:逆向分析二进制文件
- Wireshark:网络流量分析
9. 防御建议
- 及时更新Adobe Flash Player到最新版本
- 禁用不必要的ActiveX控件
- 监控网络流量中异常的HTTPS请求
- 检测内存中的异常行为(RWE权限修改)
- 关注安全产品中相关模块的加载
- 监控进程创建行为,特别是注入行为
- 限制对
/stab/、/home/、/log/等可疑路径的访问
10. IOCs (Indicators of Compromise)
10.1 域名
- contact.planturidea[.]net
- dl.nmcyclingexperience[.]com
- tools.conductorstech[.]com
10.2 文件特征
- FirstStageDropper.dll导出函数
__xjwz97 - 使用Blackbone windows内存入侵开源库代码
- 包含TitanHide代码查询SSDT
10.3 网络特征
- 包含
/stab/、/home/、/log/路径的HTTPS请求 - 使用Rijndael加密的用户数据
- 假PNG图片传输状态消息
11. 总结
CHAINSHOT攻击活动展示了高级持续性威胁(APT)的典型特征:多阶段攻击、混淆技术、安全产品绕过和精心设计的基础设施。虽然攻击者因使用不安全的512位RSA加密而暴露了攻击细节,但攻击手法仍然相当复杂和有效。防御此类攻击需要多层次的安全措施和对异常行为的持续监控。