针对一个红队病毒样本逆向分析
字数 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侧加载技术
实现方式:
- 利用Sandboxie签名的合法可执行文件taskhost.exe
- 侧载恶意DLL文件sbiedll.dll
- DLL中初始化三个导出函数,实际都指向SbieDll_Hook函数
技术要点:
- 利用白名单信任机制绕过检测
- 导出函数伪装增加分析难度
2.2 配置信息解密
加密验证流程:
- 使用MD5校验确保配置完整性
- 硬编码正确hash值:
FE93E8E1C5C3032A26D783A78A820587 1E8EE70F02D60E389D8F721E8CE6DF1F - 使用AES-CFB算法解密配置
解密后配置包含:
- 明文字符"sbiedll.dat"
- 参数"--type driver"
- 其他密钥和配置信息
2.3 杀软规避技术
2.3.1 参数验证
- 验证启动参数包含"--type driver"
- 计算参数MD5哈希与硬编码值比对:
E2D45D57C7E2941B65C6CCD64AF4223E
2.3.2 FNV-1a哈希API解析
实现原理:
- 使用加盐的FNV-1a哈希算法动态解析API
- 不同样本使用不同盐值增加静态检测难度
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技术
- 扫描System32目录加载的DLL
- 遍历.pdata节获取函数信息
- 计算内存中函数字节的FNV1a哈希
- 与磁盘原始版本比对,检测到篡改则替换
关键代码逻辑:
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 文件读取
- 在当前进程堆中开辟内存
- 使用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调用隐蔽方法
- 环境感知和绑定技术
防御此类威胁需要深度行为分析、内存检测和全面的监控策略。