针对一道面试题样本的详细分析
字数 1686 2025-08-05 11:39:45
RedLine Stealer 恶意软件分析教学文档
一、样本基础信息
- 文件哈希:
f22e976a3cc892e7c21cf6e222d0cf2e0e6c0dc0f7b882c7ac8d365a1e3b4cd1 - 编译时间:2022年1月13日
- 加壳情况:无壳,但包含多层Shellcode及.NET Reactor加壳的最终Payload。
二、分析流程详解
1. 外壳代码分析
-
内存操作
- 函数
sub_405200对动态分配的内存地址(GlobalAlloc)进行赋值,跳转执行该地址代码。 - 关键API:
GlobalAlloc(分配内存)、memcpy(复制Shellcode)。
- 函数
-
Shellcode解密
- 第一段Shellcode通过异或操作解密,解密后跳转执行。
- 调试技巧:在内存转储中定位解密后的代码(需动态调试)。
2. 第二段Shellcode分析
-
内存分配与解密
- 使用
VirtualAlloc分配新内存,解密第二段Shellcode并拷贝至新内存。 - 特征:异或解密密钥硬编码在代码中(需逆向提取)。
- 使用
-
Payload加载
- 解密后的Payload被加载到
00400000内存地址,通过跳转执行入口点。 - 关键点:Payload通过CLR非托管接口调用(
.NET兼容性)。
- 解密后的Payload被加载到
3. 最终Payload分析(RedLine Stealer)
-
资源数据提取
- 样本内嵌加密资源,通过CLR加载并解密为.NET模块(使用.NET Reactor加壳)。
- 脱壳方法:动态调试.NET Reactor,转储解密后的IL代码。
-
窃密功能
- 目标数据:
- Chrome/Opera GX的登录数据、Cookies、Web数据。
- 加密货币钱包扩展(如Metamask、Coinbase等,完整列表见附录)。
- 行为:枚举浏览器目录(如
%LocalAppData%\Google\Chrome\User Data)。
- 目标数据:
-
C2通信
- 硬编码C2地址(需逆向解密字符串)。
- 数据通过HTTPS加密外传(需抓包分析)。
三、技术亮点总结
- 多层Shellcode加载
- 通过分段解密规避静态检测,每段Shellcode职责分离(加载器→解密器→Payload)。
- .NET与Native代码混合
- 利用CLR非托管接口实现.NET Payload的隐蔽加载。
- 反分析技巧
- 动态内存解密、资源文件加密、API哈希调用(避免字符串暴露)。
四、附录:加密货币钱包扩展列表
| 扩展ID | 钱包名称 |
|---|---|
| nkbihfbeogaeaoehlefnkodbefgpgknn | Metamask |
| hnfanknocfeofbddgcijnmhnfnkdnaad | Coinbase |
| fhbohimaelbohpjbbldcngcnapndodjp | BinanceChain |
| bfnaelmomeimhlpmgjnjophhpkkoljpa | Phantom |
| ...(完整列表见原文) | ... |
五、分析工具推荐
- 静态分析:IDA Pro(识别Shellcode结构)、dnSpy(.NET逆向)。
- 动态分析:x64dbg(调试Shellcode)、Fiddler(抓包)。
- 辅助工具:PEiD(查壳)、Process Monitor(文件行为监控)。
六、防御建议
- 检测:监控
GlobalAlloc/VirtualAlloc异常调用。 - 防护:禁用不必要的浏览器扩展,定期清理Cookies。
- 响应:隔离样本关联的C2 IP(需逆向提取)。
注:实际分析需结合动态调试,本文档仅覆盖核心逻辑。建议在隔离环境中复现流程。