国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

電腦病毒分析詳解一例

2019-06-22 07:01:16唐文昊李孟軒阮鑒杰陳紅珍
視聽(tīng) 2019年5期
關(guān)鍵詞:染毒字節(jié)區(qū)段

唐文昊 李孟軒 阮鑒杰 陳紅珍

(廣西廣播電視技術(shù)中心桂林分中心)

一、引言

在拷貝文件的過(guò)程中,病毒通過(guò)U盤(pán)的自動(dòng)運(yùn)行,在短時(shí)間內(nèi)感染了全盤(pán)的程序。影響了單位遠(yuǎn)程管理系統(tǒng)等一系列計(jì)算機(jī)軟件的正常運(yùn)行,給安全播出帶來(lái)隱患。本著刨根究底的態(tài)度,筆者對(duì)染毒的程序樣本“OEM設(shè)備IP配置.exe”進(jìn)行了一次常規(guī)且詳細(xì)的剖析。

二、分析準(zhǔn)備

病毒分析需要在一個(gè)干凈且可以撤銷操作的環(huán)境中進(jìn)行,虛擬機(jī)是很好的選擇。在分析前建立還原點(diǎn),以避免調(diào)試過(guò)程中的誤操作使病毒生效,導(dǎo)致實(shí)驗(yàn)環(huán)境被破壞,影響分析過(guò)程和結(jié)果。筆者使用的分析工具有:虛擬機(jī)Vmware、動(dòng)態(tài)調(diào)試器ollydbg、PE工具PE Explorer。本文中的十六進(jìn)制數(shù)均以匯編語(yǔ)言的格式表示,以H結(jié)尾,表示Hex。

三、染毒程序的分析

(一)PE結(jié)構(gòu)

圖1 PE Explorer中顯示的PE頭部的部分信息

PE(Portable Executable)文件是Windows系統(tǒng)的程序文件,主要有可執(zhí)行文件(exe)、動(dòng)態(tài)鏈接庫(kù)(dll)和驅(qū)動(dòng)程序(sys)三種。操作系統(tǒng)為了組織程序中的代碼和數(shù)據(jù),定義了PE文件的區(qū)段結(jié)構(gòu)。位于文件開(kāi)頭的PE頭部可以得到整個(gè)程序的結(jié)構(gòu)信息,給系統(tǒng)加載程序提供了依據(jù)。病毒感染程序的過(guò)程,是在不破壞PE結(jié)構(gòu)的前提下,把自己附加到程序的新區(qū)段或者原代碼段的空閑區(qū)域(文件中區(qū)段未滿200H個(gè)字節(jié)時(shí),剩下由0填充)。這里只需要關(guān)注PE頭部的部分?jǐn)?shù)據(jù),圖1是PE工具中顯示的信息。

圖1的PE頭部信息對(duì)應(yīng)Windows平臺(tái)開(kāi)發(fā)中winnt.h頭文件定義的數(shù)據(jù)結(jié)構(gòu)IMAGE_FILE_HEADER和IMAGE_OPTIONAL_HEADER32的前一部分。重點(diǎn)關(guān)注倒數(shù)第四行的入口點(diǎn)地址61B00H,表示程序被加載后將從這個(gè)地址開(kāi)始執(zhí)行。需要注意的是,為閱讀方便,PE工具中顯示的值是VA(虛擬地址),而文件中實(shí)際存儲(chǔ)的值是RVA(相對(duì)虛擬地址),VA=RVA+映像基址。

圖2 PE Explorer中顯示的區(qū)段表

圖3 染毒程序的入口點(diǎn)代碼(感染代碼的開(kāi)頭)

另一個(gè)重要的數(shù)據(jù)結(jié)構(gòu)是區(qū)段表,包括了區(qū)段的位置信息。每一行代表一個(gè)區(qū)段,對(duì)應(yīng)數(shù)據(jù)結(jié)構(gòu)IMAGE_SECTION_HEADER。虛擬大小和虛擬地址指區(qū)段在內(nèi)存中的位置。RAW數(shù)據(jù)大小和RAW數(shù)據(jù)入口指區(qū)段在文件中的位置。由此可以得到區(qū)段從磁盤(pán)文件映射到內(nèi)存的對(duì)應(yīng)關(guān)系。內(nèi)存以頁(yè)面(0x1000字節(jié))對(duì)齊,磁盤(pán)以扇區(qū)(0x200字節(jié))對(duì)齊,表中的數(shù)值也是它們的倍數(shù)。特征值則可以區(qū)別此區(qū)段包含的是代碼或者數(shù)據(jù),以及是否有讀、寫(xiě)、執(zhí)行等權(quán)限。

