文章总结: TrickDump通过三段式流程(Lock/Shock/Barrel)在目标机上生成三个JSON文件和一个zip内存区域转储,攻击机离线重组为Minidump,全程磁盘/内存/流量无合法Minidump文件,规避文件指纹与转储调用链检测.工具使用NTAPI并支持ntdll覆盖绕过EDRhook,但无法绕过PPL保护与ETW-TI内核遥测.防御侧应关注同一目录出现三个JSON加一个zip的外传特征,并开启RunAsPPL缓解. 综合评分: 89 文章分类: 红队,渗透测试,免杀,安全工具,实战经验
TrickDump:不落地 Minidump 的三段式 lsass 转储
原创
Ricardo Ricardo
赛博生存指南
2026年8月19日 23:05 日本
在小说阅读器读本章
去阅读
原文:https://ricardojoserf.github.io/trickdump/ 作者:Ricardo J. Ruiz Fernández 发布时间:2024-07-16(2024-10-01 更新) 翻译模型:GLM-5.2
TrickDump 用于转储 lsass 进程,但不在磁盘上生成 Minidump 文件——它生成的是三个 JSON 文件和一个包含各内存区域转储的 zip 文件。
仓库:https://github.com/ricardojoserf/TrickDump
整个流程分三步:
- Lock:用 RtlGetVersion 获取操作系统信息。
- Shock:用 NtOpenProcessToken 和 NtAdjustPrivilegeToken 获取 SeDebugPrivilege 特权,用 NtGetNextProcess 和 NtQueryInformationProcess 打开进程句柄,然后用 NtQueryInformationProcess 和 NtReadVirtualMemory 获取模块信息。
- Barrel:获取 SeDebugPrivilege 特权、打开进程句柄,然后用 NtQueryVirtualMemory 和 NtReadVirtualMemory 获取并转储各内存区域。
(译注:Lock / Shock / Barrel 化用英语习语 lock, stock and barrel——原指火枪的枪机、枪托与枪管,引申为「整套、一网打尽」。作者把它拆成三个名字,对应三个各干一步、彼此独立的程序。)
之后在攻击机上用 create_dump.py 脚本生成 Minidump 文件:
python3 create_dump.py[-l LOCK_JSON][-s SHOCK_JSON][-b BARREL_JSON][-z BARREL_ZIP][-o OUTPUT_FILE]
这套技术的好处在于:
-
磁盘、内存和网络流量中从头到尾都不存在合法的 Minidump 文件。
-
没有任何一个程序或进程执行完整的攻击链,而是三个各自独立的程序,触发的告警可能更少。
-
此外,如果你已经掌握目标机器操作系统的信息,第一步(Lock)可以直接跳过。
-
这些程序只使用 NTAPI(本项目是 NativeDump 的一个变体)。
-
不使用 OpenProcess 或 NtOpenProcess 以 PROCESS_VM_OPERATION 和 PROCESS_VM_WRITE 访问权获取 lsass 进程句柄。
-
每个程序都支持覆盖 ntdll.dll 库的 “.text” 节来绕过 API hooking:
-
disk:使用磁盘上已有的 DLL。若不指定第二个参数,路径为 “C:\Windows\System32\ntdll.dll”。
-
knowndlls:使用 KnownDlls 目录。
-
debugproc:使用一个以调试模式创建的进程。若不指定第二个参数,进程为 “c:\windows\system32\calc.exe”。
如果目标开启了 PPL、PEB 结构不可读,或者二进制没有编译为 64 位,工具将无法工作。
它提供三种「口味」(flavour):
- .NET:主分支(main)
- Python:python-flavour 分支
- Golang:golang-flavour 分支
用法
这些程序在受害者系统上执行,生成三个 JSON 文件(内存区域信息)和一个 zip 文件(各内存区域的转储)。
Lock.exe[disk/knowndlls/debugproc]
Shock.exe[disk/knowndlls/debugproc]
Barrel.exe[disk/knowndlls/debugproc]
可以直接运行这些程序,不做 ntdll.dll 覆盖:
也可以使用三种覆盖技术之一:
然后在攻击机上生成 Minidump 文件:
Python 移植——”python-flavour” 分支
仓库:https://github.com/ricardojoserf/TrickDump/tree/python-flavour
该分支用 Python3 实现与主分支相同的功能。作为补充,它还支持给 zip 文件设置密码。
可以把这些文件当脚本直接运行:
python lock.py[-o OPTION][-p PATH]
python shock.py[-o OPTION][-p PATH]
python barrel.py[-o OPTION][-p PATH]
可以用 -o 参数覆盖 ntdll.dll 库:
- disk:使用磁盘上已有的 DLL。若不使用
-p参数,路径为 “C:\Windows\System32\ntdll.dll”。 - knowndlls:使用 KnownDlls 目录。
- debugproc:使用一个以调试模式创建的进程。若不使用
-p参数,进程为 “c:\windows\system32\calc.exe”。
也可以用 pyinstaller 的 “-F” 标志把脚本编译成单个二进制文件:
pyinstaller -F lock.py && pyinstaller -F shock.py && pyinstaller -F barrel.py
或者用 Nuitka 的 “–onefile” 标志:
nuitka --onefile lock.py && nuitka --onefile shock.py && nuitka --onefile barrel.py
然后在攻击机上用 create_dump.py 脚本生成 Minidump 文件:
python3 create_dump.py[-l LOCK_JSON][-s SHOCK_JSON][-b BARREL_JSON][-z BARREL_ZIP][-zp ZIP_PASSWORD][-o OUTPUT_FILE]
Golang 移植——”golang-flavour” 分支
仓库:https://github.com/ricardojoserf/TrickDump/tree/golang-flavour
该分支用 Golang 实现与主分支相同的功能。作为补充,它也支持给 zip 文件设置密码。
可以把这些文件当脚本直接运行:
go run lock.go[-o OPTION][-p PATH]
go run shock.go[-o OPTION][-p PATH]
go run barrel.go[-o OPTION][-p PATH]
可以用 -o 参数覆盖 ntdll.dll 库:
- disk:使用磁盘上已有的 DLL。若不使用
-p参数,路径为 “C:\Windows\System32\ntdll.dll”。 - knowndlls:使用 KnownDlls 目录。
- debugproc:使用一个以调试模式创建的进程。若不使用
-p参数,进程为 “c:\windows\system32\calc.exe”。
也可以用 “go build” 把脚本编译为二进制文件:
go build lock.go && go build shock.go && go build barrel.go
然后在攻击机上用 create_dump.py 脚本生成 Minidump 文件:
python3 create_dump.py[-l LOCK_JSON][-s SHOCK_JSON][-b BARREL_JSON][-z BARREL_ZIP][-zp ZIP_PASSWORD][-o OUTPUT_FILE]
译介方延伸评注:它到底绕开了什么,2026 年还剩多少有效性
一、这套手法在对抗哪几层检测。 EDR 针对 lsass 转储的经典检测面大致有三类:其一,Minidump 文件本身——MDMP 魔数文件头加上敏感进程名关联的写盘事件;其二,发起转储的调用链——comsvcs.dll MiniDump、dbghelp MiniDumpWriteDump 出现在非白名单进程的调用栈里;其三,句柄权限——对 lsass 申请了 PROCESS_VM_READ 之外的高权限访问。TrickDump 的「现场分片采集 + 离线重组」设计同时避开前两类:目标机上从头到尾不存在合法 Minidump 文件(磁盘、内存、流量三者都没有),Minidump 是攻击机上事后重组出来的;它也完全不碰 MiniDumpWriteDump 这一类 API。第三类它用 NtGetNextProcess 遍历进程来规避——不走 OpenProcess / NtOpenProcess 直接点名 lsass,且只申请读取所需的最低权限,不碰 PROCESS_VM_OPERATION / PROCESS_VM_WRITE。
二、ntdll 覆盖就是经典 unhooking。 三种 .text 覆盖方式(disk / knowndlls / debugproc)本质是取一份「干净」的 ntdll 代码段去覆写被 EDR 打了 inline hook 的 .text:从磁盘文件、KnownDlls 的 section 对象、或一个以调试模式新起的进程里各拿一份。这与本仓库《深入解析 Windows 遥测》等篇讨论的用户态 hook 攻防是同一主题的另一面。
三、2026 年视角:两条硬约束。 原文列出的失效条件里,PPL 是最硬的一条——Windows 11 / Server 2025 时代 RunAsPPL 已是常见基线,主流 EDR 的 lsass 防护普遍走 PPL 路线,届时工具直接失效(绕 PPL 需要另一条路,可对照《DEF CON 34 从加载器到内核》里 BYOVD 清 PS_PROTECTION 后再用 nanodump 转储的做法)。其次,「不落地文件」不等于「不可见」:NtReadVirtualMemory 大段读取 lsass 的行为会被 Windows 11 的 ETW Threat Intelligence(ETW-TI)内核遥测捕获并分发给 EDR。换言之,TrickDump 解决的是「文件指纹」与「转储调用链」两层,「内核遥测」这一层它不管、也管不了。
四、狩猎面与一个笔误。 三个小 JSON + 一个 zip 的落地组合本身就是清晰的行为特征:同一目录短时间内出现这组文件、随后有外传,就是典型的分阶段凭据采集;Python / Golang 版新增的 zip 密码只对网络侧内容检查有意义,对主机侧 EDR 无效。另外,原文两处把启用 SeDebugPrivilege 的 API 写作 NtAdjustPrivilegeToken,正确名称为 NtAdjustPrivilegesToken(复数),译文按原文保留,特此说明。
相关阅读
- 《深入解析 Windows 遥测:ETW、驱动回调与内核结构全拆解》(2026-07-19):ETW 与内核回调如何在内存里构成 EDR 的遥测底座——评注第三节「内核遥测层它不管也管不了」的完整展开。
- 《从加载器到内核:逐步开发恶意软件绕过 EDR——DEF CON 34 工坊全解读》(2026-08-17):PPL 开启时的另一条路——BYOVD 清掉 lsass 的 PS_PROTECTION 后再用 nanodump 转储,与本文工具的失效条件正好互补。
- 《Head Mare APT 利用未修复的 TrueConf 服务器漏洞投递 PhantomCore 与 PhantomGraph》(2026-08-16):真实 APT 在野使用的对照路线——直接调 comsvcs.dll 的 MiniDump 落地转储,反衬 TrickDump「不落地文件」的 OPSEC 诉求。
参考
- TrickDump 仓库:https://github.com/ricardojoserf/TrickDump
- TrickDump Python 移植分支:https://github.com/ricardojoserf/TrickDump/tree/python-flavour
- TrickDump Golang 移植分支:https://github.com/ricardojoserf/TrickDump/tree/golang-flavour
- NativeDump(TrickDump 的前身项目,纯 NTAPI 手搓 Minidump):https://github.com/ricardojoserf/NativeDump
合规提示
TrickDump 与本文讨论的 lsass 转储技术属于进攻性安全工具:转储 lsass 内存等同于读取该机器上登录过的账户凭据,在未授权的系统上使用即属违法。本文仅供安全研究、授权红队评估与教学参考,请只在自有靶场或已获得书面授权的环境中使用,并对自己的操作负全部责任。
防御侧读者请反过来用:同一目录短时间内出现「三个小 JSON + 一个 zip」随后外传,是清晰的分阶段凭据采集特征;对 lsass 的句柄申请与 NtReadVirtualMemory 读取行为(含 ETW-TI 遥测)仍是可靠的告警面。开启 RunAsPPL 是对该工具最直接的一层缓解。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:赛博生存指南 Ricardo Ricardo《TrickDump:不落地 Minidump 的三段式 lsass 转储》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论