Predator The Thief分析报告

Predator恶意软件分析报告

概述

Predator The Thief是一款复杂的信息窃取恶意软件,主要针对Windows操作系统。根据代码版本号,当前分析的版本为v3.3.4。该恶意软件具有多种功能,包括浏览器数据窃取、密码收集、加密货币钱包窃取、Telegram/Discord等通讯软件数据窃取,以及远程控制功能。

📌 版本信息: v3.3.4 Release

执行流程

flowchart TD
    A[程序入口: WinMain] --> B[执行反调试检测]
    B -->|未检测到调试| C[获取机器HWID]
    B -->|检测到调试| Z[终止执行]

    C --> D[创建互斥体确保单一实例运行]
    D -->|互斥体创建成功| E[初始化Stealing对象]
    D -->|互斥体已存在| Z

    E --> F[从C2服务器获取配置]
    F --> G{反虚拟机检测}
    G -->|检测到虚拟机环境| Z
    G -->|非虚拟机环境| H[开始数据窃取]

    H --> H1[获取VPN/通讯软件数据]
    H --> H2[窃取浏览器数据]
    H --> H3[窃取密码/Cookie]
    H --> H4[窃取Telegram/Discord数据]
    H --> H5[获取加密货币钱包]
    H --> H6[收集系统信息]
    H --> H7[捕获屏幕/摄像头]

    H1 & H2 & H3 & H4 & H5 & H6 & H7 --> I[压缩数据准备上传]
    I --> J[将数据上传到C2服务器]
    J --> K[执行服务器返回的附加指令]

    K --> L[下载和执行额外模块]
    L --> M[执行PowerShell脚本]
    M --> N{是否自删除}
    N -->|是| O[删除自身]
    N -->|否| P[结束执行]
    O --> P

基本信息

属性
恶意软件名称Predator The Thief (又名Win32.PredatorTheStealer)
版本v3.3.4 Release
作者标识Alexuiop1337
目标平台Windows系统
主要功能信息窃取,模块化下载,远程控制

技术特征

反分析技术

Predator使用多种反分析技术以逃避检测:

🛡️ 反分析技术摘要

  • 字符串加密(XOR)
  • API动态解析(隐藏导入表)
  • 反调试检测
  • 反虚拟机检测
  • 代码完整性验证
  • 反反汇编技术
  1. 字符串加密:使用XOR函数对所有字符串进行加密,包括文件路径、注册表键和命令

    #define XOR(x) XorStr(x)
    char* krnl = XOR("Kernel32.dll");
  2. API动态解析:使用FNC宏通过GetProcAddress和GetModuleHandle函数在运行时动态解析Windows API

    #define FNC(x, y) reinterpret_cast<decltype(&x)>(GetProcAddress(GetModuleHandleA(y), #x))
    HANDLE mutex = FNC(CreateMutexA, krnl)(NULL, FALSE, base64_encode(Stealer::hwid).substr(0, 8).c_str());
  3. 反调试检测:实现了AntiDebug类,可以检测调试器并防止程序在调试环境中运行

    AntiDebug antiDbg(hExeModule, &codeInt, &wasCalled);
    if (antiDbg.Detect())
       return 0;
  4. 反虚拟机检测:通过检测虚拟机特征来防止在分析环境中运行

    if (grabber.bAntiVm && File.antiVmInstance()->IsVM())
       return;
  5. 代码完整性验证:通过哈希值检查确保代码没有被修改

    if (crc32_hash(Stealer::UpLoadLink) != Stealer::panel_hash)
       return;
  6. 反反汇编技术:使用ANTIDASM宏创建不可预测的控制流,干扰静态分析

    #define ANTIDASM(call_name) ANTIDASM(call_name, __COUNTER__)
    ANTIDASM(Stealer::GetHwid);

窃取功能详细分析

1. 浏览器数据窃取

flowchart LR
    Browser[浏览器数据窃取] --> Chrome[Chrome系列]
    Browser --> Firefox[Firefox系列]
    Browser --> Edge[Edge浏览器]

    Chrome --> C_Pass[密码窃取]
    Chrome --> C_Cookie[Cookie窃取]
    Chrome --> C_Form[表单数据]
    Chrome --> C_Card[信用卡信息]

    Firefox --> F_Pass[密码窃取]
    Firefox --> F_Cookie[Cookie窃取]
    Firefox --> F_Form[表单数据]
    Firefox --> F_History[历史记录]

    Edge --> E_Pass[密码窃取]
    Edge --> E_Cookie[Cookie窃取]

    C_Pass & F_Pass & E_Pass --> Decrypt[使用CryptUnprotectData解密]
    C_Cookie & F_Cookie & E_Cookie --> Format[Netscape格式保存]

Predator可以从多种浏览器中窃取敏感数据:

  • 支持的浏览器:Chrome、Firefox、Edge、Opera等主流浏览器
  • 窃取数据类型
    • 保存的密码
    • Cookie
    • 自动填充表单数据
    • 信用卡信息
    • 浏览历史

