日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Ransomware CryptXXX Analysis

發(fā)布時間:2025/3/15 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ransomware CryptXXX Analysis 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Global Data Structure

Named ImageOffset Description
pConfig 0x4259A0 全局配置信息,窗口句柄,全局標(biāo)志位,當(dāng)前進(jìn)程是否是Svchost本身等。
szMutexCrypt pConfig+0x100 全局互斥對象的名稱,
szModuleFullPath pConfig+0x121 Crypt.dll的當(dāng)前完整路徑 (C:\Tmp\Crypt_Patched.dll)
dwOSVer pConfig+0x26B 操作系統(tǒng)的主版本號和次要版本號
szModuleDirectory pConfig+0x663 Crypt.dll的當(dāng)前所在目錄
dwPlatform pConfig+0x26C 64 or 32 代表不同的平臺
dwWebServerID pConfig+0x26A 0x13524C90 or 0x40BBAA5D
? pConfig+0x563 ?
? pConfig+0x8A5 ?
szWebserverIp pConfig+0x26A “144.76.82.19” or “93.170.187.64”
lpPubKeyString 0x4272B8 .BSS 運(yùn)行時釋放到這里
dwRandomSeed 0x423008 .data 隨機(jī)數(shù)種子,每次運(yùn)行都不一樣

Export Function

funcName ImageOffset Description
DllEntryPoint 0x422028 這個入口會根據(jù)當(dāng)前執(zhí)行的進(jìn)程名稱來判斷是第一次被調(diào)用(rundll32.exe),還是之后的偽裝調(diào)用(svchost.exe)。如果是第一次調(diào)用,做一些初始化的工作,將rundll.exe從系統(tǒng)目錄拷貝到當(dāng)前module目錄中并重命名為svchost.exe,然后用偽裝的svchost加載crypt.dll并調(diào)用MS111。這回導(dǎo)致新進(jìn)程再去load crypt.dll進(jìn)而反復(fù)啟動新的進(jìn)程,這是系統(tǒng)中出現(xiàn)一大堆svchost.exe的原因。

0x41FFFF位置打patch 90 81 C4 28 00 00 00讓它無法啟動好多的進(jìn)程方便調(diào)試。只要不是svchost啟動的,暫時就不會干不好的事情。

MS111 0x421E1C 首先判斷一下是否已經(jīng)在入口中執(zhí)行了偽裝svchost加載模塊的流程,如果沒有創(chuàng)建一個新的進(jìn)程調(diào)用MS112。如果執(zhí)行了,先等6分鐘,然后啟動2條線程TR_ProcessWindow和TR_PerformCheck,然后進(jìn)入消息循環(huán)等待進(jìn)程退出的消息。
MS112(Encrypt) 0x4213C0 首先從全局信息中取出互斥對象的名稱,然后打開這個互斥對象。根據(jù)后面的分析這個互斥對象應(yīng)該是每個Process都是唯一的,沒有確認(rèn)。成功創(chuàng)建了Mutex后先組裝一個神秘的字符串沒有調(diào),然后根據(jù)一個標(biāo)志來決定是否創(chuàng)建一個Process去執(zhí)行MS113. 然后檢查全局?jǐn)?shù)據(jù)結(jié)構(gòu),取出一個特殊文件的路徑,判斷這個文件存在不存在。
MS113(FillConfig) 0x421384 這個函數(shù)只做一件主要的事情,就是去webserver上面下載一個危險的dll。

https://www.proofpoint.com/tw/threat-insight/post/cryptxxx-ransomware-learns-samba-other-new-tricks-with-version3100

MS114 0x421E0C Set一個全局標(biāo)志后,調(diào)用MS112. MS112會根據(jù)是否設(shè)置了這個全局標(biāo)志來決定是否調(diào)用MS113.
MS115(Deamon) 0x421254 每隔200ms檢查一下系統(tǒng)中是否存在WerFault.exe(CrashReport),如果存在就殺掉這個進(jìn)程。同時檢查當(dāng)前進(jìn)程的父進(jìn)程是否已經(jīng)退出了,如果退出了就用系統(tǒng)中保存的偽裝的svchost加載crypt.dll并調(diào)用MS112,然后退出。

?

RSA Key
—–BEGIN CERTIFICATE—–

