內網橫向滲透之哈希傳遞攻擊


0x00 前言

橫向滲透中的哈希傳遞攻擊,這一部分在內網滲透中是十分關鍵的。在域環境中,用戶登錄計算機時一般使用域賬號,大量計算機在安裝時會使用相同的本地管理員賬號和密碼,因此,如果計算機的本地管理員賬號和密碼也相同,攻擊者就能使用哈希傳遞攻擊的方法來登錄內網中的其他主機。使用該方法,攻擊者不需要花費時間來對Hash進行爆破,在內網滲透里非常經典。常常適用於域/工作組環境。

Pass The Hash 哈希傳遞攻擊簡稱 PTH,該方法通過找到與賬戶相關的密碼散列值(NTLM Hash)來進行攻擊。由於在Windows系統中,通常會使用NTLM Hash對訪問資源的用戶進行身份認證,所以該攻擊可以在不需要明文密碼的情況下,利用LM HASH和NTLM HASH直接遠程登錄目標主機或反彈shell。

從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

 

但是,這種方式要求系統重啟或者用戶重新登錄,在實戰中操作起來成功率還是比較低的。如果攻擊者擁有用戶密碼的哈希值,則無需強行使用明文密碼;他們可以簡單地使用他們已經收獲的任意用戶帳戶的哈希值來針對遠程系統進行身份驗證並模擬該用戶。換句話說,從攻擊者的角度來看,哈希在功能上等同於生成它們的原始密碼。

0x01 利用方法

使用Mimikatz進行PTH

因此,攻擊者如果使用工具將散列值傳遞到其他計算機中,進行權限驗證,就能夠在身份驗證的時候模擬該用戶(即跳過調用API生成hash的過程),實現對計算機的控制。
下面演示哈希傳遞攻擊的方法(需要管理員權限):

 

 

上圖是一個內網環境,域名為hacke,有三台機器

win_server_2012為域控制器,假設我們取得了域成員主機的控制權,需要進一步橫向滲透去拿下域控

首先攻擊者在win7_2上面上傳mimikatz,並用mimikatz抓取hash:

privilege::debug
sekurlsa::logonpasswords

如上圖,成功抓取到域管理員的NTLM Hash,但發現mimikatz中無法粘貼復制,可以將結果導出來

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit">log.txt

 

然后,在Windows 7上用mimikatz將獲取的Administrator的Hash添加進lsass中:

mimikatz.exe "privilege::debug" "sekurlsa::pth /user:administrator /domain:hacke /ntlm:4d6e43b2cdc951808100f5b1d09aac63"

成功,此時會自動彈出一個新的shell

 

這時訪問遠程主機或服務,就不用提供明文密碼了,如下,我們列出了域控制器DC的c盤目錄(要使用主機名,不能用IP,否則報錯):

之后,攻擊者便可以利用Windows7跳板機任意訪問內網其他機器中的文件,進行上傳、下載等操作,還可以在目標機器上運行其他命令,以獲取目標機器的目錄結構、用戶列表等信息。

利用wmiexec.py進行PTH

下載地址:https://github.com/SecureAuthCorp/impacket

這是impacket工具包里面的腳本我們在之前已經說過了,其還可以指定-hashes選項來進行PTH,十分強大並可以走socks代理。

使用如下:
python wmiexec.py -hashes LM Hash:NT Hash 域名/用戶名@192.168.52.138 “命令” python wmiexec.py -hashes 00000000000000000000000000000000:4d6e43b2cdc951808100f5b1d09aac63 god/administrator@192.168.52.138 “whoami”

0x02 防范措施

KB2871997補丁的影響

防范首先想到打補丁,微軟也早在2014年5月發布了KB2871997補丁,該補丁禁止通過本地管理員權限與遠程計算機進行連接,其后果就是:無法通過本地管理員權限對遠程計算機使用Psexec、WMI、smbecec等,也無法訪問遠程的文件共享等。
但實際上就算打了KB2871997補丁后,Administrator賬號(SID為500)也是例外的,使用該賬戶的NTLM Hash依然可以進行哈希傳遞。

ps:

KB2871997補丁並不能真正防止哈希傳遞,只是在一定程度上緩解了PTH的問題。
淺探內網橫向移動-Pass The Hash  https://xz.aliyun.com/t/8117#toc-11
KB22871997是否真的能防御PTH攻擊?https://www.anquanke.com/post/id/193150

防御 mimikatz 攻擊

mimikatz在抓取散列值或明文密碼時,需要用到Debug權限(因為mimikatz需要和lsass進程進行交互,如果沒有Debug權限,mimikatz將不能讀取lsass進程里的密碼)。而Debug權限歸本地管理員Administrator所有,目的是確定哪些用戶可以將調試器附加到任何進程或內核中,但一般Administrator不會用到這個權限(除非是系統進程)。

所以在配置用戶權限時,可以將擁有Debug權限的本地管理員從Administrator組中移除。重啟系統之后,在運行mimikatz,在第一步"privilege::debug"時就會報錯了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM