ctf-forensics

ctf-forensics

热门

提供面向 CTF 竞赛的数字取证与信号分析技术。适用于分析磁盘镜像、内存转储、事件日志、网络抓包、加密货币交易、隐写术、PDF 分析、Windows 注册表、Volatility、PCAP、Docker 镜像、coredump、侧信道功耗轨迹、DTMF 音频频谱图、数据包时间间隔分析、CD 音轨镜像,以及恢复已删除的文件和凭据。

2725Star
329Fork
更新于 2026/7/10
SKILL.md
只读
名称
ctf-forensics
描述

提供面向 CTF 竞赛的数字取证与信号分析技术。适用于分析磁盘镜像、内存转储、事件日志、网络抓包、加密货币交易、隐写术、PDF 分析、Windows 注册表、Volatility、PCAP、Docker 镜像、coredump、侧信道功耗轨迹、DTMF 音频频谱图、数据包时间间隔分析、CD 音轨镜像,以及恢复已删除的文件和凭据。

CTF 取证与区块链

CTF 取证挑战速查指南。此处仅提供各项技术的单行速查说明;完整细节请参阅关联文档。

前置准备

Python 软件包(全平台):

pip install volatility3 Pillow numpy matplotlib

Linux (apt):

apt install binwalk foremost libimage-exiftool-perl tshark sleuthkit \
  ffmpeg steghide testdisk john pcapfix

macOS (Homebrew):

brew install binwalk exiftool wireshark sleuthkit ffmpeg \
  testdisk john-jumbo

Ruby gems(全平台):

gem install zsteg

