Jump to content

0x00 前言在之前文章《渗透基础——从lsass.exe进程导出凭据》 介紹了本地導出憑據的方法,而在滲透測試中,經常遇到的情況是需要遠程導出憑據,本文將要介紹遠程導出憑據的思路和方法,記錄細節。

0x01 簡介本文將要介紹以下內容:

思路

實現方法

lsassy介紹

0x02 思路在遠程導出憑據時,需要考慮以下幾點:

(1)需要實現遠程命令執行,關於遠程命令執行,可以參考之前的文章《在远程系统上执行程序的技术整理》

(2)由於保護措施的限制,不同環境需要不同的導出方法

(3)遠程導出lsass進程的dump文件後,通常會選擇將dump文件複製到本地,解析得到口令hash,而有的時候lsass進程的dump文件很大,所以需要考慮傳輸文件的效率

(4)對於多個系統,重複勞動太多,效率不高

綜合以上幾點,我們需要一個方便快捷的方法:支持多種導出方法,能夠直接解析出口令hash,操作自動化以提高效率。

這裡可以使用開源工具Lsassy,地址為:https://github.com/Hackndo/lsassy

0x03 lsassy介紹1.安裝使用安裝命令:

pipinstalllsassy測試命令:

lsassy-uAdministrator-pPassword1192.168.1.1在輸出上,使用termcolor添加了顏色顯示,在默認Windows cmd下無法正常顯示顏色,會導致顯示格式不友好,存在一些亂碼。

為了解決Windows下格式亂碼的問題,可以修改Python \lib\site-packages\lsassy\logger.py,代碼如下:

importlogging

importos

importsys

classLsassyFormatter(logging.Formatter):

def__init__(self):

logging.Formatter.__init__(self,'%(bullet)s%(threadName)s%(message)s',None)

ifos.name=='nt':

self.BLUE,self.WHITE,self.YELLOW,self.RED,self.NC='','','','',''

else:

self.BLUE='\033[1;34m'

self.WHITE='\033[1;37m'

self.YELLOW='\033[1;33m'

self.RED='\033[1;31m'

self.GREEN='\033[1;32m'

self.NC='\033[0m'

defformat(self,record):

ifrecord.levelno==logging.INFO:

record.bullet='[*]{}'.format(self.NC)

elifrecord.levelno==logging.DEBUG:

record.bullet='[*]{}'.format(self.NC)

elifrecord.levelno==logging.WARNING:

record.bullet='[!]{}'.format(self.NC)

elifrecord.levelno==logging.ERROR:

record.bullet='[x]{}'.format(self.NC)

else:

record.bullet='[+]{}'.format(self.NC)

ifrecord.exc_infoandlogging.getLogger().getEffectiveLevel()!=logging.DEBUG:

record.exc_info=None

returnlogging.Formatter.format(self,record)

defhighlight(msg):

returnmsg

definit(quiet=False):

handler=logging.StreamHandler(sys.stdout)

handler.setFormatter(LsassyFormatter())

logging.getLogger().addHandler(handler)

logging.getLogger().setLevel(logging.INFO)

logging.addLevelName(25,'SUCCESS')

setattr(logging,'success',lambdamessage,*args:logging.getLogger()._log(25,message,args))

logging.getLogger().disabled=quiet2.打包成exe這裡可以使用pyinstaller,主程序代碼為https://github.com/Hackndo/lsassy/blob/master/lsassy/console.py

打包成單獨exe的命令:

pyinstaller-Fconsole.py生成console.exe後,在執行時會報錯提示缺少Module

根據輸出提示修改打包命令,添加引用Module:

pyinstaller-Fconsole.py--hidden-importunicrypto.backends.pure.DES--hidden-importunicrypto.backends.pure.TDES--hidden-importunicrypto.backends.pure.AES--hidden-importunicrypto.backends.pure.RC4此時雖然能夠正常啟動console.exe,但是無法運行導出功能。

調試方法:添加參數-vv,能夠看到lsassy.dumpmethod.comsvcs找不到

添加所有依賴包,得到完整的打包命令:

pyinstaller-Fconsole.py--hidden-importunicrypto.backends.pure.DES--hidden-importunicrypto.backends.pure.TDES--hidden-importunicrypto.backends.pure.AES--hidden-importunicrypto.backends.pure.RC4--hidden-importlsassy.dumpmethod.comsvcs--hidden-importlsassy.dumpmethod.comsvcs_stealth--hidden-importls assy.dumpmethod.dllinject--hidden-importlsassy.dumpmethod.dumpert--hidden-importlsassy.dumpmethod.dumpertdll--hidden-importlsassy.dumpmethod.edrsandblast--hidden-importlsassy.dumpmethod.mirrordump--hidden-importlsassy.dumpmethod.mirrordump_embedded--hidden-importlsassy.dumpmethod.nanodump--hidden- importlsassy.dumpmethod.ppldump--hidden-importlsassy.dumpmethod.ppldump_embedded--hidden-importlsassy.dumpmethod.procdump--hidden-importlsassy.dumpmethod.procdump_embedded--hidden-importlsassy.dumpmethod.rdrleakdiag--hidden-importlsassy.dumpmethod.wer--hidden-importlsassy.exec.mmc--hidden-importls assy.exec.smb--hidden-importlsassy.exec.smb_stealth--hidden-importlsassy.exec.task--hidden-importlsassy.exec.wmi--hidden-importlsassy.output.grep_output--hidden-importlsassy.output.json_output--hidden-importlsassy.output.pretty_output--hidden-importlsassy.output.table_output此時生成的console.exe可以正常使用。

