[系統(tǒng)安全] 十三.熊貓燒香病毒IDA和OD逆向分析(中)病毒釋放機(jī)理(系統(tǒng)安全測試報(bào)告)

      網(wǎng)友投稿 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è)病毒分析根本不在話下”。

      [系統(tǒng)安全] 十三.熊貓燒香病毒IDA和OD逆向分析(中)病毒釋放機(jī)理(系統(tǒng)安全測試報(bào)告)

      最后簡單總結(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)容。

      上一篇:生產(chǎn)管理看板(生產(chǎn)管理看板圖片)
      下一篇:Excel中表格進(jìn)行去掉分頁線的操作技巧
      相關(guān)文章
      亚洲色成人网一二三区| 在线亚洲午夜理论AV大片| 亚洲国产综合无码一区二区二三区 | 亚洲一区综合在线播放| 亚洲色婷婷一区二区三区| 亚洲Av无码国产情品久久| 亚洲第一页日韩专区| 亚洲国产精品综合久久一线| 亚洲av乱码中文一区二区三区| 亚洲欧美日韩国产成人| 亚洲乱亚洲乱妇24p| 亚洲av午夜电影在线观看| 亚洲成在人线在线播放无码| 综合一区自拍亚洲综合图区| 无码色偷偷亚洲国内自拍| 亚洲成年人啊啊aa在线观看| 亚洲精品麻豆av| 亚洲乱亚洲乱妇无码麻豆| 亚洲成AV人在线观看天堂无码| 亚洲狠狠婷婷综合久久久久 | 久久精品国产亚洲网站| 亚洲成色www久久网站夜月| 亚洲爆乳无码专区| 亚洲一级二级三级不卡| 亚洲综合色丁香麻豆| 亚洲一区二区三区在线观看蜜桃 | 在线a亚洲老鸭窝天堂av高清| 亚洲精品美女久久久久久久| 亚洲s码欧洲m码吹潮| 亚洲国产成人五月综合网 | 亚洲精品无码久久久久| 亚洲国产综合专区电影在线 | 亚洲精品成人久久久| 亚洲中文字幕无码一区二区三区| 亚洲国产精品无码一线岛国| 亚洲视频免费在线看| 国产精品亚洲片在线va| 久久亚洲精品高潮综合色a片| 亚洲人成无码网WWW| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 亚洲VA中文字幕无码毛片|