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