3.支持的導出方法(1)comsvcs

使用C:\windows\system32\comsvcs.dll的導出函數MiniDump()獲得lsass進程的dump文件。

細節可參考之前的文章《MiniDumpWriteDump via COM+ Services DLL》 的利用測試。

可直接使用。

(2)comsvcs_stealth

方法類似comsvcs,區別是先將C:\windows\system32\comsvcs.dll複製到c:\windows\temp並重命名,使用新的dll獲得lsass進程的dump文件。

可直接使用。

(3)dllinject

通過dll注入的方式實現

APC注入的方法可參考《通过APC实现Dll注入——绕过Sysmon监控》 。

需要加入參數: -O loader_path=loader.exe,dll_path=inject.dll

(4)dumpert

技術細節:https://github.com/outflanknl/Dumpert

通過API MiniDumpWriteDump()獲得lsass進程的dump文件。

需要加入參數: -O dumpert_path=dumpert.exe

(5)dumpertdll

方法同上,區別是使用dll文件作為參數。

需要加入參數: -O dumpertdll_path=dumpert.dll

(6)edrsandblast

技術細節:https://github.com/wavestone-cdt/EDRSandblast

利用帶有簽名的驅動程序獲得lsass進程的dump文件

需要加入參數: -O edrsandblast_path=EDRSandBlast.exe,RTCore64_path=RTCore64.sys,ntoskrnl_path=NtoskrnlOffsets.csv

(7)mirrordump

技術細節:https://github.com/CCob/MirrorDump

實現流程:

加載一個LSA SSP插件

在插件中洩露lsass.exe的進程句柄

通過API MiniDumpWriteDump()獲得lsass進程的dump文件

需要加入參數: -O mirrordump_path=Mirrordump.exe

(8)mirrordump_embedded

方法同上,不需要Mirrordump.exe作為參數。

需要注意的是mirrordump無法自動清除已註冊的LSA SSP插件,使用該方法後會留下以下痕跡:

LSA SSP插件保存在C:\Windows\System32,名稱為八位隨機字符,後綴名為dll

lsass進程中殘留未卸載的dll

痕跡如下圖

d2d17af8a1c234df1169a5c7b5cc891.png

清除痕蹟的方法:先卸載lsass進程中加載的dll,再刪除dll文件。

關於枚舉和清除LSA SSP插件的細節可參考之前的文章《Mimikatz中SSP的使用》 。

可直接使用。

(9)nanodump

技術細節:https://github.com/helpsystems/nanodump

優點是支持多種方式洩露lsass進程句柄。

需要加入參數: -O nanodump_path=nanodump.exe

(10)ppldump

技術細節:https://github.com/itm4n/PPLdump

支持Win10和Server2019

能夠繞過PPL(Protected Process Light)對lsass進程的保護。

相關細節:

https://itm4n.github.io/lsass-runasppl/

https://blog.scrt.ch/2021/04/22/bypassing-lsa-protection-in-userland/

需要加入參數: -O ppldump_path=PPLdump.exe

(11)ppldump_embedded

方法同上,不需要PPLdump.exe作為參數。

可直接使用。

(12)procdump

通過procdump.exe獲得lsass進程的dump文件。

需要加入參數: -O procdump_path=procdump.exe

(13)procdump_embedded

方法同上,不需要procdump.exe作為參數。

可直接使用。

(14)rdrleakdiag

目標系統需要在c:\windows\system32\下存在文件rdrleakdiag.exe

默認存在的系統:

Windows 10,10.0.15063.0

Windows 8.1,6.3.9600.17415

Windows 8,6.2.9200.16384

Windows7,6.1.7600.16385

Windows Vista,6.0.6001.18000

只能執行一次,再次執行需要重新啟動操作系統。

可直接使用。

(15)wer

技術細節:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Out-Minidump.ps1

通過Powershell調用API MiniDumpWriteDump()獲得lsass進程的dmp文件。

可直接使用。

0x04 小結本文介紹了遠程從lsass.exe進程導出憑據的思路,逐個介紹Lsassy使用的導出方法,分析技術細節。

0 Comments

Recommended Comments

There are no comments to display.

Guest
Add a comment...