Dump LSASS的已知方法及新方法


dump LSASS的已知方法

微軟簽名工具

在所有可用的方法中,使用Microsoft簽名的二進制文件是一種隱蔽獲取LSASS內存轉儲的便捷的方法,尤其是當目標上已經存在它們時。使用這些方法可以阻止藍隊檢測,因為像ProcDump這樣的東西很難添加到黑名單中。

  • 1.0 任務管理器

內置的任務管理器具有用於過程的轉儲機制:

打開任務管理器,找到lsass進程

右鍵 -- 創建轉儲文件

成功轉儲會返回一個文件路徑

  • 2.0 ProcExp.exe

Sysinternals工具ProcExp.exe工具也可以用於進程轉儲:

這個工具可以在微軟中下載

https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer

這里一共有兩種轉儲方式

miniDump:

應用程序可以生成用戶模式的小型轉儲文件,其中包含故障轉儲文件中包含的信息的有用子集。應用程序可以非常快速有效地創建小型轉儲文件。由於小型轉儲文件很小,因此可以輕松地將其通過Internet發送給該應用程序的技術支持。

full dump:

這里我們導出Full Dump

可以自定義轉儲文件位置

  • 3.0 ProcDump

Sysinternals工具ProcDump.exe可能是惡意軟件最常使用的工具,因為它具有命令行功能,並且不專門用於轉儲LSASS進程,因此,它會將LSASS進程轉儲到磁盤。盡管必須使用“ .dmp”擴展名,但可以在參數中控制其余的轉儲文件名:

ProcDump是一個命令行實用程序,其主要目的是監視應用程序中的CPU尖峰並在尖峰期間生成崩潰轉儲,管理員或開發人員可以使用它來確定尖峰原因。ProcDump還包括掛起的窗口監視(使用Windows和Task
Manager使用的相同的窗口掛起定義),未處理的異常監視,並且可以基於系統性能計數器的值生成轉儲。它也可以用作常規流程轉儲實用程序,您可以將其嵌入其他腳本中。

可以在微軟中下載

https://docs.microsoft.com/en-us/sysinternals/downloads/procdump

語法

procdump.exe -ma lsass.exe [文件位置]

使用-r開關將ProcDump創建lsass.exe的克隆並將其轉儲到磁盤

procdump.exe -ma -r lsass.exe [文件位置]

  • 4.0 SQLDumper

SQLDumper.exe包含在Microsoft SQL和Office中,並且能夠生成完整的轉儲文件。

在微軟文檔中我們可以找到:

https://docs.microsoft.com/en-us/troubleshoot/sql/tools/use-sqldumper-generate-dump-file

文件路徑

C:\Program Files\Microsoft SQL Server\90\Shared\SQLDumper.exe

C:\Program Files (x86)\Microsoft Office\root\vfs\ProgramFilesX86\Microsoft Analysis\AS OLEDB\140\SQLDumper.exe

語法:

通過PID轉儲過程並創建一個轉儲文件(創建一個名為SQLDmprXXXX.mdmp的轉儲文件)。

sqldumper.exe [lsass PID] 0 0x01100

所需特權:管理員
操作系統:Windows

使用powershell來查看一下lsass.exe的pid

然后使用sqldumper.exe

40標志將創建Mimikatz兼容的轉儲文件。

sqldumper.exe 540 0 0x01100:40

所需特權:管理員
操作系統:Windows

  • 5.0 Comsvcs.dll

可以在每個Windows系統中找到“ comsvcs.dll”,並且具有可用於通過其PID轉儲進程的導出。

通過rundll32

語法

rundll32.exe comsvcs.dll MiniDump<輸出路徑> full

請注意,該進程需要具有調試特權

在dump指定進程內存文件時,需要開啟SeDebugPrivilege權限

管理員權限的cmd下,默認支持SeDebugPrivilege權限,但是狀態為Disabled,如下圖

所以說,直接在cmd下執行rundll32的命令嘗試dump指定進程內存文件時,由於無法開啟SeDebugPrivilege權限,所以會失敗

在cmd中我找不到打開SeDebugPrivilege的方法

所以我們可以所以powershell進行濫用,在管理員權限的powershell中默認打開SeDebugPrivilege

powershell.exe rundll32.exe comsvcs.dll MiniDump<輸出路徑> full

全內存轉儲

將整個RAM轉儲到磁盤是從LSASS獲取憑證的另一種方法。這種方法用得不多,因為生成完整的轉儲會花費一些時間並占用大量磁盤空間。

實時內存轉儲

有一些簽名的內核驅動程序可以遍歷整個內存並將其轉儲到磁盤。例如,WinPmem由Google簽名,並允許創建全內存轉儲。Physmem2profit將WinPmem與C2服務器一起使用,以允許通過WinPmem驅動程序讀取LSASS內存,而無需將全部內存保存到磁盤上。

NTFS卷中復制

可以使用RawCopy之類的工具復制hiberfil.sys以提取憑據

https://diverto.github.io/2019/11/05/Extracting-Passwords-from-hiberfil-and-memdumps

https://github.com/jschicht/RawCopy

VMEM / VMSN文件

可以為虛擬機快照或掛起快照時從創建的內存文件中提取完整的內存轉儲。

https://diverto.github.io/2019/11/05/Extracting-Passwords-from-hiberfil-and-memdumps

使用API

MiniDumpWriteDump方法

在dbghelp.dll中,有一個名為MiniDumpWriteDump的函數,該函數是:

在內部,MiniDumpWriteDump使用未記錄的NtReadVirtualMemory API讀取其目標的進程內存。

MiniDumpWriteDump + PssCaptureSnapshot

由於向LSASS打開特權句柄並將其傳遞給MiniDumpWriteDump可能會很麻煩,因此一種更隱秘的方法是使用PssCaptureSnapshot API創建LSASS的進程快照,該快照也由MSDN記錄。實際上,這種過程轉儲方法記錄在MSDN的自己的頁面中。

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/proc_snap/export-a-process-snapshot-to-a-file

所有以前的內存轉儲類別中列出的每個工具都使用這兩種方法之一(不包括完整內存轉儲方法)。

新的手法

可以使用WerFault.exe(處理進程崩潰的Windows錯誤報告進程)創建lsass.exe的內存轉儲。此技術的主要優點是它不會導致lsass.exe崩潰,並且由於WerFault.exe始終用於創建文件轉儲(而不僅僅是lsass.exe),因此此方法提供了未被檢測到的附加優點。

https://github.com/deepinstinct/LsassSilentProcessExit

語法:

LsassSilentProcessExit.exe

Where DumpMode can be:

 0 - Call RtlSilentProcessExit on LSASS process handle

 1 - Call CreateRemoteThread on RtlSilentProcessExit on LSASS


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM