1. 程式人生 > >記一次帶有FSG殼的熊貓燒香病毒分析過程

記一次帶有FSG殼的熊貓燒香病毒分析過程

樣本概況

樣本資訊

檔案:spo0lsv.exe
大小:3001位元組
MD5:512301C535C88255C9A252FDF70B7A03
SHA1:CA3A1070CFF311C0BA40AB60A8FE3266CFEFE870
CRC32:E334747C
病毒行為:自我複製,感染可執行檔案,修改網頁檔案內容,修改登錄檔,刪除備份檔案,關閉防毒軟體視窗,服務與程序

測試環境以及工具

測試環境:win7 32bit
分析工具:OD,IDA,火絨劍,PChunter

分析目標

分析病毒行為與程式具體執行流程;

具體行為分析

0利用查殼工具檢視

發現其加了FSG殼
這裡寫圖片描述

1.利用PChunter

開啟Pchunter之後發現可疑程序:
這裡寫圖片描述
檢視啟動項那一項:
這裡寫圖片描述
這裡寫圖片描述
檢視驅動,服務等可疑項
未發現異常

檢視網路連線:
發現可疑程序的網路連線:
這裡寫圖片描述
使用抓包工具(WSExplorer)檢視可疑流量:
這裡寫圖片描述
這裡寫圖片描述
提取樣本(利用hash工具)
將路徑下檔案提取到壓縮到本地,並修改副檔名為vir
這裡寫圖片描述
這裡寫圖片描述

2.手工清理

a.結束可疑程序 spo01sv.exe(在PChunter中的spo01sv.exe右擊—>結束程序)
b.刪除可疑程序啟動項:如下圖
這裡寫圖片描述
這裡寫圖片描述

3.利用火絨劍進行主要行為分析

a.先暫時只勾選下面這兩個動作,其他都不勾選:
這裡寫圖片描述


這裡寫圖片描述
點選確定:
這裡寫圖片描述

發現生成了一個病毒exe:
這裡寫圖片描述
登錄檔操作:
這裡寫圖片描述

這裡寫圖片描述
點選確定之後:
設定啟動項:
這裡寫圖片描述
程序操作:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
網路操作:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
實用技巧:利用火絨劍中的動作詳細資訊中的呼叫棧可以定位到相關動作資訊
這裡寫圖片描述
這裡寫圖片描述
其他行為:
這裡寫圖片描述
這裡寫圖片描述
執行監控:
這裡寫圖片描述
執行CMD命令,刪除網路共享!
這裡寫圖片描述

惡意行為的一個簡要小結

1.自我複製樣本到c盤,c/Windows/driver/目錄下面
啟動c/Windows/driver/spo01sv.exe(樣本)
這裡寫圖片描述
這裡寫圖片描述
2.在每一個目錄下面建立了Desktop_.ini
這裡寫圖片描述

4.脫殼

手脫FSG2.0過程:
執行至下圖中位置:
這裡寫圖片描述

按F9執行:
這裡寫圖片描述
EDI資料視窗中跟隨:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
按F9繼續:
這裡寫圖片描述
繼續F9(經過若干次的F9以後):IAT修復完成
這裡寫圖片描述
這裡寫圖片描述
同時將IAT中的7FFFFFFF改成00000000
這裡寫圖片描述
下面按F7跳至OEP:
這裡寫圖片描述
這裡寫圖片描述
下面DUMP檔案:(D278為預設,一般不會錯,檢視此時OEP:0040D278)
這裡寫圖片描述

儲存為1.exe
這裡寫圖片描述
修復IAT:
這裡寫圖片描述
D278為上面在OD裡面dump時候的oep的值
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
選擇1.exe
1.exe是從OD裡面dump下來的
這裡寫圖片描述
1_.exe是自己生成的
這裡寫圖片描述

脫完殼以後進行深度掃描:(發現其語言為Delphi6.0-7.0)
這裡寫圖片描述
這裡寫圖片描述
至此,脫殼完成!

病毒惡意行為分析(OD結合IDA雙劍合璧)