拓展资源

  • 3d-printing.md - 3D 打印取证(PrusaSlicer 二进制 G-code、QOIF、heatshrink 压缩算法)
  • windows.md - Windows 取证(注册表、SAM 数据库、事件日志、回收站、NTFS 备用数据流 ADS、USN 日志、PowerShell 历史记录、Defender MPLog、WMI 持久化、Amcache)
  • network.md - 网络取证基础(tcpdump、TLS/SSL 密钥日志解密、从 coredump 提取 TLS 主密钥、Wireshark、PCAP、端口扫描、SMB3 解密、5G/NR 协议、WordPress 侦察、凭据提取、USB HID 隐写、BCD 编码、HTTP 文件上传渗漏、按时间戳排序重组分卷压缩包)
  • network-advanced.md - 进阶网络取证(包时间间隔编码、NTLMv2 哈希爆破、TCP 标志位隐蔽通道、DNS 末字节隐写、DNS 尾随字节二进制编码、结合 XOR + ZIP 及 mDNS 密钥的多层 PCAP、Brotli 解压炸弹接缝分析、基于 LSARPC 的 SMB RID 复用、Timeroasting MS-SNTP 哈希提取、dnscat2 拼接重组、RADIUS 共享密钥爆破、RC4 流加密特征识别、ICMP 载荷字节循环移位、ICMP Ping 时间延迟隐蔽通道)
  • peripheral-capture.md - USB/HID/蓝牙外设流量还原(USB HID 鼠标/画笔轨迹复原、USB HID 键盘抓包解码、USB 键盘 LED 摩斯密码数据渗漏、USB HID 键盘方向键按键路径追踪、蓝牙 RFCOMM 数据包拼接重组)
  • disk-and-memory.md - 核心磁盘与内存取证(Volatility、磁盘挂载/文件雕刻、虚拟机/OVA/VMDK、VMware 快照、GIMP 裸内存转储可视化排查、coredump、Windows KAPE 快速取证、PowerShell 勒索软件、Android 取证、Docker 容器取证、云存储取证、BSON 重构、TrueCrypt/VeraCrypt 挂载)
  • disk-advanced.md - 进阶磁盘与内存技术(已删除分区恢复、ZFS 取证、GPT GUID 编码、VMDK 稀疏文件解析、内存转储字符串雕刻、勒索软件密钥恢复、WordPerfect 宏 XOR 解密、minidump ISO 9660 恢复、APFS 快照恢复、RAID 5 XOR 数据恢复、HFS+ 资源叉恢复、Kyoto Cabinet 哈希数据库取证、SQLite 编辑历史重构)
  • disk-recovery.md - 磁盘恢复与提取模式(LUKS 主密钥恢复、PRNG 时间戳种子暴力破解、VBA 宏二进制恢复、FemtoZip 解压缩、XFS 文件系统重构、tar 重复条目提取、多层嵌套 Matryoshka 文件系统提取、利用空字节交错防御文件雕刻、BTRFS 子卷/快照恢复、FAT16 未分配空间数据恢复、借助 Sleuth Kit fls/icat 恢复 FAT16 删除文件、通过 fsck 恢复 ext2 孤儿 inode、损坏 ZIP 文件头修补)
  • steganography.md - 通用隐写术(二进制图像边框隐写、PDF 多层隐写、SVG 关键帧隐写、PNG 块顺序重排、文件追加覆盖、GIF 帧差分摩斯密码、GZSteg + spammimic、电子表格频次恢复、Kitty 终端图形协议解码、ANSI 转义序列隐写、自动随机点图/立体图求解、双层字节+行交错隐写、多流视频容器隐写、渐进式 PNG 分层 XOR 解密、根据弯曲反射复原二维码)
  • stego-image.md - 图像专用隐写术(JPEG 未用 DQT 量化表 LSB 隐写、BMP 位图二维码提取、图像拼图重组、F5 JPEG DCT 比率检测、PNG 未用调色板条目隐写、二维码图块重构、基于种子的像素置换 + 多位图二维码、JPEG 缩略图像素到文本映射、带像素过滤的条件 LSB 隐写、JPEG 填充空间/Slack Space、最近邻插值隐写、RGB 奇偶性隐写)
  • stego-advanced.md - 进阶隐写术 Part 1:音频与信号技术(FFT 频域分析、DTMF 拨号音、SSTV+LSB 结合、DotCode 条形码、自定义频率双音多频键盘、多音轨音频差分相减、跨通道多位 LSB、音频 FFT 音符隐写、音频元数据八进制编码、嵌套 tar 空白字符编码、DeepSound 音频隐写与密码爆破、音频波形二进制编码、音频频谱图隐藏二维码)
  • stego-advanced-2.md - 进阶隐写术 Part 2:视频、图像变换与特定格式技术(视频叠加帧累加、音频倒放、视频帧均值化、JPEG XL TOC 置换隐写、阿诺德猫映射/Arnold's Cat Map 解密、高分辨率 SSTV 自定义 FM 解调、MJPEG FFD9 尾部字节隐写、EXIF zlib + Stegano 像素模式、PDF xref 隐蔽通道、ANSI 转义码隐写、逐像素 ECB 去重分析)
  • linux-forensics.md - Linux 与应用取证(日志分析、Docker 镜像取证、攻击链分析、浏览器凭据、Firefox 历史记录、TFTP、TLS 弱 RSA 密钥、USB 音频、Git 目录恢复、KeePass v4 破解、Git reflog/fsck 压缩恢复、浏览器痕迹分析(Chrome/Chromium/Firefox 历史记录、Cookie、下载项、本地存储、会话恢复)、字节暴力破解修复损坏 git blob、VBA 宏 Excel 单元格数据提取为 ELF 二进制、基于 pyrasite 的 Python 内存源码恢复)
  • signals-and-hardware.md - 硬件信号解码与解码代码(VGA 帧解析、HDMI TMDS 符号解码、DisplayPort 8b/10b + LFSR 解扰器)、旅行者号金唱片音频、Saleae Logic 2 UART 解码、Flipper Zero .sub 文件分析、侧信道功耗分析(DPA)、键盘声学侧信道、CD 音轨镜像隐写(CIRC 解交织 + 螺旋渲染)、视频中大写锁定 LED 摩斯密码提取、Linux input_event 键盘记录转储解析、WAV 音频提取串口 UART 数据、USB MIDI Launchpad 按键矩阵重构)

策略切换时机

  • 如果解密出加密数据块 (Data Blob) 后,核心瓶颈变成了 RSA、AES 或格密码 (Lattice),请切换至 /ctf-crypto
  • 如果样本分析指向恶意软件阶段投送、C2 载荷配置提取或加壳样本脱壳,请切换至 /ctf-malware
  • 如果分析对象是 Web 应用程序备份或 API 转储,且剩余难题在于业务逻辑,请切换至 /ctf-web
  • 如果取证对象本质上是编码谜题、隐写障眼法或奇葩异构格式,而非真正意义上的数字取证,请切换至 /ctf-misc
  • 如果需要根据取证结果追踪基础设施、归因攻击者或检索公开情报,请切换至 /ctf-osint
  • 如果提取出的产物是需要反汇编与分析的已编译二进制文件或固件,请切换至 /ctf-reverse

快速入门命令

# 文件分析
file suspicious_file
exiftool suspicious_file     # 元数据
binwalk suspicious_file      # 嵌入文件
strings -n 8 suspicious_file
hexdump -C suspicious_file | head  # 检查魔数 (Magic Bytes)

