《小白學分析》某勒索病毒分析報告

0x00 樣本信息

樣本名稱:eef83497e8aa02d644b7d071be81a678e1611aa6
MD5:5853957178FE89022855A530A4B0AA20
SHA-1:60AF429E4AFF32E49405DF04710F41757D30F4F0
創建時間:星期一 01 七月 2019, 13.55.28
殼:UPX

0x01 測試環境及工具

環境: Windows 7 x86
工具: OD,IDA,PEiD,火絨劍。

0x02 樣本行爲

樣本運行後,首先調用一些啓動函數,獲取相關信息和進行初始化,然後進行PE文件校驗,跳到shellcode地址去將原PE文件拷貝並修改,然後加載動態庫並獲取相關函數地址,之後殺死舊進程,新的進程會遍歷文件,將一些特定文件進行加密,後綴爲.litar,並且留下勒索信息。

0x03 行爲詳細分析

查殼:使用PEiD查殼,發現是UPX殼。
在這裏插入圖片描述
直接脫殼。
在這裏插入圖片描述
OD加載程序,停在sub_412CC7處,發現就是獲得一些系統時間等信息,繼續往下分析。發現就是一些啓動函數的初始化行爲,進行簡單分析。
在這裏插入圖片描述
對PE文件進行校驗。
在這裏插入圖片描述
執行到sub_4126B0(),初始化之後需要用到的函數地址。
在這裏插入圖片描述
獲得病毒的文件路徑。
“”“C:\Users\Shine\Desktop\脫殼\eef83497e8aa02d644b7d071be81a678e1611aa6"”"

在這裏插入圖片描述

獲取所需環境變量。(簡單列舉幾個)
(UNICODE “USERSPROFILE=C:\ProgramData”),…

在這裏插入圖片描述

獲取病毒文件信息
在這裏插入圖片描述
獲得環境變量和文件信息後,繼續執行初始化操作。
在這裏插入圖片描述
在這裏插入圖片描述進行一些初始化,初始化一些全局變量和調用一些驅動器掛載、註冊表相關的處理函數,這裏不做詳細詳細說明。
Shellcode
之後發現了一段用來解析和執行shellcode的代碼
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
我們在OD中,進入shellcode地址。
在這裏插入圖片描述
加載動態庫,獲得之後要使用的函數地址。

在這裏插入圖片描述

進入第二個函數內,先申請一塊內存,並修改內存屬性,修改爲可寫的。
在這裏插入圖片描述
修改PE區段信息並拷貝保存
前面的修改內存屬性,爲之後的修改PE區段信息做準備。
現在開始修改。將原區段信息拷貝到剛纔申請的內存當中。
PE文件區段包括.text、.data、.rdata、.rsrc、.reloc段。
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述

拷貝函數內部實現。
在這裏插入圖片描述
拷貝完成之後,釋放內存。

在這裏插入圖片描述

接下來的操作是頻繁地加載動態庫,獲取函數的地址
在這裏插入圖片描述在這裏插入圖片描述在這裏插入圖片描述
例如:

eax=0045A154 (eef83497.0045A154), ASCII “InternetCloseHandle”
EAX 0045A12C ASCII “InternetOpenUrlW”
EAX 76601C80 WININET.InternetReadFile
EAX 0045A17E ASCII “HttpQueryInfoW”
eax=0045A1C4 (eef83497.0045A1C4), ASCII “PathFindExtensionW”
eax=0045A204 (eef83497.0045A204), ASCII “PathFileExistsA”
eax=0045A250 (eef83497.0045A250), ASCII “GetCommandLineW”
eax=0045A262 (eef83497.0045A262), ASCII “CreateFileA”
eax=0045A270 (eef83497.0045A270), ASCII “FindFirstFileW”
eax=0045A282 (eef83497.0045A282), ASCII “SetFilePointer”
eax=0045A2D0 (eef83497.0045A2D0), ASCII “CreateProcessW”
eax=0045A2E4 (eef83497.0045A2E4), ASCII “CreateDirectoryW”

再殺死進程,並退出進程。
在這裏插入圖片描述

進行完這一系列操作之後,此時我們發現病毒文件原OEP處的代碼已經發生了改變,說明我們已經成功覆蓋了原PE文件的信息,並且執行新進程。

在這裏插入圖片描述

shellcode裏除了拷貝覆蓋PE文件,還實現了調用動態庫和獲取函數地址,這樣的好處是在IDA中無法分析,只能通過動態調試進行分析。
從shellcode跳回代碼段。

在這裏插入圖片描述

我們發現程序中有一些反調試手段,例如IsDuggerPresent()

在這裏插入圖片描述

我們可以手動dump到BeingDugged的位置,進行修改。以繞過調試,後面可能還有很多相關的反調試,我們直接使用插件phantOm搞定。

在這裏插入圖片描述

這樣跟着調,定位不到關鍵點,我們直接將修改後的PE文件dump下來,重新使用IDA和OD結合分析。
OD加載dump後的文件,首先還是一些初始化操作,這裏不做分析。
在這裏插入圖片描述
創建互斥體。
在這裏插入圖片描述

獲得文件路徑等信息。
在這裏插入圖片描述

遍歷文件和加密
遍歷文件。

在這裏插入圖片描述
加密過程
並且對後綴爲.dll、.reg、.lnk等文件不進行加密。在這裏插入圖片描述
對特定後綴的文件進行加密。
在這裏插入圖片描述

進入加密函數。

打開文件,獲取文件大小,如果文件大小小於5,則關閉文件句柄,不進行加密。
在這裏插入圖片描述
文件大小大於5,進行處理,並加密。
在這裏插入圖片描述

進行加密。
在這裏插入圖片描述
追加硬編碼信息。

在這裏插入圖片描述

加密結束後,添加後綴.litar,加密結束,此時主機中的文件已經被加密。
在這裏插入圖片描述
與此同時,還有勒索信息。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章