Related Posts Plugin for WordPress, Blogger...


網管人雜誌

本文刊載於 網管人雜誌第 135 期 - 2017 年 4 月 1 日出刊,NetAdmin 網管人雜誌 為一本介紹 Trend Learning 趨勢觀念、Solution Learning 解決方案、Technology Learning 技術應用的雜誌,下列筆記為本站投稿網管人雜誌獲得刊登的文章,網管人雜誌於每月份 1 日出刊您可於各大書店中看到它或透過下列圖示連結至博客來網路書店訂閱它。



文章目錄

前言
何謂 PtH 與 PtT 攻擊?
什麼是 Credential Guard?
          Credential Guard 環境需求
實戰 Credential Guard
          未啟用 Credential Guard
          啟用 Credential Guard
          確認 Credential Guard 安全性機制執行中
          測試 Credential Guard 防護機制
結語





前言

過去,雖然企業及組織在整個 IT 基礎架構中,已經部署許多增強安全性的相關運作機制或硬體設備,除了確保線上營運服務不停止之外也保護企業機敏資料不外洩,然而隨著時間的推移駭客攻擊企業及組織的方法也不斷演變及翻新,惡意攻擊的方式也從過往正面對決改採潛伏並轉而朝向最弱環節下手。簡單來說,相較於企業及組織內強調高安全性高效能的線上營運伺服器來說,惡意攻擊方式則改為朝向安全防護相對薄弱的使用者端電腦下手。

在現代化 IT 基礎架構中,為了達到統一且集中式管理的使用者身分驗證機制,在企業及組織當中便會建置目錄服務以達成「單一登入」(Single Sign On,SSO)的目的,一般來說較廣為採用的目錄服務有 Active Directory、OpenLDAP……等,以便使用者只要登入並通過使用者身分驗證機制之後(也就是通過所謂的 3A 程序),那麼就能順利存取企業及組織內部中各式各樣的服務了。
所謂 3A 程序便是指驗證(Authentication)、授權(Authorization)、稽核(Accounting)。簡單來說,「驗證」是指系統能夠正確識別登入的使用者帳號是代表誰,而「授權」則是負責確認使用者登入後能否啟用或執行某項工作任務,至於「稽核」則是追踪使用者在登入後的各項操作及使用情況並進行記錄。

圖 1、現代化 IT 運作架構中,使用者必須存取各式各樣的應用服務才能滿足需求





何謂 PtH 與 PtT 攻擊?

雖然,企業及組織透過目錄服務達到 SSO 單一登入,讓使用者只要通過使用者身分驗證程序後便能使用區網內的各項服務。然而,在資訊攻防上面「操作便利性」與「安全性」永遠處於天秤之間不同的兩端,因此針對 SSO 單一登入的惡意攻擊方式便應運而生,也就是大家耳熟能詳的「傳遞雜湊」(Pass-the-Hash,PtH)「傳遞票證」(Pass-the-Ticket,PtT)攻擊。

在本文一開始,我們曾經提到現代化的惡意攻擊方式,已經改為朝向安全防護相對薄弱的使用者端電腦下手,舉例來說,典型的 PtH / PtT 惡意攻擊方式,便是由惡意攻擊者先透過惡意電子郵件、惡意網站、使用者端已經發佈或尚未修補的漏洞……等方式,進而取得使用者端主機的管理者權限。

接著,惡意攻擊者便會利用取得的管理者權限,從使用者電腦主機硬碟內的 Windows 作業系統中,讀取 SAM Database 內容以便取得使用者密碼的雜湊值,或者透過取得的管理者權限直接讀取儲存於記憶體中的「認證」(Credentials)資訊。

圖 2、典型的傳遞雜湊及傳遞票證攻擊方式(第一階段)

可能會有讀者感到困惑,即便惡意攻擊者取得使用者端主機的管理者權限,一般來說使用者在企業及組織的 Active Directory 網域環境中,通常僅具備一般網域使用者權限而已理論上危害範圍不致過大才對。是的,取得一般使用者端電腦主機的管理者權限,通常只是惡意攻擊方式的第一階段,接下來我們將要討論惡意攻擊的第二階段。

