CHAINSHOT恶意软件: CVE-2018-5002 payload交叉分析
字数 3347 2025-08-20 18:18:04

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应用是一个混淆的下载器,执行以下操作:

  1. 在内存中创建随机的512位RSA密钥对
  2. 保留私钥在内存中
  3. 将公钥模数(n)发送到攻击者服务器
  4. 服务器使用硬编码的指数(e=0x10001)加密128位AES密钥
  5. AES密钥用于加密漏洞利用和shellcode payload
  6. 加密的payload返回给下载器
  7. 下载器使用内存中的私钥解密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,关键步骤如下:

  1. 创建shellcode模板并填充占位符
  2. 设置shellcode入口点(如0xA543000)
  3. 使用NtProtectVirtualMemory修改内存权限为RWE(读-写-执行)
  4. 通过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 通信路径

  1. 初始下载器:发送RSA公钥模数
  2. 漏洞利用:状态消息发送到/stab/目录
  3. FirstStageDropper:用户信息发送到/home//log/目录
  4. SecondStageDropper:最终payload下载

6.3 加密机制

用户数据使用Rijndael算法加密,发送到服务器。

7. 基础设施分析

攻击者使用相同的SSL证书跨多个域名,通过搜索证书发现更多相关基础设施。域名来自相同的托管服务商和注册商,但分布使用以减小怀疑。

8. 重现攻击环境

8.1 服务端模拟

使用XAMPP本地Apache服务器模拟攻击者服务器:

  1. 将攻击域名解析为localhost
  2. 镜像攻击者服务器目录结构
  3. 设置HTTP header匹配PCAP响应
  4. 所有请求文件使用gzip编码

8.2 动态分析工具

使用公开工具进行动态分析:

  • OpenSSL:解密AES密钥和payload
  • offzip:解压zlib压缩的shellcode
  • IDA Pro:逆向分析二进制文件
  • Wireshark:网络流量分析

9. 防御建议

  1. 及时更新Adobe Flash Player到最新版本
  2. 禁用不必要的ActiveX控件
  3. 监控网络流量中异常的HTTPS请求
  4. 检测内存中的异常行为(RWE权限修改)
  5. 关注安全产品中相关模块的加载
  6. 监控进程创建行为,特别是注入行为
  7. 限制对/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加密而暴露了攻击细节,但攻击手法仍然相当复杂和有效。防御此类攻击需要多层次的安全措施和对异常行为的持续监控。

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): 3.2 因子分解 使用Factoring as a Service项目将模数分解为两个素数: P: 58243340170108004196473690380684093596548916771782361843168584750033311384553 Q: 113257592704268871468251608331599268987586668983037892662393533567233998824693 3.3 生成私钥 使用公开工具创建PEM格式的私钥: 3.4 解密AES密钥 使用OpenSSL解密AES密钥: 解密后的AES密钥: 3.5 解密payload 使用AES-CBC模式解密payload,初始向量(IV): 解密命令: 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加密而暴露了攻击细节,但攻击手法仍然相当复杂和有效。防御此类攻击需要多层次的安全措施和对异常行为的持续监控。