APT37分析之Final1stspy
字数 2076 2025-08-24 16:48:16

APT37 Final1stspy 恶意软件分析报告

样本基础信息

  • 样本名称: Final1stspy (Dropper)
  • 样本类型: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows
  • 样本大小: 244224 bytes
  • 哈希值:
    • MD5: 0dd50c4a5aa9899504cb4cf95acd981e
    • SHA1: 38f28bfce4d0b2b497e6cf568d08a2b6af244653
    • SHA256: 2011b9aa61d280ca9397398434af94ec26ddb6ab51f5db269f1799b46cf65a76

技术分析

反调试技术

  1. 调试器检测:

    • 使用IsDebuggerPresent函数检测是否被调试
    • 使用GetStartupInfo检测程序是否正在被调试
  2. 运行时加载DLL:

    • 采用运行时加载DLL的方法(LoadLibraryGetProcAddress),绕过基于导入表的检测

加密与编码

  • 使用Base64编码和SHA1哈希算法
  • 包含自定义的解密函数(位于c30函数)

COM组件利用

  1. WMI操作:
    • 通过CoCreateInstance创建COM组件
    • 使用CLSID dc12a687-737f-11cf-884d-00aa004b2e24调用WMI相关功能
    • 具体操作:
      • ConnectServer连接WMI服务
      • ExecQuery执行WMI查询

持久化机制

  • 通过注册表实现自启动:
    • 解密得到"rundll32"字符串
    • SOFTWARE\Microsoft\Windows\CurrentVersion\Run写入自启动项

反监控技术

  • 枚举进程并与以下安全工具进程名匹配:
    Ollydbg.exe
    idaq.exe
    gmer.exe
    IceSword.exe
    wireshark.exe
    tcpview.exe
    procexp.exe
    peview.exe
    cff explorer.exe
    
  • 发现匹配进程则终止它们

网络通信

  1. C2通信:

    • 解密域名和HTTP头特征信息
    • 发送HTTP请求
    • 仅当响应状态码为200且以"selfsign"开头时才继续执行
  2. DNS拦截:

    • 在本地设置监听
    • 拦截DNS请求

进程注入技术

  1. 进程替换:
    • 创建一个正常进程
    • 使用VirtualAllocEx为恶意代码分配内存
    • 使用WriteProcessMemory写入恶意代码
    • 使用SetThreadContext重定向执行流
    • 使用ResumeThread执行恶意代码

关联分析

  1. 家族归属:

    • 通过PDB路径匹配确认属于Final1stspy家族
    • 代码复用和特殊字段匹配进一步确认
  2. 相关域名:

    • kmbr1[.]nitesbr1[.]org
    • URL: http[:]//kmbr1[.]nitesbr1[.]org/UserFiles/File/image/index.php

IOC (Indicator of Compromise)

  • 哈希值: 2011b9aa61d280ca9397398434af94ec26ddb6ab51f5db269f1799b46cf65a76
  • 域名: kmbr1[.]nitesbr1[.]org
  • URL: http[:]//kmbr1[.]nitesbr1[.]org/UserFiles/File/image/index.php

MITRE ATT&CK 映射

技术ID 技术名称 描述
T1060 Registry Run Keys / Startup Folder 通过注册表实现持久化
T1047 Windows Management Instrumentation 使用WMI执行操作
T1087 Account Discovery 账户发现
T1055 Process Injection 进程注入技术
T1085 Rundll32 使用rundll32执行恶意代码
T1175 Component Object Model and Distributed COM 使用COM组件
T1022 Data Encrypted 数据加密
T1057 Process Discovery 进程发现/枚举

检测与防御建议

  1. 检测建议:

    • 监控注册表Run键的异常修改
    • 检测异常的WMI查询操作
    • 监控rundll32的异常调用
    • 检测进程注入行为(特别是VirtualAllocEx+WriteProcessMemory+SetThreadContext组合)
    • 监控对安全工具进程的终止尝试
  2. 防御建议:

    • 限制WMI的访问权限
    • 启用进程行为监控
    • 部署EDR解决方案检测进程注入
    • 阻止与已知恶意域名的通信
    • 定期更新安全工具签名
  3. 取证建议:

    • 检查注册表自启动项
    • 分析WMI事件日志
    • 检查异常进程创建记录
    • 收集网络通信日志,特别关注与IOC域名的连接
