LOLBins :借崩溃转储白名单程序,绕过 360 核晶 和火绒拿下 lsass
一句话摘要:程序崩溃时,Windows 会派专门的”白名单程序”去转储内存用于分析。那我们能不能借这些厂商白名单工具的壳,干一件”不合法”的 lsass 转储?本文用 AI + MCP 快速筛出两个不在 LOLBAS 收录的可信程序(Git for Windows 与企业微信各一个),并在 360 核晶 + 火绒环境下验证通过。附完整思路与防御建议。
一、前言:倦怠与契机
过去很长一段时间,主播都在实习单位”享受生活”。不得不说,现在的实习公司是真的悠闲,氛围也好——安逸到让主播一度陷入了疲懒状态,躺平了挺久,不太想动笔。
说到底是有点”无话可写”。安全圈子里的内容大差不差,翻来覆去总觉得是在搬运别人的东西,写出来没什么增量,自然也就没了动力。
不过,疲懒归疲懒,手上的活其实一直没停过。比如主播自研的 Beacon,能稳定绕过哨兵(Sentinel)和 Elastic 的检测——这也算主播为数不多引以为傲的成果了。只是技术学习确实落下了,回头一算,大概有两周没认认真真研究过一篇技术文章了。
这次研究的起因,是好兄弟遇到了一个真实场景:需要转储(dump)lsass。主播平时疏于学习、才疏学浅,当时也没帮上什么忙(倒是 dump SAM 还有一些手法)。正好今天有空,干脆沉下心好好研究一番。
二、LOLBins 与 lsass 转储:先补课
2.1 转储 lsass 的常规套路
转储 lsass 的技术其实已经积累了不少,简单罗列:
- 崩溃转储(Crash Dump)
- MiniDump 系列
- 上驱动(内核层直接读内存)
- ……
奇安信攻防社区有一篇不错的汇总文,值得一读:
文中提到的白名单工具主要有这几类:
1 | |
其中 Procdump.exe 和 SQLDumper.exe 大家想必已经耳熟能详,是老演员了。这类”白名单程序”在 LOLBAS 收录网站里也能搜到一大堆:

2.2 一个值得深挖的问题:这些程序为什么会存在?
相比”怎么用”,我更想先问一句:为什么会有这些程序?
答案在崩溃处理机制里。当程序崩溃时,Windows 需要专门的进程来”善后”——把崩溃进程的内存(dmp 文件)转储下来,回传给厂商/开发者分析,定位崩溃原因。
这是 Windows 生态里非常成熟的一套流程,核心就是 Windows 错误报告(WER, Windows Error Reporting):
- 程序异常崩溃 → 触发 WER
- 系统派出专门的处理进程(如
WerFault.exe)接管 - 按配置把进程内存写入
.dmp文件 - 开发者拿回 dmp,用调试器还原现场、修 Bug
所以,在我们的个人电脑上,其实能看到大量这样的 dmp 文件:

2.3 思路落地:把”合法的崩溃处理程序”变成”攻击者”
核心思路到这里就很清晰了:
既然系统本身信任这些专门用来转储崩溃进程内存的程序,那我们为什么不借它们的壳,来完成一次”不合法”的 lsass 转储?
这就是 LOLBins 的本质——借用微软(或各大厂商)自己的白名单工具,干白名单之外的活。因为这些程序自带可信数字签名,被各家杀软、EDR 视为”亲儿子”,天然绕过了大量基于签名的检测。
同理,lsass 作为一个常驻高权限进程,恰好也有被”转储”的价值(里面躺着不少好东西)。一个敢读,一个能读,中间的桥就是这些白名单工具。
三、AI 加持:用 MCP 把筛选变成流水线
3.1 为什么需要 AI
海量的白名单程序,一个个手工去翻导入表、查文档、验证利用方式,显然不现实。AI 在这里可以充当一个**非常高效的”快速筛选器”**。
方法很简单:给 AI 一个清晰、聚焦的提示词,再配上 MCP(Model Context Protocol)——让模型直接驱动二进制分析工具,把”加载样本 → 静态分析 → 梳理调用链”这一串动作交给工具链完成,AI 负责推理和汇总。

3.2 提示词原文:把方法论直接写进需求
很多人用 AI 是”随口问一句”,但真正好用的提示词,本身就是一份完整的挖掘方法论。主播当时给的提示词长这样:
1 | |
3.3 四阶段流水线是怎么跑的
- 特征扫描:脚本遍历 4 个盘符、扫了 161,787 个 PE,用三条通道收窄——导入了
MiniDumpWriteDump等 dump 类 API(说明内部会写 dump)、DLL 导出了名字含 dump/dmp 的函数(说明可被rundll32 <dll>,<func>拉起转储,就是 comsvcs.dll 那一类),以及最关键的一条:**MiniDumpWriteDump + OpenProcess + atoi/strtol三者同现**(命令行可控 PID 的转储器特征)。排除 WinSxS / Installer / WindowsApps 等噪声目录后,全盘 16 万文件筛到候选 6,738 个,其中命中组合信号的仅 276 个。 - 逆向筛选:短名单用 idalib-mcp 批量
load_binary+ 反编译,逐项过三关——是否真的调用MiniDumpWriteDump、目标 PID 是否外部可控(还是只能 dump 自己)、输出路径/文件名是否可控,再剔除参数写死、无 SeDebugPrivilege 的。 - 实测验证:从逆向结果还原调用语法(PID 参数位置、输出路径、所需权限),对 lsass 真实转储,校验 dmp 文件头魔数
MDMP(0x504D444D)、大小合理。 - 确认 + 归档:与已知 LOLBin 清单比对,确认”新”,输出完整报告(二进制路径、调用命令、IDA 地址 + dump 文件头证据)。

