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

通信机制分析

上线流程

  1. 样本运行后循环尝试连接内置C&C地址
  2. 连接成功后发送5字节随机数据作为上线请求
  3. C&C接收上线指令后下发远控指令

上线通信数据格式

  1. 4字节上线校验数据: 随机数据,后两字节异或0x69a5等于前两字节值
  2. 5字节载荷头数据:
    • 第1字节: 响应指令编号(固定0x02)
    • 第2-5字节: 后续载荷数据大小(固定0x00000001)
  3. 1字节载荷数据: 固定值0x01

通信加密

样本使用简单的XOR 0x42作为通信数据加密算法。

远控指令分析

样本支持以下远控指令:

指令编号 功能 描述
3,8,9 execute_cmdline 执行shell命令
4 write_file 上传文件
5 download_file 下载文件
11 ping 探测被控主机是否存活

指令接收流程

  1. 接收5字节通信数据:
    • 第1字节: 远控指令
    • 第2-5字节: 后续载荷数据大小
  2. 接收指定大小的通信数据(远控命令数据)

各指令详细分析

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 - 实际载荷
    

网络流量检测方法

  1. 通信会话特征:

    • 第一段通信数据为固定10字节长度
    • 上线校验载荷(前4字节)可通过特定算法识别:
      • 后两字节异或0x69a5等于前两字节值
    • 第一段通信数据的后6字节为固定值(加密后为40 42 42 42 43 43)
  2. 加密特征:

    • 使用XOR 0x42加密
    • 远控指令通信数据通常以以下字节开头(加密后):
      • 414242 (execute_cmdline)
      • 4A4242
      • 4B4242
      • 464242 (write_file)
      • 474242 (download_file)
      • 494242 (ping)
    • 响应数据以434242开头(加密后)
  3. 流量检测规则:

    • 检测到与已知C&C地址(47.100.65.182:8081, 10.9.241.235:8081)的通信
    • 检测符合上述特征的加密通信模式
    • 检测包含特定指令序列的流量

防御建议

  1. 网络层防御:

    • 封锁已知C&C地址
    • 部署流量检测规则识别HZRat通信特征
    • 监控异常外联行为
  2. 终端防御:

    • 保持系统和安全软件更新
    • 谨慎下载和运行未知来源的macOS应用
    • 定期检查系统异常进程和文件
    • 对微信、钉钉等敏感应用设置额外访问控制
  3. 用户教育:

    • 提高对社交工程攻击的警惕性
    • 避免点击不明链接或下载不明附件
    • 定期检查账户安全设置
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命令 通信模型示例: 2. 上传文件 调用 fwrite 函数上传文件 通信模型示例: 3. 下载文件 调用 fread 函数循环读取文件内容 通信模型示例: 4. 探测存活(ping) 通信模型示例: 网络流量检测方法 通信会话特征 : 第一段通信数据为固定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应用 定期检查系统异常进程和文件 对微信、钉钉等敏感应用设置额外访问控制 用户教育 : 提高对社交工程攻击的警惕性 避免点击不明链接或下载不明附件 定期检查账户安全设置