Mimikatz 攻防雜談


前幾天看到了老外一篇講 mimikatz 防御的文章,感覺行文思路還不錯,但是內容稍有不足,國內也有一篇翻譯,但是只是照着錯誤翻譯的,所以就萌生了把那篇優秀文章,翻譯復現,並加入其它一些內容,本文只是拋磚引玉,文中有錯誤的話,歡迎吐槽。

mimikatz 在內網滲透中是個很有用的工具。它可能讓攻擊者從內存中抓到明文密碼。大家都知道這個工具很厲害,微軟肯定也知道了,所以就搞了一些安全防護機制讓 mimikatz 抓不到密碼。但是在 win2008 之前的系統上還是能抓到密碼的。一般情況下,只要有本地管理員權限就能從內存中抓出密碼。通常抓到密碼之后就可以進行橫向移動和提權。

Debug Privilege

在 windows 里,調試權限可以用來調試進程,甚至是調試內核。對於 mimikatz 來說,通常套路來說,他想去讀取內存就得獲取調試權限,然后去打開進程。默認情況下,本地管理員組是由這個權限的。但是,除非管理員是個程序員,一般他應該用不到這種權限。

本地安全策略是默認給管理員組權限的。

然而,域的默認組策略在這一項是沒有定義的。

按照 windows 策略的效力位階,最終是管理員組擁有該權限。

補充下效力位階:

默認情況下,多條策略不沖突的情況下,多條策略是合並的關系;如果沖突的話,優先級高的適用,優先級從低到高為local policy(本地)->site policy(站點)->domain policy(域)->ou policy(組織單元)  

不同配置對 mimikatz 的影響

默認情況下,成功取得調試權限。

把擁有調試權限的組設置為空。注銷再次登陸。

運行 mimikatz,獲取調試權限失敗。

WDigest

WDigest 協議早在 xp 時代就已經引入了。當時這個協議設計出來是把明文密碼存在 lsass 里為了 http 認證的。默認在 win2008 之前是默認啟用的。那么攻擊者就能從中獲取到明文。

但是在 win2008 之后的系統上,默認是關閉的。如果在 win2008 之前的系統上打了 KB2871997 補丁,那么就可以去啟用或者禁用 WDigest,配置如下鍵值:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest

UseLogonCredential 值設置為 0, WDigest 不把憑證緩存在內存;UseLogonCredential 值設置為 1, WDigest 就把憑證緩存在內存。

不同配置對 mimikatz 的影響

啟用緩存,直接抓明文,很舒服。

關了緩存之后,重啟再抓,什么東西也沒抓到。

 

Credential Caching

Domain Cached Credentials 簡稱 DDC,也叫 mscache。有兩個版本,XP/2003 年代的叫第一代,Vasta/2008 之后的是第二代。

計算機在加入域之后就得通過 kerberos 進行認證,通過 kerberos 認證就得有域控的參與,但是如果域成員暫時無法訪問到域控的話,豈不是無法認證了?域憑證緩存就是為了解決這個問題的。如果暫時訪問不到域控,windows 就嘗試使用本機緩存的憑證進行認證,默認緩存十條。

緩存位置(默認本地管理員也沒有權限訪問):

HKEY_LOCAL_MACHINE\SECURITY\Cache

修改組策略緩存條數為0,即為不緩存。

不同配置對 mimikatz 的影響

默認配置緩存 10 條。登陸本地管理員,提權到 system 權限,然后運行 mimikatz,成功抓到 mscachev2。

設置緩存數為 0,停掉域控,然后再登陸域賬號。域成員發現無法登陸了。

登陸本地管理員賬號,提取到 system,然后什么也沒抓到。

 

Protected Users Group

受保護的用戶組,可以用來讓像本地管理員這樣的高權限用戶只能通過 kerberos 來認 證(真是六的一比)。這是在 win2012 之后引入的一個新的安全組(win2008 之前的系統打了 KB2871997 補丁也會增加這個安全組)。來防止明文存儲在內存中和 ntlm hash 泄露(因為是通過 kerberos 認證所以也就不會泄露 net ntlm hash 了)。這個配置起來比較簡單。把想要保護的用戶加入這個組就行了(由於本機硬件限制,沒法復現了,跑一個 win2016,再跑一個 win10 就已經卡的不行了)。

Restricted Admin Mode

受限管理員模式,反正就是一種安全措施,讓你的賬戶不暴露在目標系統里。在 win8.1/win2012r2(切記是 R2)引入。win7/win2008 想用這個功能就得打 KB2871997、KB2973351。這項功能的使用需要客戶端和服務端相互配合。在服務端開啟的方法是在注冊表添加如下鍵值。

REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

右鍵->關於,查看下客戶端的版本是不是 rdp8.1 版本。

潛在風險-RDP PTH

受限管理員模式可以直接用當前登錄憑據進行登錄,所以這“始終要求憑據”的勾肯定不能勾。

sekurlsa::pth /user:<username> /domain:<comptername or ip> /ntlm:<ntlm hash> "/run:mstsc.exe /restrictedadmin"

domain 位置用計算機名或者ip皆可。(需要管理員權限來獲取 debug 權限)

一路確定下去就 OK 了。

成功把域控上的管理員頂了。

順道抓包看一下貌似只有RDP的流量。

總結

1、禁止調試權限對獲取 system 的攻擊者來說沒有任何作用。

2、WDigest 默認是禁用的,但是我們手動打開,挖個坑等人跳。

3、mscache 目前貌似只能用 hashcat 來破解,破出明文再利用。

4、Protected Users Group 需要再研究研究,等電腦配置好了再說 23333。

5、Restricted Admin Mode下pth 攻擊只能適用於特定版本,限制還是比較多的,如果限制比較狠的內網(把135和445的流量都禁了),這個算是個突破手法吧。

參考資料

https://labs.portcullis.co.uk/tools/freerdp-pth/

https://blogs.technet.microsoft.com/kfalde/2013/08/14/restricted-admin-mode-for-rdp-in-windows-8-1-2012-r2/

http://wwwtt0401.blog.163.com/blog/static/361493062012010114020272/

https://medium.com/blue-team/preventing-mimikatz-attacks-ed283e7ebdd5


免責聲明!

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



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