在上述的範例情境中,惡意攻擊者已經取得企業及組織中某台使用者端主機的管理者權限,接著便會透過攻擊成功所偷來的認證資訊,嘗試假冒這位使用者的身分再去攻擊區域網路中其它使用者端主機。倘若,使用者端主機的管理者帳號(例如,本機 Administrator),在區域網路中其它使用者端主機也採用「相同」的密碼時,因為 NT 密碼雜湊是採用未加密的 MD4 雜湊演算法,所以惡意攻擊者便可以橫向的輕易侵入其它台使用者端主機。

接著,惡意攻擊者將採用上述相同的入侵手法不斷攻擊區網中其它台使用者端主機,同時嘗試取得 Active Directory 網域環境中,權限等級更高的特權帳號或服務帳號。倘若,剛好使用者端主機發生其它問題請 MIS 人員協助處理,然而 MIS 人員為求方便而使用 Active Directory 網域特權帳號登入時,那麼惡意攻擊者便能進而取得儲存於使用者端記憶體內的網域特權帳號密碼。

一旦被惡意攻擊者取得 Active Directory 網域特權帳號(例如,Domain Administrator),或其它具有相同權限等級的使用者帳號時,那麼惡意攻擊者便具有 Active Directory 網域的管理權限,並且還能更進一步危害與此網域信任的其它網域。

即便惡意攻擊者無法取得 Active Directory 網域特權帳號,仍然可以透過由一般使用者端主機所偷到的使用者權限,針對企業及組織 IT 基礎架構中相關服務進行存取,舉例來說,假冒該使用者帳號存取檔案伺服器內的檔案,導致企業及組織的機敏資料外洩等資安事件。

圖 3、典型的傳遞雜湊及傳遞票證攻擊方式(第二階段)





什麼是 Credential Guard?

為了能夠有效阻擋使用者密碼遭受未經授權的認證竊取攻擊,從 Windows 10 及 Windows Server 2016 版本開始,導入新的安全性機制稱之為「Credential Guard」,它會使用虛擬式安全性的方式來隔離使用者帳號的密碼,因此只有具備特殊權限的系統軟體才能夠存取它們,同時透過保護 NTLM 密碼雜湊以阻擋傳遞雜湊攻擊,或保護 Kerberos 票證以阻擋傳遞票證這種未經使用者授權存取的認證竊取攻擊。
請注意,在 Windows 10 版本的部分,必須採用 Windows 10「企業版、教育版」才支援 Credential Guard 安全性功能。

在過去舊版的 Windows 作業系統中,會將登入的使用者帳號密碼儲存於「本機安全性授權」(Local Security Authority,LSA),而 LSA 會將作業系統所要使用的密碼儲存於處理程序記憶體當中。因此,惡意攻擊者只要透過偷到的管理者權限,便能查看處理程序記憶體當中所儲存,所有曾經登入過此台主機的使用者帳號及密碼。

現在,Credential Guard 安全性機制透過「虛擬式安全性」(Virtualization-Based Security,VBS)方式,將 LSA 中的密碼進行隔離並使用遠端程序呼叫的方式與新的運作元件溝通,隔離的 LSA 執行程序所儲存的資料由虛擬式安全性機制所保護,無法由作業系統其它的部分進行存取。簡單來說,VBS 提供安全核心與一般作業系統隔離的功能,所以不會暴露一般作業系統中的弱點及零時差漏洞。

因此,基於安全性考量隔離的 LSA 執行程序不會載入任何裝置驅動程式,只會載入安全性所需的作業系統「二進位檔案」(Binary File)而已,並且這些二進位檔案都使用虛擬化安全性信任的憑證所簽署的,這些簽章會先經過驗證程序並通過驗證後才會保護運作環境中的檔案。

圖 4、透過 VBS 虛擬式安全性運作機制隔離 LSA 的運作示意圖



Credential Guard 環境需求

