skills/malware/malware-analysis-methodology/SKILL.md
恶意软件分析方法论。当需要分析可疑二进制文件(PE/ELF/Mach-O)、内存 dump 中的恶意代码、或已知恶意软件家族样本时使用。覆盖静态分析、动态分析、代码逆向、IOC 提取全流程。红队视角:理解检测面以改进免杀
npx skillsauth add wgpsec/AboutSecurity malware-analysis-methodologyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
红队价值:理解样本如何被分析 → 知道哪些特征会暴露 → 改进免杀和 OPSEC
⛔ NEVER 在非隔离环境执行样本!
# 计算哈希
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)→ 直接静态阅读代码
# 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 | 沙箱检测 |
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}')
"
目标:观察样本运行时行为
├─ 有沙箱环境 → 直接投递(AnyRun/Cuckoo/CAPE)
├─ 本地 VM → strace/procmon + 网络抓包
└─ 仅有样本无法执行 → 纯静态(Ghidra/IDA)
Windows 动态分析:
1. Procmon 过滤进程名 → 文件/注册表/网络操作
2. Wireshark/fakenet → C2 通信
3. API Monitor → 关键 API 调用序列
Linux 动态分析:
strace -f -e trace=network,process,file -o trace.log ./sample
ltrace -f -o ltrace.log ./sample
# 另一终端监控
ss -tlnp # 监听端口
ss -tnp # 外连
⛔ 必须提取以下所有类型 IOC:
分析完成后,从红队视角反思:
该样本暴露了哪些特征?
├─ 静态特征 → 特定字符串/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 |
testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能