偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

揭秘Chimera勒索軟件如何解密文件

安全 黑客攻防
我們?cè)l(fā)表過(guò)一篇關(guān)于Chimera勒索軟件密鑰泄漏的文章。但是在這篇文章中,我們將會(huì)披露更多相關(guān)的技術(shù)細(xì)節(jié),我們將會(huì)給大家介紹如何利用這些泄漏出來(lái)的密鑰來(lái)解密文件。

[[170459]]

概述

最近,我們?cè)l(fā)表過(guò)一篇關(guān)于Chimera勒索軟件密鑰泄漏的文章(文章鏈接)。但是在這篇文章中,我們將會(huì)披露更多相關(guān)的技術(shù)細(xì)節(jié),我們將會(huì)給大家介紹如何利用這些泄漏出來(lái)的密鑰來(lái)解密文件。除此之外,我們還會(huì)對(duì)這些泄漏密鑰的有效性進(jìn)行測(cè)試。

實(shí)驗(yàn)數(shù)據(jù)和分析方法

一般而言,編寫(xiě)一款勒索軟件的解密程序往往需要開(kāi)發(fā)人員擁有較強(qiáng)的能力,他們不僅需要對(duì)加密算法有較深層次的理解,而且還得從勒索軟件中尋找漏洞。不同的漏洞則意味著開(kāi)發(fā)人員需要用不同的思維理念來(lái)開(kāi)發(fā)破解工具。

某些時(shí)候,我們需要對(duì)有漏洞的加密算法進(jìn)行一定的改造,并且開(kāi)發(fā)出一款能夠猜測(cè)密鑰的工具(例如Petya勒索軟件的破解過(guò)程)。某些時(shí)候,我們的工作重點(diǎn)應(yīng)該放在勒索軟件的對(duì)稱密鑰生成器上(例如DMALocker 2.0的破解過(guò)程),或者將注意力集中在勒索軟件的加密算法身上(可以參考7ev3n勒索軟件所采用的自定義加密算法)。

但是這一次,我們已經(jīng)為大家準(zhǔn)備好了一些現(xiàn)成的工具:

1. 泄漏的密鑰集;

2. 由Chimera的開(kāi)發(fā)者提供給該勒索軟件受害者的原始解密程序;

對(duì)解密程序進(jìn)行逆向分析

正如我們此前在對(duì)Chimera進(jìn)行分析時(shí)所描述的,勒索軟件的攻擊者通常會(huì)在目標(biāo)主機(jī)中留下勒索信息,而Chimera的作者向受害者提供了一個(gè)鏈接,他們可以自行下載一個(gè)外部解密工具。為了能夠讓解密工具運(yùn)行,用戶需要購(gòu)買一個(gè)私鑰,只有當(dāng)私鑰與公鑰成功配對(duì)時(shí),用戶被加密的文件才能夠成功恢復(fù)。

這個(gè)解密工具采用了.NET語(yǔ)言進(jìn)行編寫(xiě),該工具中所有的文件解密操作全部由一個(gè)外部組件來(lái)控制-一個(gè)名為“PolarisSSLWrapper.dll”的DLL文件。經(jīng)過(guò)了分析之后,我們發(fā)現(xiàn)該組件能夠提供以下兩個(gè)函數(shù):

所以我們就沒(méi)有必要自己親自去設(shè)計(jì)解密函數(shù)了,我們可以直接利用這個(gè)現(xiàn)成的API。

首先,我們需要先對(duì)該工具中主要的組件進(jìn)行逆向分析。因?yàn)槲覀冊(cè)谶M(jìn)行下一步操作之前,需要弄清楚這兩個(gè)函數(shù)是如何被調(diào)用的,以及該函數(shù)需要傳入哪些參數(shù)。

從下面這張代碼截圖中,我們可以看到用于解密文件的外部函數(shù)是如何被調(diào)用的:

如上圖所示,我們所關(guān)心函數(shù)是“DecryptFileWrapper”。該函數(shù)需要傳入三個(gè)參數(shù):(1)待解密文件的存儲(chǔ)路徑(以一個(gè)ASCII字符串表示);(2)購(gòu)買的私鑰(字節(jié)數(shù)組);(3)私鑰長(zhǎng)度。該函數(shù)的返回值是一個(gè)布爾類型的值,用來(lái)通知系統(tǒng)文件的解密操作是否成功。我們可以對(duì)該函數(shù)進(jìn)行重構(gòu),具體如下所示:

