三秒入侵 Windows AD:Zerologon 災難級漏洞的完整解析

Zerologon 災難級漏洞的完整解析

關於 Windows Netlogon 遠端協定的漏洞「Zerologon」(編號 CVE-2020-1472)上週遭到研究人員揭露,而此漏洞相當罕見地被通用漏洞評分系統 (Common Vulnerability Scoring System, CVSS) 評為風險最高的 10 分,可說是具有災難等級的衝擊性。

美國國土安全部上週也針對 CVE-2020-1472 發出緊急指令 (Emergency Directive),要求所有政府機構在 9 月 21 日前完成相關的修補措施。

利用 CVE-2020-1472 漏洞,駭客得以直接使用攻擊程式針對 DC 主機進行連線,取得 Windows Domain Controller (DC) 的權限並更改密碼,進而完全掌控 Windows Active Directory (AD) 網域控制站,並任意將惡意程式安裝到網域下的所有裝置中。此漏洞也令駭客能夠繞過特權機制,平均僅需 3 秒鐘即可成功駭入,成為網路安全相當嚴峻的破口。

奧義智慧團隊近來亦觀測到,CVE-2020-1472 漏洞目前已出現相關的自動化攻擊程式,如駭客常用以執行 Credentials Dumping 的工具 Mimikatz 模組、以及 PowerShell 攻擊腳本等,在不到一天的時間內陸續出現。由於此漏洞已被武器化公開在網路上,近期極有可能大量被 APT 組織利用,針對各單位發動網路攻擊,危害範圍難以估計,千萬不可掉以輕心

奧義智慧 CyCraft AIR 成功獵捕 Zerologon 並發出告警
奧義智慧 CyCraft AIR 成功獵捕 Zerologon 並發出告警

以下文章中,我們會先帶大家從美國官方的應對方式瞭解此漏洞的嚴重性,再來,則是針對 CVE-2020-1472 漏洞進行詳細的技術手法分析,以及分享其它利用此漏洞的衍生攻擊,並會在文章的最後提供一段簡單的總結,以及相關的修補建議。

奧義智慧 CyCraft AIR 已能夠偵測利用此漏洞之攻擊行為,並在偵測到相關攻擊行為的當下立即發出告警。若您對奧義智慧的自動化資安防護服務有興趣,歡迎隨時來信與我們聯繫。

美國官方對 CVE-2020-1472 的重視與應對

CVE-2020-1472 漏洞遭到資安人員揭露後,美國國土安全部 (United States Department of Homeland Security, DHS) 隨即在 9 月 18 日發布了編號 20-04,亦即今年的第四次緊急命令,限時三天內要求所有政府機關在 9 月 21 日午夜前,全面性針對具有網域控制器 (Domain Controller) 權限的 Windows 伺服器安裝 Windows 八月安全更新 Patch。

除此之外,緊急命令中也提到,所有單位需要 9 月 23 日向美國的網路安全與基礎安全署 (Cybersecurity and Infrastructure Act, CISA) 提交一份完整報告,向 CISA 證明已經完成所有針對 CVE-2020-1472 的修復、系統安全更新、相關設備盤點等應變動作。

未依照緊急命令於期限內完成更新和提交報告的單位,CISA 將從 10 月 1 日開始約見該單位的相關主管人員,包含資訊長 (Chief Information Officer, CIO) 或高層級風險管理人員 (Senior Agency Officials for Risk Management, SAORM) 等。CISA 也預計將在 10 月 5 日,向國土安全部和預算管理辦公室 (Office of Management and Budget, OMB) 提出一份報告。

從上述這一連串密集的緊急應變措施,應不難看出,美國官方對於 CVE-2020-1472 漏洞表現了極高的重視程度,而此漏洞影響範圍確實甚鉅,恰逢美國的總統大選迫在眉睫、美中關係日漸複雜,以及年初起新冠肺炎造成的全球局勢動盪等,處在網路安全格外敏感的風口浪尖上,均使得資安威脅、駭客攻擊風險大幅增加

現階段關於 CVE-2020-1472 的中文報導較少,也尚未在國內獲得足夠高的聲量與關注,奧義團隊強烈提醒國人,正視並嚴肅以待 CVE-2020-1472 這個可讓駭客輕易進入並掌控系統的漏洞,並應盡快落實安全性更新及實施資安檢測,亦可參考前述美國官方的作法。


漏洞利用手法分析

CVE-2020-1472漏洞揭露後,引起全世界資安研究團隊的關注,我們持續搜集相關的技術研究,以下我們對此漏洞進行技術剖析及後續追蹤。

漏洞利用流程

