熊貓燒香(下)病毒釋放程序
- 1、loc_408171
- 2、sub_403F8C子函式
- 3、sub_4060D4子函式
- 4、CopyFile和WinExe子函式
1、loc_408171
第一步 打開IDA Pro和OD載入病毒樣本
![[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-qJrakqb5-1614761352934)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210303103719136.png)]](https://img.uj5u.com/2021/03/04/230178041122232.png)
打開OD轉到00408171 按下F2增加斷點,運行到這個地方

思考:OD重新打開斷點為什么還保留著?
在OllyDbg中,它會把所有與程式后模塊相關的資訊保存在單獨的檔案中,以便在模塊重新加載時繼續使用,這些資訊包括標簽、注釋、斷點、監視、分析資料、條件等,

第二步,在OD中分析0x00408171位置,
首先是一個CMP比較操作(Compare),接著查看EBP-0x8的內容,
- 0x00408171 cmp dword ptr ss:[ebp-0x8], 0x0

我們可以看到它內容是0,它的比較物件也是0
第三步,分析JNZ跳轉指令,
接著按下F8,可以看到比較后,ZF變成了1,由于二者都為0,所以在比較過后ZF=1,那么接下來的跳轉并不執行,繼續執行下面的內容,
JNZ 0x004082F0
JNZ(jump if not zero)結果不為零則轉移,即z=1時跳轉,但是z=1時,zf=0,故JNZ跳轉的條件也是零標志位zf=0,由于指令執行的結果為0,此時的ZF值為1,故不執行跳轉
CF(進位標志)=1:算術操作最高位產生了進位或借位,=0 最高位無進位或借位 ;
PF(奇偶標志)=1:資料最低8位中1的個數為偶數, =0 資料最低8位中1的個數為奇數;
AF(輔助進位標志)=1:D3→D4位產生了進位或借位, =0 D3→D4位無進位或借位;
ZF(零標志)=1:操作結果為0, =0 結果不為0;
SF(符號標志)=1:結果最高位為1,=0 結果最高位為0;
OF(溢位標志)=1:此次運算發生了溢位, =0 無溢位,
在這里插入圖片描述
第四步,分析函式sub_40532C,
在IDA中繼續查看代碼內容,

C:\Users\14551\Desktop\setup.exe

接下來將EDP-0x3D4賦值給EDX,F8執行并在資料視窗中跟隨,發現它此時還是空值,

進入函式

發現該函式的主要功能是API函式CharUpperBuffA,
- CharUpperBuffA函式作用:把緩沖區中指定數目的字符轉換成大寫字母
總結,重命名及對應功能如下:
- sub_40532C -> CharToUpper
- 功能:緩沖區中指定數目的字符轉換成大寫字母

第五步,分析函式sub_4054BC,
在IDA中雙擊查看該函式的內容,可以發現它主要是呼叫了GetSystemDirectory函式,從而獲取系統的路徑,

總結,重命名及對應功能如下:
- sub_4054BC -> GetSystemDir
- 功能:獲取系統路徑

2、sub_403F8C子函式

第一步,我們讓OD跳轉到0x004081AB的位置,
直接按F8執行下來,在這里可以看到PUSH是將剛才利用GetSystemDirectory函式所獲取的系統路徑字串進行壓堆疊,
壓堆疊內容為system32這個目錄,
- C:\Windows\system32

第二步,按下F8繼續分析,發現它又將drivers壓堆疊,將spoclsv.exe字串壓榨,
- drivers
- spoclsv.exe

注意,上圖僅顯示了setup.00408658,沒有將具體的值顯示出來,
思考:OD中如何查看堆疊中的值?
選中ESP堆疊指標暫存器(主要用于存放堆疊記憶體儲單元的偏移量),在“堆疊視窗中跟隨”,然后依次選擇值“0x00408644”和“0x00408658”,右鍵在“資料視窗中跟隨”,即可查看堆疊中的值,

發現對應的值為“drivers”和“spoclsv.exe”,如下圖所示,

寫到這里,我們可以推測:下面這個函式的功能是將壓入堆疊的字串進行拼接,成為一個新的路徑,
第三步,按下F8執行到這個Call函式進行分析,
按下F8執行過來后,選中EAX在資料視窗中跟隨,
EAX是累加器(accumulator),它是很多加法乘法指令的預設暫存器,
EBX是基地址(base)暫存器, 在記憶體尋址時存放基地址,
ECX是計數器(counter),是重復(REP)前綴指令和LOOP指令的內定計數器,
EDX則總是被用來放整數除法產生的余數,

在資料視窗中右鍵“轉到”->“運算式”,然后輸入值:
- 01C67E28

接著再CALL函式處按下F8,我們需要關注資料視窗中的前后變化情況,我們可以看到它新生成了一個路徑字串,
- C:\Windows\system32\drivers\spoclsv.exe

總結,重命名及對應功能如下:
- sub_403F8C -> TwoStringCat
- 功能:將兩個字串進行連接

3、sub_4060D4子函式
事實上,這段程式的功能如下:
- 首先通過這個函式將字串連接;
- 再將路徑字串轉換為大寫字母;
- 然后將這個字串與這里進行對比,

第一步,我們通過OD來分析下比較功能,在OD中執行到4081E3位置,然后按F9執行過去,
- 0x004081E3 call sub_404018

第二步,分析sub_404018函式,
我們在這里看下它比對的是什么字串,在資料視窗中跟隨值,可以看到兩個字串分別是拼接的字串和當前OD分析程式的字串,
C:\USERS\14551\DESKTOP\SETUP.EXE
C:\WINDOWS\SYSTEM32\DRIVERS\SPOCLSV.EXE
很明顯,我們分析的熊貓燒香病毒程式在桌面上,而比對的是DRIVERS路徑下,

sub_404018函式的目的是分析當前這個程式是不是drivers目錄下的這個程式,如果是的話執行一段代碼,否則執行另一段代碼,

因為目前不是在drivers路徑下,因此它執行另一段代碼,我們按下F8繼續執行,JE跳轉不成立,繼續出現一個新的CALL,
- 0x004081F3 CALL setup.004060D4
第三步,sub_4060D4函式的引數分析,
該函式存在一個引數存在EAX中,通過資料視窗跟隨發現值為:
- spoclsv.exe

我們回到IDA查看該函式的基本組成,雙擊進入sub_4060D4函式,可以看到這個函式非常長,并且內部包括很多CALL函式,如果說一個個CALL分析,會發現它呼叫了很多的API函式,通過分析歸納該函式的作用如下:
查找當前記憶體中指定的行程,即查找當前是否有spoclsv.exe這個行程

總結,重命名及對應功能如下:
- sub_4060D4 -> SearchAndTerminateProcess
- 功能:查找當前記憶體中的指定行程,若存在,則將其終止

4、CopyFile和WinExe子函式
在CopyFile函式位置我們停下來分析,
- 0x004082A6 call CopyFileA

第一步,我們將OD跳轉到檔案名0x0040828C的位置,按下F2增加斷點,
- 0x0040828C push eax
程式執行過來后,在這里我們跟蹤下這個EAX地址,這里可以看到想要拷貝的地址就是剛才我們所連接成的字串地址,
- C:\Windows\system32\drivers\spoclsv.exe
那么,它所拷貝的內容是什么呢?

第二步,繼續分析拷貝檔案的內容,
按下F8執行到0x004082A5位置,可以看到它是將當前這個病毒檔案復制到drivers目錄下,通過CopyFile來實作,
事實上,它是將我們的當前檔案改為spoclsv.exe之后,再復制到drivers目錄中,

第三步,我們繼續往下分析,看到一個WinExec函式,

通過OD來到4082E3位置,我們看看這個引數來判斷它想執行什么程式,

第四步,按下F2增加斷點,然后F9執行過來,并在資料視窗中跟隨EAX值,
可以看到,它實際想執行的就是這個spoclsv.exe程式,也就是說,它在把當前這個病毒樣本復制到drivers目錄之后,那么這句代碼就是將它執行起來,再往下ExitProcess是結束當前正在運行的行程,即熊貓燒香的病毒樣本,

注意,當病毒本體將自身復制到“drivers”中并改名后,這里就是對改了名字的病毒程式執行運行的操作,然后主體程式就退出了,如果想繼續用OD進行動態分析,要么載入“spoclsv.exe”,要么對之前的一處條件跳轉進行修改,令程式以為自己就是“spoclsv.exe”,
第五步,回到跳轉位置0x004081E8,對其進行分析,

在OD中跳轉到該位置,然后按下F2下一個斷點,并執行到斷點處,
- 0x0040818 JE 004082F0

正常來說,由于我們當前所分析的程式并不是drivers目錄下的那個病毒樣本,因此這個跳轉是不成立的,這里為了使其成立,可以將JZ修改為JNZ,但是這改變了病毒程式,最好的辦法是改變ZF標志位,將原來的0改為1就可以了,
第六步,雙擊ZF標志位,它會變成1,
雙擊后可以看到提示“跳轉已實作”,現在這個病毒就以為自己是spoclsv.exe,

第七步,按下F8執行到4082F0位置
真正實作病毒功能的也就是“spoclsv.exe”這個程式,
希望大家可以有所識訓!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/265985.html
標籤:區塊鏈