bool _cdecl DecryptFileWrapper(char filePath, BYTE*privateKey, size_t privateKeySize);

函數(shù)會(huì)從收到的bitmessage中讀取出私鑰信息,并將其解碼(Base64編碼)成字節(jié)數(shù)組的形式:

由于Chimera的服務(wù)器在幾個(gè)月前就已經(jīng)下線了,所以我們無(wú)法捕獲到該勒索軟件的網(wǎng)絡(luò)通信數(shù)據(jù)。但是多虧了BleepingComputer此前所發(fā)表的研究報(bào)告,我們現(xiàn)在可以獲取到該勒索軟件網(wǎng)絡(luò)通信信息的結(jié)構(gòu)。示例:

56209A92A96E9F96B0D9E6F962D0D9EF:5Zn9azBBDQQznI9znnHZBDs6+nQz6nB9/6DBa0nXbDz0aghs6fg62Rn9ZzxnDGEzRQ9tFdIZDfa05Lz+nlb6IGnzSDQz0tznrdUzGgq9Nibzx0Zusl2aHn6nzZZE6tbQQe/vzbASDuanTBL5SazSARe52QSq6BEzD5rGqzZhnaLaZrfbI6bN6A6nnnH5lgbeSAzXdz+6eNxqQt9ITziIxF+eDFBBBVZ+zHf6esQzzH2uBnQnaHzzi6tDna9Xngfh6bzQQZBfq+vFbZ9ZfvnTL6D2arAnBzb6A06Qzfn2zRD5hz5eLZzDIDR00/anblbU2bvRTH6ZGaXDeBQQ5NHGhQEAAdZBtx/VaVQsrrDZdasadBHi0RDeZz0Da6glNRz9/U59zXaaeAN0Di5eb2zQtvr5h6Fvb6tzB9THtRUGS6Qzt6BxAz/zTg6gs56h5xXzSnslBQRzngandHzFTaBHix692DLxDaziQnZBQDQRB/Zz5HXQfNzz5aad90+uHAsDBDDVzZsngtbgSHDTzA2X5zQs2tHba5z99qF66IQHqZaZD2erzuDQzzx9NlXaTZEiH2IrVGSZizxEFQzLBl6+BDDn5zuG6x6zBhfaNB56nDUXt6BnzzuvNVq2xzDTn2lSu/QrHzNbFdGSLazTh29z5Fx9D5Zt6QBBrQ+aFuNDhASgDDH20UDnQB00gBa2t6/i+Lq6eV9ZHzzDdEn2T6HXfg+BEnvr5tXB5zZL2zbtvBVxFX2QsBZ9ZrzzG6fIvnvnz6NZ5endiz0IzAQ2Dbqa6gnnsSnznsVIizznibdZIFvF/nsqbVQZB9Zn2nBQUDTQzzDT65NxHzLRvz6VzZsQV5bih+S+shaD6ASaDFzHNQD9ZVIi+ZrafBxes6zqQaBfEs6z+Igd6nZhEzDLZZN/9QbhQzlzfBf5IFL0nqt2qqnSeqgz0bzQgZ9Dq6r50SB6xHhn9DfnNa6hR0DUiubDH5z0+n60UD0Uzz6ti6faD5Sz99f6dtQN6LUfZn/RagfiqnzTXZrvBZv95a9aT9u9tE6qLH0BSNArn0I9rF2eBDQH92zFUBBBVs9e/ZrXZ2Qaz/zn6BzxQ05qtqNQTZ6AS22z6nBf/200L66zasDHrzZ9agHAx2qBNUlRaUDFszInzzaLD5IzGQeQaAU60zz6nZQvVe906uDTXGlaZDDfBQUzD/nRDrZUaa2h59Hf5gbeezTHNiHBaBDzzQBx0BX5Zz92Z2zanfSZZ/2BRnzzzQBzxa/iIxiDNb6Qdd9Bh6/FQnfeznSv5rZ6DZitTGZZUAdzgD5azVAn2G/G+EssFuhV5aBb0N/N2q+2656zgxBBDzn2+0NIZLudxTXRsDNDza0V/9gzzEaqBdZax6QDlfnQhAVIn9XZu/D+gr9+ZRqz5266IBST5E5LBZed/s0zS2QHeBrIHnznZtez+02+Q+50g+ZUD6nrbhR2f+NzB6NgZ6ID9e5hnEEQ99xlnSDZT2aQN6QBRueDRZzNaTz6bvQrGhaBaeFl96hZDZLUDIu6rAzB