在開始部署 Credential Guard 安全性機制之前,我們先了解部署 Credential Guard 機制所需要的軟體、硬體及韌體等環境需求。舉例來說,在硬體的部分建議採用具備「信賴平台模組」(Trusted Platform Module,TPM)的安全性晶片,但事實上若主機未配置或未支援 TPM 2.0 安全性晶片的話,仍然能夠啟用 Credential Guard 安全性機制,只是 Credential Guard 用來加密的安全性金鑰無法受到 TPM 安全性晶片保護,因此安全性防護力較弱仍有被攻擊成功的可能性。

基礎安全性保護環境需求
  • 硬體: 首先,必須採用具備「64 位元」的 CPU 處理器,並支援 Intel VT-x/EPT 或 AMD-V/NPT 等硬體輔助虛擬化功能,那麼 Windows Hypervisor 才能提供 VBS 虛擬化安全性機制。同時,建議配置「TPM 2.0」安全性晶片,以便為 VBS 加密金鑰提供保護及防範惡意存取 BIOS 等攻擊行為。
  • 韌體: 具備 UEFI 安全開機及韌體更新功能的「UEFI 2.3.1.c 或後續版本」,透過 UEFI 安全開機以確保裝置只會使用已授權的程式碼開機,並配合韌體更新機制修補安全性弱點,以便充分防止主機遭受 Bootkit 及 Rootkit 攻擊行為。
  • 軟體: Windows 10 僅「企業版、教育版」支援、Windows Server 2016 及 Windows Enterprise IoT。

請注意,倘若 Windows Server 2016 運作 DC 網域控制站的話,那麼便不支援 Credential Guard 安全性機制,僅支援另一項安全性機制 Device Guard 而已。

事實上,上述僅列出 Credential Guard 安全性機制的基礎環境需求而已,倘若企業及組織需要更高等級的安全性機制時,那麼建議可以採用上述基礎環境需求搭配下列進階安全性保護環境需求,即可大幅增強 Credential Guard 可提供的安全性等級。

進階安全性保護環境需求
  • 硬體: 採用支援「Intel VT-D 或 AMD Vi IOMMU」硬體輔助虛擬化功能,以便增強系統對於記憶體攻擊的抵擋及復原能力。
  • 韌體: 採用支援「Secure Boot」、「Secure MOR」、「HSTI」、「WSMT」……等,確保只有經過驗證的平台 BIOS 系統管理員可以變更 BIOS 設定,並且防止進階記憶體攻擊、抵擋惡意程式碼、從系統韌體減少 VBS 的受攻擊面、封鎖其它針對 SMM 的安全性攻擊 ……等。





實戰 Credential Guard

了解 Credential Guard 安全性機制的運作原理及環境需求後,接下來首先為讀者展示倘若主機未啟用 Credential Guard 安全性機制,但是遭受傳遞雜湊及傳遞票證攻擊時將會發生什麼情況,接著將實際演練如何啟用 Credential Guard 安全性機制,以及啟用後該如何確認 Credential Guard 安全性機制已經正確運作。在啟用 Credential Guard 安全性機制的部分,可以採用 GPO 群組原則、修改登錄檔、Device Guard 及 Credential 硬體準備工具……等方式來進行啟用作業。



未啟用 Credential Guard

那麼,我們來嘗試模擬在未啟用 Credential Guard 安全性機制之前,當 Windows 10 及 Windows Server 2016 作業系統,遭受本文所描述的傳遞雜湊及傳遞票證攻擊時會發生什麼情況。在本文測試環境中,我們採用由法國知名駭客 Benjamin Delpy 透過 C 語言所撰寫的 Mimikatz 工具 ,模擬傳遞雜湊及傳遞票證身分竊取攻擊行為。

值得注意的是,在 Windows 10 及 Windows Server 2016 作業系統運作環境中,請在下載及執行 Mimikatz 工具之前,將預設內建的「Windows Defender」防毒防駭工具關閉,否則一旦下載 Mimikatz 工具後便會立即被 Windows Defender 移除。

