何謂 Zerologon?

Zerologon:

這是一個 Microsoft Netlogon 服務的一個漏洞,可讓駭客對 Microsoft Active Directory 網域控制器發動攻擊,駭客可假扮成任何電腦,包括根網域控制器 (root domain controller)。

Zerologon

Zerologon 是外界給 CVE-2020-1472 漏洞所取的一個名稱。它之所以被稱為「Zerologon」,是因為該漏洞是出現在登入程序,而且該程序將初始化向量 (Initialization Vector,簡稱 IV) 每次都設為零,但其實 IV 應該每次都設為一個亂數才對。

這個危險的漏洞在 Common Vulnerability Scoring System (CVSS) 的評分 (CVSS v3.1) 系統當中是屬於嚴重性滿分 10 分的漏洞。目前外界已經出現了漏洞攻擊的概念驗證 (POC) 程式碼,而且可能很快就會出現真實的攻擊案例。

美國網路資安與基礎架構安全局 (Cybersecurity and Infrastructure Security Agency,簡稱 CISA) 已發布一項緊急命令,要求聯邦民政單位立即修補或停用所有受影響的 Windows 伺服器,並警告非政府機構也採取同樣的作法。

Microsoft 在 2020 年 8 月釋出了第一階段的修補更新 (共兩階段),此修補更新必須套用到所有的網域控制器。

此漏洞會利用 Microsoft Active Directory Netlogon Remote Protocol (MS-NRPC) 遠端登入通訊協定在加密機制上的一個缺陷,該協定的用途是讓使用者透過 NTLM (NT LAN Manager) 登入伺服器。此漏洞最嚴重的問題就是 MS-NRPC 協定也用於傳輸某些帳號變更資訊,例如電腦服務的帳號密碼。回想當初的設計,我們可以理解為何當時會加入這樣的功能,但因為它沒有針對密碼變更請求的來源進行驗證,所以才導致了嚴重的資安問題。

但更糟的還在後頭,當時 MS-NRPC 在加入此功能時並未謹慎挑選加密機制。1883 年荷蘭加密學家 Aguste Kerckhoff 發表了 2 篇名為「La Cryptographie Militaire (軍用加密)」的文章,內容闡述加密系統設計的 6 大原則。其中最知名的就是「柯克霍夫原則」(Kerckhoff’s Principle),該原則表示我們必須將加密金鑰保密,但卻不能仰賴演算法必須保密來保障資料安全。換成今日的說法就是,我們應該使用廣為人知、經過嚴格測試、且經得起考驗的演算法。

Windows NT 最早所使用的加密演算法是 2DES,該演算法現在已知存在著某些問題。今日,MS-NRPC 使用的是目前業界的加密標竿:Advanced Encryption Standard (AES) 演算法。除了選擇強大、經得起考驗的演算法之外,還需要一些額外的設定才能確保其強度。但 MS-NRPC 採用的是一種默默無名的設定,叫做 AES-CFB8 (Advanced Encryption Standard – Cipher Feed Back 8 bit)。這個默默無名的 AES-CFB8 設定鮮為人知,也未經過嚴格測試。MS-NRPC 使用 AES-CFB8 的問題在於其初始化向量 (IV) 原本應該是一個隨機數值,但 MS-NRPC 卻將它的 16 個位元組全部固定設為零。這樣就不是一個隨機數值,而是一個可預測的值,但加密機制最怕的就是可預測性,一旦可以被猜到,那加密就會失效。

我們如何知道這個漏洞

此漏洞是在 2020 年 9 月由一位在 Secura 工作的荷蘭研究員 Tom Tervoort 所公開。但該漏洞其實早在 8 月份就已修補,只是我們是在該研究人員於 9 月發表報告之後才開始看到概念驗證攻擊以及其他相關活動,換句話說,就是在 Tervoort 的報告詳細說明了他的研究結果及過程之後才開始。在研究過程當中,Tervoort 注意到有關 MS-NRPC 的資訊嚴重不足,在好奇心的驅使下,他試圖挖掘出更多資訊。

原本 Tervoort 是要看看能否找到中間人攻擊漏洞,但他卻意外發現另一個漏洞 (CVE-2020-1424)。接著在繼續研究之後,就發現了現在所稱的 Zerologon 漏洞。他最關鍵的發現就是 Microsoft 實作了一個與所有其他 RPC 通訊協定都不相同的特殊加密方法。在 Windows NT 的時代,指派給電腦的帳號並不被視為是一種 First-class Principal,因此 Microsoft 無法使用標準的 Kerberos 或 NTLM 來認證一台電腦或電腦帳號。因此,開發人員使用了一個替代方案。但要設計出無法被破解的程式碼與通訊協定,是一項極為艱難的工作。事實上,漏洞有時會經過非常久的時間之後才會被人發現,就像這次的情況。

攻擊運作方式

此漏洞可讓駭客掌控一台網域控制器 (DC),包括根網域控制器 (Root DC)。其方法是藉由變更或移除網域控制器上某個服務帳號的密碼。接著,駭客就能單純製造阻斷服務的狀況,或者接管整個網路。

駭客在攻擊此漏洞時,必須要能與 DC 建立一個 TCP 連線階段。如果他們人就在網路內部,他們可以坐在某個使用者的座位上,或者使用會議室提供的連接埠。這類攻擊可算是一種內賊攻擊,也就是當今企業所面臨代價最昂貴的攻擊。此攻擊可以從網路外部發動,只要能先進入某個地點然後與網域控制器建立 TCP 連線即可。