其結(jié)構(gòu)為:[感染者ID]:[base64編碼密鑰]

在對(duì)密鑰進(jìn)行了解碼之后,我們得到了一個(gè)長(zhǎng)度為1155字節(jié)的字節(jié)數(shù)組。

這個(gè)數(shù)組中存儲(chǔ)的原始字節(jié)數(shù)據(jù)即為我們所需要的密鑰。

解析密鑰

此前泄漏出來(lái)的密鑰是一堆十六進(jìn)制的字符串。如果我們將這些數(shù)據(jù)轉(zhuǎn)換為原始的二進(jìn)制數(shù)據(jù),就會(huì)發(fā)現(xiàn)這些密鑰的長(zhǎng)度均為0×483字節(jié)。這是一個(gè)非常重要的發(fā)現(xiàn),因?yàn)檫@些密鑰的格式與上文中描述的密鑰是一樣的,所以我們不需要對(duì)這些數(shù)據(jù)進(jìn)行額外的處理了。我們所要做的,就是將這些十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為原始的二進(jìn)制數(shù)據(jù)即可。

泄漏文件的格式還算比較整齊,每一個(gè)密鑰的結(jié)尾都會(huì)另起一行。我們可以直接移除開(kāi)頭的一些無(wú)用數(shù)據(jù),然后將這份文件作為輸入:

更確切地來(lái)說(shuō),我們此前將這些數(shù)據(jù)描述為密鑰集合,但實(shí)際上它們應(yīng)該是密鑰對(duì)的集合。每一對(duì)密鑰的長(zhǎng)度均為0×483字節(jié)。其中,前0×103字節(jié)的數(shù)據(jù)中包含的是公鑰信息,接下來(lái)的0×380字節(jié)即為私鑰信息。我們所使用的API需要這一串完整的數(shù)據(jù)作為輸入,解密工具的DLL組件會(huì)將這些數(shù)據(jù)當(dāng)作“私鑰”來(lái)進(jìn)行處理。由于公鑰和私鑰的信息全部包含在這些數(shù)據(jù)里面了,所以解密工具就可以自動(dòng)驗(yàn)證密鑰的匹配結(jié)果。

尋找出合適的解密密鑰

正如你所見(jiàn),我們已經(jīng)完成了大部分的工作。剩下的最后一件事情就是確定泄漏的密鑰集中是否真的存在可以解密我們文件的密鑰。