# 磁盘取证
sudo mount -o loop,ro image.dd /mnt/evidence
fls -r image.dd              # 列出文件
photorec image.dd            # 雕刻已删除文件

# 内存取证 (Volatility 3)
vol3 -f memory.dmp windows.info
vol3 -f memory.dmp windows.pslist
vol3 -f memory.dmp windows.filescan

完整 Volatility 插件参考、虚拟机取证及 coredump 分析请参阅 disk-and-memory.md

日志分析

grep -iE "(flag|part|piece|fragment)" server.log     # 查找 Flag 碎片
grep "FLAGPART" server.log | sed 's/.*FLAGPART: //' | uniq | tr -d '\n'  # 拼装 Flag
sort logfile.log | uniq -c | sort -rn | head         # 查找异常项

Linux 攻击链分析与 Docker 镜像取证请参阅 linux-forensics.md

Windows 事件日志 (.evtx)

核心事件 ID (Event ID):

  • 1001 - 系统崩溃 (Bugcheck) / 重启
  • 1102 - 审计日志被清除
  • 4720 - 创建用户账号
  • 4781 - 账号重命名

RDP 会话 ID (TerminalServices-LocalSessionManager):

  • 21 - 会话登录成功
  • 24 - 会话已断开
  • 1149 - RDP 身份验证成功 (RemoteConnectionManager,包含源 IP)
import Evtx.Evtx as evtx
with evtx.Evtx("Security.evtx") as log:
    for record in log.records():
        print(record.xml())

完整事件 ID 对应表、注册表分析、SAM 数据库解析、USN 日志及反取证检测请参阅 windows.md

  • NTFS 备用数据流 (ADS): 附加在文件上的隐藏数据流(通过具名 NTFS 流实现)。对 dir 命令和资源管理器不可见。使用 fls -r image.dd | grep ":" 进行检测,使用 icat 提取。详情见 windows.md

当日志被清除时

如果攻击者清空了事件日志,可参考以下替代数据源:

  1. USN 日志 ($J) - 文件操作时间线(MFT 引用、时间戳、变更原因)
  2. SAM 注册表 - 从键值的 last_modified 时间戳分析账号创建行为
  3. PowerShell 历史记录 - ConsoleHost_history.txt(通过 USN 的 DATA_EXTEND 记录命令执行时间)
  4. Defender MPLog - 独立记录威胁检测与 ASR 规则拦截事件的日志
  5. Prefetch 预读取文件 - 程序执行痕迹证据
  6. 用户配置文件创建记录 - 首次登录时间(USN 日志中的用户目录)

详细解析代码与反取证检测清单请参阅 windows.md

隐写术

steghide extract -sf image.jpg
zsteg image.png              # PNG/BMP 隐写分析
stegsolve                    # 可视化通道分析
  • 二进制图像边框隐写: 1px 图像边框上的黑/白像素顺时针编码比特
  • FFT 频域隐写: 图像数据隐藏于二维 FFT 幅值谱中;可尝试 np.fft.fft2 可视化
  • DTMF 音频隐写: 电话按键音编码数据;使用 multimon-ng -a DTMF 解码
  • PDF 多层隐写: 检查隐藏注释、EOF 之后的数据、关键字异或 (XOR)、最终层的 ROT18
  • SSTV + LSB 组合隐写: SSTV 信号可能是障眼法;尝试使用 stegolsb 检查音频采样点的 2-bit LSB
  • SVG 关键帧隐写: 动画的 keyTimes/values 属性通过填充颜色交替编码二进制/摩斯密码
  • PNG Chunk 顺序重排: 修复 Chunk 顺序:IHDR → 辅助 Chunk → IDAT(按顺序)→ IEND
  • 文件追加覆盖 (Overlay): 检查 IEND 之后追加的文件(魔法值可能被覆盖)
  • APNG 帧提取: 动态 PNG 包含多个帧;使用 apngdis 提取或解析 fdAT/fcTL 块。参阅 steganography.md
  • PNG 高度/CRC 篡改: 修改 IHDR 高度字段,爆破直到 CRC 匹配以显示隐藏行。参阅 steganography.md
  • 像素坐标链隐写: 类似链表遍历,R 通道=数据字节,G/B 通道=下一个像素坐标。参阅 stego-image.md
  • AVI 帧差分: 将连续视频帧进行异或 (XOR) 操作,通过像素差异揭示隐藏数据。参阅 [stego-image.md](stego-image.md#avi-frame-differential-pixel