圖2顯示此程序共9個(gè)區(qū)段,圖1中的第二行也有標(biāo)識(shí)(PE工具翻譯有誤,應(yīng)為區(qū)段數(shù))。常見(jiàn)區(qū)段有代碼段.text和數(shù)據(jù)段.data,以及導(dǎo)入表、導(dǎo)出表所在區(qū)段.idata和.edata。導(dǎo)入表非常重要,包含程序調(diào)用的系統(tǒng)函數(shù)或第三方動(dòng)態(tài)鏈接庫(kù)導(dǎo)出函數(shù)的名字和地址,會(huì)直接暴露程序的底層實(shí)現(xiàn)。導(dǎo)出表則標(biāo)識(shí)了本程序可對(duì)外公開(kāi)的函數(shù)。導(dǎo)出函數(shù)一般被用于共享(提供給多個(gè)程序調(diào)用),會(huì)被編譯到dll文件,而exe文件很少會(huì)有導(dǎo)出函數(shù)。

圖4 搜尋系統(tǒng)函數(shù)地址的部分代碼

最后一個(gè)區(qū)段.rmnet是重點(diǎn)懷疑對(duì)象,這個(gè)名字不是鏈接器生成的默認(rèn)區(qū)段名。實(shí)際上它就是病毒所在區(qū)段。正常的入口點(diǎn)會(huì)落在代碼段.text內(nèi),靠近開(kāi)頭,一般是401xxxH,而染毒后的入口點(diǎn)卻位于最后這個(gè)區(qū)段。此段的特征值E0000020H標(biāo)識(shí)了:代碼(第6位)、可執(zhí)行(第30位)、可讀(第31位)、可寫(xiě)(第32位)。代碼段可寫(xiě)在正常情況下很少見(jiàn),這意味著代碼可能被加密了,一般是加殼軟件或病毒才有具有的特征。

(二)感染代碼——搜索函數(shù)地址

用調(diào)試器打開(kāi)染毒的程序“OEM設(shè)備IP配置.exe”,來(lái)到入口點(diǎn)代碼。

代碼窗口的信息有:第一列是內(nèi)存地址,第二列是代碼的十六進(jìn)制數(shù)值,對(duì)應(yīng)第三列的匯編語(yǔ)句。圖3中1處:ebp寄存器本來(lái)用于指向上一個(gè)棧幀的基址,回溯函數(shù)的調(diào)用關(guān)系,這里卻用作重定位,尋址此區(qū)段的數(shù)據(jù),還做了簡(jiǎn)單的變形,先減后加相近的數(shù)值。2、3處:從原程序的導(dǎo)入表中取得兩個(gè)重要系統(tǒng)函數(shù)的地址:LoadLibraryA和GetProcAddress,均為kernel32.dll的導(dǎo)出函數(shù),是獲取其他函數(shù)的絕代雙嬌,也是Shellcode的常見(jiàn)操作。Shellcode指一段偽裝成數(shù)據(jù)的代碼,向有漏洞的程序進(jìn)行遠(yuǎn)程注入,根據(jù)目標(biāo)程序的內(nèi)存、堆??臻g進(jìn)行精密的調(diào)整,使程序執(zhí)行的流程轉(zhuǎn)移到自己身上。它的特點(diǎn)是無(wú)硬編碼的尋址操作,必須對(duì)自身數(shù)據(jù)進(jìn)行重定位。重定位使用call下一條指令將指令地址入棧,再?gòu)棾龃说刂酚糜谙鄬?duì)尋址。為避免作為字符串被截?cái)?、出現(xiàn)’

始兴县| 抚松县| 诸城市| 红安县| 缙云县| 金昌市| 东辽县| 南华县| 东海县| 都江堰市| 万全县| 平阴县| 什邡市| 军事| 灵丘县| 来宾市| 新兴县| 芦山县| 宜昌市| 巧家县| 宜宾县| 舒城县| 嘉义市| 澄城县| 阳山县| 柘城县| 和静县| 宁乡县| 政和县| 嵩明县| 辽宁省| 开江县| 平泉县| 东平县| 安多县| 英吉沙县| 丽水市| 临清市| 商都县| 正定县| 徐水县|