1.將dump修復之後的檔案使用IDA開啟;
按shift+F5:
這裡寫圖片描述
2.在IDA中用Shift+F5開啟簽名視窗:
右鍵加入delphi的簽名庫:
這裡寫圖片描述
這裡寫圖片描述
按快捷鍵:ctrl+F搜尋delphi:
這裡寫圖片描述
這裡寫圖片描述
IDA與OD雙劍合璧
OEP處的對比:
這裡寫圖片描述
這裡寫圖片描述

進入到函式裡面,堆疊中跟隨:
這裡寫圖片描述
這裡寫圖片描述

知識點擴充套件1:

這裡寫圖片描述
藉此機會,講講交叉引用與匯入表的聯合應用:
雙擊此API:
這裡寫圖片描述
按Ctrl+x:
這裡寫圖片描述
雙擊下面框中的API,就會跳往呼叫RegCreateKeyExA這個API的函式
這裡寫圖片描述
可以發現RegCreateKeyExA這個API是在上面這個框裡面的這個函式(j_RegCreateKeyExA)中的,下面對這個函(j_RegCreateKeyExA)數進行交叉引用
這裡寫圖片描述
Ctrl+x,交叉引用:
這裡寫圖片描述
來到了上一層函式:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
來到了上一層:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
跳往上一層:

這裡寫圖片描述
再次跳往上一層,交叉引用:
這裡就是接近OEP的地方了;

知識點擴充套件1小結:

結合匯入表,檢視關鍵API,利用交叉引用這個強大的功能可以直搗黃龍,追根朔源!

知識點擴充套件2

一般而言,黑色表示非系統函式,上面的天藍色表示系統函式,
這裡寫圖片描述

知識點擴充套件3

OD和IDA配合的又一個例子:
在OD裡面不知道這個函式的功能,想要知道它大概的功能,可以這麼做:
利用這個函式在OD中的地址,在IDA裡面搜尋:
顯而易見,這個函式就是一個字串拼接庫函式;
這裡寫圖片描述
說明:如果OD和IDA載入基址不一樣的話可以按照下面操作調整:
這裡寫圖片描述
這裡寫圖片描述

知識點擴充套件4(編輯函式標籤:)

這裡寫圖片描述
這裡寫圖片描述

知識點擴充套件5(有關seh鏈的:)

.seh鏈的:
棧頂是指向下一個seh的地址,棧頂的下一行是當前處理異常的函式所在地址,如果當前處理不了,就發給下一個seh:
這裡寫圖片描述
這裡寫圖片描述
依次類推,直到seh的鏈尾
這裡寫圖片描述

知識點擴充套件6(Delphi語言中傳參)

Delphi語言中是用暫存器傳參的:
這裡寫圖片描述

惡意程式碼分析

分析思路:
從OEP處開始的程式碼:
猜測sub_405250的依據:
呼叫的第一個sub_405250函式,其引數有”xboy”,後面另一次呼叫之中,引數有字串”whboy”,並且在呼叫sub_405250函式之後,又呼叫strcmp函式,之後又有判斷返回值的程式碼,如果不對,則退出程序
這裡寫圖片描述
這裡寫圖片描述
動態跟蹤sub_405250函式:
這裡寫圖片描述
觀察LstrArrayClr函式;

這裡寫圖片描述
這裡寫圖片描述
可以發現呼叫當前程式碼的函式(其實就是主函式):
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
繼續跟,來到主函式執行緒中:

這裡寫圖片描述
尋找定位字串!(IDA與OD結合)
這裡寫圖片描述
這裡寫圖片描述

當然也可以在OD中進行定位:
這裡寫圖片描述

第一個惡意程式碼函式分析:

v43 = &savedregs;
 v42 = &loc_408781;
 v41 = __readfsdword(0);
 __writefsdword(0, (unsigned int)&v41); // Write memory to a location specified by an offset relative to the begining of the fs segment,這裡0為偏移量,後面一個引數為要寫入的資料

System::ParamStr(0, &v71);//就是在exe檔案後面可以跟引數,paramstr 獲取的就是exe檔案後面跟引數。
如有可執行檔案project1.exe 在執行中輸入e:\project1.exe 123 456 789 
那麼paramstr(1)='123' paramstr(2)='456' paramstr(3)='789',這裡paramstr函式括號裡面應該只有一個函式,它這裡虛擬碼可能有點問題,
unknown_libname_123(v71, &v72);

