针对一道面试题样本的详细分析
字数 1686 2025-08-05 11:39:45

RedLine Stealer 恶意软件分析教学文档


一、样本基础信息

  • 文件哈希f22e976a3cc892e7c21cf6e222d0cf2e0e6c0dc0f7b882c7ac8d365a1e3b4cd1
  • 编译时间:2022年1月13日
  • 加壳情况:无壳,但包含多层Shellcode及.NET Reactor加壳的最终Payload。

二、分析流程详解

1. 外壳代码分析
  1. 内存操作

    • 函数sub_405200对动态分配的内存地址(GlobalAlloc)进行赋值,跳转执行该地址代码。
    • 关键APIGlobalAlloc(分配内存)、memcpy(复制Shellcode)。
  2. Shellcode解密

    • 第一段Shellcode通过异或操作解密,解密后跳转执行。
    • 调试技巧:在内存转储中定位解密后的代码(需动态调试)。
2. 第二段Shellcode分析
  1. 内存分配与解密

    • 使用VirtualAlloc分配新内存,解密第二段Shellcode并拷贝至新内存。
    • 特征:异或解密密钥硬编码在代码中(需逆向提取)。
  2. Payload加载

    • 解密后的Payload被加载到00400000内存地址,通过跳转执行入口点。
    • 关键点:Payload通过CLR非托管接口调用(.NET兼容性)。
3. 最终Payload分析(RedLine Stealer)
  1. 资源数据提取

    • 样本内嵌加密资源,通过CLR加载并解密为.NET模块(使用.NET Reactor加壳)。
    • 脱壳方法:动态调试.NET Reactor,转储解密后的IL代码。
  2. 窃密功能

    • 目标数据
      • Chrome/Opera GX的登录数据、Cookies、Web数据。
      • 加密货币钱包扩展(如Metamask、Coinbase等,完整列表见附录)。
    • 行为:枚举浏览器目录(如%LocalAppData%\Google\Chrome\User Data)。
  3. C2通信

    • 硬编码C2地址(需逆向解密字符串)。
    • 数据通过HTTPS加密外传(需抓包分析)。

三、技术亮点总结

  1. 多层Shellcode加载
    • 通过分段解密规避静态检测,每段Shellcode职责分离(加载器→解密器→Payload)。
  2. .NET与Native代码混合
    • 利用CLR非托管接口实现.NET Payload的隐蔽加载。
  3. 反分析技巧
    • 动态内存解密、资源文件加密、API哈希调用(避免字符串暴露)。

四、附录:加密货币钱包扩展列表

扩展ID 钱包名称
nkbihfbeogaeaoehlefnkodbefgpgknn Metamask
hnfanknocfeofbddgcijnmhnfnkdnaad Coinbase
fhbohimaelbohpjbbldcngcnapndodjp BinanceChain
bfnaelmomeimhlpmgjnjophhpkkoljpa Phantom
...(完整列表见原文) ...

五、分析工具推荐

  1. 静态分析:IDA Pro(识别Shellcode结构)、dnSpy(.NET逆向)。
  2. 动态分析:x64dbg(调试Shellcode)、Fiddler(抓包)。
  3. 辅助工具:PEiD(查壳)、Process Monitor(文件行为监控)。

六、防御建议

  1. 检测:监控GlobalAlloc/VirtualAlloc异常调用。
  2. 防护:禁用不必要的浏览器扩展,定期清理Cookies。
  3. 响应:隔离样本关联的C2 IP(需逆向提取)。

:实际分析需结合动态调试,本文档仅覆盖核心逻辑。建议在隔离环境中复现流程。

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 兼容性)。 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(需逆向提取)。 注 :实际分析需结合动态调试,本文档仅覆盖核心逻辑。建议在隔离环境中复现流程。