macOS后门,以中国钉钉和微信用户为目标的HZRat后门攻击场景复现及木马检测方法
字数 1565 2025-08-24 07:48:23
macOS HZRat后门攻击分析及检测方法
概述
HZRat是一种针对macOS系统的后门程序,主要攻击目标为中国钉钉(DingTalk)和微信(WeChat)用户。该后门能够从受害者的微信、钉钉软件中获取个人信息(电子邮件、电话号码、单位、部门、公司等)。
样本信息
- 文件哈希:
- MD5: 0C3201D0743C63075B18023BB8071E73
- SHA1: 0FFC73EA4FD20CC8D293EAE67D0A2C51C76A797B
- SHA256: d9b0fcd3b20a82b97b4c74deebc7a2abb8fd771eaa12aaf66bdd5cdeaa30f706
- CRC32: 7EC98FEE
- 文件大小: 57,832字节
内置C&C地址
样本中内置了多个外链IP及端口:
- 47.100.65.182:8081
- 10.9.241.235:8081
通信机制分析
上线流程
- 样本运行后循环尝试连接内置C&C地址
- 连接成功后发送5字节随机数据作为上线请求
- C&C接收上线指令后下发远控指令
上线通信数据格式
- 4字节上线校验数据: 随机数据,后两字节异或0x69a5等于前两字节值
- 5字节载荷头数据:
- 第1字节: 响应指令编号(固定0x02)
- 第2-5字节: 后续载荷数据大小(固定0x00000001)
- 1字节载荷数据: 固定值0x01
通信加密
样本使用简单的XOR 0x42作为通信数据加密算法。
远控指令分析
样本支持以下远控指令:
| 指令编号 | 功能 | 描述 |
|---|---|---|
| 3,8,9 | execute_cmdline | 执行shell命令 |
| 4 | write_file | 上传文件 |
| 5 | download_file | 下载文件 |
| 11 | ping | 探测被控主机是否存活 |
指令接收流程
- 接收5字节通信数据:
- 第1字节: 远控指令
- 第2-5字节: 后续载荷数据大小
- 接收指定大小的通信数据(远控命令数据)
各指令详细分析
1. 执行shell命令
- 调用
popen函数执行shell命令 - 通信模型示例:
# 指令数据 414242424a2b24212d2c242b25 (加密) XOR 0x42解密后: 03000000086966636F6E666967 解析: 03 - 指令编号 00000008 - 载荷长度 6966636F6E666967 - "ifconfig" # 响应数据 43424246cf424246cb2e2d727862242e2325317f7a72767b7e17126e0e0d0d12000301096e1... (加密) XOR 0x42解密后: 010000048D000004896C6F303A20666C6167733D383034393C55502C4C4F4F504241434B2C5... 解析: 01 - 响应指令 0000048D - 载荷长度 00000489 - 实际载荷长度 6C6F303A... - "lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST>..."
2. 上传文件
- 调用
fwrite函数上传文件 - 通信模型示例:
# 指令数据 46424242e24a424242362731366c363a36d24242422a272e2e2d35302d2e264f482a272e2e2d... (加密) XOR 0x42解密后: 04000000A008000000746573742E7478749000000068656C6C6F77726F6C640D0A68656C6C6F... 解析: 04 - 指令编号 000000A0 - 载荷长度 08000000 - 第一段数据大小 746573742E747874 - "test.txt" 90000000 - 第二段数据大小 68656C6C6F77726F6C640D0A... - 文件内容"hellowrold..." # 响应数据 4342424244424242400d09 (加密) XOR 0x42解密后: 0100000006000000024F4B 解析: 01 - 响应指令 00000006 - 载荷长度 00000002 - 实际载荷长度 4F4B - "OK"
3. 下载文件
- 调用
fread函数循环读取文件内容 - 通信模型示例:
# 指令数据 47424242586d17312730316d23266d06273129362d326d362731366c303624 (加密) XOR 0x42解密后: 050000001A2F55736572732F61642F4465736B746F702F746573742E727466 解析: 05 - 指令编号 0000001A - 载荷长度 2F55736572732F61642F4465736B746F702F746573742E727466 - "/Users/ad/Desktop/test.rtf" # 响应数据 43424240f0424240ec391e303624731e232c312b1e232c312b2132257b71741e212d212d2330... (加密) XOR 0x42解密后: 01000002B2000002AE7B5C727466315C616E73695C616E73696370673933365C636F636F6172... 解析: 01 - 响应指令 000002B2 - 载荷长度 000002AE - 实际载荷长度 7B5C727466315C616E73695C616E73696370673933365C636F636F6172... - RTF文件内容
4. 探测存活(ping)
- 通信模型示例:
# 指令数据 494242424343 (加密) XOR 0x42解密后: 0B0000000101 解析: 0B - 指令编号 00000001 - 载荷长度(随机) 01 - 载荷数据(随机) # 响应数据 434242424a4242424642424242 (加密) XOR 0x42解密后: 01000000080000000400000000 解析: 01 - 响应指令 00000008 - 载荷长度 00000004 - 实际载荷长度 00000000 - 实际载荷
网络流量检测方法
-
通信会话特征:
- 第一段通信数据为固定10字节长度
- 上线校验载荷(前4字节)可通过特定算法识别:
- 后两字节异或0x69a5等于前两字节值
- 第一段通信数据的后6字节为固定值(加密后为40 42 42 42 43 43)
-
加密特征:
- 使用XOR 0x42加密
- 远控指令通信数据通常以以下字节开头(加密后):
- 414242 (execute_cmdline)
- 4A4242
- 4B4242
- 464242 (write_file)
- 474242 (download_file)
- 494242 (ping)
- 响应数据以434242开头(加密后)
-
流量检测规则:
- 检测到与已知C&C地址(47.100.65.182:8081, 10.9.241.235:8081)的通信
- 检测符合上述特征的加密通信模式
- 检测包含特定指令序列的流量
防御建议
-
网络层防御:
- 封锁已知C&C地址
- 部署流量检测规则识别HZRat通信特征
- 监控异常外联行为
-
终端防御:
- 保持系统和安全软件更新
- 谨慎下载和运行未知来源的macOS应用
- 定期检查系统异常进程和文件
- 对微信、钉钉等敏感应用设置额外访问控制
-
用户教育:
- 提高对社交工程攻击的警惕性
- 避免点击不明链接或下载不明附件
- 定期检查账户安全设置