kalyanasundaram02/simulated-malware-delivery-detection
GitHub: kalyanasundaram02/simulated-malware-delivery-detection
一个蓝队检测验证实验,模拟恶意软件经 FTP 投递的全流程,通过自定义 Wazuh 规则验证检测能力,并对 Payload 进行静态分析识别其家族与行为。
Stars: 0 | Forks: 0
# 恶意软件投递与检测:基于 FTP 的 Payload 传输分析
这是一次蓝队模拟与检测验证练习:恶意 Payload 通过 FTP 投递到目标系统,同时攻击者通过 ARP 毒化嗅探流量,并使用自定义 Wazuh 检测规则监控整个传输生命周期。随后对投递的 Payload 进行静态分析并完成识别。
## 目标
本项目模拟攻击者通过 FTP 将恶意 Payload 投递到目标系统,利用 ARP 毒化专门拦截目标机器的流量(而不是嗅探整个网段)。目标是:
- 使用自定义 Wazuh 规则,验证覆盖整个 FTP 传输生命周期(上传和下载)的检测能力
- 证明经过重命名/伪装的恶意文件依然会被基于内容/行为的检测机制捕获,而不仅仅依赖文件名检查
- 对投递的 Payload 执行静态恶意软件分析,以识别其家族、功能和行为
## 实验环境
| 组件 | 详情 |
|---|---|
| FTP 服务器 | Ubuntu Server (192.168.0.100) 上的 vsftpd 3.0.5 |
| 监控 | 同一台 Ubuntu Server VM 上的 Wazuh manager/indexer/dashboard + Suricata IDS |
| 攻击者机器 | Kali Linux (192.168.0.3) |
| Hypervisor | Windows 11 宿主机上的 VirtualBox |
## 攻击 / 模拟流程
### 1. 攻击者定位 — ARP 毒化
为了专门捕获目标机器 (192.168.0.100) 的流量而不是嗅探整个网络,我们使用 ettercap 执行了 ARP 毒化:
```
sudo ettercap -T -q -M arp:remote /192.168.0.3//
```
这使得 Kali 机器成为了目标与网关之间流量的中间人,从而将捕获范围限定在仅相关的宿主机上。
### 2. 流量拦截 — Wireshark
在 ARP 毒化处于活动状态时,捕获并过滤了 FTP 流量:
```
ip.addr == 192.168.0.3 && ftp
```

捕获内容显示了明文形式的完整 FTP 会话:`USER file1`、`PASS ****`、`230 Login successful`,随后是 `PASV`/`LIST` 命令交换。由于 vsftpd 默认不对凭据或命令进行加密,登录和文件操作对处于网络层面的攻击者来说完全可见。
**防御启示:** 明文 FTP 会在网络传输中暴露凭据和传输内容。在任何等同于生产环境的环境中,应使用 FTPS 或 SFTP。
### 3. Payload 投递
恶意软件样本在上传前被重命名,以伪装成无害文件 —— 这是一种简单但真实的**伪装**技术 (MITRE T1036):

```
ftp> put Reports.zip
226 Transfer complete.
320424 bytes sent in 00:00 (12.49 MiB/s)
```
### 4. 检测 — 自定义 Wazuh 规则
自定义规则(参见 [`configs/vsftpd_local_rules.xml`](configs/vsftpd_local_rules.xml))监控 vsftpd 的文件操作,包括上传和下载:
```
11404
vsftpd: File uploaded to FTP server - $(url)
file_upload,vsftpd,
vsftpd
OK DOWNLOAD:
vsftpd: File downloaded from FTP server.
```
规则 **100201** 成功在恶意上传时触发:

```
Jul 17, 2026 @ 13:22:32.617 | vsftpd: File uploaded to FTP server - /Reports.zip | Rule 100201
```
这证实了检测管道实时捕获了文件传输 —— 尽管该文件已被重命名以显得无害。**仅靠文件名并不是可靠的检测信号;基于行为的规则无论如何都能捕获它。**
## Payload 分析
**SHA256:** `6816bdce3909a1a98c719e032690ce2b1756d9c6e82c15078584bc3dd3a55cdf`
### 静态分析 (PEStudio / pescan)

