Mimikatz是一款能夠從Windows中獲取內存,並且獲取明文密碼和NTLM哈希值的神器,本文將介紹如何防御這款軟件獲取密碼。
Mimikatz介紹
Mimikatz是一款能夠從Windows認證(LSASS)的進程中獲取內存,並且獲取明文密碼和NTLM哈希值的工具,攻擊者可以借此漫游內網。他們可以通過明文密碼或者傳遞hash值來提權。可能很多人會問“難道微軟就沒想過怎么防御嗎?”
在Google上搜索“mimikatz的防御”,你會發現搜索結果很有限。我找到的最好的一篇文章就是這篇。里面提到了很多好的建議,諸如使用最近版本的活動目錄中的“受保護的用戶”用戶組(SID:S-1-5-21–525),或者是限制使用管理員,或者通過注冊表設置不在內存中儲存密碼。你可以限制以系統身份運行的服務數量,或者移除調試權限,防止攻擊者使用mimikatz。這篇文章和其他的那些文章都要讓你安裝Windows8或者8.1或者10版本。那那么多運行Windows7/2008 R2的電腦怎么辦呢?對於這些版本的Windows,你一樣有防御手段。
防御措施
第一步:Active Directory 2012 R2功能級別
首先你可以升級你的域或林的功能級別到2012 R2。這個級別添加了個“受保護的用戶”用戶組。如果你看過TechNet上對它的介紹,你可能會感覺這個用戶組會防止mimikatz獲取密碼。實際情況是怎樣的呢?
注意:對於非保護用戶,mimikatz是可以獲取到NTLM哈希的。
而當用戶被添加到保護用戶組的時候,NTLM哈希和明文密碼都看不到了。
很顯然,這招很管用,那Windows 7或者2008 R2上的保護用戶組又是怎樣的呢?
可以看到,即使加入了保護用戶組,密碼和哈希還是可見的。
不過這台機器沒有打過補丁。實際上如果電腦不知道保護用戶組意味着什么,那這個用戶組也就失去了意義。幸運的是,微軟已經把這個Windows8.1 和2012R2有的功能移植到舊版本的Windows上了。
第二步:安裝KB2871997
如果你一直安裝Windows更新的話,KB2871997應該已經裝好了。這個更新會把保護用戶組的功能移植到舊版的Windows中。一旦安裝了這個更新,Windows2008 R2就也能防御mimikatz了。
安裝KB2871997更新后沒有把用戶放入保護用戶組就是這樣的效果
而一旦加入了保護用戶組,效果就跟2012 R2上的一樣了
第三步:去除內存中的存儲空間
這一步是可選的,因為你可能想把所有的賬號放到保護用戶組里面,但是實際上不行。微軟反對把計算機賬號和服務賬號放到保護用戶組里面。所以這一步是針對那些不在保護用戶組里面的用戶的。
在Windows 2012 R2上,無論用戶有沒有被添加到保護用戶組,mimikatz都沒有獲取到過密碼,而Windows2008中,如果不添加到保護用戶組,mimikatz還是能夠獲取密碼的。
密碼的存儲是由一個注冊表設置決定的。就像保護用戶組的功能一樣,在新版本的Windows(8.1+ & 2012R2+)中,密碼默認不會儲存在內存中。這一特性也在KB2871997更新中被移植到了老版本中。但是由於兼容原因,在安裝更新后,老版本仍然會默認在內存中存儲密碼。你只要把注冊表中的“UseLogonCredential”項設置成0就好了。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest
這位用戶沒有被添加到保護用戶組,但是注冊表的值改過了,因此,Mimikatz無法獲取到明文密碼。
結論
總結一下,把Active Directory功能級別升級到2012 R2,及時進行Windows更新,把重要賬號加入保護用戶組,設置注冊表值。另外,不要授予賬號過多的管理權限。希望這篇文章能夠幫助大家防御Mimikatz。