Tervoort 發現,只要使用 AES-CFB8 再配上固定 16 個位元組都是零的 IV,就可在 256 個金鑰當中找到一個金鑰可產生全部為零的加密文字 (cipher text)。對駭客來說,等於他們只需嘗試極少數的金鑰,就能有機會產生全部為零的加密文字,這一點,駭客的電腦頂多只需 2 至 3 秒的時間就能做到。

為何這很重要?

如果與 DC 通訊的電腦是屬於某個正常上班的使用者所有,那就沒什麼問題。系統可能會產生像這樣有問題的加密文字,但網路認證流程還是能照常運作,只有在駭客試圖攻擊該統時才會造成問題。

在 Tervoort 已驗證過的攻擊程序當中,駭客首先必須偽造網路上某用戶端的登入憑證 (也就是密碼)。由於 MS-NRPC 的 IV 實作問題,因此駭客最多只需嘗試 256 次就能猜出來。正常來說,一個使用者的帳號會在嘗試登入錯誤三次之後就被鎖住,但同樣的情況卻不會發生在電腦或設備帳號上。當一台電腦在執行登入時,其密碼錯誤次數並無上限,換句話說,駭客可以在很短時間內持續不斷嘗試,直到登入為止。他們要做的就是找到一個金鑰可以產生全部為零的加密文字。

一旦假冒了網路上某台電腦的身分之後,駭客可以做些什麼? 在第一步成功假冒身分時,駭客其實並未掌握連線階段的實際金鑰。駭客只是嘗試所有 256 個金鑰來找出其中一個能夠產生全零加密文字的金鑰,進而成功假冒身分而已。接下來的動作就是要停用「簽署與簽章」。

在 MS-NRPC 當中,RPC 簽署與簽章機制的作用是將資料傳輸加密。雖然,盡可能將傳輸中的資料加密是一件理所當然的事,但在 MS-NRPC 的設計中,這卻是一個選擇性功能,只要未設定訊息標頭內的某個旗標,此功能就會自然關閉。當簽署和簽章功能被關閉,訊息就會以明碼傳送,如此一來駭客就能執行任何他們想要的動作,包括清除密碼和修改密碼。Microsoft 將在 2021 年 2 月釋出一份修補更新來強制使用簽署和簽章。

攻擊的第三個步驟是變更受害帳號的密碼。如果要假冒任何裝置,對駭客來說最好就是假冒成 AD 伺服器,甚至是 Root AD 伺服器。在變更密碼時,駭客會使用 MS-NRPC 協定中的 NetServerPasswordSet2 訊息。只要在該訊息內傳送新的密碼,就能輕易變更密碼。最簡單的方式就是清除密碼,或者將密碼設為空白,接下來,駭客就能透過正常程序登入。

駭客若隨機攻擊網路上的某台電腦,那麼該電腦將無法登入網路。所以,此攻擊一開始只會單純地造成被攻擊的電腦無法使用。

全球影響

現在網路上已出現多種針對該漏洞的概念驗證 (POC) 攻擊,所以企業的 AD 伺服器若不趕快修補的話,很可能會受到嚴重影響,駭客可能透過此攻擊手法在網路上散布勒索病毒。

目前有一些工具可讓您檢查您的企業是否存在著這項漏洞,Tervoort 和 Secura 已經在 GitHub 上釋出一個工具讓您檢查您的網域控制器是否已修補,或查看它們是否存在著漏洞。

CVE-2020-1472 修補更新

Microsoft 已在 2020 年 8 月針對 CVE-2020-1472 (Zerologon) 釋出修補更新,所有 AD 伺服器 (2008 R2 或更新版本) 皆應盡快修補。然而,從修補更新釋出到真正部署之前的平均空窗期還是太長,研究人員表示,從修補更新釋出到最後真正安裝,平均一般企業大約需 60 至 150 天 (5 個月) 左右,也就是所謂的平均修補時間 (MTTP)。 

還不只這樣,很不幸的是,最近釋出的修補更新並未徹底解決這項問題。Microsoft 預定在 2021 年 2 月初再釋出第二階段更新,屆時將強制實施前述的簽署和簽章功能。屆時,所有裝置都必須使用安全通道模式,否則就會被拒絕存取。企業如果有一些較老舊而不符合要求的裝置,這些裝置必須經由手動方式加入群組原則當中來明確允許這些不合規定的裝置存取網路。

虛擬修補

一些用來監控帳號與網路是否遭到入侵、或是監控惡意流量及其他入侵指標的傳統資安措施仍有其必要。此外,用來監控勒索病毒、惡意程式及其他威脅的網路與主機 (端點) 入侵防護系統與惡意程式防護軟體,也很重要。同樣必要的還有採用一套資安事件管理 (SIEM) 系統來蒐集、彙整、分析記錄檔。完成記錄檔的分析之後,接著還要設置人員和流程來回應入侵指標 (IoC)。接下來再交由一個程序嚴謹、知識豐富的事件回應團隊接手,由他們來判斷駭客入侵的範圍並找出解決方法。

即使廠商已經釋出修補更新,很多客戶還是需要一段時間才能真正部署這些更新,同時採取一些額外的資安措施來確保環境安全。虛擬修補的概念,是藉由入侵防護 (IPS) 技術為系統管理員和資安人員提供一種額外的防護工具,讓他們爭取一些寶貴時間來確保網路安全。雖然,套用廠商的修補更新還是最建議的方式,但虛擬修補在許多情況下不但能保護尚未修補的電腦,還能藉由記錄檔檢查功能在套用修補之後,針對網路上出現的攻擊嘗試提供寶貴的分析資訊。

趨勢科技客戶可參考以下知識庫文章來了解更多解決漏洞問題的最佳實務原則,以及我們能提供什麼協助:https://success.trendmicro.com/solution/000270328

Zerologon 議題