isarmadfarooq/malware-analysis-static-dynamic-techniques
GitHub: isarmadfarooq/malware-analysis-static-dynamic-techniques
网络安全硕士课程实验项目,完整演示了使用 IDA Pro 进行静态逆向破解 XOR 加密密码,以及在 FLARE VM 沙箱中利用多种取证工具对恶意软件进行动态行为分析的标准化流程。
Stars: 0 | Forks: 0
# 🔬 恶意软件分析 – 静态与动态分析技术
**作业 4 | 网络安全硕士 | NUCES 伊斯兰堡**
## 📋 作业信息
| 字段 | 详情 |
|-------|---------|
| **学生姓名** | Sarmad Farooq |
| **学生学号** | 25I-7722 |
| **专业** | 网络安全硕士 |
| **课程** | 恶意软件分析 |
| **授课教师** | Dr. Jawad Hassan |
| **院系** | 网络安全, NUCES (伊斯兰堡) |
## 📌 概述
本作业展示了两种核心的恶意软件分析方法:
1. **静态分析** – 使用 IDA Pro 对受密码保护的可执行文件进行逆向工程,在不执行该二进制文件的情况下恢复经过 XOR 加密的密码。
2. **动态分析** – 在隔离的 FLARE VM 环境中,使用多种取证工具对恶意软件样本进行行为分析。
## 🛠️ 所用工具
| 工具 | 用途 |
|------|---------|
| **IDA Pro** | 反汇编与静态逆向工程 |
| **FLARE VM** | 隔离的恶意软件分析沙箱 (Windows 10 x64) |
| **FakeNet-NG** | 网络流量拦截与模拟 |
| **System Informer** | 实时进程和系统监控 |
| **Process Monitor (Procmon)** | 系统调用和事件日志记录 |
| **Regshot** | 注册表快照比较 |
| **ProcDOT** | 可视化行为图生成 |
## 🔍 问题 1:静态分析与密码破解 (IDA Pro)
### 目标
在不运行编译好的可执行文件的情况下,使用静态逆向工程从中恢复正确的密码。
### 方法论
#### 步骤 1–3:在 IDA Pro 中加载二进制文件
- 下载目标 `.exe` 并使用 IDA Pro 打开
- 选择 **Portable Executable** 格式
- 观察 IDA 主图形视图
#### 步骤 4:初始执行测试
- 运行该可执行文件并输入错误的密码 → 收到 **"Access Denied"** 弹窗
#### 步骤 5–6:字符串分析
- 打开 **Strings 视图** (`View → Subviews → Strings`)
- 在 `.rdata` 节中定位到 `"Access Denied"` 字符串
- 跟随 **XREF** 交叉引用定位程序的决策逻辑
#### 步骤 7:控制流分析
- 分析程序入口点和汇编指令
- 识别执行路径:
`memset` → `decrypt()` → `strcmp` → 密码决策
- 确认 `decrypt()` 是唯一能为 `strcmp` 提供真实密码的函数
#### 步骤 8–9:定位加密密码
- 导航至 `decrypt` 函数内部
- 在 `.data` 节中找到 `enc_password`,包含 **13 个加密字节**(XOR 加密,以 null 结尾)
#### 步骤 10:手动 XOR 解密
**XOR 密钥:** `0x5A`
| # | 加密字节 | 与 0x5A 进行 XOR | 结果 | ASCII |
|---|---------------|---------------|--------|-------|
| 1 | `17h` | `0x5A` | `4Dh` | **M** |
| 2 | `3Bh` | `0x5A` | `61h` | **a** |
| 3 | `36h` | `0x5A` | `6Ch` | **l** |
| 4 | `2Dh` | `0x5A` | `77h` | **w** |
| 5 | `3Bh` | `0x5A` | `61h` | **a** |
| 6 | `28h` | `0x5A` | `72h` | **r** |
| 7 | `3Fh` | `0x5A` | `65h` | **e** |
| 8 | `16h` | `0x5A` | `4Ch` | **L** |
| 9 | `3Bh` | `0x5A` | `61h` | **a** |
| 10 | `38h` | `0x5A` | `62h` | **b** |
| 11 | `6Bh` | `0x5A` | `31h` | **1** |
| 12 | `68h` | `0x5A` | `32h` | **2** |
| 13 | `69h` | `0x5A` | `33h` | **3** |
| 14 | `00h` | — | NULL | *(结束)* |
### ✅ 恢复的密码:`MalwareLab123`
#### 步骤 11:验证
- 再次运行可执行文件并输入 `MalwareLab123` → **Access Granted** ✓
## 🧪 问题 2:动态恶意软件分析 (FLARE VM)
### 目标
在受控、隔离的沙箱环境中分析 `SarmadMalware.exe` 的行为特征。
### 环境设置
- **虚拟机:** 搭载 FlareVM 的 VMware Windows 10 x64
- **网络:** 分析前 FlareVM 网络适配器已被 **禁用**
- **快照:** 执行前已拍摄基线快照
### 分析步骤
#### 步骤 1–2:分析前准备
- 禁用 FlareVM 网络接口
- 拍摄干净的虚拟机快照以备回滚
#### 步骤 3:Regshot – 第一次快照
- 使用 Regshot 捕获 **执行前的注册表状态**
#### 步骤 4:FakeNet-NG
- 启动 FakeNet-NG 以拦截和模拟网络流量
#### 步骤 5:System Informer
- 启动 System Informer 以实时监控进程活动
#### 步骤 6:恶意软件执行
- 重命名并执行恶意软件样本 (`SarmadMalware.exe`)
#### 步骤 7:网络与进程观察
**FakeNet-NG 结果:**
- 未观察到出站连接、DNS 请求或任何网络流量
- 在此次执行期间未捕获到网络入侵指标
- *注:无法排除处于休眠状态或基于触发器的行为*
**System Informer:**
- 恶意软件进程 **在一个作业对象 中** 运行,表明存在沙箱化的派生行为
#### 步骤 8:Process Monitor (Procmon) 分析
**主要发现 (PID: 1896):**
- **668,654 个总事件** – 表明存在持续、密集的执行循环
- **进程分析 事件** – 一致的用户态时间为 `0.0625s`,揭示了紧密的重复循环
- **多个线程退出事件** (TID: 4580, 5516, 5752) – 动态的线程生成与终止
- 终止时的 **注册表操作**:
- `HKLM\System\CurrentControlSet\Services` – 可能是持久化/服务安装尝试
- `HKLM\SOFTWARE\Microsoft\Ole`
- `HKCU\Software\Classes\Local Settings`
- 对桌面目录和 `C:\Windows\Fonts\StaticCache.dat` 的 **文件访问**
- 进程以 **状态码 1** 退出(异常终止)
- 日志已导出为 CSV 以供进一步分析
#### 步骤 9:Regshot – 注册表比较
- 执行后拍摄 **第二次快照**
- 比较两次快照 → **检测到 1,035 处注册表更改**
#### 步骤 10:ProcDOT 可视化
行为图揭示了一个 **多阶段攻击链**:
| 行为 | 描述 |
|----------|-------------|
| 🔁 **持久化** | 线程 5708 重新启动了带有 AUTOSTART 功能的可执行文件 |
| 💀 **自终止** | 原始进程在生成副本后自行终止(逃避检测) |
| 🧹 **反取证** | 创建随后删除了遥测文件 (`telemetry.ASM-WindowsDefault.json.new` 等) |
| 🔧 **注册表篡改** | 跨多个线程进行的大量注册表读写操作 |
| 🎭 **进程伪装** | 次级 `svchost.exe` (PID: 3760) 被标记为恶意 – 疑似代码注入 |
### 📊 恶意软件行为总结
1. **通过自我复制求生** – 通过新线程实现 AUTOSTART 持久化
2. **终止其原始进程** – 逃避安全工具的监控
3. **抹除自身痕迹** – 删除其创建的遥测/日志文件
4. **修改 Windows 注册表** – 更改系统设置以获取控制权
5. **伪装成 Windows 进程** – 注入或模仿 `svchost.exe`
## ⚠️ 免责声明
## 📚 参考文献
- [ASCII 表参考 (Michael Goerz)](https://michaelgoerz.net/refcards/ascii_a4.pdf)
- IDA Pro 文档
- FLARE VM – FireEye 实验室高级逆向工程虚拟机
- Sysinternals 套件 (Process Monitor, ProcDOT)
- FakeNet-NG – FLARE 网络模拟工具
*© 2025 Sarmad Farooq | 网络安全硕士 | NUCES 伊斯兰堡*
标签:DAST, DNS 反向解析, DOS头擦除, FakeNet-NG, FLARE VM, IDA Pro, meg, ProcDOT, Process Monitor, Procmon, Regshot, System Informer, Wayback Machine, XOR加密, 云安全监控, 云资产清单, 信息安全, 反汇编, 可执行文件分析, 密码破解, 恶意软件分析, 沙箱分析, 注册表分析, 网络安全, 网络安全实验, 网络流量分析, 逆向工程, 隐私保护, 静态分析