记一次(反虚拟+反监测+域名前置)钓鱼样本分析及思考
字数 2031 2025-08-19 12:40:57
高级钓鱼样本分析技术文档:反虚拟化、反监测与域前置对抗
0x01 样本基本信息
- 文件名:汪涵-上海交大硕士-应聘系统安全岗20240722转换pdf.exe
- MD5:aeae584563bb8bf0961bd99aaeb41cf0
- 伪装方式:EXE伪装为PDF文件,添加PDF图标资源
0x02 样本行为分析
一、基础行为特征
- 快速退出行为:进程启动后1秒内自动退出
- 可疑操作:
- 读取桌面文件目录
- 读取特殊注册表键值(与虚拟机检测相关)
二、反虚拟化技术分析
-
注册表检测:
HKEY_CLASSES_ROOT\Applications\VMwareHostOpen.exe- 检测VMware环境HKLM\SOFTWARE\Oracle\VirtualBox Guest Additions- 检测VirtualBox环境
-
文件系统检测:
- 通过
SHGetFolderPathW获取桌面路径(CSIDL 0x11),检查文件数量是否>10 - 通过
SHGetKnownFolderPath获取"最近使用"文件夹路径,检查文件数量是否>10
- 通过
-
软件环境检测:
- 检查注册表
HKCU\Software\Tencent\bugreport\WechatWindows判断微信安装情况
- 检查注册表
-
反制措施:
- 检测到虚拟机环境时弹窗显示"错误"并退出
三、反监测技术
-
NTDLL重置技术:
- 通过
K32GetModuleInformation获取ntdll基址 - 定位.text节区
- 从文件系统加载原始ntdll.dll覆盖内存中的.text节
- 目的:解除杀软的inline hook
- 通过
-
API动态获取:
- 通过PEB遍历获取模块基址
- 手动解析PE结构获取API地址
- 使用非常规API替代常见API(如用
RtlCopyMemory代替memcpy)
0x03 加载机制分析
一、资源提取与解密
-
资源结构:
- 前0x90字节:配置信息(包含反虚拟化检测逻辑)
- 0xB0偏移开始:核心payload
-
双层解密机制:
- 第一层:疑似AES解密(使用128位分组)
- 第二层:异或解密
- 密钥生成:网络适配器GUID首字符
{+ 0x313131 = 0x3131AC作为随机种子 - 使用伪随机数作为异或密钥
- 密钥生成:网络适配器GUID首字符
二、执行机制
- 纤程(Fiber)加载:
- 使用纤程机制执行解密后的shellcode
- 创建互斥量防止多实例运行(命名风格类似GUID但第三部分占6位)
0x04 C2通信分析
-
域名前置技术:
- 前置域名:static.aliyuncs.com.dsa.dnsv1.com
- 真实域名:static.aliyuncs.com
- 端口:443
-
通信特征:
- HTTP GET请求:/link/Members/C90RDRN279YK.js
- 请求头特征:
- Host头设置为static.aliyuncs.com
- 特殊Cookie格式:SESSIONID_P9041TWNDWNT53JA4LTXGEJNZNE3=...
- 特定Accept-Language:pt-br
0x05 威胁狩猎特征提取
一、静态特征
-
反虚拟化检测:
- 注册表检测路径
- 文件数量阈值检测(桌面和最近文件夹>10个文件)
-
代码特征:
- NTDLL重置代码模式
- 特定随机种子生成算法(GUID首字符+0x313131)
- 互斥量命名风格(类GUID但第三部分6位)
二、动态特征
-
网络行为:
- 域名前置模式
- 特定URL路径模式
- 特殊Cookie字段
-
进程行为:
- 快速退出模式
- 纤程使用模式
- WinInet通信模块
0x06 对抗技术思考
一、攻击者视角
-
技术选择原则:
- 避免"吕布骑狗"效应 - 技术组合要协调,避免良莠不齐
- 每个对抗技术应有明确目的和足够强度
- 减少不必要操作,避免增加暴露风险
-
有效对抗手段:
- 使用冷门API替代常见API
- 多环境检测手段组合
- 多层加密与动态密钥生成
二、防御者视角
-
分析方法:
- 关注"短板效应" - 寻找最薄弱的对抗环节
- 动态调试与静态分析结合
- 关注非常规API使用
-
狩猎策略:
- 提取攻击者特有技术组合特征
- 关注shellcode特有实现方式
- 建立行为模式库而非单一特征库
0x07 分析技巧总结
-
快速定位关键点:
- 通过火绒剑/Procmon快速定位可疑行为
- 关注注册表、文件系统和网络操作
-
调试技巧:
- 基址对齐(IDA与调试器)
- 关键函数断点设置(如反虚拟化函数)
- 跳过反调试代码(如修改EIP跳过检测)
-
网络行为捕获:
- WinInet关键函数断点(InternetConnect、HttpOpenRequest等)
- 全流量捕获分析
附录:参考资源
- 样本对抗-反虚拟机技术
- 域前置技术分析文档
- Windows SDK KnownFolders.h
- Microsoft文档:SHGetKnownFolderPath函数