关于 ctf-malware
ctf-malware 是面向恶意软件分析类 CTF 题目的速查技能,供分析脚本、二进制文件、内存和网络捕获数据的参赛者使用,并提供详细笔记及可选 MCP 服务参考。
主要功能
- 01脚本反混淆技巧
- 02PE 与 .NET 恶意软件分析
- 03C2 协议与 PCAP 分析
- 04YARA 规则和 Shellcode 分析
- 05内存取证指南
适用场景
- 01解码混淆的 JavaScript 或 PowerShell
- 02从二进制文件提取恶意软件配置
- 03调查数据包捕获中的 C2 流量
MCP 相关
README 将 IDA Pro MCP、Ghidra MCP、WinDbg MCP 和 JADX MCP 列为可选工具,分别用于解包、配置提取、动态调试和 Android 恶意软件分析。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ljagiello/ ctf-skills --skill ctf-malware安装后在 Claude Code 中输入/ctf-malware确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
c2-and-protocols.mdpe-and-dotnet.mdscripts-and-obfuscation.mdtools-mcp.md详细介绍
CTF 恶意软件与网络分析
恶意软件分析 CTF 挑战快速参考。这里为每种技术提供一行简介;完整细节和代码请参阅配套文件。
前置条件
Python 软件包(所有平台):
pip install yara-python pefile capstone oletools unicorn pycryptodome \
volatility3 dissect.cobaltstrike
Linux(apt):
apt install strace ltrace tshark binwalk binutils
macOS(Homebrew):
brew install wireshark binwalk binutils ghidra
手动安装:
- dnSpy — GitHub,.NET 反编译器(Windows)
MCP 服务(可选): IDA Pro MCP / Ghidra MCP(脱壳、配置提取)、用于动态分析的 WinDbg MCP(svnscha/mcp-windbg)、用于 Android 的 JADX MCP — 参阅 tools-mcp.md。仅在隔离、一次性使用的 VM 中运行恶意软件。
其他资源
- scripts-and-obfuscation.md - JavaScript 去混淆、PowerShell 分析、eval/base64 解码、垃圾代码检测、十六进制载荷、Debian 软件包分析、动态分析技术(strace/ltrace、网络监控、内存字符串提取、自动化沙箱执行)、用于恶意软件检测的 YARA 规则、Shellcode 分析(Unicorn Engine、Capstone)、恶意软件内存取证(Volatility 3 malfind、进程注入检测)、反分析技术(VM 检测、时间规避、API 哈希、进程注入)、使用自定义字母表 C2 解码的木马化插件分析
- c2-and-protocols.md - C2 流量模式、自定义加密协议、RC4 WebSocket、基于 DNS 的 C2、网络指标、PCAP 分析、AES-CBC、加密 ID、Telegram Bot 恢复、Poison Ivy RAT Camellia 解密
- pe-and-dotnet.md - PE 分析(peframe、pe-sieve、pestudio)、.NET 分析(dnSpy、AsmResolver)、LimeRAT 提取、沙箱规避、恶意软件配置提取、PyInstaller+PyArmor
- tools-mcp.md - 恶意软件分析的 MCP 服务集成:用于脱壳和配置/解密器提取的 IDA/Ghidra MCP、用于动态调试的 WinDbg MCP(RWX 区域搜索、内存中的 C2 字符串、实时
VirtualAlloc/CreateRemoteThread断点、使用.writemem转储载荷以跳过加壳程序)、用于 Android 恶意软件的 JADX MCP — 以伪代码为先,并附有隔离 VM 安全提示
何时切换方向
- 如果样本实际上只是普通的 crackme、加壳挑战二进制文件,或没有恶意软件行为的自定义 VM,请切换到
/ctf-reverse。 - 如果主要任务是网络重建、磁盘雕刻或主机痕迹恢复,请切换到
/ctf-forensics。 - 如果挑战转为公开归因或基础设施追踪,请切换到
/ctf-osint。
快速入门命令
# Static analysis
file suspicious_file
strings -n 8 suspicious_file | head -50
xxd suspicious_file | head -20
# PE analysis
python3 -c "import pefile; pe=pefile.PE('mal.exe'); print(pe.dump_info())" | head
peframe mal.exe
# Dynamic analysis (sandboxed!)
strace -f -s 200 ./suspicious 2>&1 | head -100
ltrace ./suspicious 2>&1 | head -50
# Network indicators
strings suspicious_file | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
strings suspicious_file | grep -iE 'http|ftp|ws://'
# YARA scan
yara -r rules.yar suspicious_file
混淆脚本
- 将
eval/bash替换为echo,以打印底层代码;提取 base64/hex 数据块,并使用file分析。参阅 scripts-and-obfuscation.md。
JavaScript 与 PowerShell 去混淆
- JS:将
eval替换为console.log,解码unescape()、atob()、String.fromCharCode()。 - PowerShell:解码
-encbase64,将IEX替换为输出。参阅 scripts-and-obfuscation.md。
垃圾代码检测
- NOP 滑道、push/pop 对、无效写入、跳转到下一条指令的无条件跳转。筛选并提取真实的
call目标。参阅 scripts-and-obfuscation.md。
PCAP 与网络分析
tshark -r file.pcap -Y "tcp.stream eq X" -T fields -e tcp.payload
留意使用非常规端口的 C2。使用 strings | grep 提取 IP/域名。参阅 c2-and-protocols.md。
自定义加密协议
- 流密码的两个方向共用密钥流状态;按时间顺序串联所有载荷。
- ChaCha20 密钥流提取:发送空字节(0 XOR 任意值 = 任意值)。参阅 c2-and-protocols.md。
C2 流量模式
- 信标通信、DGA、DNS 隧道、带自定义标头的 HTTP(S)、编码载荷。参阅 c2-and-protocols.md。
RC4 加密的 WebSocket C2
- 使用
tcprewrite重新映射端口,添加 RSA 密钥以解密 TLS,并在二进制文件中查找 RC4 密钥。参阅 c2-and-protocols.md。
识别加密算法
- AES:
0x637c777bS 盒;ChaCha20:expand 32-byte k;TEA/XTEA:0x9E3779B9;RC4:顺序初始化 S 盒。参见 c2-and-protocols.md。
恶意软件中的 AES-CBC
- 密钥 = 硬编码字符串的 MD5/SHA256;IV = 密文的前 16 个字节。参见 c2-and-protocols.md。
PE 分析
peframe malware.exe # Quick triage
pe-sieve # Runtime analysis
pestudio # Static analysis (Windows)
参见 pe-and-dotnet.md。
.NET 恶意软件分析
- 使用 dnSpy/ILSpy 进行反编译;使用 AsmResolver 进行程序化分析。LimeRAT C2:使用 MD5 派生密钥的 AES-256-ECB。参见 pe-and-dotnet.md。
恶意软件配置提取
- 检查 .data 节、PE/.NET 资源、注册表项和加密配置文件。参见 pe-and-dotnet.md。
沙箱规避检查
- 虚拟机检测、调试器检测、计时检查、环境检查、分析工具检测。参见 pe-and-dotnet.md。
反分析技术
虚拟机检测(CPUID、MAC 前缀、注册表、磁盘大小)、计时规避(sleep/RDTSC 沙箱检测)、API 哈希(ROR13/DJB2/CRC32 + hashdb 查询)、进程注入(进程空洞化、APC、CreateRemoteThread)、环境检查。参见 scripts-and-obfuscation.md。
木马化插件分析
将恶意插件与官方版本进行差异比较,以查找 try/except 块中的注入代码。自定义字母表轮换(C[(C.index(ch) - offset) % len(C)])用于解码 C2 域名,XOR 用于解码端点路径。参见 scripts-and-obfuscation.md。
PyInstaller + PyArmor 解包
- 使用
pyinstxtractor.py提取,使用 PyArmor-Unpacker 处理受保护的代码。参见 pe-and-dotnet.md。
Telegram Bot 证据恢复
- 使用恶意软件源代码中的 bot token 调用
getUpdates和getFileAPI。参见 c2-and-protocols.md。
Debian 软件包分析
ar -x package.deb && tar -xf control.tar.xz # Check postinst scripts
参见 scripts-and-obfuscation.md。
用于恶意软件检测的 YARA 规则
编写 YARA 规则,将字节模式、字符串和正则表达式与文件或内存转储进行匹配。检测 XOR 循环({31 ?? 80 ?? ?? 4? 75})、base64 数据块和编码后的 PowerShell。使用 yarac 编译,以加快扫描速度。参见 scripts-and-obfuscation.md。
Shellcode 分析
使用 objdump -b binary -m i386:x86-64 进行反汇编,使用 Unicorn Engine 进行模拟(安全地挂钩系统调用),或使用 Capstone 进行程序化反汇编。留意 XOR 解码桩代码。参见 scripts-and-obfuscation.md。
恶意软件内存取证
vol windows.malfind 可检测注入的代码(没有映射文件的 PAGE_EXECUTE_READWRITE)。windows.pstree 可揭示可疑的父子进程关系。使用 windows.vadyarascan.VadYaraScan 扫描内存中的 YARA 特征。参见 scripts-and-obfuscation.md。
网络指标速查
strings malware | grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
tshark -r capture.pcap -Y "dns.qry.name" -T fields -e dns.qry.name | sort -u