甚麼是 Zerologon?

Zerologon 是 Microsoft Netlogon 程序內加密方式中的一個漏洞碼,讓歹徒可以攻擊 Microsoft Active Directory 的域控制器。Zerologon 令歹徒可以假冒任何一部電腦,包括根域控制器。

Zerologon

Zerologon 是漏洞 CVE-2020-1472 的名稱。它源於登入程序中的一個缺陷:初始向量(IV)一般都會經常性地全部設定為零,而 IV 亦應該是一個隨機數字。

這個危險漏洞的嚴重程度被 Common Vulnerability Scoring System(CVSS)評估為 10 級中的第 10 級(CVSS v3.1)。現時已有一些已知活躍的概念驗證入侵行動,因此相信很快就會出現真正的攻擊。

美國網絡安全及基礎設施安全局(CISA)已發出緊急指令,下令民間及聯邦機構馬上補丁或停用所有受影響的 Windows 伺服器,並警告所有非政府機構採取相同行動。Microsoft 已在 2020 年 8 月發佈兩個修補程式,以應用於所有網域控制器。

此漏洞利用了 Microsoft Active Directory Netlogon Remote Protocol 進行加密時的一個缺陷。它讓用戶使用 NTLM (NT LAN Manager)登入伺服器。

這漏洞的最大問題就是 MS-NRPC 亦同時用於傳輸某些帳號更新的訊息,包括電腦服務帳號密碼。回看其起源,我們很容易理解加入此功能的理念。不過,在發出更改密碼請求的來源缺乏確認程序已成為重大的保安問題。

由此引伸的問題將會更嚴重。在 MS-NRPC 上採用的加密系統亦並非明智的選擇。在 1883 年,荷蘭密碼學家 Aguste Kerckhoff 發表了兩份題為 La Cryptographie Militaire(軍用密碼學)的論文,論及設計密碼系統時的 6 個主要原則。

其中最為人熟悉的 Kerckhoff’s Principle 指出,我們必須將加密匙保密。我們亦不應依賴演算法保密來保護資料,而應該採用為人熟悉、久經測試及確認有效的演算法。

原本用於加密登入 Windows NT 程序的演算法是 2DES,這亦是問題所在。今天,MS-NRPC 採用了 Advanced Encryption Standard(AES)為加密標準。

除了選擇一個確認有效而功能強大的演算法外,亦必須選用額外設定來確保有足夠效能。MS-NRPC 採用名為 AES-CFB8 的罕見設定。說 AES-CFB8 罕見是因為它並不知名,而且並未被充分測試。

在 MS-NRPC 使用 AES-CFB8 對初始化向量圖形(IV)造成了問題,因為它應該是一個隨機數字,但 MS-NRPC 卻將它定為一個包含 16 個字節為零的數值。很明顯這並不是隨機,而是可被預測的。當數值可被預測,密碼就會被破解。

我們如何發現這漏洞

此漏洞在 2020 年 9 月由在 Secura 任職的荷蘭研究師 Tom Tervoort 宣佈。漏洞實際上在 8 月已經補丁,不過直至研究師在 9 月發表報告後我們才開始見到有概念驗證及其他活動,

Tervoort 的報告詳細分析此漏洞及其程序。但他在研究中亦發現非常缺乏有關 MS-NRPC 的資訊,這令他更著緊的追尋更多資訊。

Tervoort 開始的時候只是在尋找一個由中間人進行的攻擊,但最終卻發現另一個名為 CVE-2020-1424 的漏洞。在繼續深入研究後,他識別了現時被稱為 Zerologon 的漏洞。

他的發現中最關鍵一環就是,Microsoft 實施了一個與其他遠端程序調用協議(RPC)完全不同且獨特的密碼編碼方法。在 Windows NT 年代,電腦帳號的分派並未被列為頂級重要事項,這亦表示 Microsoft 不能使用標準的 Kerberos 或 NTLM 來認證電腦或機器帳號。

因此,開發人員採取了另一選擇擇。要為加密功能創建一套不會被破解的編碼及協定是一件極為困難的任務。事實上,很可能要一段很長時間才會發現缺陷,就如今次事件一樣。

攻擊如何運作

透過更改或移除域控制器上一個服務帳號的密碼,漏洞讓黑客接管域控制器,包括根域控制器。黑客之後就可以簡單地阻斷服務或接管及操控整個網絡。

要利用此漏洞,黑客需要和域控制器建立一個傳輸管控協定(TCP)。假如這是實際位於網絡之內的,它可能是在一個用戶的桌面電腦或是在一個地點的開放連接埠上,例如在一個會議室之內。

這些入侵都會被界定為內部人士攻擊,亦是今時今日的機構所面對最昂貴的攻擊。攻擊亦可來自網絡以外,只要攻擊者能在某處設立據點及在控制器建立 TCP 環節。

利用 AES-CFB8 及一個包含 16 個字節為零的固定值初始化向量圖形(IV),Tervoort 發現每使用 256 條匙就有機會出現一個所有數值都是零的密文。這亦大大減少攻擊者建立所有數值都是零的密文的時間,黑客的電腦最多只要 2 至 3 秒就可以完成這程序。