參考 Secura 的報告 [1],我們將本次漏洞之利用流程整理如下圖。此流程為Netlogon Remote Protocol 的簡易流程圖,左方為 Client — 內部機器,在此攻擊中,即代表攻擊者的位置;右方則是 Server — Domain Controller,即代表遭受攻擊的對象。

CVE-2020-1472 漏洞利用流程圖
CVE-2020-1472 漏洞利用流程圖

可以看到圖中我們標示出了 Protocol 的運作流程及對應的 Windows API(以攻擊端為主)。

在攻擊一開始的時候,攻擊端先送出一個 Client Challenge,由於 Challenge 是攻擊者可控的,將此 Challenge 設定為 0000…0;緊接著,Server 亦會產生一個 Server Challenge。

雙方 Challenge 交換完成後,可透過 KDF(Key derivation function,金鑰衍生函式)產生後續使用的 Session Key。其中,secret 為原先的帳號密碼,因此密碼對正常使用者和 Domain Controller 而言都是已知的,也因此,雙方可計算出一把 Session Key,後續的通訊會利用到這把 Session Key 進行驗證。而在攻擊情境中,攻擊者不知道密碼,故無法計算出Session Key。

接下來,就是本次漏洞發生的地方,在第三步驟的 Client Credential 中,會利用 Session Key 將前述之 Client Challenge 加密,並回傳給 Server 做驗證。也就是說,Encrypt 的結果會被放入 NetrServerAuthentication3 的 credential 參數中,提供給 Server 進行確認。

在沒有漏洞的狀況下,由於攻擊者無法得知 Session Key,也無法成功算出Client Credential,在第四步驟時當然便無法通過 Server 的認證。因此,若能在 Session Key 未知的前提下,有辦法計算出 Client Credential,便能夠成功繞過 (Bypass) 身份驗證。

在 CVE-2020-1472 漏洞中,由於使用了 AES-CFB8 加密模式,並將 IV 固定為 0000…0,造成當 Client challenge 為 0000…0 時,會有相當高的機率 (1/256) 得到 0000…0 這個加密結果。因此,有一定機率可藉此通過第四步 Server 端的驗證。

至於 AES-CFB8 加密的演算法為何會導致此結果呢?接下來,我們將深入分析 AES-CFB8 演算法和本次漏洞在演算法上的成因。

AES-CFB8

AES-CFB8 事實上是一種弱化版的 AES 加密演算法,它會在明文前面加上 IV 前綴,經過 AES 對 IV + plaintext 的前 16 bytes 做運算,把運算結果的第一個 byte 與下一輪的運算子第一個 byte 做 XOR 運算並更新。

簡化版的執行流程如下所示:

IV = Randomized 16 bytes string
key = Predefined Key

Proc:
    input = IV + plaintext[:16]
    output = AES_op(input, key)
    input_2 = output[0]
    output_2 = XOR(plaintext, input_2)[0]
    plaintext = output_2 + plaintext[1:]
    repeat Proc

cypher = plaintext

下圖以 Jarvis 在 modernnetsec 上介紹的內容[2] 為例。首先,IV 的第一個 Byte 會經過 AES_op 算出 64,64 再和明文第一個 Byte 74 做 XOR 得出密文的第一個 Byte 10。於此同時,新產生的密文 10 會變成 IV 的最後一個 Byte,並 Rotate 掉原先 IV 的第一個 Byte。

接著,IV 的第二個 Byte 也經過 AES_op 算出 73,明文第二個 Byte 65 和 73 算出第二個密文 16,同樣的,這個密文也會放入新的 IV 中。以此類推,直到所有的明文完成加密,就完成了 AES-CFB8 的加密演算。

AES-CFB8 的加密演算

漏洞成因及利用:AES-CFB8 實作缺失

AES-CFB8 演算法之所以會造成漏洞,主要成因在於若將每次運算中的 IV 都設定為 000…00,當攻擊者將明文也一樣設成 000…00,根據上方的演算法解釋,只要第一輪運算結果產生出的密文第一個 Byte 也為 0,下一輪的輸入第一個 Byte 就也會是 0。而其造成的連鎖效應,最終就會導致運算結果為 000…00。至此,攻擊者便可在平均機率 1/256 的嘗試中,成功使用這個漏洞向 Server 驗證自己的身份。

IV = 000...00 (16 bytes)
plaintext = 000...00 (16 bytes)
key <= Predefined Key

Proc:
    input = IV + plaintext[:16]
    output = AES_op(input, key)
    input_2 = output[0] == 0
    output_2 = XOR(plaintext, input_2)[0] == 0
    plaintext = output_2 + plaintext[1:] == 000..00
    repeat Proc

