亞寵展、全球?qū)櫸锂a(chǎn)業(yè)風(fēng)向標(biāo)——亞洲寵物展覽會深度解析
1195
2025-04-02
IDA和OD作為逆向分析的“倚天劍和“屠龍刀”,學(xué)好它們的基本用法至關(guān)重要。本文重點(diǎn)分析熊貓燒香病毒的功能函數(shù),大家掌握這些技巧后才能更好地分析更多的代碼。同時(shí),本文部分實(shí)驗(yàn)參考姜曄老師的視頻分析,真的非常佩服和值得去學(xué)習(xí)的一位老師。技術(shù)路上哪有享樂,為了提升安全能力,別抱怨,干就對了~
文章目錄
一.實(shí)驗(yàn)背景
二.sub_408024核心函數(shù)分析
1.sub_40277C子函數(shù)
2.sub_405684子函數(shù)
3.sub_403ED4子函數(shù)
4.sub_4057A4子函數(shù)
5.分析sub_4057A4后續(xù)刪除功能
6.sub_4078E0子函數(shù)
7.sub_403C44子函數(shù)
8.sub_403ECC子函數(shù)
三.總結(jié)
逆向分析:https://github.com/eastmountyxz/SystemSecurity-ReverseAnalysis
網(wǎng)絡(luò)安全:https://github.com/eastmountyxz/NetworkSecuritySelf-study
前文分析:
[系統(tǒng)安全] 一.什么是逆向分析、逆向分析基礎(chǔ)及經(jīng)典掃雷游戲逆向
[系統(tǒng)安全] 二.如何學(xué)好逆向分析及呂布傳游戲逆向案例
[系統(tǒng)安全] 三.IDA Pro反匯編工具初識及逆向工程解密實(shí)戰(zhàn)
[系統(tǒng)安全] 四.OllyDbg動(dòng)態(tài)分析工具基礎(chǔ)用法及Crakeme逆向破解
[系統(tǒng)安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大戰(zhàn)僵尸游戲
[系統(tǒng)安全] 六.逆向分析之條件語句和循環(huán)語句源碼還原及流程控制
[系統(tǒng)安全] 七.逆向分析之PE病毒原理、C++實(shí)現(xiàn)文件加解密及OllyDbg逆向
[系統(tǒng)安全] 八.Windows漏洞利用之CVE-2019-0708復(fù)現(xiàn)及防御詳解
[系統(tǒng)安全] 九.Windows漏洞利用之MS08-067遠(yuǎn)程代碼執(zhí)行漏洞復(fù)現(xiàn)及深度防御
[系統(tǒng)安全] 十.Windows漏洞利用之SMBv3服務(wù)遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2020-0796)及防御詳解
[系統(tǒng)安全] 十一.那些年的熊貓燒香及PE病毒行為機(jī)理分析
[系統(tǒng)安全] 十二.熊貓燒香病毒IDA和OD逆向分析(上)病毒初始化
[系統(tǒng)安全] 十三.熊貓燒香病毒IDA和OD逆向分析(中)病毒釋放機(jī)理
聲明:本人堅(jiān)決反對利用教學(xué)方法進(jìn)行犯罪的行為,一切犯罪行為必將受到嚴(yán)懲,綠色網(wǎng)絡(luò)需要我們共同維護(hù),更推薦大家了解它們背后的原理,更好地進(jìn)行防護(hù)。該樣本不會分享給大家,分析工具會分享。(參考文獻(xiàn)見后)
一.實(shí)驗(yàn)背景
對病毒進(jìn)行逆向分析,可以徹底弄清楚病毒的行為,從而采取更有效的針對手段。為了節(jié)省篇幅,在這里我不打算將“熊貓燒香”進(jìn)行徹底的分析,只會講解一些比較重要的部分,大家只要掌握了這些思想,那么就可以處理很多的惡意程序了。
這里主要使用的工具包括:
PEiD:病毒加殼、脫殼基礎(chǔ)性分析
IDA Pro:靜態(tài)分析
OllyDbg:動(dòng)態(tài)分析
實(shí)驗(yàn)文件:
setup.exe:熊貓燒香病毒
基本流程:
利用查殼工具檢查病毒是否帶殼
利用OD動(dòng)態(tài)分析病毒
利用IDA靜態(tài)分析病毒
注意:由于OD工具會將程序運(yùn)行起來,所以我們在進(jìn)行惡意代碼分析時(shí)盡量在搭建好的虛擬機(jī)中操作。如果病毒傳播性較強(qiáng)如WannaCry,建議斷開網(wǎng)絡(luò)和斷開共享分析。
實(shí)驗(yàn)思路:
1.利用OD分析每一個(gè)CALL的功能
2.使用IDA Pro在宏觀上把握程序的功能并及時(shí)對函數(shù)進(jìn)行重命名操作
上篇回顧:
0x0040CB7E call sub_403C98
– 重命名為:AllocStackAndCopyString
– sub_403D08:分配內(nèi)存空間
– sub_402650:字符串拷貝功能
0x0040CB9F call sub_00405360
– 重命名為:DecodeString
– 0x004053CC:循環(huán)入口點(diǎn)
– 0x004053E8:獲取“xboy”解密字符
– 0x00405408:完成異或解密操作
0x0040CBAC call sub_404018
– 重命名為:CMPString
– 0x00404041:循環(huán)入口點(diǎn)
– 功能:字符串比較“武漢男生感染下載者”
0x0040CBCC loc_40CBBC
– 功能:字符串解密和比較操作,解密字符“whboy”
– DecodeString
– CMPString
二.sub_408024核心函數(shù)分析
上一篇文章我們詳細(xì)介紹了熊貓燒香病毒起始階段的初始化操作,這篇文章將進(jìn)入該病毒的核心功能函數(shù),進(jìn)行相關(guān)的逆向分析。Let’s Go!!!
1.sub_40277C子函數(shù)
第一步,打開IDA Pro載入我們的病毒樣本。
第二步,定位到loc_40CBE6位置。
這里看到了三個(gè)call函數(shù),它們又是什么功能呢?這三個(gè)call是熊貓燒香病毒最重要的功能,也是我們接下來要深入逆向分析的內(nèi)容。
sub_408024
sub_40CA5C
sub_40C97C
第三步,查看函數(shù)sub_408024內(nèi)容。
在這個(gè)函數(shù)的最開始位置我們看到了將84h賦值給ecx,84h表示循環(huán)的次數(shù)。循環(huán)的主體是下面兩個(gè)push,其中每一個(gè)push能開辟8個(gè)字節(jié)(32位)的空間,兩個(gè)字節(jié)能獲得16個(gè)字節(jié)的空間。這樣的空間一共申請了ecx(84h)次。
mov ecx, 84h
push 0
push 0
第四步,我們主要分析call函數(shù),往下看到第一個(gè)函數(shù)sub_40277c。
第五步,接著用OD載入exe程序,進(jìn)行動(dòng)態(tài)的分析,直接跳轉(zhuǎn)到該地址。
0x0040804D call sub_40277C
基本流程為右鍵“轉(zhuǎn)到”->“表達(dá)式”->輸入“0040804D”,按下F2增加斷點(diǎn)。
按F9直接執(zhí)行到該位置。
該函數(shù)我們可以在IDA中先雙擊查看,會發(fā)現(xiàn)該函數(shù)首先調(diào)用了GetModuleFileNameA。
0x004027A0 call GetModuleFileNameA
該函數(shù)功能主要是獲取當(dāng)前進(jìn)程已加載模塊文件的完整路徑
第六步,回到OD中sub_40277C函數(shù),按下F7單步進(jìn)入函數(shù)。
接著進(jìn)入函數(shù)后按F8單步步過,可以看到GetModuleFileNameA右下角的內(nèi)容,在這個(gè)PathBuffer里,會保存即將獲取的路徑信息。
0x004027A0 call 00401100
PathBuffer
接著選中PathBuffer值,右鍵點(diǎn)擊“數(shù)據(jù)窗口中跟隨”。
注意:按下F8,大家可以在數(shù)據(jù)窗口中留意該值的前后變化。發(fā)現(xiàn)它成功獲取了該樣本的本地路徑。
C:\Users551\Desktop\setup.exe
第七步,我們打開IDA給sub_40277C函數(shù)重命名。
小技巧
IDA中雙擊會進(jìn)入對應(yīng)的函數(shù),那么如何返回上一層呢?按下ESC即可返回,如下圖所示,從GetModuleFileNameA中按ESC返回sub_40277C位置。而按F5鍵會逆向出C語言程序。
然后選中函數(shù)重命名,快捷鍵為N。
總結(jié),重命名及對應(yīng)功能如下:
sub_40277C -> GetFilePathAndName
功能:獲取文件的完整路徑及文件名稱
2.sub_405684子函數(shù)
接著往下看,函數(shù)如下:
0x0040805E call sub_405684
第一步,繼續(xù)在OD中進(jìn)行跟進(jìn)。
首先我們表達(dá)式跳轉(zhuǎn)到“00408052”位置,然后按下F2增加斷點(diǎn),按下F9執(zhí)行過來。
我們首先可以看看它壓入的參數(shù)是什么?
第二步,在數(shù)據(jù)窗口中跟隨EAX。
按下F7單步執(zhí)行,在寄存器中選中EAX,右鍵“數(shù)據(jù)窗口中跟隨”。
顯示結(jié)果如下圖所示,可以看到EAX中保存的是剛剛獲取的病毒文件完整路徑。
第三步,在數(shù)據(jù)窗口中跟隨EDX。
按下F7單步執(zhí)行,在寄存器中選中EDX,右鍵“數(shù)據(jù)窗口中跟隨”。目前EDX還是空值。
第四步,進(jìn)入后面的call(00405684),查看它的內(nèi)容。
先選中EAX右鍵“數(shù)據(jù)窗口中跟隨”。
然后按下F7進(jìn)入函數(shù),可以看到這里出現(xiàn)了粗線條,
說明它是一個(gè)循環(huán)
。我們步入循環(huán)分析其內(nèi)容。
前面按下F8執(zhí)行,然后到循環(huán)位置按F7步入。
mov eax, [local.1]
注意這里簡單介紹下局部變量的概念。
小技巧
[LOCAL]是局部變量的意思,例如[LOCAL.1]就是第一個(gè)局部變量,存放在棧里的[EBP-4]位置,[LOCAL.2]就是[EBP-8],圖片上的命令其實(shí)就是MOV EAX, [EBP-4]。
方法一:可以在OD的選項(xiàng)->調(diào)試設(shè)置->分析里面有個(gè)選項(xiàng)把勾去掉設(shè)置
方法二:選中該命令右鍵“匯編”即可,但修改后會顯示灰色
第五步,接著分析循環(huán)。
分析語句“mov eax, dword ptr ss:[ebp-0x4]”,首先將EBP-4賦值給EAX,而當(dāng)前的EBP-4就是所獲取的病毒的完整路徑。**
mov eax, [local.1]
mov eax, dword ptr ss:[ebp-0x4]
然后再按F8,這里是將EAX加上EBX再減1,其中EAX是病毒完整路徑的首地址,EBX是20,它又是什么呢?
mov al, byte ptr ds:[eax+ebx-0x1]
我們查看EBX,如下圖所示。凡是由Delphi編寫的程序,它會在字符串減4的位置保存一個(gè)數(shù)值。這個(gè)數(shù)值就是字符串的長度,我們可以看到當(dāng)前路徑長度是0x20。
[eax+ebx-0x1]:計(jì)算字符串最后一個(gè)字母的位置,即“e”,下圖中也顯示出來了“ds:[02140127]=65(e)”
第六步,繼續(xù)按F8執(zhí)行,這里結(jié)合IDA分析分析0x5C、0x2F、0x3A對應(yīng)的值。
我們在0x004056B4看到有一系列的比對,然后右鍵分別選中0x5C、0x2F、0x3A,解析成對應(yīng)的值,或者選中按下R鍵。
5C代表斜杠(\),2F代表反斜杠(/),3A代表冒號(:)。
小結(jié),該循環(huán)是將病毒所在完整的路徑從后向前檢索,直到遇到斜杠(\)、反斜杠(/)、冒號(:)結(jié)束。結(jié)合病毒來看,它找斜杠的位置,其實(shí)這段程序要么是想不包含病毒文件名的路徑,要么想獲取病毒的文件名(setup.exe)。
第七步,在OD中繼續(xù)按F8調(diào)試,注意觀察數(shù)據(jù)窗口的變化。
發(fā)現(xiàn)該程序不斷地從后往前獲取路徑信息,并進(jìn)行對比。
接著發(fā)現(xiàn)程序在調(diào)用完call函數(shù)之后,會出現(xiàn)一個(gè)新的字符串。事實(shí)上很明顯,它是想獲取去除病毒文件名后的路徑。可見,程序?qū)⑷コ宋募穆窂娇截惖搅酥吧暾埖目臻g中,于是可以將sub_405684重命名。
0x004056D8 call 0040412C
總結(jié),重命名及對應(yīng)功能如下:
sub_405684 -> GetFilePath
功能:獲取去除病毒文件名后的路徑
IDA位置:0x0040805E
3.sub_403ED4子函數(shù)
第一步,繼續(xù)在OD中往下分析代碼,賦值語句。
返回的第一句代碼是將我們之前所獲取的不帶文件名的地址賦值給EAX。
lea eax, dword ptr ss:[ebp-0x3B4]
我們選中EAX在數(shù)據(jù)窗口中跟隨,可以看到對應(yīng)的值是“02140138”。
對應(yīng)的值如下圖所示,即不帶文件名的文件路徑。現(xiàn)在EAX保存的就是這個(gè)地址。
第二步,繼續(xù)分析代碼,接下來將“Desktop_.ini”賦值給EDX。注意,0x44表示為D(十進(jìn)制68對應(yīng)的ASCII碼)。
mov edx, 0x40862C
第三步,通過IDA大致看看call函數(shù)00403ED4。
0x0040806E call sub_403ED4
但是通過這個(gè)很難分析出它的具體功能,我們不妨只關(guān)注它的兩個(gè)參數(shù)。觀察執(zhí)行完該函數(shù)后的參數(shù)位置有什么變化。
第四步,我們留意著數(shù)據(jù)窗口,然后按F8執(zhí)行。
可以看到剛才所獲取的不帶文件的路徑名,在其后面增加了一個(gè)“Desktop_.ini”,從而組成了新的字符串。
分析這里我們就知道sub_403ED4功能是將上面所獲取的不帶文件名的路徑的地址賦值給eax,然后將字符串“Desktop_.ini”的地址賦給edx。
總結(jié),重命名及對應(yīng)功能如下:
sub_403ED4 -> StringCat
功能:拼接字符串,包含“Desktop_.ini”后綴
同樣,我們可以進(jìn)入sub_403ED4進(jìn)行詳細(xì)分析。
4.sub_4057A4子函數(shù)
接著繼續(xù)分析sub_4057A4子函數(shù)功能。
0x00408079 call sub_4057A4
第一步,我們在OD中查看EAX的地址。
在這里我們跟蹤查看這個(gè)地址,選中堆棧數(shù)值,右鍵“數(shù)據(jù)窗口中跟隨數(shù)值”。
可以看到,它的這個(gè)參數(shù)是我們之前已經(jīng)連接好的字符串的首地址。
0x020F0138
第二步,按下F8運(yùn)行至Call 4057A4函數(shù),再按F7進(jìn)入該函數(shù)分析。
繼續(xù)按下F7進(jìn)入call 0040573C,發(fā)現(xiàn)有個(gè)FindFirstFileA函數(shù),我們直接來看看它的參數(shù)。注意,很多時(shí)候右邊注釋內(nèi)容是沒有的,需要我們手動(dòng)分析。
按下F8執(zhí)行到函數(shù)調(diào)用前位置,可以看到EAX中存放是的是剛才連接出來的字符串。該函數(shù)的作用就是說明要查找當(dāng)前目錄下Desktop_.ini文件是否存在。
C:\Users551\Desktop\Desktop_.ini
總結(jié),重命名及對應(yīng)功能如下:
sub_4057A4 -> CheckFileExist
功能:檢測文件“Desktop_.ini”是否存在
5.分析sub_4057A4后續(xù)刪除功能
接著我們繼續(xù)分析,由于之前進(jìn)行了重命名操作,所以代碼的可讀性更好了,從0x00408079位置下面的代碼我們都能看懂。
0x0040807E test al, al
0x00408086 push 80h
0x 004080C5 call SetFileAttributesA
它會根據(jù)上一段代碼的查找結(jié)果進(jìn)行判定al,即如果當(dāng)前目錄下Desktop_.ini文件存在,那么就會調(diào)用SetFileAttributesA函數(shù)。該函數(shù)會改變他的屬性,將它的屬性改為80h所代表的值,即該文件的文件屬性調(diào)整為NORMAL(正常屬性)。
繼續(xù)往下看, 調(diào)用了一個(gè)Sleep函數(shù)停止1毫秒。停止1毫秒之后,它接著調(diào)用DeleteFileA函數(shù)將Desktop_.ini刪除。正常來講,病毒還沒有運(yùn)行的時(shí)候,這個(gè)Desktop_.ini文件應(yīng)當(dāng)是不存在的;如果存在的話,病毒首先會改變這個(gè)文件的屬性,再將這個(gè)病毒給刪除掉。
push 1
call Sleep
call DeleteFileA
這里看到一個(gè)未知函數(shù)sub_4040CC,它的參數(shù)是[ebp+var_3C4],事實(shí)上3C4就是文件的路徑。將文件路徑賦值給EAX,我們進(jìn)入sub_4040CC函數(shù)。發(fā)現(xiàn)其功能:
驗(yàn)證EAX是否存在,即判定文件的路徑是否為空
如果文件不存在它會直接執(zhí)行l(wèi)oc_408110位置的函數(shù),sub_4040CC其實(shí)就是一個(gè)驗(yàn)證機(jī)制,在IDA中按下ESC返回,我們給它進(jìn)行重命名。
總結(jié),重命名及對應(yīng)功能如下:
sub_4040CC -> CheckPathIsExist
功能:檢測文件的路徑是否存在
6.sub_4078E0子函數(shù)
繼續(xù)往下分析,我們看到sub_4078E0函數(shù)。
0x00408126 call sub_4078E0
第一步,我們在IDA中大致看下函數(shù)的內(nèi)容。
我們可以看到這個(gè)函數(shù)非常的長,且也調(diào)用了很多其它的函數(shù),那么看上去很難分析清楚這個(gè)函數(shù)到底是做什么的。這里我們先不管其具體的實(shí)現(xiàn)細(xì)節(jié),只看看該函數(shù)執(zhí)行完后,這些參數(shù)或寄存器位置發(fā)生了什么變化,主要關(guān)注該函數(shù)執(zhí)行前后,程序使用了哪些寄存器。
第二步,打開OD跳轉(zhuǎn)到40811D位置,按下F2增加斷點(diǎn),再按F9執(zhí)行過來。
注意,病毒逆向分析就是調(diào)用IDA和OD反復(fù)調(diào)試的過程。
第三步,在OD中分析具體代碼。
mov eax, dword ptr ss:[ebp-0x3CC]
lea edx, dword ptr ss:[ebp-0x4]
call 004078E0
首先它是將EBP-3CC賦值給EAX,再將EBP-4賦值給EDX,調(diào)用call函數(shù)。
我們現(xiàn)在按F8來步過這個(gè)call函數(shù),再觀察數(shù)據(jù)窗口中存在什么變化。可以看到執(zhí)行完call函數(shù)后,這個(gè)函數(shù)用了很大一片區(qū)域?qū)懭肓朔浅6嗫此茻o意義的字符,結(jié)合右邊的ASCII碼,可以將這些內(nèi)容理解為暴力P解的字典。
病毒的編寫者企圖利用暴力P解的方式來攻破計(jì)算機(jī)中某些驗(yàn)證機(jī)制
總結(jié),重命名及對應(yīng)功能如下:
sub_4078E0 -> WriteVirusInfoToMem
7.sub_403C44子函數(shù)
繼續(xù)在OD中分析sub_403C44子函數(shù)。
第一步,查看[EBP-8]地址對應(yīng)的值。
在數(shù)據(jù)窗口中,可以看到eax的值為ebp+var_8的地址,通過OD可以知道,這個(gè)地址中保存的是0,可以理解為沒有數(shù)據(jù)。
00 00 00 00
第二步,我們按下F7進(jìn)入這個(gè)call,查看具體內(nèi)容。
0x0040812E call 00403C44
可以看到,它首先是將EAX的內(nèi)容賦值給EDX,我們按下F8可以看到EDX也變成了0值。
mov edx, dword ptr ds:[eax]
之后的test運(yùn)算,使得ZF變?yōu)?,滿足跳轉(zhuǎn)條件,直接跳轉(zhuǎn)至retn,那么本段函數(shù)也就結(jié)束了。
剛才我們通過test edx, edx發(fā)現(xiàn)ZeroFlag標(biāo)志位變成了1。這個(gè)標(biāo)志位變?yōu)?,說明這個(gè)值是一個(gè)0,這段函數(shù)似乎并沒有實(shí)現(xiàn)什么特別清晰具體的功能,那么不妨將這個(gè)操作理解為某種標(biāo)志的設(shè)置。
總結(jié),重命名及對應(yīng)功能如下:
sub_403C44 -> SetZeroFlag
功能:設(shè)置零標(biāo)志位重設(shè),將其設(shè)置為0
8.sub_403ECC子函數(shù)
回到OD,我們分析sub_403ECC子函數(shù)。
第一步,查看并分析[EBP-4]保存的內(nèi)容。
mov eax, dword ptr ss:[ebp-0x4]
在數(shù)據(jù)窗口中跟隨,可以看到“MZP”,這里大致是保存了一個(gè)PE文件,事實(shí)上就是將這個(gè)PE文件的首地址賦值給這個(gè)EAX,接著看看這個(gè)call。
第二步,分析call 403ECC函數(shù)。
按下F7進(jìn)入這個(gè)call函數(shù),首先調(diào)用“TEST EAX, EAX”驗(yàn)證PE文件是否存在。
按下F8繼續(xù),這里是跳轉(zhuǎn)不成立,然后出現(xiàn)在EAX-4位置,我們在數(shù)據(jù)窗口中跟隨內(nèi)容。
mov eax, dword ptr ds:[eax-0x4]
小技巧
這里需要特別強(qiáng)調(diào)的是,由于本病毒程序是使用Delphi編寫的,因此字符串的首地址減去4后,所取出的4個(gè)字節(jié)的內(nèi)容就是此字符串的長度。
換句話說,這段代碼中的[eax-4]就是eax所指向的文件長度,字符串長度就是EC00,這條語句就是將EC00保存在寄存器里面。于是可以將sub_403ECC重命名。
字符串長度:EC00
現(xiàn)在EAX保存的就是字符串的長度,即PE文件的長度
總結(jié),重命名及對應(yīng)功能如下:
sub_403ECC -> GetFileLen
功能:獲取PE文件的長度
之前這個(gè)文件的長度是保存在EAX里面,這里又將文件長度賦值給EBX。
接下來,在獲取文件長度后,程序會跳轉(zhuǎn)到loc_408163處執(zhí)行。首先它會驗(yàn)證EBX是否為零(文件長度是否為0),正常來說文件長度是不為0的,也就是這個(gè)文件是真實(shí)存在的,所以接下來的跳轉(zhuǎn)不成立,會繼續(xù)往下執(zhí)行。
test ebx, ebx
jle short loc_408171
mov eax, [ebp+var_4]
接著我們嘗試用OD進(jìn)行分析,跳轉(zhuǎn)到0x00408163的位置。按下F2增加斷點(diǎn),再按F9讓它執(zhí)行過來。
按F8跳轉(zhuǎn)不成立繼續(xù)執(zhí)行,可以看到將[EBP-4]賦值給EAX,事實(shí)上就是讓EAX重新指向這個(gè)PE文件的起始位置。
mov eax, dword ptr ss:[ebp-0x4]
按下F8繼續(xù)執(zhí)行,這里是將 [EAX+EBX-1],由于EAX指向的是文件起始地址,而EBX是文件的長度,減一是獲取整個(gè)PE文件最后一個(gè)字符它是什么。事實(shí)上,CMP語句就是驗(yàn)證這個(gè)文件最后一個(gè)數(shù)據(jù)它是否為零,如果為0,則接下來的跳轉(zhuǎn)不成立。
cmp byte ptr [eax+ebx-0x1], 0x0
經(jīng)過OD的動(dòng)態(tài)分析發(fā)現(xiàn),因?yàn)檫@里顯示跳轉(zhuǎn)未實(shí)現(xiàn),故文件尾端的值為0,所以不執(zhí)行跳轉(zhuǎn),繼續(xù)向下執(zhí)行。
三.總結(jié)
寫到這里,該部分關(guān)于sub_408024核心函數(shù)的部分功能就介紹完畢,請大家一定要?jiǎng)邮指{(diào)試,先感受下這部分的實(shí)驗(yàn),后面的文章我們將繼續(xù)分析熊貓燒香病毒感染的過程。
再次感謝姜曄老師,經(jīng)過這篇文章的討論,我們詳細(xì)調(diào)試了病毒的各個(gè)模塊。當(dāng)然,整個(gè)病毒的所有功能都沒時(shí)間完全概述,文章更多是提供一種惡意樣本分析的方法和思路,帶領(lǐng)大家入門,正如姜老師所說“只要各位讀者勤于動(dòng)手,并將所講的逆向分析的基本原理搞清楚,那么這個(gè)病毒分析根本不在話下”。
最后簡單總結(jié)這篇文章的逆向過程,主要分析sub_408024核心函數(shù)。
0x0040804D call sub_40277C
– 重命名為:GetFilePathAndName
– 功能:獲取文件的完整路徑及文件名稱
0x0040805E call sub_405684
– 重命名為:GetFilePath
– 功能:獲取去除病毒文件名后的路徑
– IDA位置:0x0040805E
– 技巧:循環(huán)將病毒的完整路徑從后往前檢索,直到遇到斜杠(\)、反斜杠(/)、冒號(:)結(jié)束,從而提取病毒的路徑或病毒的文件名(如setup.exe)
0x0040806E call sub_403ED4
– 重命名:StringCat
– 功能:拼接字符串,包含“Desktop_.ini”后綴
0x00408079 call sub_4057A4
– CheckFileExist
– 功能:檢測文件“Desktop_.ini”是否存在
0x00408105 call sub_4040CC
– CheckPathIsExist
– 功能:檢測文件的路徑是否存在
0x0040812E call sub_403C44
– SetZeroFlag
– 功能:設(shè)置零標(biāo)志位,將其設(shè)置為0
0x00408136 call sub_403ECC
– GetFileLen
– 功能:獲取PE文件的長度
CMP語句就是驗(yàn)證PE文件最后一個(gè)數(shù)據(jù)是否為零
感恩能與大家在華為云遇見!
希望能與大家一起在華為云社區(qū)共同成長,原文地址:https://blog.csdn.net/Eastmount/article/details/111999346
(By:娜璋之家 Eastmount 2021-12-03 夜于貴陽)
參考文獻(xiàn):
姜曄老師真的非常佩服和值得去學(xué)習(xí),包括他蘇寧到卡巴斯基的故事,推薦大家去閱讀。也希望自己和大家的技術(shù)能不斷提升,加油!
[1]?姜曄老師技術(shù)分享 - B站
[2]?姜曄老師的技術(shù)空間目錄 - CSDN
[3]?[網(wǎng)絡(luò)安全自學(xué)篇] 木馬原理詳解、遠(yuǎn)程服務(wù)器IPC $漏洞及木馬植入實(shí)驗(yàn)
[4]?騰訊安全聯(lián)合實(shí)驗(yàn)室 - 知乎文章
[5]?[網(wǎng)絡(luò)安全自學(xué)篇] 七十九.Windows PE病毒原理、分類及感染方式詳解
[6]?[網(wǎng)絡(luò)安全自學(xué)篇] 四十九.Procmon軟件基本用法及文件進(jìn)程、注冊表查看
[7]?[安全攻防進(jìn)階篇] 八.那些年的熊貓燒香及PE病毒行為機(jī)理分析
[8]?[網(wǎng)絡(luò)安全自學(xué)篇] 七十三.WannaCry勒索病毒復(fù)現(xiàn)及分析(四)蠕蟲傳播機(jī)制源碼詳解
[9]?https://blog.csdn.net/ioio_jy/article/details/41207265
匯編語言 網(wǎng)絡(luò) 通用安全
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。