重點部分1:
複製自身到系統驅動目錄下面,然後執行拷貝的程式
Teminatevirusprocess這個函式的猜測,是因為在IDA中進入到這個函式之後發現了teminatevirusProcess這個關鍵API,至於為什麼為是結束的是病毒,根據這個函式括號裡面的關鍵字串來猜測的,結束掉病毒程序是為了讓自己隱藏起來不讓防毒軟體找到
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

感染檔案部分:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

感染函式:

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
可以發現,病毒感染了C:\program Files 目錄下的exe,過程如下:
1讀取原檔案至記憶體
2.複製病毒至感染路徑,覆蓋原檔案
3.在感染之後的exe上追加原標識
4.在感染之後的exe上追加感染標識
如下:Whboy+原檔名+隨機數
這裡寫圖片描述
這裡寫圖片描述

第二個惡意程式碼函式裡面:
這裡寫圖片描述
這裡寫圖片描述

進入回掉函式:
遍歷檔案目錄行為:
這裡寫圖片描述
這裡寫圖片描述
這裡搜尋機器上的可用分割槽,然後感染分割槽中的指令碼檔案,但是除了上圖中的”WINDOWS”,”WINNT”,”system32”等資料夾。
這裡寫圖片描述

這裡寫圖片描述
小技巧,在IDA中:
將虛擬碼識別出來的特徵API在IDA view檢視中快速定位出來alt+t鍵
這裡寫圖片描述
這裡寫圖片描述
回到主線:
感染後病毒在相應的資料夾中寫上已感染標記檔案Desktop_.ini。

這裡寫圖片描述
這裡寫圖片描述
如果檔案是GHO(備份),則將其刪除
即:病毒會刪除機器中GHO檔案,使得中毒後無法使用ghost還原
這裡寫圖片描述

進入包含SetTimer這個API的函式:
這裡寫圖片描述

進入SetTimer的回掉函式:
1.搜尋字串進行定位:

這裡寫圖片描述

ALT+T進行字串搜尋:
這裡寫圖片描述
這裡寫圖片描述

設定定時器,將病毒自身複製到各分割槽根目錄下命名為setup.exe,並生成autorun.inf檔案
這裡寫圖片描述

建立檔案並向檔案裡面新增資料!
這裡寫圖片描述
連線本地網路
這裡寫圖片描述

執行惡意程式碼的第三個函式:
這個函式中呼叫了6個定時器:
這裡寫圖片描述
這裡寫圖片描述

進入第一個回掉函式sub_40CEE4:
OpenProcessToken獲取訪問令牌;
利用LookupPrivilegeValueA可以獲取本地唯一識別符號(LUID)
OpenProcessToke和LookupPrivilegeValueA獲取的資訊被AdjustTokenPrivileges利用,進行提權:
這裡寫圖片描述

Ctrl+x進行交叉引用
這裡寫圖片描述
這裡寫圖片描述

檢查是否有防毒軟體,如果有,則讓其關閉
這裡寫圖片描述

與此同時,結束以下程序:
這裡寫圖片描述
這裡寫圖片描述
新增設定登錄檔選項:
這裡寫圖片描述
以上為第一個回掉函式;
下面看第二個回掉函式:
使用InternetOpen初始化WinINet函式,然後使用InternetOpenUrl開啟指定連結,最後用InterReadFile讀取到網頁原始碼,下載惡意程式碼:
這裡寫圖片描述
建立裡兩個回掉函式,估計不會幹什麼好事:
這裡寫圖片描述

執行cmd命令:
這裡寫圖片描述
利用cmd命令刪除共享檔案
怎麼樣利用字串定位函式:
這裡寫圖片描述
Alt+B鍵來定位:
這裡寫圖片描述
刪除防毒軟體啟動項,關閉殺軟服務:
這裡寫圖片描述
這裡寫圖片描述
開啟解密之後的網頁:
先解密然後從網址下載惡意程式碼:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
至此,分析基本結束!

專殺工具的編寫

總結

最後以一張流程圖來總結一下熊貓燒香的過程:
這裡寫圖片描述
(注:圖中清楚應為 清除!)