Collision-Resistance

Flame 惡意軟體如何利用 MD5 衝突?

  • February 24, 2017

據說惡意軟體 Flame使用 MD5 衝突來獲取“證書的偽造副本”。

我們知道 MD5 在碰撞攻擊時會被破壞,但在前映像攻擊時不會被破壞,因此獲得假證書的唯一方法是在申請合法證書時生成假證書。

我的問題是:

  1. 病毒製造者這樣做是不是太危險了?(我們可以檢查誰申請了合法證書並抓住他。)
  2. 如果他可以申請合法證書,為什麼還要製作偽造證書?為什麼不使用合法證書來簽署他喜歡的任何東西?

我認為您錯過了閱讀該 Wikipedia 文章的一部分:

… Flame 是使用據稱來自 Microsoft 強制許可中間 PCA 證書頒發機構的欺詐證書籤署的。 惡意軟體作者發現了一個 Microsoft 終端伺服器許可服務證書,該證書無意中啟用了程式碼簽名並且仍然使用弱 MD5 散列算法,然後生成了證書的偽造副本,他們使用該證書對惡意軟體的某些組件進行簽名以使其出現起源於微軟。

(強調我的)

簡而言之,這意味著惡意軟體作者不需要自己/她自己/他們自己申請證書。相反,惡意軟體作者使用了他/她/他們發現的正版 Microsoft 證書,並在此基礎上創建了一個假證書。這樣一來,似乎微軟自己已經簽署了一些文件——微軟(當然)沒有簽署。

所以,你的……

因此,獲得假證書的唯一方法是在申請合法證書時生成假證書。

……部分正確,但這只是硬幣的一方面。獲得假證書的另一種方法是從其他人那裡找到合法但脆弱且可利用的證書——比如本例中來自 Microsoft 的證書。

話雖如此,讓我們回答您的兩個問題:

  1. 惡意軟體作者這樣做是不是太危險了?(我們可以檢查誰申請了合法證書並抓住他)

不,因為假證書是基於微軟證書的,惡意軟體作者得到了他/她/他們的手。這樣,假證書指向 Microsoft(就像它所基於的正版證書一樣),而不是任何惡意軟體作者的身份。

  1. 如果他可以申請合法證書,為什麼還要製作偽造證書?為什麼不使用合法證書來簽署他喜歡的任何東西?

如果不是 Microsoft,惡意軟體作者幾乎沒有機會申請合法的 Microsoft 證書……而且他/她/他們自己名字的證書確實對他/她/他們毫無用處預期的目的,因為這會將他/她/他們的名字添加到等式中。

申請他/她/他們自己的合法證書將是一個非常愚蠢的舉動,同時可以選擇冒充微軟這樣的受信任公司。請記住,惡意軟體作者可以訪問啟用了程式碼簽名的正版 Microsoft 證書。(見我回答的第一句話)

總而言之,你可以說惡意軟體作者發現了“彩虹盡頭的一罐金子”(閱讀:啟用程式碼簽名的弱且可利用的 Microsoft 證書)並使用他/她/他們發現的東西他/她/他們最大的惡意優勢。

微軟丟了一個球,惡意軟體作者撿起了它。對他們來說就是這麼簡單。微軟得知情況後,也進行了相應的處理。

引用2012 年 6 月 3 日的“Microsoft 發布安全公告 2718704” :

我們正在採取幾個步驟來消除這種風險:

  • 首先,今天我們發布了一份安全公告,概述了我們的客戶可以採取哪些步驟來阻止由這些未經授權的證書籤名的軟體
  • 其次,我們發布了一個更新,可以自動為我們的客戶執行此步驟。
  • 第三,終端伺服器授權服務不再頒發允許對程式碼進行簽名的證書

這些操作將有助於確保可能由攻擊者使用此方法生成的任何惡意軟體組件不再具有看起來好像它們是由 Microsoft 生成的能力

(強調我的)

但他們是怎麼做到的?

引用“nakedsecurity”中的一篇文章 – Sophos 的部落格

在 Flame 案例中,攻擊者使用 MD5 作為其雜湊值並使用 RSA-2048 作為其公鑰加密的合法 Microsoft 證書。然後,他們使用相同的 MD5 雜湊生成了一個相似但不同的證書。這意味著微軟正版證書中的 RSA-2048 簽名可以移植到他們的偽造證書中,使其看起來有效。

顯然,上面的引用並沒有真正提供任何真實的細節。

事實上,解釋所有細節有點過於寬泛,無法在此處作為答案發布,但如果您真的想深入分析 Flame MD5 案例,請查看 PDF:“Analyzing the MD5 collision in Flame”。這 40 頁/幻燈片通過螢幕截圖等引導您了解詳細資訊。

長話短說:**對於 Flame,使用了針對 MD5 的選擇前綴碰撞攻擊。**其惡意軟體作者使用選擇前綴衝突攻擊的新變體,通過仍然使用受損 MD5 算法的 Microsoft 根證書來欺騙其組件的程式碼簽名。

引用自:https://crypto.stackexchange.com/questions/44151