BgIAAACkAABSU0ExAAQAAAEAAQBfFTOUbZiP6u9PppNyTSXM+Y5W9pEcKe68HJYq

dLYpXL+XCzXTUgsSRJ1iNmXqrhUEqz3hOi93Bw53U28gvnJTHRboA32xzli688MQ

eJz7kis1d2G+o8bz+VHO/7qsX+jlBLkP86a6+MYvvhZW+Z0HcsZbMjn6/yCgbhF8

BhpvuQ==

—–END CERTIFICATE—

?

寫了個程序把image中的所有加密字符串解密出來。

Encrypt Decrypt
?EncryptString DecryptString

?

這是一個html,被解密后釋放出來。是一個勒索頁面

The blackmail html which Extracted from decrypt
?blackmail

DllEntryPoint

?DllEntryPoint

MS111?主要邏輯

MS111

TR_ProcessWindow:遍歷所有的隱藏窗口,并且不屬于系統(tǒng),并查找窗口所屬的進(jìn)程名,如果match到了一個特殊的進(jìn)程名,就給他發(fā)一個消息讓他恢復(fù)出來。

TR_ProcessWindow

TR_PerformCheck:創(chuàng)建一個Process開始調(diào)用MS112

TR_PerformCheck

如果不是Svchost.exe創(chuàng)建新的Process開始調(diào)用MS112,進(jìn)程退出。

執(zhí)行的Commandline如下:

C:\Users\ADMINI~1\Desktop\_00310~1\svchost.exe C:\Users\ADMINI~1\Desktop\_00310~1\_00310000_pe.dll, MS112

MS112?主要邏輯

MS112

根據(jù)最新的分析,這個Func是用來加密用戶文件,并顯示勒索信息的。

首先從全局信息中取出互斥對象的名稱,然后打開這個互斥對象。根據(jù)后面的分析這個互斥對象應(yīng)該是每個Process都是唯一的,沒有確認(rèn)。成功創(chuàng)建了Mutex后先組裝一個神秘的字符串,根據(jù)是否已經(jīng)獲得了全局?jǐn)?shù)據(jù)結(jié)構(gòu)來決定是否創(chuàng)建一個Process去執(zhí)行MS113,MS113會去webserver請求全局?jǐn)?shù)據(jù)結(jié)構(gòu).

然后檢查全局?jǐn)?shù)據(jù)結(jié)構(gòu),取出一個特殊文件的路徑,判斷這個文件存在不存在。

如果存在,就把文件中的內(nèi)容讀取到一個Buffer中,這個Buffer是有結(jié)構(gòu)的,它的0x20C偏移是0x3E8這是一個Marker。

如果這個文件不存在,那么請求webserver給它發(fā)送一個這份文件內(nèi)容的數(shù)據(jù)。它會初始化一個請求數(shù)據(jù)結(jié)構(gòu),其中前4個字節(jié)是請求的command,最后四個字節(jié)是marker。中間的內(nèi)容根據(jù)全局?jǐn)?shù)據(jù)結(jié)構(gòu)填充。

請求的數(shù)據(jù)使用Https安全協(xié)議加密,它有兩個webserver(”144.76.82.19″ or “93.170.187.64”),當(dāng)一個請求失敗時會嘗試第二個webserver。

首先發(fā)送校驗(yàn)包,用于服務(wù)器確認(rèn)通信合規(guī)。先發(fā)送4個字節(jié)包含通信包長度的頭包,然后繼續(xù)發(fā)送包含實(shí)際驗(yàn)證數(shù)據(jù)的包。

TED_SendAuthenticationPackage

實(shí)際上在發(fā)送這兩個包之前還發(fā)送了一個52字節(jié)的包,

發(fā)送完驗(yàn)證包后,開始接受返回數(shù)據(jù)。協(xié)議相同,先接受4個字節(jié)的包,確認(rèn)要返回的實(shí)際數(shù)據(jù)的長度。然后分配一個帶結(jié)構(gòu)的Buffer,用來接收返回的數(shù)據(jù),如果返回的數(shù)據(jù)太多,就一次只接收8k的數(shù)據(jù)。接收成功后把這些數(shù)據(jù)壓縮保存到Buffer中。

