malware-analysis-methodology

$npx mdskill add wgpsec/AboutSecurity/malware-analysis-methodology

Decodes binary samples to extract indicators and evade detection.

  • Analyzes PE, ELF, and Mach-O files for reverse engineering tasks.
  • Integrates with pefile, UPX, and die for binary inspection.
  • Selects analysis phases based on file type and entropy metrics.
  • Outputs actionable IOC lists and evasion improvement strategies.

SKILL.md

.github/skills/malware-analysis-methodologyView on GitHub ↗
---
name: malware-analysis-methodology
description: "恶意软件分析方法论。当需要分析可疑二进制文件(PE/ELF/Mach-O)、内存 dump 中的恶意代码、或已知恶意软件家族样本时使用。覆盖静态分析、动态分析、代码逆向、IOC 提取全流程。红队视角:理解检测面以改进免杀"
metadata:
  tags: "malware,analysis,reverse,PE,ELF,static,dynamic,sandbox,IOC,恶意软件,样本分析,逆向"
  category: "malware"
  mitre_attack: "T1059,T1055,T1027,T1497,T1140"
---

# 恶意软件分析方法论

> **红队价值**:理解样本如何被分析 → 知道哪些特征会暴露 → 改进免杀和 OPSEC

## ⛔ 深入参考

- PE/ELF 静态分析详细命令与脚本 → [references/static-analysis.md](references/static-analysis.md)
- 动态分析与沙箱对抗 → [references/dynamic-analysis.md](references/dynamic-analysis.md)

---

## Phase 0: 样本处理与安全准备

⛔ **NEVER** 在非隔离环境执行样本!

```bash
# 计算哈希
sha256sum sample.bin
md5sum sample.bin

# 基础识别
file sample.bin
strings -n 6 sample.bin | head -50

# 检查是否加壳
upx -t sample.bin         # UPX
die sample.bin            # Detect It Easy
```

决策:
```
样本类型?
├─ PE (Windows) → Phase 1A
├─ ELF (Linux) → Phase 1B
├─ Mach-O (macOS) → Phase 1C
├─ Shellcode/内存 dump → Phase 2(直接动态分析)
└─ 脚本(PS1/VBS/JS/Python)→ 直接静态阅读代码
```

## Phase 1A: PE 静态分析

```bash
# PE 头信息
python3 -c "
import pefile
pe = pefile.PE('sample.exe')
print(f'Compiled: {pe.FILE_HEADER.TimeDateStamp}')
print(f'Sections: {len(pe.sections)}')
for s in pe.sections:
    print(f'  {s.Name.decode().strip(chr(0)):8} Entropy:{s.get_entropy():.2f} VSize:{s.Misc_VirtualSize}')
print(f'Imports: {len(pe.DIRECTORY_ENTRY_IMPORT)}')
for entry in pe.DIRECTORY_ENTRY_IMPORT:
    print(f'  {entry.dll.decode()}')
"
```

**关键 Import 特征映射:**
| Import API | 功能推断 |
|-----------|---------|
| VirtualAlloc + WriteProcessMemory | 进程注入 |
| CreateRemoteThread | 远程线程注入 |
| WinHttpOpen / InternetOpenA | 网络通信/C2 |
| CryptEncrypt / BCryptEncrypt | 加密(可能是勒索软件) |
| RegSetValueEx + RunKey | 持久化 |
| NtQueryInformationProcess | 反调试 |
| IsDebuggerPresent | 反调试 |
| GetTickCount / QueryPerformanceCounter | 沙箱检测 |

## Phase 1B: ELF 静态分析

```bash
readelf -h sample          # ELF 头
readelf -S sample          # 节表
readelf -d sample          # 动态链接
nm sample 2>/dev/null      # 符号表(未 strip 时)

# 高熵节 = 可能加密/压缩
python3 -c "
from elftools.elf.elffile import ELFFile
import math
from collections import Counter
with open('sample','rb') as f:
    elf = ELFFile(f)
    for s in elf.iter_sections():
        data = s.data()
        if len(data) > 100:
            entropy = -sum((c/len(data))*math.log2(c/len(data)) for c in Counter(data).values())
            if entropy > 7.0:
                print(f'[!] 高熵: {s.name} entropy={entropy:.2f}')
"
```

## Phase 2: 动态分析决策

```
目标:观察样本运行时行为
├─ 有沙箱环境 → 直接投递(AnyRun/Cuckoo/CAPE)
├─ 本地 VM → strace/procmon + 网络抓包
└─ 仅有样本无法执行 → 纯静态(Ghidra/IDA)
```

**Windows 动态分析:**
```
1. Procmon 过滤进程名 → 文件/注册表/网络操作
2. Wireshark/fakenet → C2 通信
3. API Monitor → 关键 API 调用序列
```

**Linux 动态分析:**
```bash
strace -f -e trace=network,process,file -o trace.log ./sample
ltrace -f -o ltrace.log ./sample
# 另一终端监控
ss -tlnp    # 监听端口
ss -tnp     # 外连
```

## Phase 3: IOC 提取清单

⛔ 必须提取以下所有类型 IOC:

- [ ] 文件哈希(MD5 + SHA256)
- [ ] 网络指标(IP/域名/URL/URI 路径)
- [ ] 文件系统指标(创建/修改的文件路径)
- [ ] 注册表指标(Windows)
- [ ] 进程指标(进程名、命令行、父子关系)
- [ ] 持久化机制(启动项/计划任务/服务/cron)
- [ ] MITRE ATT&CK TTP 映射

## Phase 4: 红队反思(OPSEC 审查)

分析完成后,从红队视角反思:

```
该样本暴露了哪些特征?
├─ 静态特征 → 特定字符串/Import/节名/编译时间
├─ 行为特征 → 进程注入方式/持久化手法/C2 模式
├─ 网络特征 → User-Agent/URI 模式/心跳间隔
└─ 内存特征 → 未加密字符串/固定 XOR key/特征字节序列
```

→ 用于改进自身工具的免杀设计

## 工具速查

| 用途 | 工具 |
|------|------|
| PE 分析 | pefile, pestudio, CFF Explorer |
| ELF 分析 | readelf, pyelftools, radare2 |
| 反编译 | Ghidra, IDA Pro, Binary Ninja |
| 字符串提取 | FLOSS (FireEye), strings |
| 沙箱 | AnyRun, CAPE, Cuckoo |
| 网络 | Wireshark, FakeNet-NG |
| YARA | yara-python, yarGen |

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|