防御Mimikatz攻擊的方法介紹
簡(jiǎn)單介紹 Mimikatz 攻擊
Mimikatz 在內(nèi)網(wǎng)滲透測(cè)試中發(fā)揮著至關(guān)重要的作用,主要是因?yàn)樗軌蛞悦魑男问綇膬?nèi)存中提取明文密碼。眾所周知,攻擊者在他們的滲透中大量使用 Mimikatz,盡管微軟推出了安全補(bǔ)丁,但是在較舊的操作系統(tǒng)(如 Windows 2008 Server)中 Mimikatz 仍然有效,所以在很多情況下它可能導(dǎo)致橫向移動(dòng)和域權(quán)限提升。值得注意的是,如果 Mimikatz 是從本地管理員等權(quán)限執(zhí)行的,則它只能導(dǎo)出用戶憑據(jù)和密碼哈希值。
下面通過(guò)幾種方法來(lái)防御 Mimikatz 攻擊:
Debug 權(quán)限設(shè)置
根據(jù) Microsoft 的調(diào)試權(quán)限確定哪些用戶可以將調(diào)試器附加到任何進(jìn)程或內(nèi)核。默認(rèn)情況下,此權(quán)限授予本地管理員。然而,除非他是系統(tǒng)進(jìn)程,否則本地管理員極不可能需要此權(quán)限。
本地管理員-調(diào)試權(quán)限
在默認(rèn)安裝的 Windows Server 2016 系統(tǒng)中,未定義調(diào)試權(quán)限的組策略,這意味著只有本地管理員具有此權(quán)限。
調(diào)試權(quán)限 – 組策略
從攻擊者的角度來(lái)看,可以通過(guò)使用 Mimikatz 以下命令執(zhí)行此檢查:
- privilege::debug
檢查調(diào)試權(quán)限
Mimikatz 需要此權(quán)限,因?yàn)樗c LSASS 進(jìn)程交互。因此,將此權(quán)限僅設(shè)置為需要這權(quán)限的特定用戶或組,并將其從本地管理員中刪除是非常重要。可以通過(guò)將策略定義為不包含任何用戶或組來(lái)禁用 SeDebugPrivilege。
- Group Policy Management Editor -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment -> Debug programs -> Define these policy settings:
禁用 SeDebugPrivilege
Mimikatz-禁用調(diào)試權(quán)限
WDigest
WDigest 協(xié)議是在 WindowsXP 中被引入的,旨在與 HTTP 協(xié)議一起用于身份認(rèn)證。默認(rèn)情況下,Microsoft 在多個(gè)版本的 Windows(Windows XP-Windows 8.0 和 Windows Server 2003-Windows Server 2012)中啟用了此協(xié)議,這意味著純文本密碼存儲(chǔ)在 LSASS(本地安全授權(quán)子系統(tǒng)服務(wù))進(jìn)程中。Mimikatz 可以與 LSASS 交互,允許攻擊者通過(guò)以下命令檢索這些憑據(jù):
- sekurlsa::wdigest
Mimikatz — WDigest
Microsoft 在 Windows8.1,Windows 10,Windows Server 2012 R2 和 Windows Server 2016 系統(tǒng)中默認(rèn)禁用此協(xié)議。但是,如果您的組織使用較舊的操作系統(tǒng)(如 Windows 7 和 Windows Server 2008 等),Microsoft 已發(fā)布了一個(gè)補(bǔ)丁(KB2871997),允許管理員啟用或禁用 WDigest 協(xié)議。打完補(bǔ)丁后,建議驗(yàn)證是否已經(jīng)從注冊(cè)表中禁用 WDigest。
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest
WDigest-禁用
Negotiate 和 UseLogonCredential 注冊(cè)表項(xiàng)值應(yīng)設(shè)置為 0 可以完全禁用此協(xié)議。應(yīng)該注意的是,在較新的操作系統(tǒng)(Windows Server 2016,Windows 10 等)中,UseLogonCredential 注冊(cè)表項(xiàng)不存在。當(dāng)然,具有本地管理員權(quán)限的攻擊者可以修改注冊(cè)表以啟用 WDigest 并獲取憑據(jù),因?yàn)?Dave Kennedy 在他的博客中對(duì)此進(jìn)行了大量解釋。因此,如果在禁用此協(xié)議后將這些值設(shè)置為 1,則表明存在攻擊。應(yīng)該不斷監(jiān)視注冊(cè)表修改,以便在早期階段獲得警報(bào)并捕獲威脅。
如果我們禁用此協(xié)議,攻擊者嘗試從 WDigest 檢索純文本憑據(jù)將失?。?/p>
Mimikatz-WDigest 已禁用
LSA 保護(hù)
本地安全權(quán)限服務(wù)(LSASS)驗(yàn)證用戶是否進(jìn)行本地和遠(yuǎn)程登錄,并實(shí)施本地安全策略。Windows 8.1 及更高版本的系統(tǒng)中,Microsoft 為 LSA 提供了額外的保護(hù),以防止不受信任的進(jìn)程讀取內(nèi)存或代碼注入。Windows 8.1 之前的系統(tǒng),攻擊者可以執(zhí)行 Mimikatz 命令來(lái)與 LSA 交互并檢索存儲(chǔ)在 LSA 內(nèi)存中的明文密碼。
- sekurlsa::logonPasswords
Mimikatz-與 LSA 交互
建議 Windows Server 2012R2 和 Windows 8.1 之前的系統(tǒng)應(yīng)啟用 LSA 保護(hù),以防止 Mimikatz 訪問(wèn) LSASS 進(jìn)程的特定內(nèi)存位置獲取明文密碼??梢酝ㄟ^(guò)創(chuàng)建注冊(cè)表項(xiàng) RunAsPPL 并設(shè)置其值為 1 來(lái)啟用此保護(hù)。
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA
LSA 保護(hù)已啟用
在啟用了 LSA 保護(hù)的系統(tǒng)中,攻擊者將收到以下錯(cuò)誤:
Mimikatz-LSA 保護(hù)
受限制的管理模式
Microsoft 在 WindowsServer 2012 R2 中引入了一項(xiàng)額外的安全功能,可以有效的防止本地管理員的純文本憑據(jù)在 RDP 會(huì)話期間存儲(chǔ)在 LSASS 中。即使 LSA 保護(hù)可以阻止 Mimikatz 檢索憑證,但建議在攻擊者禁用 LSA 保護(hù)的情況下使用此安全功能作為額外的安全保護(hù)。
應(yīng)在以下位置創(chuàng)建「DisableRestrictedAdmin」注冊(cè)表項(xiàng)并且設(shè)置為 0,這樣可以通過(guò)網(wǎng)絡(luò) RDP 會(huì)話請(qǐng)求管理員登陸系統(tǒng)。此外,創(chuàng)建「DisableRestrictedAdminOutboundCreds」注冊(cè)表項(xiàng)值為 1,可以禁止管理員執(zhí)行 RDP 的系統(tǒng)內(nèi)部的網(wǎng)絡(luò)身份驗(yàn)證。缺少此注冊(cè)表項(xiàng),管理員可以導(dǎo)出憑據(jù)。
- HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa
需要在域中強(qiáng)制執(zhí)行「對(duì)遠(yuǎn)程服務(wù)器的憑據(jù)限制委派」策略,以確保所有出站 RDP 會(huì)話都使用「RestrictedAdmin」模式,因此才不會(huì)泄露憑據(jù)。
組策略限制憑證授權(quán)
需要使用「Require Restricted Admin」設(shè)置啟用該策略。
啟用受限制的管理員-限制憑證授權(quán)
強(qiáng)制執(zhí)行此策略后,管理員可以遠(yuǎn)程 RDP 到所需注冊(cè)表權(quán)限的工作站和服務(wù)器,以便控制 Windows 運(yùn)行一些程序。
運(yùn)行-受限制的管理模式切換
或者直接從命令提示符執(zhí)行它。
命令提示符-受限制的管理模式切換
對(duì)于 Windows 2012 R2 和 Windows 8.1 之前的舊操作系統(tǒng),此選項(xiàng)是 Microsoft 補(bǔ)丁的一部分 KB2871997。
憑證緩存
如果域控制器不可用,Windows 將檢查已緩存的最后一個(gè)密碼哈希值,以便使用系統(tǒng)對(duì)用戶進(jìn)行身份驗(yàn)證。這些密碼哈希值緩存在以下注冊(cè)表設(shè)置中:
- HKEY_LOCAL_MACHINE\SECURITY\Cache
如果執(zhí)行 Mimikatz 以下命令,可以檢索這些哈希值:
- lsadump::cache
默認(rèn)情況下,Windows 會(huì)緩存最后 10 個(gè)密碼哈希值。建議通過(guò)將以下安全設(shè)置來(lái)防止密碼的本地緩存,將其值設(shè)置為 0。
- Computer Configuration -> Windows Settings -> Local Policy -> Security Options -> Interactive Logon: Number of previous logons to cache -> 0
交互式登錄-不緩存登錄
攻擊者嘗試使用 Mimikatz 檢索這些密碼哈希將失?。?/p>
Credential Caching 禁用后 Mimikatz 出錯(cuò)
受保護(hù)的用戶組
WindowsServer 2012 及更高版本中的 Microsoft 引入了一個(gè)名為「Protected Users」的新安全組。此組使域管理員能夠保護(hù)本地管理員等有權(quán)限的用戶,因?yàn)閷儆谠摻M的任何帳戶只能通過(guò) Kerberos 對(duì)域進(jìn)行身份驗(yàn)證。這將有助于防止 NTLS 密碼哈希值或 LSAS 中的純文本憑據(jù)泄露給敏感帳戶,這些帳戶通常是攻擊者的目標(biāo)。
可以在「Active Directory 用戶和計(jì)算機(jī)」中找到「Protected Users」安全組。
ActiveDirectory-受保護(hù)的用戶安全組
成為此安全組一部分的帳戶將在身份驗(yàn)證方面自動(dòng)歸入 Kerberos 策略,默認(rèn)情況下配置如下:
Kerberos 默認(rèn)策略
或者,可以通過(guò)執(zhí)行以下 PowerShell 命令將帳戶添加到「受保護(hù)的用戶」組中:
- Add-ADGroupMember –Identity 'Protected Users' –Members Jane
通過(guò) PowerShell 添加受保護(hù)的用戶組帳戶
通過(guò)安裝 Microsoft 的補(bǔ)丁 KB2871997,WindowsServer 2008 等較舊的操作系統(tǒng)可以擁有此安全組。
結(jié)論
通過(guò)使用有效的端點(diǎn)解決方案與 AppLocker 等應(yīng)用程序白名單相結(jié)合來(lái)防止惡意的可執(zhí)行文件,執(zhí)行一些 PowerShell 命令和 cmd 命令,還可以加固安全性。即使網(wǎng)絡(luò)攻擊者已經(jīng)實(shí)現(xiàn)繞過(guò)這些控制,執(zhí)行注冊(cè)表修改,以便充分利用 Mimikatz 進(jìn)行憑證獲取,在此過(guò)程中將會(huì)生成許多事件,管理員應(yīng)該監(jiān)視某些注冊(cè)表項(xiàng),這有助于檢測(cè)攻擊行為。






