接收的第一個包是返回的校驗(yàn)包,與先前發(fā)送的校驗(yàn)包大小一致。校驗(yàn)包的前4個字節(jié)是命令,第4-8個字節(jié)大概是一個唯一碼,并把這個唯一碼寫到全局?jǐn)?shù)據(jù)結(jié)構(gòu)中去。然后開始接收真正的數(shù)據(jù)。并把265個字節(jié)寫到全局?jǐn)?shù)據(jù)結(jié)構(gòu)中。

TED_RequestForSpecialInfo

然后,接著從全局結(jié)構(gòu)中取回Buffer構(gòu)造一個新的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)的前265字節(jié)是剛才請求回來的數(shù)據(jù)(這個數(shù)據(jù)在后面分析是一個PublicKey),接著4個字節(jié)是一個flag,最后四個字節(jié)是0x3E8。中間是0。數(shù)據(jù)結(jié)構(gòu)的大小是0x210。通過從全局?jǐn)?shù)據(jù)結(jié)構(gòu)中取一個字符串,并使用上面的Buffer創(chuàng)建這個特殊文件。

SR_WriteSpecialFile

接下來開始解密很多的本地加密字符串,然后組裝在一起。后面分析到這實(shí)際上是在組裝一個勒索的html文件。用瀏覽器加載這個html。

中間會刪除一些文件,同時創(chuàng)建一個Process并向這個Process注入一段代碼執(zhí)行寫文件的操作。

TED_CreateAWriteFileProcessThenExit

最后它會創(chuàng)建一個Windows窗口,這個窗口的尺寸等同于客戶的屏幕大小,并將信息(大概是勒索信息)打印到窗口上。

這部分會根據(jù)是否有全局的窗口句柄來判斷是否將信息打印到用戶屏幕上去,或者是寫入到一個Bmp文件中去。

SR_PrintScreenAndSave2File

之后會等待WM_QUIT消息,隨后釋放Mutex退出進(jìn)程。這個Mutex應(yīng)該是為了防止重入,進(jìn)而在用戶屏幕上繪制太多的信息。

0x41A77C應(yīng)該是打印在用戶屏幕上面的勒索信息,這個function涉及了大量的加密字符串的解密工作。

MS113主要邏輯

這個導(dǎo)出函數(shù)的主要邏輯是去Webserver上面下載數(shù)據(jù)并生成一個邪惡的dll。它首先會去嘗試連接”144.76.82.19″的443端口SSL,如果這個server訪問失敗還有一個后備server地址是 “93.170.187.64”。

連接并校驗(yàn)成功后會先發(fā)送一個請求文件大小的包,根據(jù)請求到的文件大小創(chuàng)建一個緩沖區(qū),并接收數(shù)據(jù),完畢后會把這個數(shù)據(jù)寫成一個image文件存放到本地磁盤上。

TED_DownloadStillerx_dll

下面是卡巴斯基對這個dll的分析介紹

StillerX

In order to further monetize the infections, CryptXXX downloads a DLL which acts as a credential stealing module. Internally referenced as “stiller.dll”, “stillerx.dll” and “stillerzzz.dll”, this DLL works as a plugin, but can also be used as a standalone stealer. The stealer, like the ransomware, is written in Delphi, and uses the object-oriented capabilities offered by the language. Its relatively large size on disk (around 1.2mb) is due to the static linking of several third party libraries such as DCPcrypt used for retrieving and decrypting locally stored credentials.

https://www.proofpoint.com/tw/threat-insight/post/cryptxxx-ransomware-learns-samba-other-new-tricks-with-version3100

我嘗試下載這個dll但是失敗了,我不知道是不是webserver端的程序修改了還是什么其他原因。當(dāng)我請求文件大小的時候webserver返回了一個比代碼中size還要大的尺寸,以至于程序總是沒有進(jìn)行實(shí)際的請求工作就退出了。

我Patch了個size,提供了一個更大的size,第一次請求實(shí)際的數(shù)據(jù)時能夠得到數(shù)據(jù),但是第二次繼續(xù)請求的時候沒有任何數(shù)據(jù)到達(dá)。因此實(shí)際獲取的數(shù)據(jù)長度與請求得到的文件長度不同,程序沒有繼續(xù)構(gòu)建這個dll出來。Webserver邏輯變更也是有可能的,所以我無法釋放出這個文件加以分析。

MS115主要邏輯