圖 5、關閉 Windows 預設內建的 Windows Defender 防毒防駭工具

順利關閉內建的 Windows Defender 防毒防駭工具後,請透過「以系統管理員身分執行」的方式開啟命令提示字元,接著執行 Mimikatz 工具後首先鍵入「Privilege::Debug」指令,以便確認 Mimikatz 工具已正常啟動並能順利運作,接著鍵入「sekurlsa::msv」「sekurlsa::logonpasswords」便會列出,在這台主機中 LSA 儲存於記憶體內所有登入過的使用者帳號或服務帳號的密碼資訊。

如圖 6 所示在順利執行 Mimikatz 工具後,可以看到目前的主機名稱為 HV01,登入的管理者帳號 Administrator 以及管理者帳號的 SID,在下方便直接看到管理者帳號的 NTLM 雜湊值,也就是本文一開始提到 NT 密碼雜湊採用未加密的 MD4 雜湊演算法。
倘若採用的是 Windows 10 或 Windows Server 2016 之前的版本,那麼透過 Mimikatz 工具甚至「直接」看到密碼為「明文」而非 NTLM 雜湊值。
圖 6、透過 Mimikatz 工具查看主機記憶體內容中所有使用者帳號密碼資訊

或許有些讀者會感到困惑,透過 Mimikatz 工具看到管理者帳號的 NTLM 雜湊值會有什麼影響 ?事實上,隨著惡意攻擊種類及方式不斷增加的情況下,只要取得使用者帳號的 NTLM 雜湊值之後,惡意攻擊者只要透過「NTLM 雜湊值解密程式」(NTLM Hash Decrypter),便可以在幾小時甚至幾分鐘之內解密出使用者密碼。
原則上密碼字元在 8 字元以下普通強度的使用者密碼,只要幾分鐘之內便可以順利解密。即便密碼字元在 14 字元並採用高強度的使用者密碼,也只要幾小時之內便可以順利解密。



啟用 Credential Guard

了解惡意攻擊所造成的安全性風險後,接著我們來看看啟用 Credential Guard 安全性機制後,是否能夠有效防護傳遞雜湊及傳遞票證攻擊。在此次實作的 x86 伺服器中,硬體的部分採用 64 位元的 CPU 處理器並支援相關硬體輔助虛擬化功能,同時也配置 TPM 2.0 信賴平台模組安全性晶片。在韌體的部分,採用具備 UEFI 安全開機及韌體更新功能的 UEFI 2.4.0。在軟體的部分,則是採用 Windows Server 2016 DataCenter 版本。

圖 7、順利在裝置管理員中看到信賴平台模組 2.0

符合 Credential Guard 安全性機制的運作環境準備完畢後,在本文實作環境中我們採用 GPO 群組原則的方式啟用 Credential Guard。請依序點選「開始 > 執行 > 鍵入 gpedit.msc > 確定」,系統將會開啟本機群組原則編輯器視窗,接著請依序點選「電腦設定 > 系統管理範本 > 系統 > Device Guard」項目,然後開啟右方「開啟虛擬化型安全性」項目。

圖 8、準備透過 GPO 群組原則啟用 Credential Guard 安全性機制

在開啟虛擬化型安全性視窗中,預設值為尚未設定請點選至「已啟用」項目,接著在下方選取平台安全性層級下拉式選單中,可以看到安全開機或安全開機及 DMA 保護項目,在本文實作環境中選擇至「安全開機」項目。最後,在 Credential Guard 設定下拉式選單中,預設值為已停用另外 2 個選項為在不含鎖定情況下啟用、在包含 UEFI 鎖定的情況下啟用,在本文實作環境中選擇至「在不含鎖定情況下啟用」項目。
在選取平台安全性層級選項中,倘若選擇至「安全開機及 DMA 保護」項目的話,那麼請確保主機必須支援「Intel VT-D 或 AMD Vi IOMMU」硬體輔助虛擬化功能才行。
圖 9、透過 GPO 群組原則啟用 Credential Guard 安全性機制

