针对一个红队病毒样本逆向分析
字数 1410 2025-08-24 16:48:16

红队病毒样本逆向分析教学文档

1. 样本概述

该样本是一个采用多种高级免杀技术的恶意软件,主要特点包括:

  • 使用合法签名文件(taskhost.exe)进行DLL侧加载
  • 多层加密载荷释放
  • 滥用Google Drive进行C2通信
  • 采用多种杀软规避技术

执行流程:

taskhost.exe(合法签名) → 侧载sbiedll.dll(恶意DLL) → 解密sbiedll.dat → 释放MoonWalk后门 → Google Drive C2通信

2. 主要技术分析

2.1 DLL侧加载技术

实现方式:

  1. 利用Sandboxie签名的合法可执行文件taskhost.exe
  2. 侧载恶意DLL文件sbiedll.dll
  3. DLL中初始化三个导出函数,实际都指向SbieDll_Hook函数

技术要点:

  • 利用白名单信任机制绕过检测
  • 导出函数伪装增加分析难度

2.2 配置信息解密

加密验证流程:

  1. 使用MD5校验确保配置完整性
  2. 硬编码正确hash值:
    FE93E8E1C5C3032A26D783A78A820587
    1E8EE70F02D60E389D8F721E8CE6DF1F
    
  3. 使用AES-CFB算法解密配置

解密后配置包含:

  • 明文字符"sbiedll.dat"
  • 参数"--type driver"
  • 其他密钥和配置信息

2.3 杀软规避技术

2.3.1 参数验证

  1. 验证启动参数包含"--type driver"
  2. 计算参数MD5哈希与硬编码值比对:
    E2D45D57C7E2941B65C6CCD64AF4223E
    

2.3.2 FNV-1a哈希API解析

实现原理:

  1. 使用加盐的FNV-1a哈希算法动态解析API
  2. 不同样本使用不同盐值增加静态检测难度

Python实现示例:

def fnv1aSalted(data, salt, seedValue=0x811C9DC5):
    combinedData = data + salt
    hashValue = seedValue
    prime = 0x01000193
    for byte in combinedData:
        hashValue ^= byte
        hashValue *= prime
        hashValue &= 0xFFFFFFFF
    return hashValue

# 示例使用
ntdll = b'n\x00t\x00d\x00l\x00l\x00'
salt = b'\xba\xb4\x24\xcb'
hash1 = fnv1aSalted(ntdll, salt)
print(f"Hash for ntdll: 0x{hash1:08x}")

2.3.3 DodgeBox技术

  1. 扫描System32目录加载的DLL
  2. 遍历.pdata节获取函数信息
  3. 计算内存中函数字节的FNV1a哈希
  4. 与磁盘原始版本比对,检测到篡改则替换

关键代码逻辑:

p_InMemoryOrderModuleList = &NtCurrentTeb()->ProcessEnvironmentBlock->Ldr->InMemoryOrderModuleList;
for (i = p_InMemoryOrderModuleList->Flink; i != p_InMemoryOrderModuleList; i = i->Flink) {
    // 检查模块标志和特征
    if (((__int64)i[5].Blink & 0x60000000) != 0x20000000 && 
        (*(_WORD *)(*(int *)(Flink + 60) + Flink + 22) & 0x2000) != 0) {
        // 执行DLL验证和修复
    }
}

2.4 DAT文件载荷处理

2.4.1 文件读取

  1. 在当前进程堆中开辟内存
  2. 使用NtReadFile读取"sbiedll.dat"文件流

2.4.2 载荷解密

  1. 获取机器GUID:
    • 注册表路径:SOFTWARE\Microsoft\Cryptography\MachineGuid
  2. 计算GUID的MD5值作为AES IV
  3. 检查DAT文件前4字节判断是否特定目标
  4. 从第5字节开始使用AES-CFB解密
    • 密钥来自配置文件
    • IV使用GUID的MD5值

特点:

  • 解密后的PE文件隐藏了PE头
  • 载荷与机器绑定,无法在其他机器解密

2.5 堆栈调用欺骗技术

实现步骤:

  1. 精心构造堆栈内容
    • 插入伪造的返回地址
    • 设置所需参数
  2. 修改堆栈指针指向伪造堆栈
  3. 执行jmp指令跳转到目标API
  4. API调用完成后恢复原始堆栈

技术优势:

  • 使API调用看起来来自正常位置
  • 绕过静态分析和动态监控
  • 增加隐蔽性

3. 关键算法实现