cypher = plaintext == 000...00

下圖同樣以 Jarvis 的範例 [2] 來說明,可以先觀察兩個重點:

  1. 不安全的 IV 設定:IV 部分皆為 000…00
  2. 可控的明文:攻擊者可以設定 Client Challenge 為 000…00,故此次攻擊手法屬於 Chosen-plaintext Attack

在AES-CFB8中,攻擊者設定 Client Challenge 為 000…00

上圖中我們可以看到,若是 AES_op 對 IV 0 計算結果為 0 時,這個 0 與明文的 0 做 XOR 結果自然也會是 0。因此,新的密文與新的 IV 都會固定下來,導致 AES-CFB8 卡在 0 的結果。要達成這個狀況,需要暴力嘗試多次,直到遇到一組將 0 加密後仍為 0 的 Key 為止,機率大約為 1/256,亦即平均僅 256 次即可能成功一次,而實作上 256 次大約只需短短 3 秒就能執行結束。

Mimikatz lsadump::zerologon 駭客工具整合

在 CVE-2020-1472,也就是被稱為 Zerologon 的這個漏洞被揭露後,知名駭客工具 Mimikatz 在一天之內便完成了 Zerologon 的整合,讓紅隊和惡意攻擊者能開始利用。可以合理地預料,這項已被武器化的漏洞,將在近期之內,開始被運用在實際的攻擊行動之中。

駭客工具 Mimikatz 在一天之內完成 Zerologon 的整合

下圖為此攻擊主要的程式碼,首先進行了 2,000 次的暴力嘗試,由於平均機率約為 1/256,故這個遠大於 256 的次數,便有高機率能夠成功。而在迴圈中,先是利用了 NetrServerReqChallenge 送出 Client Challenge,此處的 Authenticator.Credential 為 0,接著再用 NetrServerAuthenticate2 進行認證,此處 Authenticator.Credential 也同樣為 0。若成功驗證之後,再呼叫 NetrServerPasswordSet2 更改密碼。

Zerologon 攻擊的主要程式碼

後續的衍伸攻擊研究

除了前述攻擊手法外,世界各地的資安研究員們針對 CVE-2020-1472 持續進行研究,並且做了許多延伸的攻擊,以下是奧義團隊目前較為關注的幾項。

Mimikatz 加密網路流量,避免網路設備偵測

漏洞揭露後,ZenGo 的 Tal Be’ery 便在 Twitter 上分享了他寫的 pcap filter,可在網路層進行偵測。Mimikatz 隨後於 9 月 18 日更新 Zerologon exploit 開啟封包加密 (RPC_C_AUTHN_LEVEL_PKT_PRIVACY),致使針對網路層封包做 Pattern Matching 的該偵測方法失效。

若是自身 AD 沒對外網,攻擊者也有機會能先打下一台內網機器,並在此機器上使用 Zerologon 來攻擊 AD。在這種情境下,進行端點偵測也是有其必要性和價值的,比較好的端點偵測做法是在 NetrServerAuthenticate2 跟 NetrServerAuthenticate3 做 hook 來偵測並且阻擋這種攻擊。推薦可以考以下文章:

Micropatch for Zerologon, the "perfect" Windows vulnerability (CVE-2020-1472)

一開始的研究,僅有提到需要注意 NetrServerAuthenticate3 (Op 26),但事實上,Mimikatz 及一些公開 POC 是使用了 NetrServerAuthenticate2 (Op 15) 這個 API 來取代。不過,根據 Tal Be’ery 在推特上發表的相關敘述,微軟的 patch 的確有把兩邊 API 都做修補。另外,比較通用的網路層偵測方法,則是檢查是否有重複性地 Netlogon 驗證封包帶隨敏感的 NegotiateFlags (0x212fffff)。

不需重置 Password 即可用的 Exploit

Fox-IT 的研究員 Dirk-jan 也在上分享他們的研究,許多網路層的防禦(如前述 Tal Be’ery 的規則)會偵測修改密碼為 0 的這一點。因此,Dirk-jan 利用 NTLM-Relay 及 MS printerbug 來繞過此限制,不需修改密碼為 0 亦可以成功。

Patch 後是否還有風險?

雖然微軟的 Patch 並沒有針對 IV 初始值做變更,但有鑒於微軟 Patch 檢查了 Client Challenge 是否前五個 bytes 不為一致,要撞到的機率粗估已下降到四百億分之一左右,現階段看起來應該還算是安全。


漏洞利用簡述與如何修補

