駭客攻擊企業的手法不斷地翻新,本文將示範如何善用Windows 10和Windows Server 2016作業系統內的Credential Guard安全性機制,來阻擋傳遞雜湊及傳遞票證惡意攻擊,以防止儲存於主機記憶體內的使用者密碼外洩。
雖然企業和組織在整個IT基礎架構中,已經部署許多增強安全性的相關運作機制或硬體設備,除了確保線上營運服務不停止外,也保護企業機敏資料不外洩。然而,隨著時間的推移,駭客攻擊企業和組織的方法也不斷地演變及翻新,惡意攻擊的方式也從過往正面對決改採潛伏,並轉而朝最弱環節下手。簡單來說,相較於企業和組織內強調高安全性高效能的線上營運伺服器,惡意攻擊方式則改為從安全防護相對薄弱的使用者端電腦下手。
在現代化IT基礎架構中,為了達到統一且集中式管理的使用者身分驗證機制,在企業和組織中便會建置目錄服務以達成「單一登入」(Single Sign On,SSO)的目的。一般來說,較廣為採用的目錄服務有Active Directory、OpenLDAP等等,以便使用者只要登入並通過使用者身分驗證機制(也就是通過所謂的3A程序),就能順利存取企業和組織內部的各種服務,如圖1所示。
|
▲圖1 現代化IT運作架構中,使用者必須存取各式各樣的應用服務才能滿足需求。(圖片來源:Microsoft Ignite 2016 - BRK2145 - Secure privileged access from active attacks) |
何謂PtH與PtT攻擊
雖然,企業和組織透過目錄服務達到單一登入,讓使用者只要通過使用者身分驗證程序,便能使用區網內的各項服務。但是,在資訊攻防上,「操作便利性」與「安全性」永遠處於天秤之間不同的兩端,因此針對單一登入的惡意攻擊方式便應運而生了,這也就是大家耳熟能詳的「傳遞雜湊」(Pass-the-Hash,PtH)以及「傳遞票證」(Pass-the-Ticket,PtT)攻擊。
在本文一開始,曾經提到現代化的惡意攻擊方式,已經改為朝向安全防護相對薄弱的使用者端電腦下手,舉例來說,典型的PtH/PtT惡意攻擊方式,便是由惡意攻擊者先透過惡意電子郵件、惡意網站、使用者端已經發布或尚未修補的漏洞等方式,進而取得使用者端主機的管理者權限。
接著,惡意攻擊者便會利用取得的管理者權限,從使用者電腦主機硬碟內的Windows作業系統中讀取SAM Database內容,以取得使用者密碼的雜湊值,或者透過取得的管理者權限直接讀取儲存於記憶體中的「認證」(Credentials)資訊,如圖2所示。
|
▲ 圖2 典型的傳遞雜湊及傳遞票證攻擊方式(第一階段)。(圖片來源:Microsoft Trustworthy Computing - Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft) |
可能會有讀者感到困惑,即便惡意攻擊者取得使用者端主機的管理者權限,一般來說,使用者在企業和組織的Active Directory網域環境內,通常僅具備一般網域使用者權限而已,理論上危害範圍應不致於過大才對。
的確如此,不過取得一般使用者端電腦主機的管理者權限,通常只是惡意攻擊方式的第一階段,接下來討論惡意攻擊的第二階段。
在上述的範例情境中,惡意攻擊者已經取得企業和組織中某台使用者端主機的管理者權限,接著便會透過攻擊成功後所偷來的認證資訊,嘗試假冒這位使用者的身分再去攻擊區域網路內的其他使用者端主機。
倘若使用者端主機的管理者帳號(例如本機Administrator),在區域網路內其他使用者端主機也採用「相同」的密碼時,因為NT密碼雜湊是採用未加密的MD4雜湊演算法,惡意攻擊者便可以橫向地輕易侵入其他台使用者端主機。
接著,惡意攻擊者將採用上述相同的入侵手法不斷地攻擊區網內其他的使用者端主機,同時嘗試取得Active Directory網域環境中權限等級更高的特權帳號或服務帳號。如果剛好有使用者端主機發生其他問題請MIS人員協助處理,而MIS人員為求方便而使用Active Directory網域特權帳號登入時,那麼惡意攻擊者便能進而取得儲存於使用者端記憶體內的網域特權帳號密碼。
一旦被惡意攻擊者取得Active Directory網域特權帳號(例如Domain Administrator),或其他具有相同權限等級的使用者帳號時,那麼惡意攻擊者便具有Active Directory網域的管理權限,就能夠更進一步危害與此網域信任的其他網域,如圖3所示。
|
▲ 圖3 典型的傳遞雜湊及傳遞票證攻擊方式(第二階段)。(圖片來源:Microsoft Trustworthy Computing - Mitigating Pass-the-Hash (PtH) Attacks and Other Credential Theft)) |
即便惡意攻擊者無法取得Active Directory網域特權帳號,仍然可以透過由一般使用者端主機所偷到的使用者權限,針對企業和組織IT基礎架構內的相關服務進行存取,例如假冒該使用者帳號存取檔案伺服器內的檔案,導致企業和組織的機敏資料外洩等資安事件。
什麼是Credential Guard
為了能夠有效阻擋使用者密碼遭受未經授權的認證竊取攻擊,從Windows 10和Windows Server 2016版本開始導入了新的安全性機制,稱之為「Credential Guard」,它會使用虛擬式安全性的方式來隔離使用者帳號的密碼,因此只有具備特殊權限的系統軟體才能夠存取它們,同時透過保護NTLM密碼雜湊以阻擋傳遞雜湊攻擊,或者保護Kerberos票證以阻擋傳遞票證這種未經使用者授權存取的認證竊取攻擊。
在過去舊版的Windows作業系統中,會將登入的使用者帳號密碼儲存於「本機安全性授權」(Local Security Authority,LSA),而LSA會將作業系統所要使用的密碼儲存於處理程序記憶體內。因此,惡意攻擊者只要透過偷到的管理者權限,便能查看處理程序記憶體內儲存之所有曾經登入過此台主機的使用者帳號和密碼。