对特洛伊木马Androm样本的研究分析
字数 2337 2025-08-24 20:49:22

特洛伊木马Androm样本研究分析报告

1. 样本基本信息

1.1 样本IOC信息

主样本Hash值:

  • SHA256: 94ac22ae1e5bf8f1677e354a333e911bbd4a5070263bda4917c4040f7491d241
  • MD5: a68da897c3a7ac8ff432170ff816da27
  • SHA1: 73c31669f9e8920438018ce7e175f700b3114f8d

DLL组件Hash值:

  • SHA256: c6e74a9eae519417aa54d460b219ac27abb295cfa3520e6e43643b5953a561ec
  • MD5: 89f8061d276e9b01cc212aaf572fe1f8
  • SHA1: 50b1cda0e6ae14c030d5fd0ecabf081510179726

远程注入DLL Hash值:

  • SHA256: 71bbf45465a5cc8d4bdbaa7ff0e2e718ae48b131a0a724d06892fec57492cc39
  • MD5: 74f5a0a3de6f9d7f01d0746b3c260bc1
  • SHA1: 97c6918087e92ccfa5c7a8ee9dbb3e8e8cd90b80

1.2 C2服务器信息

  • IP地址: 154.201.71.47
  • 端口: 13658

2. 静态分析

2.1 初始化过程

  • 使用Windows API内部函数_initterm初始化C运行时库中的全局或静态对象
  • 数据段存储了四个函数指针,调用顺序为:
    1. sub_402973
    2. sub_401090
    3. sub_402020
    4. sub_402060

2.2 网络通信

  • 创建网络连接尝试连接到C2服务器(154.201.71.47:13658)
  • 连接成功后发送数据33 32 00
  • 接收包含DLL的shellcode

3. DLL组件分析

3.1 主要功能

  • 导出run函数作为入口点

3.2 杀软规避技术

  1. 进程枚举与降权

    • 打开常见杀毒软件进程
    • 对杀软进程的Token权限进行降权
  2. 线程终止

    • 获取杀软进程的所有线程
    • 使用PostThreadMessageA函数向每个线程投递WM_QUIT(0x12)消息终止线程

3.3 分支复制功能

根据参数分为两条执行路径:

无参数分支

  1. 先执行杀软规避检测
  2. 复制自身到应用数据文件夹(C:\Users\Username\AppData\Roaming)
  3. 重命名为msedge.exe
  4. 设置文件属性
  5. 启动新线程执行WritinToTheRegistry

参数为1的分支

  1. 直接修改当前文件属性
  2. 无降权操作

3.4 持久化机制

通过注册表实现持久化(WritinToTheRegistry函数):

  1. 循环尝试打开注册表键:Software\Microsoft\Windows\CurrentVersion\Run
  2. 检查特定启动项是否存在:
    • 存在:暂停执行后继续循环
    • 不存在:执行WriteReg0函数添加启动项

4. 代码注入技术

4.1 第一处注入

  1. 获取ntdll.dll模块句柄
  2. 加载PSAPI.DLL并获取GetModuleInformation函数地址
  3. 打开并映射ntdll.dll文件到内存
  4. 遍历导出表,定位.text
  5. 使用VirtualProtect修改内存保护属性为可读
  6. 修改.text段内容

4.2 第二处远程注入

  1. 进程创建

    • 尝试创建新进程
    • 失败则创建备选进程(msiexec.exe -Puppet)
  2. 注入流程

    • SuspendThread挂起目标进程
    • VirtualAllocEx在目标进程分配内存
    • WriteProcessMemory写入注入代码
    • CreateRemoteThread创建远程线程执行注入代码
  3. 注入后行为

    • 加载远程DLL
    • 参数为-Puppet时进入远控逻辑
    • 连接相同C2服务器(154.201.71.47:13658)
    • 访问http://whois.pconline.com.cn/ipJson.jsp获取外网IP并发送给服务器
    • 循环等待服务器指令

5. 防御与检测建议

5.1 检测指标

  1. 网络通信

    • 154.201.71.47:13658的连接
    • 访问whois.pconline.com.cn/ipJson.jsp
  2. 文件特征

    • AppData\Roaming目录下的msedge.exe
    • 上述Hash值的文件
  3. 进程行为

    • 异常进程(msiexec.exe -Puppet)
    • 对杀软进程的线程操作
  4. 注册表修改

    • Software\Microsoft\Windows\CurrentVersion\Run下的可疑启动项

5.2 防御措施

  1. 监控PostThreadMessageA函数调用,特别是WM_QUIT消息
  2. 检测对杀软进程的Token降权操作
  3. 限制VirtualProtect对系统DLL内存属性的修改
  4. 监控远程线程创建行为
  5. 检查AppData目录下的可执行文件