微軟的 NetLogon 遠端協定一般用於驗證使用者帳戶、電腦帳戶等,而本次 NetLogon 的加密驗證演算法出現漏洞,致使攻擊者可偽造成任意身分,登入 Domain Controller 或修改 Windows AD 網域主機的密碼,且攻擊者僅需和網域控制站建立 TCP 連線、不需要加入網域也可逕行利用,危害範圍及程度均屬嚴重。

在本篇文章中,我們瞭解了 CVE-2020-1472 的漏洞成因及攻擊手法分析,而攻擊者利用此漏洞可能的入侵攻擊過程,大致可被簡化為以下:

  1. 利用 Zerologon 漏洞偽造身分,並與網域控制站溝通。
  2. 藉由 Netlogon 協定中內建的設定密碼功能,更改網域控制站的電腦帳戶與密碼。
  3. 利用修改後的電腦帳戶密碼,以 DCSYNC 等攻擊方式獲取整個網域的帳號密碼,進而控制整個網域。

針對 CVE-2020-1472 漏洞,以及相關聯的攻擊手法等,目前的應對與修復方式,為盡快更新 Windows Active Directory 網域控制站,並依據微軟官方的建議開啟強制模式。針對不同的 Windows 伺服器版本,微軟發布了 KB4565349、KB4565351、KB4566782、KB4571694、KB4571702、KB4571703、KB4571719、KB4571723、KB4571729、KB4571736 等相關資訊。

針對企業端點與網路,也建議應部署可有效應對新興威脅的偵測防護系統,或執行資安健診檢測是否受相關攻擊影響,以利在第一時間內進行資安事件的處理。

奧義智慧 CyCraft AIR 已能夠偵測利用此漏洞之攻擊行為,並在偵測到相關攻擊行為的當下立即發出告警;另外,奧義智慧科技與中華資安合作推出 AI 巡檢包方案,協助單位清查、盤點場域內電腦與設備,並且偵測未知惡意程式、阻擋惡意攻擊行為,健診後提供完整的安全綜合評分及分析報告。

若您對奧義智慧的自動化資安防護服務,或奧義智慧與中華資安聯手推出的 AI 巡檢包服務有興趣,歡迎隨時來信 contact-tw@cycraft.com 與我們聯繫。

結論

即將到來的十月,向來是臺灣遭受駭客攻擊的高峰時期,而後疫情時代下美中臺角力關係日趨複雜,CVE-2020-1472 漏洞及攻擊手法在這段高風險時期橫空出世,若臺灣政府與企業不夠重視此漏洞、未積極更新伺服器的話,CVE-2020-1472 就很可能會直接變成天上掉下來給駭客的禮物,掀起一陣腥風血雨,造成無法估算的嚴重損失

CVE-2020-1472 漏洞可繞過特權管理機制,瞬間瓦解企業的資安防禦體系直接造成危害,美國官方已全面動起來積極以對,而我們也要不厭其煩地再次呼籲,資安高風險時期近在眼前,請務必積極地全面落實安全性更新,針對所有具有 DC 權限的 Windows 伺服器安裝最新的安全更新,並安排單位設備進行資安檢測排查,以確保未受到資安威脅的影響。


參考資料
  1. “Zerologon: Unauthenticated domain controller compromise by subverting Netlogon cryptography (CVE-2020-1472)” by Tom Tervoort, Secura, September 2020
  2. Zerologon — hacking Windows servers with a bunch of zeros”, by Paul Ducklin.
  3. Micropatch for Zerologon, the perfect Windows vulnerability” (CVE-2020-1472)”
  4. https://twitter.com/TalBeerySec/status/1306587772640083971
  5. https://twitter.com/_dirkjan/status/1307662409436475392
  6. https://github.com/dirkjanm/krbrelayx/blob/master/printerbug.py

Writer: CyCraft

關於 CyCraft

奧義智慧科技(CyCraft Technology)是一家專注於 AI 自動化技術的資安科技公司,成立於2017年。總部設於台灣,在日本和新加坡均設有子公司。為亞太地區的政府機關、警政國防、銀行和高科技製造產業提供專業資安服務。獲得華威國際集團(The CID Group)和淡馬錫控股旗下蘭亭投資(Pavilion Capital)的強力支持,並獲得國際頂尖研究機構 Gartner、IDC、Frost & Sullivan 的多項認可,以及海內外大獎的多次肯定。同時也是多個跨國資安組織和台灣資安社群的成員和合作夥伴,長年致力於資安產業的發展。

訂閱奧義智慧電子報

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
點擊此按鈕,即表示您同意奧義智慧的隱私權政策,並同意奧義智慧使用您所提供的資訊並寄送資訊給您。您隨時可以取消訂閱。