四、初步产出:minidumper 与 minidump64
因为前面只让 AI 挖掘 1-3 个候选,本来不抱太大期望——没想到还真有收获,最后锁定了两个:Git for Windows 自带的 minidumper.exe 和**企业微信自带的 minidump64.exe**。两个都不在 LOLBAS 官方收录名单里。



4.1 候选一:minidumper.exe —— Git 自带的全内存转储器 🏆
| 项 | 值 |
|---|---|
| 路径 | C:\Program Files\Git\usr\bin\minidumper.exe(Git for Windows 标准安装自带,MSYS2/Cygwin) |
| 签名 | Git(MSYS2)/ Cygwin |
| 架构 | x64 |
| LOLBAS | 未收录(官方清单 241 个去重条目 diff 确认) |
| 用法 | minidumper.exe [-t <type>] [-n] <FILENAME> <PID>,产物固定为 <FILENAME>.dmp |
两个关键参数直接决定了它的价值:
-t <type>:转储类型标志,-t 0x2= MiniDumpWithFullMemory(全内存)——这正是离线提取凭据最需要的形态;-t 0则是轻量转储,还能组合(如-t 0x2f)-n:不终止目标进程。不加这个参数的话,转储完成会把目标进程直接 Terminate 掉——对”悄悄转储”的场景来说,这参数几乎必须带上
对 lsass(PID 1468)实测全内存转储:
1 | |
对 notepad 的全内存转储(86MB)同样验证通过;cmd / PowerShell / Git Bash 里都能调用,相对路径也可以。
一个值得注意的细节:
minidumper.exe内部**并不调用AdjustTokenPrivileges**,权限完全依赖调用者自身的 token。实测从提权后的管理员会话可以转储 lsass(前提是目标RunAsPPL=0,lsass 未被 PPL 保护)。
4.2 候选二:minidump64.exe —— 企业微信自带的轻量转储器
| 项 | 值 |
|---|---|
| 路径 | D:\wxwork\WXWork\5.0.6.6018\minidump64.exe(企业微信安装目录) |
| 签名 | Tencent Technology (Shenzhen) Company Limited |
| 架构 | x64 |
| LOLBAS | 未收录 |
| 用法 | minidump64.exe <PID> <输出路径>(恰好 2 个参数,第二个参数直接就是 dmp 完整路径) |
对 lsass 实测转储:
1 | |
逆向证据(idalib)把它的调用链还原得清清楚楚:
1 | |
顺带一提:同目录还有一个 x86 版 minidump.exe,代码逻辑完全相同,但本机的 32 位 dump 栈会输出 0 字节(详见第五章”本机特性”),所以 minidump64.exe 才是真正可用的那个。
诚实声明:
minidump64.exe用的是MiniDumpNormal(轻量转储),不含完整堆内存,不适合直接做凭据提取。它的价值更多在于”能转储任意进程(含 lsass)、签名可信、常驻目标机器”——实用性上不如候选一。
4.3 为什么这两个值得关注
抛开具体实现,这两个程序有共性价值:
- 可信签名:一个 Git/MSYS2、一个腾讯,都是”名声在外”的白名单,签名信任链完整
- 能力匹配:本身就是厂商为崩溃处理/转储打造的,能力天然对口
- 默认存在:装过 Git 的内网、装过企业微信的办公机器上大概率都在,不需要额外投放工具,隐蔽性拉满
- 不在 LOLBAS:主流检测规则与 HIT 列表基本都没覆盖,属于真正的”漏网之鱼”
顺带记录几个”接近成功”的降级候选:Firefox 的
crashhelper.exe(确实调用 MiniDumpWriteDump,但输出句柄需要继承、外部难控制)、飞书的lark_crashpad.dll(需预先初始化 crashpad 全局 handler)、钉钉的CrashDumper.exe(INI 驱动,只针对钉钉自身崩溃场景)。它们都在 Phase 2 被筛掉,但说明这类思路的覆盖面比想象中大得多。
五、实战验证:两个工具的真实效果
先交代目标环境:
- 权限:管理员高完整性(High IL)
- PPL:
RunAsPPL = 0,lsass 无 PPL 保护 - 杀软:360 核晶 +火绒(测试目标环境)



5.1 正控制对照:先证明”环境本身能转储”
严谨起见,先用已知的白名单工具跑一遍正控制——确认这台机器在正常情况下本来就能转储 lsass,否则后面的一切验证都没有意义。
1 | |
正控制成立,主角上场。
5.2 minidumper.exe:全内存转储,一步到位
1 | |
70MB 全内存 dmp,可以直接丢给 mimikatz 这类工具做离线凭据提取。
5.3 minidump64.exe:轻量转储,不能做凭据提取
1 | |
5.4 顺带发现的本机特性:32 位 dump 栈是”坏”的
验证过程中还发现一个值得单独记录的现象:本机的 32 位 dump 栈是失效的——32 位 dbghelp!MiniDumpWriteDump 产物为 0 字节,连 SysWOW64 下的 comsvcs.dll 同样输出 0 字节,而 64 位完全正常。怀疑是有安全产品对 32 位 dbghelp 做了干预。
参考资料
- 奇安信攻防社区 - Windows lsass 转储篇:https://mdr.skyeye.qianxin.com/forum/share/2434
- LOLBAS 项目:https://lolbas-project.github.io/
- Windows 错误报告(WER)官方文档:https://learn.microsoft.com/zh-cn/windows/win32/wer/wer-reference
写在最后:以上内容仅供安全研究与授权测试学习使用。白名单工具本身无罪,滥用有罪。请勿对未经授权的目标进行任何形式的检测与攻击。