RedHarlowCore/Remcos-Malware-Analysis
GitHub: RedHarlowCore/Remcos-Malware-Analysis
一份针对 Remcos RAT v1.7 Pro 恶意样本的综合性逆向工程分析报告,涵盖静态分析、持久化机制、反沙箱技术和完整入侵指标。
Stars: 0 | Forks: 0
# 恶意软件分析报告:Remcos RAT v1.7 Pro
这是一份针对 **Remcos RAT (远程访问木马) v1.7 Pro** 样本的综合性技术逆向工程与代码分析报告。该样本作为一个高度优化的加载器,旨在提取内嵌的 payload、规避自动化沙箱环境,并在 Windows 系统上建立深度隐蔽的持久化机制。
## 🛑 免责声明
本分析仅供教育、研究和威胁情报目的使用。此处记录的指标和特征码旨在帮助防御者识别和缓解威胁。
## 📊 文件元数据
| 属性 | 值 |
| :--- | :--- |
| **文件名** | `Remcos.exe` |
| **文件大小** | 92.00 KiB |
| **文件类型** | PE32 (Portable Executable, 32-bit architecture) |
| **子系统** | GUI (图形用户界面) |
| **编译器 / 工具** | Microsoft Visual Studio (6.0) / Legacy C++ |
| **恶意软件家族** | Remcos RAT |
| **版本** | 1.7 Pro |
| **MD5** | `fb598b93c04baafe98683dc210e779c9` |
| **SHA-1** | `c7ccd43a721a508b807c9bf6d774344df58e752f` |
| **SHA-256** | `c851749fd6c9fa19293d8ee2c5b45b3dc8561115ddfe7166fbaefcb9b353b7c4` |
## 🔍 静态与架构分析
### 1. 旧版编译器策略
该样本是明确使用 **Microsoft Visual Studio 6.0** 编译的。威胁行为者极其青睐旧版编译器框架,因为其具有特定的结构优势:
* **精简的特征码矩阵**:现代防病毒启发式引擎通常会寻找典型的现代 C++ 运行时结构。旧版二进制文件生成精简、原始的汇编循环,很容易混淆静态代码分析引擎。
* **极简占用**:大小恰好为 92 KB,该二进制文件没有庞大的运行时元数据开销,使其能够快速执行并在磁盘上保持隐蔽。
### 2. 资源提取序列
由于文件占用空间被限制在 92 KB,它将执行重任的组件隐藏在其内部结构中。静态反汇编揭示了通过原生 `KERNEL32` API 指针进行程序化解析的序列:
```
call ds:FindResourceA
call ds:LoadResource
call ds:LockResource
call ds:SizeofResource
```
* **目的**:此功能序列在内部 `.rsrc` 节中定位到一个经过加密和压缩的二进制 blob,将其加载到原始的易失性内存空间中,通过 `esi` 捕获其内存指针,并确定其整体的缓冲区大小。
* **处理过程**:一旦确认了内存布局,特定的解包例程会解析第一个单字节 (`byte ptr [eax]`) 作为架构边界分隔符。它执行基于字符串的拆分序列 (`rep movsd`/`rep movsb`),并通过 `ds:malloc` 将次要 payload 段分配给动态操作结构。
## ⚙️ 执行配置与主机侧指标
### 1. 双层持久化执行
为了保证在本地系统重启或管理员手动终止后仍能存活,该二进制文件在 high-privilege 的注册表路径中执行了冗余且具有侵略性的持久化策略。
#### A. Winlogon Userinit 劫持
该恶意软件以 Winlogon 子系统下的基础管理属性为目标:
```
push offset aCWindowsSystem_0 ; "C:\WINDOWS\system32\userinit.exe"
push offset aUserinit ; "Userinit"
call sub_408FDA ; Custom Registry Modification Handler
```
* **机制**:在干净的 Windows 环境中,用户初始化路径的准确读取值为 `C:\WINDOWS\system32\userinit.exe,`。Remcos 篡改了这个特定的键值,将其释放后的路径直接注入到末尾逗号之后:
`C:\WINDOWS\system32\userinit.exe, C:\Users\\AppData\Local\Temp\install.bat`
* **影响**:操作系统将正常触发用户桌面布局,同时在随后的每次登录会话中隐蔽地执行恶意 payload。
#### B. 冗余的标准启动 (Run Key)
在修改 Winlogon 之后,代码立即调用标准初始化持久化机制,以确保在管理键值受到审计时仍能获得执行上下文:
```
push offset aSoftwareMicros_2 ; "Software\Microsoft\Windows\CurrentVersion\Run"
call sub_409132 ; Standard Key Creation/Write Wrapper
```
* **机制**:它通过 `c_str()` 将运行时字符串路径转换为有效的 C-string,并将其绑定到默认软件启动路径下的隐藏键结构中。
### 2. 脚本释放与执行延迟 (反分析)
该恶意软件经常使用 `MSVCRT` 原生环境层访问本地环境变量,以释放暂存的脚本:
```
push offset aTemp ; "Temp"
call ds:getenv ; Fetches environment path string
```
该样本专门在 `%TEMP%` 中释放并处理两个不同的配置脚本:
* **`install.bat`**:在早期释放阶段部署,用于突破内存限制并注入初始化 payload。
* **`update.bat`**:在接收来自命令基础设施的软件指令时,用作临时执行向量,以平滑替换磁盘上的核心加载器文件。
#### 反沙箱延迟
为了系统地对抗标准安全沙箱的定时器,批处理脚本包含硬编码的环回配置:
```
PING 127.0.0.1 -n 2
```
* **战术意图**:在缺少原生执行 sleep 触发器的旧版环境中,运行重复的本地网络环路会强制产生内部操作暂停。这种特定的延迟会安全地拖延执行循环,直到活跃的沙箱运行时窗口耗尽,从而阻止自动化的行为分析。
## 🌐 网络配置与基础设施 (C2)
该二进制基础设施内嵌了预配置的 endpoint,直接路由到公共端口转发隧道,有效地隐藏了操作者的后端部署资产:
* **主控制接口:** `nickman12-46565.portmap.io:46565`
* **辅助数据外发通道:** `nickman12-46565.portmap.io:1735`
## 🎯 完整的入侵指标
### 文件指标
* **目标样本名称:** `Remcos.exe`
* **观察到的特征码:** Remcos RAT v1.7 Pro Loader
### 主机侧指标 (目标路径)
* `%TEMP%\install.bat`
* `%TEMP%\update.bat`
### 注册表完整性目标
* `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit` (追加的参数值)
* `HKLM\Software\Microsoft\Windows\CurrentVersion\Run\<混淆值>`
* `HKCU\Software\Microsoft\Windows\CurrentVersion\Run\<混淆值>`
### 网络基础设施 endpoint
* `nickman12-46565.portmap.io` (端口 `46565` 和 `1735`)
## 🔍 静态与架构分析
### 1. 旧版编译器策略
该样本是明确使用 **Microsoft Visual Studio 6.0** 编译的。威胁行为者极其青睐旧版编译器框架,因为其具有特定的结构优势:
* **精简的特征码矩阵**:现代防病毒启发式引擎通常会寻找典型的现代 C++ 运行时结构。旧版二进制文件生成精简、原始的汇编循环,很容易混淆静态代码分析引擎。
* **极简占用**:大小恰好为 92 KB,该二进制文件没有庞大的运行时元数据开销,使其能够快速执行并在磁盘上保持隐蔽。
### 2. 资源提取序列
由于文件占用空间被限制在 92 KB,它将执行重任的组件隐藏在其内部结构中。静态反汇编揭示了通过原生 `KERNEL32` API 指针进行程序化解析的序列:
```
call ds:FindResourceA
call ds:LoadResource
call ds:LockResource
call ds:SizeofResource
```
* **目的**:此功能序列在内部 `.rsrc` 节中定位到一个经过加密和压缩的二进制 blob,将其加载到原始的易失性内存空间中,通过 `esi` 捕获其内存指针,并确定其整体的缓冲区大小。
* **处理过程**:一旦确认了内存布局,特定的解包例程会解析第一个单字节 (`byte ptr [eax]`) 作为架构边界分隔符。它执行基于字符串的拆分序列 (`rep movsd`/`rep movsb`),并通过 `ds:malloc` 将次要 payload 段分配给动态操作结构。
## ⚙️ 执行配置与主机侧指标
### 1. 双层持久化执行
为了保证在本地系统重启或管理员手动终止后仍能存活,该二进制文件在 high-privilege 的注册表路径中执行了冗余且具有侵略性的持久化策略。
#### A. Winlogon Userinit 劫持
该恶意软件以 Winlogon 子系统下的基础管理属性为目标:
```
push offset aCWindowsSystem_0 ; "C:\WINDOWS\system32\userinit.exe"
push offset aUserinit ; "Userinit"
call sub_408FDA ; Custom Registry Modification Handler
```
* **机制**:在干净的 Windows 环境中,用户初始化路径的准确读取值为 `C:\WINDOWS\system32\userinit.exe,`。Remcos 篡改了这个特定的键值,将其释放后的路径直接注入到末尾逗号之后:
`C:\WINDOWS\system32\userinit.exe, C:\Users\
* **机制**:它通过 `c_str()` 将运行时字符串路径转换为有效的 C-string,并将其绑定到默认软件启动路径下的隐藏键结构中。
### 2. 脚本释放与执行延迟 (反分析)
该恶意软件经常使用 `MSVCRT` 原生环境层访问本地环境变量,以释放暂存的脚本:
```
push offset aTemp ; "Temp"
call ds:getenv ; Fetches environment path string
```
该样本专门在 `%TEMP%` 中释放并处理两个不同的配置脚本:
* **`install.bat`**:在早期释放阶段部署,用于突破内存限制并注入初始化 payload。
* **`update.bat`**:在接收来自命令基础设施的软件指令时,用作临时执行向量,以平滑替换磁盘上的核心加载器文件。
#### 反沙箱延迟
为了系统地对抗标准安全沙箱的定时器,批处理脚本包含硬编码的环回配置:
```
PING 127.0.0.1 -n 2
```
* **战术意图**:在缺少原生执行 sleep 触发器的旧版环境中,运行重复的本地网络环路会强制产生内部操作暂停。这种特定的延迟会安全地拖延执行循环,直到活跃的沙箱运行时窗口耗尽,从而阻止自动化的行为分析。
## 🌐 网络配置与基础设施 (C2)
该二进制基础设施内嵌了预配置的 endpoint,直接路由到公共端口转发隧道,有效地隐藏了操作者的后端部署资产:
* **主控制接口:** `nickman12-46565.portmap.io:46565`
* **辅助数据外发通道:** `nickman12-46565.portmap.io:1735`
## 🎯 完整的入侵指标
### 文件指标
* **目标样本名称:** `Remcos.exe`
* **观察到的特征码:** Remcos RAT v1.7 Pro Loader
### 主机侧指标 (目标路径)
* `%TEMP%\install.bat`
* `%TEMP%\update.bat`
### 注册表完整性目标
* `HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit` (追加的参数值)
* `HKLM\Software\Microsoft\Windows\CurrentVersion\Run\<混淆值>`
* `HKCU\Software\Microsoft\Windows\CurrentVersion\Run\<混淆值>`
### 网络基础设施 endpoint
* `nickman12-46565.portmap.io` (端口 `46565` 和 `1735`)标签:DAST, DNS 反向解析, 云资产清单, 威胁情报, 安全报告, 开发者工具, 恶意软件分析, 端点可见性, 逆向工程