淺談 ( Pass the Hash ) PtH 與 PtT ( Pass the Ticket ) 攻擊對企業的衝擊(下)

繼上篇:淺談 PtH 與 PtT 攻擊對企業的衝擊(上),今天為各位帶來下篇的說明。

  集中式管理最大的問題就在於過度的集中,讓攻擊者只需要專心致力於特定主機的破解或獲取,即可得到極大的效益。而最常見的攻擊過程分為下列幾個步驟:列舉資訊、破解、提升、執行、隱匿、掩蓋,而其中破解即是 PtH, PtT 的主軸,當然破解程序中可分為:

1.利用漏洞進入略過帳號密碼等驗證程序。

2.知道部份密碼,透過密碼擷取工具擷取出密文,離線暴力破解。

3.完全不知道密碼,但透過驗證協定的漏洞,將該使用者的身份強制取得。

  單純的討論密碼破解,就可以分為知道密碼 ( 加密的密碼及未加密的密碼 ) 和不知道密碼,但不知道密碼怎麼還能利用它人的帳號呢? 這個就是靠偷!偷密碼的方式又分為網路上偷聽、本機上偷錄,或是引誘你自已提供密碼,像是網路釣魚。而前一個章節介紹的都是針對 NTLM 本身的缺點,而 PtT ( Pass the Ticket ) 也不惶多讓。Kerberos 有著完整的驗證機制,其運作的方式採用 Ticket 驗證,Kerberos 有 KDC ( Key Distribution Center ),而 KDC 又包含有兩個主要的單元:Authentication Server; AS 身份認證伺服器及 Ticket Granting Server; TGS 取票伺服器,而用戶端在接受認證時會由 AS 主機取得 Ticket Granting Ticket; TGT ,重點來了,這個 TGT 就是電影票未撕下存根聯的票卷。而完整的 TGT 發放流程如下圖所示:

 1.使用者向 KDC 的 AS 發起要求取得 Tickets

2.使用者以 Password Hash 解出 TGT

3.取得 TGT 後,再次向 TGS 要求服務票卷

4.TGS 發予服務票卷

5.使用者將服務票卷丟遞給 File Server 要驗證

6.Client / Server 交談開始。

 

  因此重點則在第二步驟所取得的 TGT,當我們將 TGT 取出,這個 TGT 最長有效期間為 10 小時,在這 10 小時之內都可以自由的利用 / 偽冒用戶端的存取權限,這個漏洞主要來自於 MS14-068  至今也快 2 年了,它最主要的問題在於可以直接在 Windows 7 以上的作業系統取出網域使用者、SID、網域位置及其Token,但值得一提的是 Windows XP 在這一波漏洞中竟然不在名單上!主因為 Windows XP 無法導入Ticket,因此若這個漏洞成功利用,可以將 Ticket 匯出且生成檔案,再將再安匯入到其它主機上,直接利用該使用者的身份存取資源。

( MS14-068 https://technet.microsoft.com/zh-tw/library/security/MS14-068 )

  而因為這個漏洞是針對網域內的 KDC 而來,因此若被攻擊的標的是 DC 那麼其影響範圍就無法忽視。在 Ticket 提取過程中,可以透過 Mimikatz 直接提取,和 PtH 相同,必須先提升其權限,除了程式需以管理者身份執行外,尚必須輸入 Privilege::Debug ,接下來我們可以嘗試透過 mimikatz 導出 Ticke t,請執行 Sekurlsa::tickets / export,可以看到目前有發出的 tickets 均在下列目錄中被匯出。

  在眾多的 ticket 中,有一個檔案名內代有 KRBTGT 字眼的檔案 ” [0;33d00]-2-0-40e10000-Administrator@krbtgt-BLACKJASON.COM.kirbi ” 我們將其複製到一台一般的網域成員中進行導入,執行指令為 Kerberos::ptt [0;33d00]-2-0-40e10000-Administrator@krbtgt-BLACKJASON.COM.kirbi

  當我們輸入成功後,在一般的主機上即可存取原本無法存取的目錄,像是 c$ 或其它需要特殊權限的位置。

下圖為匯入前

下圖為匯入之後,原本身份認證不會通過,因為該帳號被設定為明確拒絕存取,但目前可以存取並列出該資料夾為空的!

  當我們成功的取出 krbtgt 的 ticket 後,已經可以在網域中出入如入無人之境,只要再導出 golden Ticket、Silver Ticket 則完全不需要再經過 KDC 的 TGT 查核。

  由上例我們知道不管是 PtH 或是 PtT ,都讓攻擊者在企業內部對資源予取予求,而對於網域內的安全有如此大的問題,我們該如何保護我們集中放的帳號資訊,是目前最難的課題,相較之下,做法是相對的消極,例如必須透過變更 2 次 krbtgt 的密碼,並且每一個修改均需將 DC 重開機,而且這個帳號密碼預設要經過 10 年才會過期,最常見的特徵有下列幾個,例如安全性識別碼 ( SID ) Administrator 的尾碼為 500,你會在安全性的稽核成功,事件代碼 4624、4672 中查得帳戶名稱為 administrator 但 SID 的尾嗎竟然不是500,或是來源登入 IP 錯誤,網域名稱變成 Mimikatz 的抬頭字眼 ( <3 oe.eo ~ ANSSIE> 或是 <3 eo.oe ~ ANSSIE>) ,這些都是被攻擊成功的特徵,但有誰能在茫茫 Log 海中快速的找出這些特徵,快速的將這些引發攻擊的來源找到並清除呢? 

  用戶端的問題有這一些,隨著 Windows 10 的問世,也帶來更多增強的安全功能,讓 Windows 10 Enterprise 從開機即受到完整的個護,無論是你的認憑證、或是你的作業系統安全,由根開始防護,讓惡意程式永遠離你遠遠的!

延伸閱讀:

l   Kerberos 101 https://www.microsoft.com/taiwan/technet/columns/profwin/kerberos101.mspx

l   The Kerberos Network Authentication Service (V5) / RFC 1510 Sep. 1993 / Kohl & Neuman