這個導(dǎo)出函數(shù)的工作就是monitor WerFault.exe,不停的殺這個process。然后判斷它的父進(jìn)程是否已經(jīng)退出了,如果退出的話創(chuàng)建一個Process用偽裝的svchost去loadCrypt然后調(diào)用MS112。看起來是一個守護(hù)進(jìn)程。

MS115_TerminateWerfault

加密用戶數(shù)據(jù)的邏輯

這個邏輯主要在MS112中,從下面這個圖可以看出來它會用隨機(jī)算法build一個隨機(jī)串出來,這個隨機(jī)串用來給文件加密,這樣它就不需要調(diào)用其它加密的API,保證了它的加密速度。Build這個隨機(jī)串在生成勒索信息和真正加密用戶文件中都有用到。當(dāng)然它還會每隔8191個字節(jié)加密前64個字節(jié)用非對稱RC4加密。

加密的邏輯是先將文件讀到一個緩沖區(qū)中,然后進(jìn)入一個循環(huán)中,循環(huán)每次增加8255個字節(jié)。在這個循環(huán)中拷貝緩沖區(qū)中的前64個字節(jié)到一個臨時buffer中,然后用非對稱的PublicKey進(jìn)行RSA加密,然后將這個buffer拷貝到另外一個緩沖區(qū)中,由于加密后數(shù)據(jù)會變大,因此拷貝到另外的緩沖區(qū)中選擇的size的大小是128字節(jié)。接下來的8191字節(jié)采用一個數(shù)學(xué)算法,利用隨機(jī)生成的44字節(jié)的串對這部分?jǐn)?shù)據(jù)進(jìn)行加密,速度很快。完成后將這8191個字節(jié)拷貝到另外的緩沖區(qū)中。8191+64=8255

如果這一切完成了,它會寫個0x3E8到文件末尾。還會把使用到的隨機(jī)串用PublicKey加密了。

這塊邏輯比較復(fù)雜,如果要準(zhǔn)確的分析還需要動態(tài)調(diào)試驗(yàn)證一下,這里我還沒有去做。把代碼貼出來,大家自己感受吧。

TED_EncryptUserFile

TED_EncryptBytesByRC4每隔8255加密64字節(jié)頭,強(qiáng)加密

TED_EncryptBytesByAlgorithm? 剩下的8191采用隨機(jī)串用數(shù)學(xué)算法加密,速度快,沒有看到AES對稱加密算法,和AESkey。

?

Random隨機(jī)數(shù)生成一個64位的key的算法分析

這個算法的邏輯簡單說就是,用兩個Random函數(shù)生成2個隨機(jī)數(shù),一個是0-3用于選擇使用哪一個字符數(shù)據(jù),另一個0-44用戶定位數(shù)組中哪一個字符。這樣就組裝除了一個64位的Key字符數(shù)組。放代碼看的清楚。

TED_BuildKeyWithRandom

種子算法:

SR_System__Randomize

偽隨機(jī)算法:

SR_Random

Other

?

由于惡意軟件是delphi寫的,因此了解一下delphi使用的字符串的結(jié)構(gòu)對分析代碼有些幫助。

AnsiString的內(nèi)部結(jié)構(gòu)

被感染后會將rundll32.exe從windows目錄中拷貝過來并改名為svchost,然后都用svchost啟動,起到偽裝迷惑的作用。

然后創(chuàng)建一個Process,進(jìn)程的Commandline如下:

C:\Users\ADMINI~1\Desktop\_00310~1\svchost.exe C:\Users\ADMINI~1\Desktop\_00310~1\_00310000_pe.dll, MS111

?

這個過程是在Dll load的時候做的,所以它只要一load就會創(chuàng)建一個Process再去load自己,這樣就會存在很多個Process在系統(tǒng)中。為了調(diào)試方便,可以打patch,讓它不要去創(chuàng)建進(jìn)程。

?

由于會寫一個bmp文件出來,這個bmp文件的內(nèi)容也是勒索信息,被用于屏幕保護(hù)。所以需要知道bmp的結(jié)構(gòu)才能分析對應(yīng)的代碼。

?原文地址:?http://ec2-52-196-167-189.ap-northeast-1.compute.amazonaws.com/wordpress/index.php/2016/07/15/cryptxxx-analysis/

總結(jié)

以上是生活随笔為你收集整理的Ransomware CryptXXX Analysis的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。