Mimikatz 攻防雜談

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

mimikatz 在內網滲透中是個頗有用的工具。它可能讓攻擊者從內存中抓到明文密碼。你們都知道這個工具很厲害,微軟確定也知道了,因此就搞了一些安全防禦機制讓 mimikatz 抓不到密碼。可是在 win2008 以前的系統上仍是能抓到密碼的。通常狀況下,只要有本地管理員權限就能從內存中抓出密碼。一般抓到密碼以後就能夠進行橫向移動和提權。windows

Debug Privilege

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

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

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

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

補充下效力位階:ide

默認狀況下,多條策略不衝突的狀況下,多條策略是合併的關係;若是衝突的話,優先級高的適用,優先級從低到高爲local policy(本地)->site policy(站點)->domain policy(域)->ou policy(組織單元)  

不一樣配置對 mimikatz 的影響

默認狀況下,成功取得調試權限。工具

把擁有調試權限的組設置爲空。註銷再次登錄。
url

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

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 想用這個功能就得打 KB287199七、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的流量。

總結

一、禁止調試權限對獲取 system 的攻擊者來講沒有任何做用。

二、WDigest 默認是禁用的,可是咱們手動打開,挖個坑等人跳。

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

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

五、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

相關文章
相關標籤/搜索