APT37 Final1stspy 恶意软件分析报告 样本基础信息 样本名称 : Final1stspy (Dropper) 样本类型 : PE32 executable (DLL) (GUI) Intel 80386, for MS Windows 样本大小 : 244224 bytes 哈希值 : MD5: 0dd50c4a5aa9899504cb4cf95acd981e SHA1: 38f28bfce4d0b2b497e6cf568d08a2b6af244653 SHA256: 2011b9aa61d280ca9397398434af94ec26ddb6ab51f5db269f1799b46cf65a76 技术分析 反调试技术 调试器检测 : 使用 IsDebuggerPresent 函数检测是否被调试 使用 GetStartupInfo 检测程序是否正在被调试 运行时加载DLL : 采用运行时加载DLL的方法( LoadLibrary 和 GetProcAddress ),绕过基于导入表的检测 加密与编码 使用Base64编码和SHA1哈希算法 包含自定义的解密函数(位于c30函数) COM组件利用 WMI操作 : 通过 CoCreateInstance 创建COM组件 使用CLSID dc12a687-737f-11cf-884d-00aa004b2e24 调用WMI相关功能 具体操作: ConnectServer 连接WMI服务 ExecQuery 执行WMI查询 持久化机制 通过注册表实现自启动: 解密得到"rundll32"字符串 在 SOFTWARE\Microsoft\Windows\CurrentVersion\Run 写入自启动项 反监控技术 枚举进程并与以下安全工具进程名匹配: 发现匹配进程则终止它们 网络通信 C2通信 : 解密域名和HTTP头特征信息 发送HTTP请求 仅当响应状态码为200且以"selfsign"开头时才继续执行 DNS拦截 : 在本地设置监听 拦截DNS请求 进程注入技术 进程替换 : 创建一个正常进程 使用 VirtualAllocEx 为恶意代码分配内存 使用 WriteProcessMemory 写入恶意代码 使用 SetThreadContext 重定向执行流 使用 ResumeThread 执行恶意代码 关联分析 家族归属 : 通过PDB路径匹配确认属于Final1stspy家族 代码复用和特殊字段匹配进一步确认 相关域名 : kmbr1[ .]nitesbr1[ . ]org URL: http[ :]//kmbr1[ .]nitesbr1[ . ]org/UserFiles/File/image/index.php IOC (Indicator of Compromise) 哈希值 : 2011b9aa61d280ca9397398434af94ec26ddb6ab51f5db269f1799b46cf65a76 域名 : kmbr1[ .]nitesbr1[ . ]org URL : http[ :]//kmbr1[ .]nitesbr1[ . ]org/UserFiles/File/image/index.php MITRE ATT&CK 映射 | 技术ID | 技术名称 | 描述 | |--------|----------|------| | T1060 | Registry Run Keys / Startup Folder | 通过注册表实现持久化 | | T1047 | Windows Management Instrumentation | 使用WMI执行操作 | | T1087 | Account Discovery | 账户发现 | | T1055 | Process Injection | 进程注入技术 | | T1085 | Rundll32 | 使用rundll32执行恶意代码 | | T1175 | Component Object Model and Distributed COM | 使用COM组件 | | T1022 | Data Encrypted | 数据加密 | | T1057 | Process Discovery | 进程发现/枚举 | 检测与防御建议 检测建议 : 监控注册表 Run 键的异常修改 检测异常的WMI查询操作 监控rundll32的异常调用 检测进程注入行为(特别是VirtualAllocEx+WriteProcessMemory+SetThreadContext组合) 监控对安全工具进程的终止尝试 防御建议 : 限制WMI的访问权限 启用进程行为监控 部署EDR解决方案检测进程注入 阻止与已知恶意域名的通信 定期更新安全工具签名 取证建议 : 检查注册表自启动项 分析WMI事件日志 检查异常进程创建记录 收集网络通信日志,特别关注与IOC域名的连接