組態設定完畢回到本機群組原則編輯器視窗中,將會發現開啟虛擬化型安全性項目的狀態,由先前的「尚未設定」轉換成為「已啟用」。接著,為了能夠快速讓組態設定套用生效,請開啟以系統管理員身份開啟命令提示字元後,鍵入「gpupdate /force」指令然後重新啟動主機。



確認 Credential Guard 安全性機制執行中

順利啟用 Credential Guard 安全性機制並重新啟動主機後,首先請確認 Credential Guard 安全性機制已經順利運作並執行中,請依序點選「開始 > 執行 > 鍵入 msinfo32.exe > 確定」,系統將會開啟系統資訊視窗,點選「系統摘要」項目後在右方窗格中下拉至底即可看到啟用資訊,依據本文實作環境的組態設定後,在啟用 Credential Guard 安全性機制的部分將會看到下列組態設定值:

  • Device Guard 虛擬化型安全性: 執行中
  • Device Guard 必要的安全性屬性: 基底虛擬化支援,安全開機
  • Device Guard 可用的安全性屬性: 基底虛擬化支援,安全開機,DMA 保護
  • Device Guard 安全性服務已設定: Credential Guard
  • Device Guard 安全性服務執行中: Credential Guard

圖 10、確認 Credential Guard 安全性機制是否順利啟用並執行中

倘若最後一項「Device Guard 安全性服務執行中」空白的話,可以稍等 2 ~ 3 分鐘後重新整理視窗內容,倘若仍為空白的話建議再次重新啟動主機,以確保 Credential Guard 安全性機制啟用並執行中。



測試 Credential Guard 防護機制

確認 Credential Guard 安全性機制順利運作後,在執行 Mimikatz 工具再次模擬惡意攻擊行為之前請再次確認,是否已經關閉內建的 Windows Defender 防毒防駭工具。
因為預設情況下,重新啟動 Windows 主機之後,將會自動帶起 Windows Defender 防毒防駭工具。

一切準備就緒後,請透過「以系統管理員身分執行」的方式開啟命令提示字元,接著執行 Mimikatz 工具以便再次模擬惡意攻擊行為。同樣的,請先鍵入「Privilege::Debug」指令,以便確認 Mimikatz 工具已正常啟動並能順利運作,接著鍵入「sekurlsa::msv」「sekurlsa::logonpasswords」指令,便會列出此台主機中 LSA 儲存於記憶體內的使用者帳號或服務帳號的密碼資訊。

但是,這台主機已經受到 Credential Guard 安全性機制的保護,所以可以看到 Mimikatz 工具執行後,仍然可以看到目前的主機名稱為 HV01,登入的管理者帳號 Administrator 以及管理者帳號的 SID,但是這次在下方便可以看到有一行關鍵字「LSA Isolated Data:NtlmHash」,然後原本應該顯示 NTLM 雜湊值的部份,變成「Unk-Key」「Encrypted」2 行經過加密金鑰保護的亂數,順利阻擋傳遞雜湊及傳遞票證惡意攻擊行為。

圖 11、Credential Guard 安全性機制順利運作及阻擋惡意攻擊

值得注意的是,惡意攻擊的方式及手法隨著時間的推移不斷翻新,因此管理人員並非只要啟用 Credential Guard 安全性機制就能高枕無憂,舉例來說,企業及組織的 IT 管理人員,已經為區網中的伺服器及使用者端主機啟用 Credential Guard 安全性機制,然而使用者端主機卻因為遭受社交攻擊而被植入鍵盤記錄木馬程式時,那麼即便啟用 Credential Guard 安全性機制也是無法防護的,因為惡意攻擊者將可以透過植入的鍵盤記錄木馬程式,輕鬆且直接獲得使用者所鍵入的密碼。





結語

透過本文的說明及實作演練,相信讀者已經完全了解在 Windows 10 及 Windows Server 2016 環境中,新增的 Credential Guard 安全性機制,確實能夠阻擋傳遞雜湊及傳遞票證惡意攻擊,有效提升儲存於主機記憶體內的使用者密碼防護力。
文章標籤: ,