第一章 前言
近日, 360互聯網安全中心發現全球多個國家和地區的機構及個人電腦遭受到了一款新型勒索軟體攻擊, 並於5月12日國內率先發佈緊急預警。 該款勒索軟體在短時間內在全球範圍內爆發了廣泛的攻擊活動, 據不完全統計, 它在爆發後的幾個小時內就迅速攻擊了99個國家的近萬台設備, 並在大量企業組織和個人間蔓延。 外媒和多家安全公司將其命名為“WanaCrypt0r”(直譯:“想哭勒索蠕蟲”)。
通常, 常規的勒索病毒是一種趨利明顯的惡意程式, 它會使用非對稱加密演算法加密受害者電腦內的重要檔並以此來進行勒索,
360核心安全部門追日團隊深入分析病毒原理, 發現了其加密資料最精准的恢復技術, 使用此技術360在全球獨家發佈了“想哭勒索蠕蟲資料恢復工具”, 説明病毒受害者恢復被蠕蟲加密檔, 可以達到目前最全最快的資料恢復效果,
第二章 加密檔核心流程分析
蠕蟲釋放一個加密模組到記憶體, 直接在記憶體載入該DLL。 DLL匯出一個函數TaskStart用於啟動整個加密的流程。
程式動態獲取檔案系統和加密相關的API函數, 以此來躲避靜態查殺。
1.加密入口
l調用SHGetFolderPathW獲取了桌面和文檔資料夾的路徑, 調用10004A40函數獲得非當前使用者的桌面和文檔資料夾, 分別調用EncryptFolder對資料夾進行加密操作
l從Z倒序遍歷盤符直到C, 遍歷兩次, 第一次遍歷本地盤符(跳過光碟機), 第二次遍歷移動盤符, 分別調用EncryptFolder對資料夾進行加密操作
2.檔遍歷
lEncryptFolder函數是一個遞迴函數, 遞迴遍歷資料夾, 按照下圖的描述搜集檔資訊:
遍歷過程中排除的路徑或者資料夾名稱:
其中有一個很有意思的目錄名“ This folder protects against ransomware. Modifying it will reduce protection”,
l在遍歷檔的過程中, 會獲取檔資訊(大小等), 並且根據尾碼名使用下表的規則對檔進行分類(type):
type列表1:
type列表2:
3.檔處理佇列
WanaCrypt0r為了能儘快的加密其認為重要的用戶檔,設計了一套複雜的優先順序佇列。
佇列優先順序:
i.對type2(滿足尾碼列表1)進行加密(小於0x400的檔會降低優先順序)
ii.對type3(滿足尾碼列表2)進行加密(小於0x400的檔會降低優先順序)
iii.處理剩下的文件(小於0x400的文件),或者其他一些文件
4.加密邏輯
加密過程採用RSA+AES的方式完成,其中RSA加密過程使用了微軟的CryptoAPI,AES代碼則靜態編譯到DLL中。加密流程如下圖所示:
使用的金鑰概述:
加密後的檔案格式示意:
值得注意的是,在加密過程中,程式會隨機選取一部分檔使用內置的RSA公開金鑰來進行加密,這裡的目的是解密程式提供的免費解密部分檔功能。
能免費解密的檔路徑在檔f.wnry中,如下:
5.亂數填充
在完成加密之後,WanaCrypt0r會對其認為重要的檔進行亂數填充,然後將檔移動到指定的暫存檔案夾目錄然後刪除。此舉用於對抗檔案修復類軟體,同時兼顧加密檔的速度。
被亂數填充的檔需要滿足以下幾點:
n在特殊目錄(桌面,我的文件,用戶資料夾)
n檔小於200M
n檔尾碼在type清單1
填充的邏輯:
n如果檔小於0x400,直接覆蓋對應長度的亂數。
n如果檔大於0x400,對檔距離末尾0x400處進行覆蓋。
n再次重定位檔指針到檔頭,以0x40000大小的緩衝區為單位向寫亂數直到檔末尾。
6.檔刪除操作
WanaCrypt0r首先嘗試將樣本移動到暫存檔案夾,生成一個暫存檔案,然後再嘗試多種方法刪除檔。
當採用遍歷磁片的方式加密檔的時候,會在當前盤符生成“$RECYCLE”+ 全域自增量+”.WNCYRT”(eg: "D:\$RECYCLE\1.WNCRYT")的暫存檔案。特別的,當盤符為系統磁片(eg:C)時,使用的是系統的臨時目錄(%temp%)。
之後進程以固定時間間隔啟動taskdl.exe來刪除暫存檔案夾下的檔。
第三章 資料恢復可行性分析
根據對WannaCry蠕蟲的執行邏輯進行分析,該蠕蟲在加密執行緒中會對滿足條件的檔用亂數或0x55進行覆寫,從而徹底破壞檔的結構並防止資料被恢復,但是只限定於特定的資料夾和特定的尾碼名。也就是說該蠕蟲只對滿足條件的檔進行了寫覆寫操作,受害者機器上仍然有很多的檔未被覆寫,這就為資料恢復提供了可能。
在刪除執行緒中,蠕蟲是先將原始檔案通過MoveFileEx函數移動到其創建的暫存檔案夾下,最後統一進行刪除。在這個過程中原始檔案的檔案名會發生改變,常規資料恢復軟體不知道這個檔操作邏輯,導致大部分檔無法恢復,只能恢復小部分檔,恢復資料效果極差。
另一方面,因為刪除操作和加密操作在不同的執行緒中,受用戶環境的影響,執行緒間的條件競爭可能存在問題,從而導致移動原始檔案的操作失敗,使得檔在當前位置被直接刪除,在這種情況下被加密的檔有很大概率可以進行直接恢復。但是滿足這種情形的檔畢竟是少數,如果採用常規資料恢復軟體則只能恢復少量此類檔。
根據以上分析,我們發現了除系統磁片外的檔,用我們精細化處理的方法進行資料恢復,被加密的檔其實是有很大概率可以完全恢復的。據此360開發了專門的恢復工具2.0版,以期幫助在此次攻擊中廣大的受害者恢復加密資料:
http://dl.360safe.com/recovery/RansomRecovery.exe?from=360zhuiri
繼14日淩晨360全球首家發佈恢復工具,為病毒受害者搶救了部分檔後。此次更新發佈2.0版工具進一步挖掘病毒加密邏輯漏洞,清除病毒防止二次感染,並利用多重演算法深度關聯出可恢復檔並對受害者的檔進行免費解密,一站式解決蠕蟲勒索軟體帶來的破壞,最大程度低保護了使用者的資料安全,成功率遙遙領先於其他資料恢復類產品!
第四章 總結
WannaCry蠕蟲的大規模爆發得益于其利用了MS-17-010漏洞,使得其在傳統的勒索病毒的基礎上具備了自我複製、主動傳播的特性。在除去攻擊荷載的情況下,勒索病毒最重要的是其勒索技術框架。勒索檔加密技術是使用非對稱加密演算法RSA-2048加密AES金鑰,然後每個檔使用一個隨機AES-128對稱加密演算法加密,在沒有私密金鑰和金鑰的前提下要窮盡或破解RSA-2048和AES-128加密演算法,按目前的計算能力和技術是不可破解的。但是作者在處理檔加密過程中的一些疏漏,大大增加了我們恢復檔的可能性,如果第一時間及時搶救,使用者是能夠恢復大部分數據的。
另外由於勒索贖金交付技術是使用的比特幣,比特幣具有匿名性,比特幣位址的生成無需實名認證,通過位址不能對應出真實身份,比特幣位址的同一擁有者的不同帳號之間也沒有關聯。所以基於加密演算法的不可破解特性和比特幣的匿名特性,勒索病毒這類趨利明顯的惡意攻擊仍然會長時間流行,大家仍需要提高警惕。
360追日團隊(Helios Team)
360 追日團隊(Helios Team)是360公司高級威脅研究團隊,從事APT攻擊發現與追蹤、互聯網安全事件應急回應、駭客產業鏈挖掘和研究等工作。團隊成立於2014年12月,通過整合360公司海量安全大資料,實現了威脅情報快速關聯溯源,獨家首次發現並追蹤了三十餘個APT組織及駭客團夥,大大拓寬了國內關於駭客產業的研究視野,填補了國內APT研究的空白,並為大量企業和政府機構提供安全威脅評估及解決方案輸出。
已公開APT相關研究成果
3.檔處理佇列
WanaCrypt0r為了能儘快的加密其認為重要的用戶檔,設計了一套複雜的優先順序佇列。
佇列優先順序:
i.對type2(滿足尾碼列表1)進行加密(小於0x400的檔會降低優先順序)
ii.對type3(滿足尾碼列表2)進行加密(小於0x400的檔會降低優先順序)
iii.處理剩下的文件(小於0x400的文件),或者其他一些文件
4.加密邏輯
加密過程採用RSA+AES的方式完成,其中RSA加密過程使用了微軟的CryptoAPI,AES代碼則靜態編譯到DLL中。加密流程如下圖所示:
使用的金鑰概述:
加密後的檔案格式示意:
值得注意的是,在加密過程中,程式會隨機選取一部分檔使用內置的RSA公開金鑰來進行加密,這裡的目的是解密程式提供的免費解密部分檔功能。
能免費解密的檔路徑在檔f.wnry中,如下:
5.亂數填充
在完成加密之後,WanaCrypt0r會對其認為重要的檔進行亂數填充,然後將檔移動到指定的暫存檔案夾目錄然後刪除。此舉用於對抗檔案修復類軟體,同時兼顧加密檔的速度。
被亂數填充的檔需要滿足以下幾點:
n在特殊目錄(桌面,我的文件,用戶資料夾)
n檔小於200M
n檔尾碼在type清單1
填充的邏輯:
n如果檔小於0x400,直接覆蓋對應長度的亂數。
n如果檔大於0x400,對檔距離末尾0x400處進行覆蓋。
n再次重定位檔指針到檔頭,以0x40000大小的緩衝區為單位向寫亂數直到檔末尾。
6.檔刪除操作
WanaCrypt0r首先嘗試將樣本移動到暫存檔案夾,生成一個暫存檔案,然後再嘗試多種方法刪除檔。
當採用遍歷磁片的方式加密檔的時候,會在當前盤符生成“$RECYCLE”+ 全域自增量+”.WNCYRT”(eg: "D:\$RECYCLE\1.WNCRYT")的暫存檔案。特別的,當盤符為系統磁片(eg:C)時,使用的是系統的臨時目錄(%temp%)。
之後進程以固定時間間隔啟動taskdl.exe來刪除暫存檔案夾下的檔。
第三章 資料恢復可行性分析
根據對WannaCry蠕蟲的執行邏輯進行分析,該蠕蟲在加密執行緒中會對滿足條件的檔用亂數或0x55進行覆寫,從而徹底破壞檔的結構並防止資料被恢復,但是只限定於特定的資料夾和特定的尾碼名。也就是說該蠕蟲只對滿足條件的檔進行了寫覆寫操作,受害者機器上仍然有很多的檔未被覆寫,這就為資料恢復提供了可能。
在刪除執行緒中,蠕蟲是先將原始檔案通過MoveFileEx函數移動到其創建的暫存檔案夾下,最後統一進行刪除。在這個過程中原始檔案的檔案名會發生改變,常規資料恢復軟體不知道這個檔操作邏輯,導致大部分檔無法恢復,只能恢復小部分檔,恢復資料效果極差。
另一方面,因為刪除操作和加密操作在不同的執行緒中,受用戶環境的影響,執行緒間的條件競爭可能存在問題,從而導致移動原始檔案的操作失敗,使得檔在當前位置被直接刪除,在這種情況下被加密的檔有很大概率可以進行直接恢復。但是滿足這種情形的檔畢竟是少數,如果採用常規資料恢復軟體則只能恢復少量此類檔。
根據以上分析,我們發現了除系統磁片外的檔,用我們精細化處理的方法進行資料恢復,被加密的檔其實是有很大概率可以完全恢復的。據此360開發了專門的恢復工具2.0版,以期幫助在此次攻擊中廣大的受害者恢復加密資料:
http://dl.360safe.com/recovery/RansomRecovery.exe?from=360zhuiri
繼14日淩晨360全球首家發佈恢復工具,為病毒受害者搶救了部分檔後。此次更新發佈2.0版工具進一步挖掘病毒加密邏輯漏洞,清除病毒防止二次感染,並利用多重演算法深度關聯出可恢復檔並對受害者的檔進行免費解密,一站式解決蠕蟲勒索軟體帶來的破壞,最大程度低保護了使用者的資料安全,成功率遙遙領先於其他資料恢復類產品!
第四章 總結
WannaCry蠕蟲的大規模爆發得益于其利用了MS-17-010漏洞,使得其在傳統的勒索病毒的基礎上具備了自我複製、主動傳播的特性。在除去攻擊荷載的情況下,勒索病毒最重要的是其勒索技術框架。勒索檔加密技術是使用非對稱加密演算法RSA-2048加密AES金鑰,然後每個檔使用一個隨機AES-128對稱加密演算法加密,在沒有私密金鑰和金鑰的前提下要窮盡或破解RSA-2048和AES-128加密演算法,按目前的計算能力和技術是不可破解的。但是作者在處理檔加密過程中的一些疏漏,大大增加了我們恢復檔的可能性,如果第一時間及時搶救,使用者是能夠恢復大部分數據的。
另外由於勒索贖金交付技術是使用的比特幣,比特幣具有匿名性,比特幣位址的生成無需實名認證,通過位址不能對應出真實身份,比特幣位址的同一擁有者的不同帳號之間也沒有關聯。所以基於加密演算法的不可破解特性和比特幣的匿名特性,勒索病毒這類趨利明顯的惡意攻擊仍然會長時間流行,大家仍需要提高警惕。
360追日團隊(Helios Team)
360 追日團隊(Helios Team)是360公司高級威脅研究團隊,從事APT攻擊發現與追蹤、互聯網安全事件應急回應、駭客產業鏈挖掘和研究等工作。團隊成立於2014年12月,通過整合360公司海量安全大資料,實現了威脅情報快速關聯溯源,獨家首次發現並追蹤了三十餘個APT組織及駭客團夥,大大拓寬了國內關於駭客產業的研究視野,填補了國內APT研究的空白,並為大量企業和政府機構提供安全威脅評估及解決方案輸出。
已公開APT相關研究成果