3.1 AES-CFB解密流程

  1. 初始化:
    • 密钥:来自配置信息
    • IV:机器GUID的MD5值
  2. 解密DAT文件获取PE载荷
  3. 完整性校验

3.2 MD5哈希使用场景

  1. 配置信息完整性校验
  2. AES密钥/IV生成
  3. 参数验证

4. 防御建议

  1. 检测侧加载:

    • 监控异常DLL加载行为
    • 验证签名链完整性
  2. 防范API哈希解析:

    • 检测非常规API调用模式
    • 监控内存中的API解析行为
  3. 对抗堆栈欺骗:

    • 深度堆栈分析
    • 调用链完整性检查
  4. 增强解密检测:

    • 监控异常加密/解密操作
    • 检测内存中的PE文件重构
  5. 系统加固:

    • 限制注册表访问权限
    • 监控Google Drive异常通信

5. 总结

该样本展示了现代恶意软件的高级技术特点:

  • 多层载荷释放机制
  • 多种免杀技术组合使用
  • 创新的API调用隐蔽方法
  • 环境感知和绑定技术

防御此类威胁需要深度行为分析、内存检测和全面的监控策略。

红队病毒样本逆向分析教学文档 1. 样本概述 该样本是一个采用多种高级免杀技术的恶意软件,主要特点包括: 使用合法签名文件(taskhost.exe)进行DLL侧加载 多层加密载荷释放 滥用Google Drive进行C2通信 采用多种杀软规避技术 执行流程: 2. 主要技术分析 2.1 DLL侧加载技术 实现方式: 利用Sandboxie签名的合法可执行文件taskhost.exe 侧载恶意DLL文件sbiedll.dll DLL中初始化三个导出函数,实际都指向SbieDll_ Hook函数 技术要点: 利用白名单信任机制绕过检测 导出函数伪装增加分析难度 2.2 配置信息解密 加密验证流程: 使用MD5校验确保配置完整性 硬编码正确hash值: 使用AES-CFB算法解密配置 解密后配置包含: 明文字符"sbiedll.dat" 参数"--type driver" 其他密钥和配置信息 2.3 杀软规避技术 2.3.1 参数验证 验证启动参数包含"--type driver" 计算参数MD5哈希与硬编码值比对: 2.3.2 FNV-1a哈希API解析 实现原理: 使用加盐的FNV-1a哈希算法动态解析API 不同样本使用不同盐值增加静态检测难度 Python实现示例: 2.3.3 DodgeBox技术 扫描System32目录加载的DLL 遍历.pdata节获取函数信息 计算内存中函数字节的FNV1a哈希 与磁盘原始版本比对,检测到篡改则替换 关键代码逻辑: 2.4 DAT文件载荷处理 2.4.1 文件读取 在当前进程堆中开辟内存 使用NtReadFile读取"sbiedll.dat"文件流 2.4.2 载荷解密 获取机器GUID: 注册表路径: SOFTWARE\Microsoft\Cryptography\MachineGuid 计算GUID的MD5值作为AES IV 检查DAT文件前4字节判断是否特定目标 从第5字节开始使用AES-CFB解密 密钥来自配置文件 IV使用GUID的MD5值 特点: 解密后的PE文件隐藏了PE头 载荷与机器绑定,无法在其他机器解密 2.5 堆栈调用欺骗技术 实现步骤: 精心构造堆栈内容 插入伪造的返回地址 设置所需参数 修改堆栈指针指向伪造堆栈 执行jmp指令跳转到目标API API调用完成后恢复原始堆栈 技术优势: 使API调用看起来来自正常位置 绕过静态分析和动态监控 增加隐蔽性 3. 关键算法实现 3.1 AES-CFB解密流程 初始化: 密钥:来自配置信息 IV:机器GUID的MD5值 解密DAT文件获取PE载荷 完整性校验 3.2 MD5哈希使用场景 配置信息完整性校验 AES密钥/IV生成 参数验证 4. 防御建议 检测侧加载: 监控异常DLL加载行为 验证签名链完整性 防范API哈希解析: 检测非常规API调用模式 监控内存中的API解析行为 对抗堆栈欺骗: 深度堆栈分析 调用链完整性检查 增强解密检测: 监控异常加密/解密操作 检测内存中的PE文件重构 系统加固: 限制注册表访问权限 监控Google Drive异常通信 5. 总结 该样本展示了现代恶意软件的高级技术特点: 多层载荷释放机制 多种免杀技术组合使用 创新的API调用隐蔽方法 环境感知和绑定技术 防御此类威胁需要深度行为分析、内存检测和全面的监控策略。