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动态解析(隐藏导入表)
- 反调试检测
- 反虚拟机检测
- 代码完整性验证
- 反反汇编技术
字符串加密:使用XOR函数对所有字符串进行加密,包括文件路径、注册表键和命令
#define XOR(x) XorStr(x) char* krnl = XOR("Kernel32.dll");
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());
反调试检测:实现了AntiDebug类,可以检测调试器并防止程序在调试环境中运行
AntiDebug antiDbg(hExeModule, &codeInt, &wasCalled); if (antiDbg.Detect()) return 0;
反虚拟机检测:通过检测虚拟机特征来防止在分析环境中运行
if (grabber.bAntiVm && File.antiVmInstance()->IsVM()) return;
代码完整性验证:通过哈希值检查确保代码没有被修改
if (crc32_hash(Stealer::UpLoadLink) != Stealer::panel_hash) return;
反反汇编技术:使用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协议将数据上传到远程服务器。其设计显示出相当的技术复杂性,同时具备二次感染和远程控制能力。
防御建议
🔒 关键防御措施
- 保持操作系统和安全软件更新
- 使用多因素认证保护重要账户
- 避免在不受信任的环境中输入敏感信息
- 定期检查已安装的软件和运行的进程
- 使用密码管理器而非让浏览器记住密码
- 为加密货币钱包使用硬件钱包解决方案