AES-CFB8 encryption (all-zero IV and plaintext) diagram

這有甚麼重要性?

假如機器與一名如常工作用戶所屬的網域控制器溝通,問題應該不大。雖然這個建構欠佳的加密文本會出現,但網絡認證程序依然能如常運作。但當黑客試圖入侵系統時,問題便會浮現。

在 Tervoort 確認的攻擊中,黑客會先干擾網絡客戶機的憑證或密碼。由於在 MS-NRPC 上 IV 的實施欠佳,黑客只須 256 次嘗試就可以成功。

通常一個用戶帳號在嘗試猜測密碼三次之後就會鎖機,但電腦或機器帳號的安排並不一樣。在登入電腦時並不會有輸入錯誤密碼次數的限額,亦即表示黑客可在短時間內持績不斷嘗試猜測密碼。他們需要找到其中一條能產生全數是零的密文。

黑客在干擾網絡上電腦的身份後可以做甚麼? 當成功干擾了身份之後,攻擊者仍未找出真正的加密匙,他們需要從 256 條匙中找出可以產生全零密文的一條匙才可以真正干擾身份。下一步就是要停止「簽署及蓋章」程序。

在 MS-NRPC 之內傳輸加密數據,必須進行遠端程序調用簽署及蓋章。這看來是一個合乎邏輯的程序,因為我們可以加密大部份傳輸的資料。但在 MS-NRPC 之內,這卻只是一個選項,用戶可以簡單的在訊息頂部不作標記就可以停用這功能。

一旦簽署及蓋章功能被停用,訊息發送就會在全無保護下進行。黑客亦可為所欲為,包括移除或另行設定密碼。在 2021 年 2 月 Microsoft 將發出另一個補丁,硬性規定啟用簽署及蓋章。

第三步就是更改已被干擾帳號的密碼。對攻擊者而言,最有效果的干擾對象就是 AD 伺服器,而根 AD 伺服器就更理想。要更改密碼,攻擊者會在 MS-NRPC 使用 NetServerPasswordSet2 的訊息。

更改密碼可以簡單至發出包含密碼的框架即可。最容易的方法就是移除密碼及將之重設至空白數值,讓黑客可以透過正常程序登入。

NetrServer


假如攻擊隨機針對網絡上的電腦,這電腦將不能再登入網絡。因此,這攻擊的第一個後果就是這部電腦的服務被阻斷。

對全球的影響

不少入侵工具的概念驗證已在市面出現,假如 AD 伺服器沒有補丁,對業務可能造成重大傷害,因為攻擊者可以利用它來在網絡注入勒索程式。

不過市面亦有一些工具讓您可以檢查伺服器是否容易受影響。Tervoort 及 Secura 在 GitHub 上發表了一項工具以辨識您的網域控制器是否已補丁或是否容易受攻擊。

CVE-2020-1472 的補丁

在 2020 年 8 月,Microsoft 發佈了 CVE-2020-1472(Zerologon)的補丁。所有 AD 伺服器(2008 R2 及以上)應盡快進行補丁。但由發出補丁至真正部署的平均時間依然太長。

研究人員表示,一家機構平均需要在補丁發出的 60 至 150 日(約 5 個月)才會完成部署。這就是補丁平均時間(MTTP)。

不幸的是,新發出的補丁並不能完全解決問題。Microsoft 計劃在 2021 年 2 月發出第二期補丁,其中將包含強制執行功能。

屆時,所有裝置都要使用安全管道模式,否則將被拒絕登入。假如擁有老舊的不合規裝置,它們可被手動加入接納不合規裝置登入的群組政策。

虛擬修補程式

用戶也應採用傳統的保安措施來偵測被入侵的帳號及網絡、惡意流量和其他入侵指標。要監控勒索程式、病毒及其他威脅,採用入侵防禦系統及針對網絡與主機裝置(所有用戶端)的反惡意程式軟件是非常關鍵一環。

所收集的活動目錄需要集中由 SIEM 分析。當目錄完成分析後,機構應該有相關人員及程序來應對入侵指標(IoC)。然後一個擁有完善程序及知識豐富的事故回應團隊將會接管,以決定入侵的影響程度及制定解決方法。

即使廠商發佈了補丁,很多用戶仍然需要時間去部署補丁及實施額外的保安措施來保護其環境。透過 IPS 等系統提供的虛擬補丁,讓管理員及保安專材擁有額外工具,

爭取關鍵時間保護網絡。雖然廠商補丁仍然是建議的解決方法,但虛擬補丁方案亦可協助保護未補丁的機器。在很多情況下,它亦可透過目錄檢查來提供關於補丁後試圖入侵狀況的寶貴資訊。

趨勢科技客戶可參考此知識庫文章,進一步了解對應漏洞的最佳實務守則及我們可提供的協助:https://success.trendmicro.com/solution/000270328

Zerologon 內容

相關資源

相關研究