您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)如何檢測Pass-the-Hash攻擊,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
橫向滲透技術(shù)是攻擊者用來滲透目標網(wǎng)絡(luò),獲取憑據(jù)和數(shù)據(jù)特權(quán)訪問的最常見方法之一。在最近發(fā)現(xiàn)的勒索軟件(如Samsam和Ryuk)中,就說明了這一點。
最近我們研究了如何通過蜜罐檢測pass-the-hash攻擊,在研究檢測此類攻擊的最有效方法時,我發(fā)現(xiàn)了其它幾種有趣的方法。我認為非常有必要對它們進行測試,并進一步的研究pass-the-hash行為。
本文我將教大家如何使用本機Windows事件日志檢測pass-the-hash,以及一些關(guān)于如何實現(xiàn)的實用建議。在這里我不會討論有關(guān)什么是pass-the-hash的問題,如果你愿意你可以閱讀這篇文章以及觀看它的演示視頻。
Pass-the-Hash依賴于NTLM身份驗證。為了可靠地創(chuàng)建NTLM身份驗證,我使用Sqlcmd實用程序通過其IP地址連接到Microsoft服務(wù)器。此命令將為SQL數(shù)據(jù)庫生成NTLM身份驗證:
Sqlcmd –S [IP ADDRESS]
在查看如何檢測pass-the-hash攻擊之前,讓我們先來獲取執(zhí)行NTLM登錄活動時通常會生成的事件基線。要從我的PC工作站執(zhí)行此操作,我將首先使用管理用戶的實際密碼啟動一個新的命令提示符:
現(xiàn)在,在新的命令提示符下,我將使用Sqlcmd連接到SQL主機,并運行SELECT SYSTEM_USER命令查看我被認證為的用戶:
很好,一切正常!現(xiàn)在讓我們看看生成的日志。
在我的本地工作站上我看到以下事件。
4648事件:試圖使用顯式憑據(jù)登錄(A logon was attempted usingexplicit credentials)
4624事件:成功登錄帳戶(An account was successfully logged on)
4624事件顯示登錄類型為2,這意味著交互式登錄。這符合我使用runas的方式,我以交互方式輸入憑據(jù)。
4672事件:分配給新的登錄特權(quán)
由于我使用的Franklin Bluth帳戶是一個管理帳戶,因此會記錄4672顯示正在分配的權(quán)限。這是跟蹤管理帳戶活動的非常實用的方法。
在我的SQL服務(wù)器上我看到以下事件:
4624事件:成功登錄帳戶(An account was successfully logged on)
現(xiàn)在,在SQL Server上你會看到4624事件,此事件的登錄類型為3,即網(wǎng)絡(luò)登錄。
更重要的是,這表明使用的身份驗證包( Authentication Package)是NTLM。也證實了我們正在使用此方法執(zhí)行NTLM身份驗證。
我們還將看到4672事件,因為我們利用的用戶帳戶是一個特權(quán)帳戶。
在域控制器上,我將看到用戶Franklin Bluth被驗證的跡象。在本例中,我將看到Kerberos和NTLM身份驗證。首先發(fā)生Kerberos身份驗證,這是Active Directory的默認身份驗證方式。這將生成兩個事件:
4768事件:Kerberos 身份驗證票證 (TGT) 請求
以上顯示了我們模擬的用戶對域控制器的TGT請求。
4769事件:Kerberos 服務(wù)票證請求
一旦我們有了TGT,我們就會為我們模擬用戶的主機請求TGS。有了這個,我們的用戶Franklin現(xiàn)在可以與PC交互并啟動命令提示符。
4776事件:域控試圖驗證帳戶憑據(jù)
4776事件特定于NTLM,并將在最后。 當(dāng)我們使用強制NTLM身份驗證的Sqlcmd執(zhí)行命令時會發(fā)生這種情況。
以下是我們在不使用pass-the-hash執(zhí)行NTLM身份驗證時看到的日志摘要。這為我們提供了正常行為的基線。
源主機 | 目標主機 | 域控制器 |
---|---|---|
4648事件:試圖使用顯式憑據(jù)登錄 | 4624 – 帳戶已成功登錄。登錄類型為3,NTLM | 4768 – Kerberos 身份驗證票證 (TGT) 請求。 |
4624 - 帳戶已成功登錄。登錄類型為2 | 4672 – 分配給新的登錄特權(quán)。 | 4769 – Kerberos 服務(wù)票證請求。 |
4672 – 分配給新的登錄特權(quán)。 | 4776 – 計算機試圖驗證帳戶的憑據(jù)。 |
現(xiàn)在,讓我們來看看我們在Pass-the-Hash時看到的內(nèi)容。
為了執(zhí)行pass-the-hash測試,我們將做同樣的練習(xí),只是這次我們將使用mimikatz和pass the hash命令,而不是使用runas作為用戶啟動進程。
我可以使用mimikatz命令,從內(nèi)存中輕松獲取用戶Franklin的NTLM哈希值:
獲取哈希后,我將使用以下命令執(zhí)行pass-the-hash攻擊:
sekurlsa::logonpasswords
Sekurlsa::pth /user:Franklin.Bluth /ntlm:[ntlm] /domain:jefflab.local
這將打開一個新的命令窗口,如果我使用相同的Sqlcmd命令連接到我的SQL Server的IP地址,你可以看到我現(xiàn)在被驗證為Franklin Bluth:
那么,讓我們看看在執(zhí)行pass-the-hash之后會生成什么事件:
在我的本地工作站上,我看到了事件4648,4624和4672與我正在進行合法的NTLM身份驗證相同,但有一些關(guān)鍵的區(qū)別。
首先,4624事件的登錄類型為9。這是一種NewCredential登錄類型,是識別pass-the-hash的非常有用的方法。這是由安全研究人員確定的,我在我的測試中再現(xiàn)了它。
登錄類型9非常罕見。但是,我能夠生成一些運行使用模擬的應(yīng)用程序的誤報。關(guān)鍵的主要區(qū)別是登錄進程對于pass-the-hash(來自我的測試)始終是“seclogo”,所以你可以過濾掉它以減少誤報率。你可以在這里看到我能夠讓StealthAUDIT生成Logon Type 9事件,但它使用了Advapi登錄進程。
另外,我注意到了4672事件的不同之處。此前,這確定了我模擬帳戶Franklin Bluth的特權(quán)登錄。這將為我登錄到我的工作站的用戶注冊。
除此之外,SQL服務(wù)器上的日志是相同的。在域控制器上,關(guān)鍵區(qū)別在于你不會看到Kerberos身份驗證。但是,這不是檢測pass-the-hash的可靠方法,例如源自非受信任域的身份驗證也會發(fā)生這種情況。
以下是我們在執(zhí)行hash-hash時所看到的內(nèi)容摘要。
源主機 | 目標主機 | 域控制器 |
---|---|---|
4648事件:試圖使用顯式憑據(jù)登錄 | 4624 – 帳戶已成功登錄。登錄類型為3,NTLM | 474776 – 計算機試圖驗證帳戶的憑據(jù)。 |
4624 - 帳戶已成功登錄。 (Logon type = 9 Logon Process = Seclogo) | 4672 – 分配給新的登錄特權(quán)。 | |
4672 – 分配給新的登錄特權(quán)。 (登錄用戶,而不是模擬用戶) |
為了最終檢測pass-the-hash我使用了Sysmon,這有助于監(jiān)視進程訪問事件。我們在蜜罐檢測中使用了它,你可以閱讀這篇文章了解如何對它進行設(shè)置。
當(dāng)發(fā)生pass-the-hash時,你將看到事件ID 10顯示從Mimikatz或你選擇使用的pass-the-hash工具訪問LSASS進程。
現(xiàn)在,我們已經(jīng)查看了所有有關(guān)pass-the-hash攻擊的證據(jù),構(gòu)建檢測pass the hash攻擊的最簡單方法是查找:
Logon Type = 9
Authentication Package = Negotiate
Logon Process = seclogo
通過自定義事件日志過濾器,當(dāng)這兩件事同時發(fā)生時,你可以很容易地看到你網(wǎng)絡(luò)上的pass-the-hash活動!
以下是一個自定義事件過濾器,可用于顯示特定信息。
<QueryList> <Query Id="0" Path="Security"><Select Path="Security"> *[System[(EventID='4624')] and EventData[Data[@Name='LogonType']='9'] and EventData[Data[@Name='LogonProcessName']='seclogo'] and EventData[Data[@Name='AuthenticationPackageName']='Negotiate'] ] </Select> </Query> <Query Id="0" Path="Microsoft-Windows-Sysmon/Operational"><Select Path="Microsoft-Windows-Sysmon/Operational">*[System[(EventID=10)]] and *[EventData[Data[@Name='GrantedAccess'] and (Data='0x1010' or Data='0x1038')]] </Select> </Query> </QueryList>
希望通過本文的學(xué)習(xí),能讓你掌握學(xué)到如何通過事件日志檢測pass-the-hash攻擊。這需要在所有端點上啟用日志記錄。為了更簡單地檢測使用更高級技術(shù)的pass-the-hash攻擊,你可能需要借助第三方威脅檢測產(chǎn)品,如StealthDEFEND。
關(guān)于如何檢測Pass-the-Hash攻擊就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。