6. 分析工具推荐

  1. 静态分析

    • IDA Pro
    • Ghidra
    • PEiD
    • Detect It Easy (DIE)
  2. 动态分析

    • Process Monitor
    • Process Hacker
    • Wireshark
    • API Monitor
  3. 内存分析

    • Volatility
    • Rekall
  4. 注册表监控

    • RegShot
    • Windows Registry Editor
特洛伊木马Androm样本研究分析报告 1. 样本基本信息 1.1 样本IOC信息 主样本Hash值: SHA256: 94ac22ae1e5bf8f1677e354a333e911bbd4a5070263bda4917c4040f7491d241 MD5: a68da897c3a7ac8ff432170ff816da27 SHA1: 73c31669f9e8920438018ce7e175f700b3114f8d DLL组件Hash值: SHA256: c6e74a9eae519417aa54d460b219ac27abb295cfa3520e6e43643b5953a561ec MD5: 89f8061d276e9b01cc212aaf572fe1f8 SHA1: 50b1cda0e6ae14c030d5fd0ecabf081510179726 远程注入DLL Hash值: SHA256: 71bbf45465a5cc8d4bdbaa7ff0e2e718ae48b131a0a724d06892fec57492cc39 MD5: 74f5a0a3de6f9d7f01d0746b3c260bc1 SHA1: 97c6918087e92ccfa5c7a8ee9dbb3e8e8cd90b80 1.2 C2服务器信息 IP地址: 154.201.71.47 端口: 13658 2. 静态分析 2.1 初始化过程 使用Windows API内部函数 _initterm 初始化C运行时库中的全局或静态对象 数据段存储了四个函数指针,调用顺序为: sub_402973 sub_401090 sub_402020 sub_402060 2.2 网络通信 创建网络连接尝试连接到C2服务器( 154.201.71.47:13658 ) 连接成功后发送数据 33 32 00 接收包含DLL的shellcode 3. DLL组件分析 3.1 主要功能 导出 run 函数作为入口点 3.2 杀软规避技术 进程枚举与降权 : 打开常见杀毒软件进程 对杀软进程的Token权限进行降权 线程终止 : 获取杀软进程的所有线程 使用 PostThreadMessageA 函数向每个线程投递 WM_QUIT (0x12)消息终止线程 3.3 分支复制功能 根据参数分为两条执行路径: 无参数分支 : 先执行杀软规避检测 复制自身到应用数据文件夹( C:\Users\Username\AppData\Roaming ) 重命名为 msedge.exe 设置文件属性 启动新线程执行 WritinToTheRegistry 参数为1的分支 : 直接修改当前文件属性 无降权操作 3.4 持久化机制 通过注册表实现持久化( WritinToTheRegistry 函数): 循环尝试打开注册表键: Software\Microsoft\Windows\CurrentVersion\Run 检查特定启动项是否存在: 存在:暂停执行后继续循环 不存在:执行 WriteReg0 函数添加启动项 4. 代码注入技术 4.1 第一处注入 获取 ntdll.dll 模块句柄 加载 PSAPI.DLL 并获取 GetModuleInformation 函数地址 打开并映射 ntdll.dll 文件到内存 遍历导出表,定位 .text 段 使用 VirtualProtect 修改内存保护属性为可读 修改 .text 段内容 4.2 第二处远程注入 进程创建 : 尝试创建新进程 失败则创建备选进程( msiexec.exe -Puppet ) 注入流程 : SuspendThread 挂起目标进程 VirtualAllocEx 在目标进程分配内存 WriteProcessMemory 写入注入代码 CreateRemoteThread 创建远程线程执行注入代码 注入后行为 : 加载远程DLL 参数为 -Puppet 时进入远控逻辑 连接相同C2服务器( 154.201.71.47:13658 ) 访问 http://whois.pconline.com.cn/ipJson.jsp 获取外网IP并发送给服务器 循环等待服务器指令 5. 防御与检测建议 5.1 检测指标 网络通信 : 与 154.201.71.47:13658 的连接 访问 whois.pconline.com.cn/ipJson.jsp 文件特征 : AppData\Roaming 目录下的 msedge.exe 上述Hash值的文件 进程行为 : 异常进程( msiexec.exe -Puppet ) 对杀软进程的线程操作 注册表修改 : Software\Microsoft\Windows\CurrentVersion\Run 下的可疑启动项 5.2 防御措施 监控 PostThreadMessageA 函数调用,特别是 WM_QUIT 消息 检测对杀软进程的Token降权操作 限制 VirtualProtect 对系统DLL内存属性的修改 监控远程线程创建行为 检查 AppData 目录下的可执行文件 6. 分析工具推荐 静态分析 : IDA Pro Ghidra PEiD Detect It Easy (DIE) 动态分析 : Process Monitor Process Hacker Wireshark API Monitor 内存分析 : Volatility Rekall 注册表监控 : RegShot Windows Registry Editor