首頁 > 資安知識庫 > 駭客攻防與惡意程式威脅 > 惡意程式、病毒與木馬

WannaCry 勒索軟體分析-加密與解密原理

作者:台灣電腦網路危機處理暨協調中心資料提供 -2017 / 08 / 02 列印 加入我的最愛 分享 將這篇文章分享到 Plurk 噗浪

今年五月全球傳出大量遭 WannaCry 勒索軟體攻擊之災情,經多家資安公司與組織報導指出被勒索之受害者會被要求支付 300 至 600 美金等價之比特幣以解密被其加密之檔案。

WannaCry 最早可追溯至 2016 年 8 月Shadow Broker 駭客集團宣稱成功竊取另一 Equation Group 駭客集團之多項攻擊程式,其中包含數個路由器相關零時差弱點攻擊工具,但多數工具以加密保護,以競標方式出售,得標者可獲得解密金鑰。 今年 4 月Shadow Broker 駭客集團公開其中之多項攻擊程式,其中之一即為 EternalBlue (永恆之藍)。同年 5 月全球傳出大量遭 WannaCry 勒索軟體攻擊災情,而此攻擊即利用 EternalBlue (CVE-2017-0145) 工具攻擊網路芳鄰弱點取得遠端控制權後,進行蠕蟲自動擴散。微軟於今 年 3 月發布 MS17-010 更新,其中包含多項 SMB 網路芳鄰相關漏洞之修補,並於今年 5 月 13 日,罕見的發布已停止支援之 Win XP 作業系統更新,以避免 WannaCry 災情擴大。 本文將針對 WannaCry 之加密與解密原理進行深入的分析。

加密原理
WannaCry 運作過程中運用多把 RSA 與 AES 金鑰,整體運作流程(圖一)。主要負責加密之 DLL 於執行時會先將內嵌於其內之命名為 RSA1 之 RSA公鑰 (Pub1) 載入,此金鑰所對應之私鑰 (Pri1) 為勒索者所掌控,理論上若可取得 Pri1私鑰,所有遭該版本勒索軟體加密之檔案應可解密。此 DLL 動態產生一組每個受害者不同之 RSA 公鑰 (Pub2) 與私鑰 (Pri2),並將 Pub2 保存於 000000000.pky 檔案中,而 Pri2 則以 Pub1 加密後保存於 00000000.eky 檔案中(若可於受害者電腦中找出 Pri2,則可將該電腦之所有被加密檔案復原)。最後,DLL 會對每個受害者檔案動態產生一個 AES 金鑰,並將該檔案以此 AES 金鑰加密後,再以 Pub2 將此 AES 金鑰加密,並刪除原始檔案。 

                      
                                                                 圖一、 檔案加密流程

解密原理
如上所述,理論上解密時若將 00000000.eky 傳送給勒索者,勒索者使用其 Pri1 私鑰將 Pri2 私鑰解出,即可將所有被加密檔案之 AES 金鑰解出,進而還原檔案內容。然而交付贖金後,勒索者是否會提供解密服務,則是無法保證。

另一種解密方式為尋找WannaCry 程式記憶體是否存在大質數,並計算解密金鑰。去年5月一位法國人AdrienGuinet公開其搜尋WannaCry之解密金鑰程式WannaKey [1]。由於WannaCry程式所呼叫之 Windows API 並未於製作完 RSA 金鑰後,將過程中所使用到之兩個大質數於記憶體中清除乾淨,因此只要記憶體未被覆寫、程式沒有被關閉或電腦沒有重啟,就有機會從記憶體中找出這兩個大質數。一旦找出,便可計算出解密金鑰 Pri2,進而解出 AES 金鑰將檔案復原。隔日 Benjamin Delpy 參考 WannaKey 原理,發佈 Wanakiwi [2] 解密程式,並驗證可於 Windows XP (x86)、Windows 7 (x86)、與 Server 2003 環境成功復原檔案。截至目前為止,WannaKey 最新版本為 6 月 3 日所釋出之 2.2 版,並已被驗證可於Windows XP、Windows 7 x86、Windows Vista、Windows Server 2003、與 Windows Server 2008 版本作業系統解密成功。以下將對最早提出解密原理的 WannaKey 程式原始碼進行分析。

1
推薦此文章
5
人推薦此新聞
我要回應此文章
您的姓名:
回應內容:
  輸入圖片數字

你或許會對這些文章有興趣…