| 发现项 | 详情 |
|---|---|
| 文件类型 | 32 位 PE 可执行文件,GUI 子系统 |
| 熵值 | **7.95**(接近最大值 —— 强烈表明经过了加壳/加密) |
| 注册表导入 | 通过 ADVAPI32 获得完整的 CRUD 访问权限(`RegQueryValueExA`, `RegSetValueExA`, `RegEnumKeyA`, `RegDeleteKeyA` 等) |
| 安装程序特征 | 字符串证实使用了 **NSIS (Nullsoft Scriptable Install System)** 封装 —— 参见 [`analysis/strings_output.txt`](analysis/strings_output.txt) |

完整的注册表读/写/枚举/删除访问权限超出了简单安装程序的需求,这与配置操纵或反取证清理行为更为一致,而不仅仅是良性的安装程序使用。
### VirusTotal 判定

被绝大多数引擎标记为 **木马/后门**,家族标签:**Korplug / PlugX / Nemesis**。
### 行为背景
**Korplug (PlugX)** 是一种长期活跃(自 2008 年起)的远程访问木马,与涉及间谍活动的威胁行为者(APT10、APT41、Mustang Panda 等)有关。其标志性技术是 **DLL 侧加载** —— 利用合法的、已签名的可执行文件通过 Windows DLL 搜索顺序加载恶意 DLL —— 而不是简单的注册表 Run 键。
这解释了为什么静态字符串分析没有以明文形式揭示出显式的持久化注册表路径:真正的 Payload 和持久化逻辑被加壳/加密封装在 NSIS 包装器内,仅在 runtime 解析。仅靠静态分析无法发现该家族真实的持久化机制 —— 这需要动态分析,或者正如这里所做的,对已识别的家族交叉比对已知的威胁情报。
## MITRE ATT&CK 映射
| 技术 | ID | 证据 |
|---|---|---|
| 混淆文件或信息 | T1027 | 高熵值 (7.95),NSIS 加壳 |
| 伪装 | T1036 | 投递前重命名为 `Reports.zip` |
| 入口工具传输 | T1105 | 通过 FTP 上传 Payload |
| DLL 搜索顺序劫持 | T1574.001 | 已知的 Korplug/PlugX 持久化技术(根据威胁情报得出,未在静态字符串中直接观察到) |
## 关键启示
- 明文 FTP 会向处于网络传输路径上的攻击者暴露凭据和文件传输内容 —— 加密 (FTPS/SFTP) 是一种明确的缓解措施。
- 自定义 Wazuh 规则 100201 成功检测到了恶意文件上传,即使文件已被重命名以显得无害,这表明不应将基于文件名的假设作为检测依据。
- 仅靠静态分析无法揭示样本的持久化机制,因为 Korplug/PlugX 将其隐藏在加壳和 DLL 侧加载之后 —— 这说明了为什么静态分析结果应与已识别恶意软件家族的已知威胁情报相结合。
- 用于目标流量捕获的 ARP 毒化是一项非常有用的技术,可将分析范围限定在特定的感兴趣主机上,而不是整个网段。
## 本仓库中的文件
```
.
├── README.md <- this file
├── configs/
│ └── vsftpd_local_rules.xml <- custom Wazuh detection rules
├── analysis/
│ └── strings_output.txt <- raw pestr strings output from the sample
└── screenshots/
├── 01-virustotal-detection.png
├── 02-advapi32-imports.png
├── 03-wazuh-upload-detection-log.png
├── 04-wireshark-ftp-capture.png
├── 05-ftp-upload-terminal.png
└── 06-pescan-entropy-output.png
```
标签:DAST, DNS 反向解析, Metaprompt, MITM, Wazuh, 安全实验, 恶意软件分析