在這一步操作中,我們不得不使用算法來(lái)解決我們的問(wèn)題。我們的實(shí)現(xiàn)方式看起來(lái)與字典攻擊有些類似,我們的“字典”是一套泄漏密鑰的集合。為了進(jìn)行驗(yàn)證,我們將會(huì)嘗試解密其中的一份被加密的文件。我們大致的思路用下面這段偽代碼來(lái)表示:

  1. while ((privateKey = getNextFromSet()) != NULL) { 
  2.  
  3.     if(DecryptFileWrapper(encryptedFile, privateKey, privateKeyLen) == true) { 
  4.  
  5.        printf("Hurray, key found!"); 
  6.  
  7.        storeTheFounKey(privateKey); 
  8.  
  9.         return true
  10.  
  11.     } 
  12.  
  13.  
  14. printf ("Sorry, your key is not in the leakedset!"); 
  15.  
  16. return false

如果你對(duì)此感興趣的話,可以點(diǎn)擊下方的地址下載完整的代碼:

https://github.com/hasherezade/chimera_decrypt

找出了能夠成功匹配的密鑰之后,我們就可以解密剩下的所有文件了。

測(cè)試

測(cè)試一:

Chimera在每次運(yùn)行的時(shí)候會(huì)生成一個(gè)唯一的隨機(jī)密鑰對(duì)。然后,它會(huì)利用bitmessage來(lái)將密鑰對(duì)發(fā)送至C&C服務(wù)器上。值得注意的是,發(fā)送的數(shù)據(jù)還包括與目標(biāo)用戶有關(guān)的其他數(shù)據(jù)集合。

為了完成測(cè)試,我使用了一個(gè)由原始Chimera勒索軟件樣本生成的密鑰,并將其從內(nèi)存中導(dǎo)出。在將密鑰傳遞給用于發(fā)送數(shù)據(jù)的函數(shù)之前,密鑰的信息是可以清楚地看到的。如下面這張截圖所示:

我將這些數(shù)據(jù)轉(zhuǎn)換成了與泄漏密鑰相同的格式(連續(xù)的十六進(jìn)制字符串)。

我們事先準(zhǔn)備好的工具可以正常運(yùn)行,測(cè)試文件已經(jīng)被成功解密了:

測(cè)試二:

因?yàn)樵谛孤?shù)據(jù)中我們已經(jīng)得到了完整的密鑰對(duì),所以我們也可以用它們來(lái)進(jìn)行測(cè)試。在實(shí)驗(yàn)過(guò)程中,我從其中一個(gè)泄漏密鑰中截取出了公鑰數(shù)據(jù),然后將其提供給了Chimera樣本。我之所以這樣做,是為了模擬出一份受害者(密鑰已經(jīng)泄漏)被加密的文件。

接下來(lái),我們需要用提取出的公鑰替換掉Chimera自動(dòng)生成的原始公鑰:

現(xiàn)在,我們就可以嘗試使用泄漏密鑰和事先準(zhǔn)備好的工具來(lái)解密受攻擊的文件了:

解密成功了!我們的測(cè)試也成功證實(shí)了泄漏的數(shù)據(jù)中的確包含有真實(shí)的密鑰對(duì),這些數(shù)據(jù)并不是無(wú)效的垃圾數(shù)據(jù)。

除了上述兩個(gè)測(cè)試之外,我們還進(jìn)行了很多其他的測(cè)試,而且我們還對(duì)這些工具進(jìn)行了編譯。如果你感興趣的話,可以訪問(wèn)我們的Github代碼庫(kù)來(lái)了解詳細(xì)的信息(Github主頁(yè)鏈接)。

總結(jié)

通過(guò)查看密鑰的格式,我們就可以推測(cè)泄漏的數(shù)據(jù)中應(yīng)該包含有合法的密鑰數(shù)據(jù)。除此之外,我們也從其他安全研究專家那里得到了證實(shí),泄漏密鑰中的部分?jǐn)?shù)據(jù)確實(shí)能夠匹配他們捕獲的通信樣本。但是,我們已經(jīng)沒(méi)有辦法從受害者那里得到分析樣本了。Chimera在幾個(gè)月前就已經(jīng)徹底掛掉了,而且大多數(shù)受感染的用戶可能早就已經(jīng)將被加密的文件刪除了。

責(zé)任編輯:武曉燕 來(lái)源: freebuf
相關(guān)推薦

2015-11-10 11:06:27

2021-09-07 10:27:23

勒索軟件惡意軟件安全

2018-12-20 09:00:00

2021-10-28 18:39:59

Babuk勒索軟件解密器

2025-04-07 09:00:00

勒索軟件解密工具網(wǎng)絡(luò)安全

2016-12-02 09:46:30

2023-04-03 09:44:18

2019-04-09 09:06:36

2016-03-10 20:40:29

2015-04-30 19:12:36

2020-07-10 08:07:42

勒索軟件解密器加密

2023-03-02 07:29:35

2023-12-19 19:20:44

2021-07-19 11:10:09

威脅勒索軟件黑客攻擊

2021-08-02 10:06:53

勒索軟件惡意軟件安全

2020-07-15 18:31:06

Linux版本信息

2016-05-30 10:55:53

Tesla勒索軟件解密主密鑰勒索軟件

2021-11-30 06:31:06

勒索軟件攻擊網(wǎng)絡(luò)安全

2019-12-26 13:29:50

勒索軟件攻擊黑客

2022-05-09 10:15:06

勒索軟件網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)