浏览器数据窃取使用以下方法:

  • 对于基于Chromium的浏览器:
    • 通过SQL查询访问浏览器的SQLite数据库
    • 使用CryptUnprotectData解密受保护数据
  • 对于Firefox浏览器:
    • 使用专用的FireFoxGrabber类处理Mozilla特有的加密
    • 解析key3.db或key4.db文件获取主密钥
    • 解密logins.json或signons.sqlite文件中的密码

2. 加密货币钱包窃取

💰 窃取目标

  • Bitcoin钱包文件
  • 以太坊钱包数据
  • 加密货币交易所配置

Predator会搜索和窃取加密货币钱包文件:

  • 递归搜索目标目录查找wallet.dat文件
  • 复制各种加密货币相关文件和配置

3. 通讯软件数据窃取

Telegram

void Stealing::GetTelegram(const string & output_dir){
    // 查找Telegram安装位置
    // 窃取会话数据
    bool group1 = CopyByMask(teleg_path, XOR("D877F783D5D3EF8C*"), output_dir);
    teleg_path += (string)XOR("\\D877F783D5D3EF8C");
    bool group2 = CopyByMask(teleg_path, XOR("map*"), output_dir);
}

Telegram窃取功能主要复制D877F783D5D3EF8C开头的文件,这些文件包含Telegram会话数据和配置信息。

Discord

void Stealing::GetDiscord(const string & output_dir){
    // 窃取Discord本地存储数据
    bool group1 = CopyByMask(discord_path, XOR("https_discordapp.com*.localstorage"), output_dir);
    bool group2 = CopyByMask(discord_path + XOR("\\leveldb"), "*", output_dir);
}

从Discord的LocalStorage文件夹窃取会话数据和tokens。

4. FTP客户端凭据窃取

void Stealing::GetFtpClient(const string & output_dir){
    // 窃取FileZilla配置
    // 窃取WinFTP配置
}

从FileZilla和WinFTP等FTP客户端窃取服务器连接信息和凭据。

5. 系统信息收集

void Stealing::GetInformation(const string & output_path, const string & hwid, unsigned int hash){
    // 收集系统详细信息
    // 包括用户名、计算机名、硬件信息等
}

收集详细的系统信息,包括:

  • 操作系统版本
  • CPU和GPU信息
  • 已安装软件列表
  • 计算机用户列表
  • 剪贴板内容
  • 键盘布局

6. 屏幕捕获功能

void Stealing::GetScreenShot(){
    // 捕获屏幕截图
}

void Stealing::GetWebcamScreen(const string & output_path){
    // 捕获网络摄像头图像
}

可以捕获屏幕截图和网络摄像头图像,并保存为位图文件。

网络通信

sequenceDiagram
    participant Victim as 受害主机
    participant C2 as 命令控制服务器

    Victim->>C2: 请求配置 (api/check.get)
    C2->>Victim: 返回窃取配置

    Note over Victim: 收集数据并压缩

    Victim->>C2: 上传数据 (api/gate.get?p1=...)
    C2->>Victim: 返回后续指令

    Note over Victim: 执行附加指令

    opt 二次载荷
        C2->>Victim: 下载额外模块
        Note over Victim: 执行下载的模块
    end

Predator使用HTTP协议与C2服务器通信:

bool Stealing::Release(const string & server, const string & path, const string & file_name){
    // 上传窃取的数据到C2服务器
}

Grabber Stealing::GetSettings(const string& url, const string& query){
    // 从C2服务器获取配置
}
  • 通信协议:标准HTTP,可选择支持HTTPS
  • 数据格式:ZIP压缩包形式上传窃取的数据
  • 服务器请求
    • 获取配置:api/check.get
    • 上传数据:api/gate.get?p1=...
    • 下载额外模块:通过Loader类实现

模块化下载与执行

Predator通过Loader类支持二次载荷:

void execute(const vector<LoaderRule> & rules, bool cryptoWallet, vector<LoadedFileState> & threads);

支持多种执行方式:

  • RunPE(进程注入)
  • CreateProcess(创建新进程)
  • ShellExecute(shell执行)
  • LoadPE(内存加载PE)
  • LoadLibrary(加载DLL)

自我保护与持久化

⚠️ 持久化机制

Predator使用多种技术确保在系统中持久存在,并防止重复感染

  • 互斥体防重复运行:使用基于HWID的互斥体确保只有一个实例运行
  • 可选自删除:支持执行后删除自身
  • PowerShell持久化:可执行自定义PowerShell脚本实现持久化

总结

Predator The Thief是一款功能强大的窃密木马,采用模块化设计,具有强大的反分析能力和广泛的信息窃取功能。它针对不同类型的敏感数据使用特定的方法进行窃取,并通过HTTP协议将数据上传到远程服务器。其设计显示出相当的技术复杂性,同时具备二次感染和远程控制能力。

防御建议

🔒 关键防御措施

  1. 保持操作系统和安全软件更新
  2. 使用多因素认证保护重要账户
  3. 避免在不受信任的环境中输入敏感信息
  4. 定期检查已安装的软件和运行的进程
  5. 使用密码管理器而非让浏览器记住密码
  6. 为加密货币钱包使用硬件钱包解决方案