恶意软件分析
什么是恶意软件分析?
恶意软件分析是检查恶意代码以理解其 行为、能力、来源和目标的过程。它对于事件响应(incident response)、 威胁情报(threat intelligence)以及制定有效的应对措施至关重要。
分析类型
1. 静态分析
在不执行恶意软件的情况下进行检查:
- 字符串(strings)与元数据分析
- 识别加壳工具(packers)与混淆
- PE/ELF 文件头分析
- 签名与哈希(MD5、SHA-256、SSDEEP)
- YARA rules matching
2. 动态分析
在隔离环境中进行受控执行:
- 沙箱分析(Cuckoo、Any.Run、Joe Sandbox)
- 系统调用监控
- 网络流量分析
- 文件系统与注册表的修改
- 创建的进程与代码注入
3. 逆向工程
深入的代码分析:
- 反汇编与反编译
- 调试与流程分析
- 识别加密算法
- 提取配置与 IOCs
必备工具
静态分析
- • PEiD / Detect It Easy
- • PEStudio / CFF Explorer
- • Strings / FLOSS
- • VirusTotal / Hybrid Analysis
- • YARA / Capa
动态分析
- • Cuckoo Sandbox
- • Any.Run
- • Process Monitor (Sysinternals)
- • Wireshark / tcpdump
- • Regshot
Reverse Engineering
- • IDA Pro / Ghidra
- • x64dbg / WinDbg
- • dnSpy(用于 .NET)
- • JD-GUI(用于 Java)
- • Radare2
内存与取证
- • Volatility Framework
- • Rekall
- • SANS SIFT Workstation
- • REMnux Distribution
分析方法论
阶段 1:初步分诊
- 计算哈希并在威胁情报数据库中进行核对
- 提交至公共沙箱(VirusTotal、Hybrid Analysis)
- 快速分析字符串与导入函数(imports)
- 确定文件类型及可能使用的加壳工具
阶段 2:行为分析
- 在受控沙箱中执行
- 监控文件与进程的创建
- 捕获网络流量与 C2 连接
- 识别持久化技术
阶段 3:深入分析
- 脱壳与反混淆
- 对关键函数进行逆向工程
- 提取配置与 IOCs
- 识别家族与变种
入侵指标(IOCs)
需要提取的关键 IOCs:
- File-based: 哈希、文件名、路径
- Network: IP、域名、URL、User-Agents
- Registry: 创建/修改的注册表键
- Behavior: Mutexes、named pipes、服务
- YARA rules: 可复用的检测规则模式
常见规避技术
- Anti-VM/Sandbox: 检测虚拟化环境
- Anti-Debugging: 规避分析的技术
- Packing/Obfuscation: 代码混淆
- Process Injection: DLL injection、process hollowing
- Rootkit Capabilities: 隐藏进程与文件
- Fileless Malware: 仅在内存中执行
MITRE ATT&CK Framework
将恶意软件的行为映射到 MITRE ATT&CK 技术:
- Initial Access (phishing, exploit public-facing app)
- Execution (command and scripting, user execution)
- Persistence (registry run keys, scheduled tasks)
- Defense Evasion (obfuscation, process injection)
- Command and Control (web protocols, DNS)
- Exfiltration (exfiltration over C2, automated exfiltration)
安全建议
- [OK] 始终在隔离(air-gapped)环境中进行分析
- [OK] 使用虚拟机快照以便快速恢复
- [OK] 详细记录整个分析过程
- [OK] 与社区共享 IOCs(MISP、OTX)
- [OK] 始终保持分析工具为最新版本
- [OK] 创建 YARA rules 以便未来检测
- [OK] 将分析结果与威胁情报平台集成
