McAfee針對GandCrab勒索軟體的分析

IT168GB發表於2018-08-31

寫在前面的話

GandCrab勒索軟體於1月首次出現,並在其短時間中迅速發展。此惡意軟體的第一個版本(1.0和1.1)有一個錯誤,將金鑰留在記憶體中,因為作者沒有正確使用加密函式中的標誌。一家反惡意軟體公司在羅馬尼亞警方和歐洲刑警組織的幫助下,在NoMoreRansom.org上釋出了一款免費解密工具。

惡意軟體作者在俄羅斯論壇上證實了駭客攻擊: 
1.png

GandCrab的第二個版本很快出現並改進了惡意軟體伺服器的安全性。為了防止被反擊,勒索軟體的第一個版本有一個要加密的副檔名列表,但第二個版本和更高版本已經用排除列表替換了這個列表。除列表中的檔案之外的所有檔案都已加密。

感染方式

GandCrab使用幾種感染方式:1.利用安全性較弱的遠端桌面連線。2.帶有連結或附件的釣魚郵件。3.使用者下載並啟動包含惡意軟體的合法程式。4.利用RigEK等工具包。與其他勒索軟體一樣,GandCrab的目標是加密受感染系統上的所有或多個檔案,勒索使用者。開發人員需要以加密貨幣(主要是DASH)付款,因為它很難追蹤。惡意軟體具有多樣性。我們已經看到.exe格式的變體(主要形式)以及DLL格式。

版本4.0

版本4.0中最大的變化就是用於加密檔案的演算法。早期版本使用RSA和AES; 最新版本使用Salsa20。主要原因是速度。RSA是一種功能強大但速度慢的演算法。Salsa20很快。勒索軟體會檢查系統的語言,如果受感染的機器以俄語或某些其他前蘇聯語言執行,則不會刪除payload: 
2.png

GandCrab會加密除了以下副檔名的任何檔案: 
3.png

勒索軟體不會加密這些資料夾中的檔案: 
4.png

GandCrab保留未加密的檔案: 
5.png

勒索軟體在加密檔案之前會生成一對RSA金鑰。加密過程為每個檔案生成一個隨機Salsa20金鑰和一個隨機IV,用它們加密檔案,並用一對RSA金鑰(在開頭建立公共RSA金鑰)加密該金鑰和IV。私鑰在登錄檔中使用另一個Salsa20金鑰加密,並使用嵌入在惡意軟體中的RSA公鑰加密IV。加密後,檔案金鑰和IV將以8位元組的新欄位附加到檔案的內容中,從而增加原始檔案大小。這種方法使GandCrab成為一款非常強大的勒索軟體,因為沒有嵌入公鑰的私鑰,就無法解密檔案。如果沒有新的RSA私鑰,我們無法解密附加到檔案的Salsa20金鑰和IV。最後,勒索軟體會刪除受感染計算機上的所有卷影並刪除自身。

版本4.1

此版本保留了Salsa20演算法,修復了一些bug,並新增了一個新功能。例如,此版本的一個示例具有以下加密域的硬編碼列表。(這只是此列表的一小部分。) 
6.png

勒索軟體從列表中選擇一個域,並使用以下單詞之一建立隨機路徑: 
7.png

之後它隨機選擇另一個單詞新增到它建立的URL:

然後它建立一個檔名,從以下列表中隨機選擇三個或四個組合:

9.png

最後,惡意軟體將檔名與隨機選擇的副檔名連線起來: 
10.png

此時,惡意軟體使用POST將加密資訊傳送到嵌入列表中所有域的新生成的URL,重複生成每個域的路徑和名稱的過程。此版本中的另一個重要更改是嘗試混淆對VirtualAlloc和VirtualFree等函式的呼叫。 
11.png

版本4.1.2

此版本已出現一些變體。兩家安保公司透露了一種預防先前版本感染的工具。該工具會在勒索軟體感染系統之前在具有特殊名稱的資料夾中建立特殊檔案。該檔案的名稱來自Windows邏輯單元硬碟值的序列號。惡意軟體使用此名稱進行簡單計算,並在%appdata% or %program files%(基於作業系統)中使用副檔名.lock建立它。 
12.png GandCrab作者反應神速,馬上就作出改變,其中一家安全公司也不甘,製作一個免費工具來作為回應,但在幾小時內,作者又釋出了另一個版本4.1.2並更改了文字。惡意軟體不再建立任何檔案,而是使用此特殊名稱建立互斥物件。互斥鎖保留並在名稱中保留.lock副檔名。 
13.png

所以該防毒工具不適用於第二版4.1.2和4.2版,但它確實適用於以前的版本。

版本4.2

此版本會檢測是否處於虛擬機器環境,一但檢測到虛擬機器就會停止執行。 
14.png

惡意軟體計算主Windows安裝邏輯單元的空閒空間,並最終計算出一個值。如果此值想對於勒索軟體是正確的,則它會正常執行。如果該值小於0x1E,則等待一小時以啟動正常程式。如果該值大於0x1E,則勒索軟體完成其執行。 
15.png

版本4.2.1

這個版本出現在8月1日。與之前版本不同的是,這是一條發給安全公司的簡訊,以及一個0day漏洞的連結,攻擊該公司的一個產品。該漏洞攻擊了這家公司的一個產品。程式碼是一個Visual Studio專案,可以很容易地重新編譯。在Visual Studio中載入專案後,該程式碼有俄文資料夾。

版本4.3

此版本也出現在8月1日。此版本與以前的版本有以下變化:1.它刪除了用於檢測虛擬機器的程式碼以及4.2版中的其他一些東西。這段程式碼有一些bug——無法檢測到某些虛擬機器。2.它針對防病毒公司的一種產品的發起攻擊,該產品透過版本4.1.2的第一版釋出了針對4.0版的防毒工具。而程式碼出現的位置是在惡意軟體加密檔案之後和刪除之前。 
16.png

這些函式中的新程式碼使靜態分析更加複雜。介紹一個很有效的技巧:勒索軟體進行了一個delta呼叫(將delta偏移的地址放在堆疊的頂部)並新增0x11(特殊程式碼的大小,意味著惡意軟體作者正在使用宏)到ESP暫存器中的值。ESP現在指向特殊程式碼塊之後的地址,並在該塊的操作碼中間跳轉。這種技術使它看起來像另一條指令,在本例中是“pop eax”,它從堆疊頂部(ESP暫存器)新增0x11後提取值。程式碼稍後在EAX中無條件跳轉到此地址。這樣勒索軟體遵循其正常的程式碼流程。 
17.png

結論

GandCrab是任何個人或企業的領先勒索軟體威脅。作者使用多種方式傳播它—— 包括漏洞利用工具包,釣魚郵件,木馬程式。開發人員主動更新和改進程式碼,以使分析更加困難。該程式碼不是專業編寫的,並且仍然存在漏洞,但該產品在地下論壇中得到了很好的推廣,並且價值也在不斷增加。 


本文轉載自:“ FreeBuf.COM ”,原文由 周大濤編譯

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31510736/viewspace-2213373/,如需轉載,請註明出處,否則將追究法律責任。

相關文章