[MALWARE] 恶意代码分析入门:静态与动态分析
╔══════════════════════════════════════════════════════╗
║ ███╗ ███╗ █████╗ ██╗ ██╗ ██╗ █████╗ ██████╗ ███████╗ ║
║ ████╗ ████║██╔══██╗██║ ██║ ██║██╔══██╗██╔══██╗██╔════╝ ║
║ ██╔████╔██║███████║██║ ██║ █╗ ██║███████║██████╔╝█████╗ ║
║ ██║╚██╔╝██║██╔══██║██║ ██║███╗██║██╔══██║██╔══██╗██╔══╝ ║
║ ██║ ╚═╝ ██║██║ ██║███████╗╚███╔███╔╝██║ ██║██║ ██║███████╗ ║
║ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ║
╚══════════════════════════════════════════════════════╝
1. 分析环境搭建
┌─────────────────────────────────────┐
│ Analysis Workstation │
│ ┌───────────────────────────────┐ │
│ │ Host OS (Windows/Linux) │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ VM (FlareVM / REMnux) │ │ │
│ │ │ ┌───────────────────┐ │ │ │
│ │ │ │ Sandbox (Win10) │ │ │ │
│ │ │ │ - No network │ │ │ │
│ │ │ │ - Snapshot ready │ │ │ │
│ │ │ └───────────────────┘ │ │ │
│ │ └─────────────────────────┘ │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
必备工具链
| 工具 | 用途 | 类型 |
|---|---|---|
| Detect It Easy | 文件类型识别 | 静态 |
| PE-bear | PE 结构分析 | 静态 |
| IDA Free / Ghidra | 反汇编 | 静态 |
| x64dbg | 调试器 | 动态 |
| Process Monitor | 行为监控 | 动态 |
| Wireshark | 网络分析 | 动态 |
| Regshot | 注册表快照 | 动态 |
2. 静态分析流程
样本获取
│
▼
┌─────────┐
│ 文件哈希 │ → MD5 / SHA256
└────┬────┘
▼
┌─────────┐
│ 文件类型 │ → DIE / file 命令
└────┬────┘
▼
┌─────────┐
│ 字符串 │ → strings / FLOSS
└────┬────┘
▼
┌─────────┐
│ PE 结构 │ → 节区、导入表、资源
└────┬────┘
▼
┌─────────┐
│ 反汇编 │ → IDA / Ghidra
└─────────┘
3. 常见恶意行为特征
PE 文件可疑特征
// 可疑的 API 调用模式
VirtualAlloc() → 分配可执行内存
WriteProcessMemory() → 进程注入
CreateRemoteThread() → 远程线程创建
NtUnmapViewOfSection() → 进程挖空 (Hollowing)
SetWindowsHookEx() → 键盘钩子
CryptEncrypt() → 勒索软件加密
网络行为
C2 通信模式:
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Beacon │ ←─→ │ C2 │ ←─→ │ Operator │
│ (受害机) │ │ Server │ │ (攻击者) │
└──────────┘ └──────────┘ └──────────┘
常见协议:
- HTTP/HTTPS (最常见)
- DNS 隧道
- ICMP 隧道
- 自定义 TCP 协议
4. 动态分析技巧
API 监控 (API Monitor)
监控目标:
┌──────────────────────────────┐
│ File Operations │
│ ├─ CreateFile / WriteFile │
│ └─ DeleteFile │
│ Registry Operations │
│ ├─ RegCreateKey / RegSetValue│
│ └─ Run/RunOnce 持久化 │
│ Process Operations │
│ ├─ CreateProcess │
│ └─ OpenProcess + 注入 │
│ Network Operations │
│ ├─ socket / connect │
│ └─ send / recv │
└──────────────────────────────┘
5. 沙箱逃逸检测
许多恶意软件会检测沙箱环境:
# 伪代码:反沙箱检测
def is_sandbox():
if check_vm_artifacts(): # VM 痕迹
return True
if check_debugger(): # 调试器
return True
if mouse_movement() == 0: # 无鼠标移动
return True
if uptime() < 600: # 运行时间短
return True
if screen_resolution() < 1024: # 低分辨率
return True
return False
⚠️ 本文仅供安全研究和防御用途。分析恶意代码时务必在隔离环境中进行。
[LAB] 环境状态: ISOLATED ✓
[LAB] 快照就绪: READY ✓
[LAB] 网络隔离: AIR-GAPPED ✓