亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        逆向分析在電子數(shù)據(jù)取證中的應(yīng)用——以“QQ密碼大劃拉”為例

        2011-01-16 00:22:20羅文華
        中國司法鑒定 2011年6期
        關(guān)鍵詞:脫殼斷點(diǎn)木馬

        羅文華

        (中國刑事警察學(xué)院 計(jì)算機(jī)犯罪偵查系,遼寧 沈陽110854)

        1 引言

        目前,針對(duì)惡意程序的取證分析已經(jīng)發(fā)展成為計(jì)算機(jī)法庭科學(xué)領(lǐng)域的重要組成部分。例如,進(jìn)行電腦安全事件調(diào)查時(shí),極有可能會(huì)遇到黑客所部署的惡意程序,此時(shí)就有必要鑒別出這些文件,并對(duì)其進(jìn)行分析。常規(guī)方法主要是通過激活惡意程序樣本,抓取分析其網(wǎng)絡(luò)傳輸信息,獲知被竊取的信息內(nèi)容以及信息傳輸?shù)哪康牡刂?;或是通過架設(shè)系統(tǒng)監(jiān)控工具,收集惡意程序引發(fā)的相關(guān)應(yīng)用程序及其環(huán)境變化的信息,從而判斷其對(duì)操作系統(tǒng)所造成的影響。但在實(shí)踐中發(fā)現(xiàn),多數(shù)情況下由于運(yùn)行條件已不滿足或是其內(nèi)部所設(shè)置的運(yùn)行有效期限已經(jīng)過期,惡意程序樣本往往無法被激活,或是改變自身行為,掩蓋惡意程序特征,應(yīng)用上述方法往往無法發(fā)現(xiàn)有價(jià)值的信息。此種情況下,便有必要針對(duì)惡意程序進(jìn)行逆向分析鑒定,從而發(fā)現(xiàn)相關(guān)證據(jù)或線索。

        針對(duì)惡意程序進(jìn)行逆向分析,是指將可執(zhí)行惡意程序反匯編,通過反匯編代碼來理解其代碼功能,如各接口的數(shù)據(jù)結(jié)構(gòu)等,逆向分析原程序思路,全面或重點(diǎn)掌握惡意程序行為,從中分析出其他方法無法發(fā)現(xiàn)的證據(jù)或線索。本文在介紹逆向分析相關(guān)概念、方法與工具的基礎(chǔ)上,結(jié)合用于偷盜QQ賬號(hào)和密碼的木馬生成器 “QQ密碼大劃拉”及其生成的木馬QQ_DYP,詳細(xì)說明查殼、脫殼、斷點(diǎn)設(shè)置、程序跟蹤、關(guān)鍵信息獲取等常用逆向分析方法,并力爭對(duì)一般性規(guī)律予以歸納和總結(jié),希望能夠?qū)阂獬绦蛉∽C領(lǐng)域的研究起到拋磚引玉的作用。

        2 軟件逆向

        2.1 概念與用途

        對(duì)于程序軟件而言,逆向工程歸結(jié)起來就是針對(duì)一個(gè)既沒有源代碼又沒有準(zhǔn)確文獻(xiàn)資料的現(xiàn)成程序,嘗試恢復(fù)出它的設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié)。至1990年起,逆向工程已發(fā)展成為了解程序軟件“所作所為”的一套最重要的技術(shù)和工具,在現(xiàn)代軟件分析中有著廣泛的用途:

        2.1.1 查找惡意代碼

        許多病毒和惡意代碼的探測技術(shù)使用逆向工程來理解那些繁瑣的代碼是怎樣構(gòu)成和運(yùn)作的。通過逆向找出可用作特征碼的可識(shí)別模式,用于驅(qū)動(dòng)商業(yè)探測器和代碼掃描器。

        2.1.2 發(fā)現(xiàn)意想不到的缺陷和錯(cuò)誤

        即使是設(shè)計(jì)最完美的系統(tǒng)也可能存在漏洞,這是由于使用的“前向工程”開發(fā)技術(shù)所固有的特點(diǎn)導(dǎo)致的。逆向工程可以幫助我們在發(fā)生致命的軟件失效前識(shí)別缺陷和錯(cuò)誤。

        2.1.3 查找是否使用了其他人所寫的代碼

        搞清楚在應(yīng)用程序的哪里使用了受保護(hù)的代碼和技術(shù)。這對(duì)于保護(hù)知識(shí)產(chǎn)權(quán)不被濫用是很重要的。逆向工程可用于檢測應(yīng)用程序是否包含所關(guān)心的軟件單元。

        2.2 分析方法

        2.2.1 靜態(tài)分析

        靜態(tài)分析指的是使用反匯編器或反編譯器將二進(jìn)制可執(zhí)行程序轉(zhuǎn)換為電子數(shù)據(jù)取證人員可以閱讀的表示形式。逆向工作通過人工閱讀和分析進(jìn)行。由于電子數(shù)據(jù)取證人員無法看到程序所處理的數(shù)據(jù)以及數(shù)據(jù)的流動(dòng)。靜態(tài)分析對(duì)電子數(shù)據(jù)取證人員要求較高,需要其能夠更好的理解代碼,對(duì)于程序加殼的情況,需要先執(zhí)行脫殼操作,或結(jié)合動(dòng)態(tài)分析才能完成逆向工作。

        2.2.2 動(dòng)態(tài)分析

        動(dòng)態(tài)分析是指將代碼轉(zhuǎn)換成易于理解的形式同時(shí),能夠在調(diào)試器中運(yùn)行代碼,并觀察其在運(yùn)行現(xiàn)場的行為,而不需要單純的依靠靜態(tài)的閱讀轉(zhuǎn)化好的代碼。該方法可以觀察程序的內(nèi)部數(shù)據(jù)以及數(shù)據(jù)對(duì)代碼流的影響,能夠提供更多的有價(jià)值信息。本文所介紹的針對(duì)惡意程序的逆向分析方法主要是基于動(dòng)態(tài)分析的。

        2.3 逆向工具[1]

        2.3.1 系統(tǒng)監(jiān)控工具

        逆向需要各種各樣的工具來尋找、監(jiān)控、研究以及剖析被逆向的程序。大多數(shù)工具都用來顯示操作系統(tǒng)收集到的有關(guān)應(yīng)用程序及其環(huán)境的信息。由于程序與外部世界的所有聯(lián)系都需要經(jīng)過操作系統(tǒng),所以使用操作系統(tǒng)來提取這些信息。系統(tǒng)監(jiān)控工具可以監(jiān)控網(wǎng)絡(luò)活動(dòng)、文件訪問、注冊表訪問等,常用的系統(tǒng)監(jiān)控工具主要有API Monitor、FileMon、RegMon等。

        2.3.2 反匯編器

        反匯編器是以程序的可執(zhí)行二進(jìn)制代碼作為輸入,生成包含整個(gè)或部分程序的匯編語言代碼的程序。因?yàn)閰R編語言代碼是目標(biāo)語言代碼簡單的文本映射,所以這個(gè)轉(zhuǎn)化過程比較簡單,常用的反匯編工具主要有IDA Pro、W32DASM。其中IDA Pro是一款功能非常強(qiáng)大的反匯編器,能夠提供非常詳細(xì)的反匯編代碼,并可以為給定的函數(shù)生成流程圖,實(shí)現(xiàn)了逆向工作中的許多附加特性,但其價(jià)格并不便宜。

        2.3.3 調(diào)試器

        調(diào)試器是一種程序,它允許相關(guān)人員在程序運(yùn)行的同時(shí)觀察程序。調(diào)試器的兩個(gè)最基本的特征是:設(shè)置斷點(diǎn)能力和代碼跟蹤能力。斷點(diǎn)允許用戶選擇程序中任何位置的函數(shù)或代碼行,一旦程序運(yùn)行到這一行,它就指示調(diào)試器暫停程序的運(yùn)行。這時(shí)可以釋放調(diào)試器,繼續(xù)運(yùn)行程序,或者開始跟蹤程序。它是逆向工程中的一個(gè)非常重要的工具,常用的調(diào)試工具主要有OllyDBG、SoftICE。值得一提的是OllyDBG,其除了具有完備的調(diào)試功能外,還內(nèi)置有良好的反匯編功能,是軟件逆向中的一個(gè)重要法寶。

        2.3.4 反編譯器

        反編譯器比反匯編器更近了一步。反編譯器接受可執(zhí)行的二進(jìn)制文件,并試圖從中生成可讀性好的高級(jí)語言代碼。其思想是嘗試逆向編譯過程,以獲取最初的源代碼文件或接近于最初源代碼的文件。對(duì)于大多數(shù)平臺(tái)而言,真正恢復(fù)初始源代碼是不現(xiàn)實(shí)的。多數(shù)高級(jí)語言的重要元素在編譯過程中被省略掉了,且不可恢復(fù)。常用的反編譯工具主要有DeDe、DJ Decompiler。

        3 鑒定實(shí)踐

        3.1 案例背景

        目前,由于QQ賬號(hào)所涉及的Q幣與游戲裝備等虛擬財(cái)產(chǎn)可以轉(zhuǎn)化為現(xiàn)實(shí)世界中的貨幣,因此偷盜QQ賬號(hào)及密碼的現(xiàn)象日益猖獗,情節(jié)嚴(yán)重者甚至觸犯了相關(guān)法律?!癚Q密碼大劃拉”即是一款用于偷盜QQ賬號(hào)及密碼的惡意程序,該軟件屬于木馬生成器范疇,能夠根據(jù)使用者的設(shè)置(如收信郵箱、發(fā)信郵箱、發(fā)信郵箱密碼等)生成相應(yīng)木馬(配置界面如圖1所示),使用者可以利用生成的木馬來盜取他人QQ賬號(hào)和密碼。但該生成器本身就是一款能夠偷盜QQ賬號(hào)及密碼的木馬,使用者在生成自己盜號(hào)木馬的同時(shí),其自身的賬號(hào)與密碼也極可能被該生成器竊取。本節(jié)即以木馬生成器“QQ密碼大劃拉”及其默認(rèn)生成的木馬QQ_DYP為例,說明逆向分析在電子數(shù)據(jù)取證中的實(shí)際應(yīng)用。

        圖1 “QQ密碼大劃拉”木馬生成器配置界面

        3.2 針對(duì)木馬生成器“QQ密碼大劃拉”的分析

        3.2.1 查殼與脫殼

        首先用PEiD對(duì)木馬生成器 “QQ密碼大劃拉”查殼,如圖2所示。查殼結(jié)果表明該軟件未加殼,是由Visual C++語言編寫的;接著使用OllyDBG加載該軟件,但卻提示該軟件為self-extracting或self-modifying文件,其啟動(dòng)函數(shù)中也未表現(xiàn)出Visual C++編寫程序的典型特征,由此懷疑該軟件使用了偽裝的殼。

        圖2 PEiD對(duì)QQ密碼大劃拉的查殼結(jié)果

        利用PEiD的“Deep Scan”功能查出該惡意程序系使用UPX加的殼。接下來直接利用PEiD自帶的插件“PEiD Generic Unpacker”對(duì)其進(jìn)行脫殼。針對(duì)脫殼后的程序再執(zhí)行查殼操作,“Deep Scan”結(jié)果顯示該程序由“Borland Delphi 6.0-7.0”編寫,其啟動(dòng)函數(shù)中call語句與mov語句間隔出現(xiàn)[2](如圖3所示),滿足Delphi程序啟動(dòng)函數(shù)的典型特征,從而驗(yàn)證了查殼結(jié)果的正確。

        圖3 脫殼后QQ密碼大劃拉的啟動(dòng)函數(shù)反匯編代碼

        3.2.2 通過逆向分析發(fā)現(xiàn)隱秘的網(wǎng)頁地址

        脫殼成功后,使用OllyDBG載入,對(duì)惡意程序進(jìn)行逆向分析。在OllyDBG中運(yùn)行該程序,主程序窗口出現(xiàn)后,點(diǎn)擊“生成木馬”按鈕,程序會(huì)彈出保存窗口以供選擇生成木馬的存放位置;此時(shí)不要點(diǎn)擊保存窗口的“保存”按鈕,而是點(diǎn)擊OllyDBG工具欄上的“暫?!卑粹o,然后執(zhí)行ALT+K操作打開函數(shù)窗口,查詢得到保存窗口對(duì)應(yīng)的 API函數(shù) DialogBoxIndirect-ParamW(圖4),可在此處設(shè)置斷點(diǎn),以追蹤被竊信息的發(fā)送地址;另外,由于該惡意程序要執(zhí)行生成木馬操作,便可設(shè)想在CreateFileA函數(shù)上設(shè)置斷點(diǎn),在OllyDBG的command窗口中執(zhí)行 “bp CreateFileA”命令,然后運(yùn)行程序,中斷后便可繼續(xù)分析。

        圖4 函數(shù)窗口中保存窗口對(duì)應(yīng)的API函數(shù)

        除了可以跟蹤API函數(shù),在關(guān)鍵字符串信息上設(shè)置斷點(diǎn),也可以達(dá)到調(diào)查取證的目的。載入惡意程序后,點(diǎn)擊“插件”→“Ultra字符串參考”→“查找 ASCII”,得到如圖5所示的字符串信息。從字符串信息中可以發(fā)現(xiàn)有“QQ2009_Hooker_Head”字樣出現(xiàn),其實(shí)際為該生成器設(shè)計(jì)者編制的實(shí)現(xiàn)竊取功能的函數(shù)名稱,故可在此設(shè)置斷點(diǎn)。

        圖5 字符串信息中出現(xiàn)有“QQ2009_Hooker_Head”字樣

        設(shè)置好斷點(diǎn)后,OllyDBG中運(yùn)行該惡意程序,在彈出的配置界面中隨意設(shè)置 “收信郵箱”、“發(fā)信郵箱”、“發(fā)信郵箱密碼”等信息;然后點(diǎn)擊“生成木馬”按鈕,在彈出的保存窗口中選擇好木馬存放位置,然后點(diǎn)擊“保存”按鈕;由于事先設(shè)置了斷點(diǎn),木馬并未生成,而是自動(dòng)中斷在了“QQ2009_Hooker_Head”的位置上(圖6)。

        圖6 惡意程序自動(dòng)中斷在事先設(shè)置的斷點(diǎn)上

        惡意程序在紅色斷點(diǎn)處(0045E310)中斷,點(diǎn)擊F8鍵單步運(yùn)行以分析程序。當(dāng)?shù)竭_(dá)地址0045E339時(shí),堆棧窗口中出現(xiàn)“SS:[0012F620]=009D3724,(ASCII" http://www.XXX.com/QQ456/XXX.asp")”字樣(圖7),此即該生成器竊取QQ賬號(hào)及密碼后發(fā)往的網(wǎng)頁地址。電子數(shù)據(jù)取證人員獲得該隱秘地址后,可以通過調(diào)查相關(guān)網(wǎng)站獲取犯罪分子用來訪問的IP地址,進(jìn)而找到其真實(shí)的藏身之所。

        圖7 堆棧窗口中出現(xiàn)被竊信息發(fā)往的網(wǎng)頁地址

        3.3 針對(duì)生成木馬QQ_DYP的逆向分析

        3.3.1 查殼和脫殼

        使用PEiD檢查QQ_DYP,顯示其是由Visual C++編寫的。OllyDBG卻依然提示this software is a self-extracting or self-modifying file。使用OllyDBG加載QQ_DYP(如圖8所示),發(fā)現(xiàn)其啟動(dòng)函數(shù)與“QQ密碼大劃拉”頗為類似,難怪PEiD做出同樣的誤判。

        圖8 脫殼前的“QQ_DYP”啟動(dòng)函數(shù)指令序列

        距離起始地址不遠(yuǎn)處,出現(xiàn)有 “jmp QQ_DYP. 00413EF0”字樣,判斷該指令是一個(gè)大跳轉(zhuǎn),因此執(zhí)行該指令來到地址00413EF0處(如圖9所示)。該地址存放有指令“pushad”,因此考慮使用ESP定律法進(jìn)行脫殼。

        圖9 地址00413EF0處的指令序列

        執(zhí)行pushad指令后,寄存器窗口顯示ESP值為0012FFA4,選擇數(shù)據(jù)窗口跟隨,并在數(shù)據(jù)窗口設(shè)置硬件訪問斷點(diǎn)(Word),接下來按Shift+F9運(yùn)行該程序,即可來到另一個(gè)大跳轉(zhuǎn)——地址0041403F處(如圖10)。

        圖10 地址0041403F處出現(xiàn)大跳轉(zhuǎn)語句

        執(zhí)行地址 0041403F處的 “jmp QQ_DYP.0040 5380”指令,便來到程序真正的OEP(如圖11)。其啟動(dòng)函數(shù)滿足Borland Delphi啟動(dòng)函數(shù)特征。脫殼修復(fù)后,PEiD也判斷其由Borland Delphi 6.0-7.0編寫,從而驗(yàn)證了查殼結(jié)果的正確。

        圖11 脫殼后的“QQ_DYP”啟動(dòng)函數(shù)指令序列

        3.3.2 QQ_DYP的主要惡意行為

        QQ_DYP對(duì)進(jìn)程explorer進(jìn)行注入,然后通過被注入的explorer進(jìn)程修改注冊表項(xiàng)為HKLMSOFTWAREMicrosoftWindowsCurrentVersionExplorer ShellExecuteHooks{08315C1A-9BA9-4B7C-A432-26885F78DF28},達(dá)到監(jiān)視系統(tǒng)的目的,并通過注冊SHELL擴(kuò)展組鍵,使木馬能夠伴隨系統(tǒng)進(jìn)程啟動(dòng)(如圖12所示)。同時(shí)使用SetWindowsHookExA函數(shù),通過將消息處理類型設(shè)置為WH_KEYBOARD和WH_MOUSE以截獲鍵盤和鼠標(biāo)消息。

        QQ_DYP還會(huì)釋放DLL文件于Program Files Common FilesMicrosoft SharedMSINFO目錄下(如圖13所示),該DLL文件會(huì)判斷加載自身的進(jìn)程名,如果是QQ安全檢查主程序則結(jié)束該進(jìn)程,如果為QQ. exe則刪除QQ安裝目錄下的npkcrypt.sys(QQ鍵盤鎖保護(hù)文件,部分版本的QQ擁有此文件),使QQ的鍵盤安全鎖失效。同時(shí)釋放名為“_xr.bat”的批處理文件,內(nèi)容為“:try del"D:digital investigationQQ_DYP(unpack)QQ_DYP脫殼后 _.exe"if exist"D:digital investigationQQ_DYP (unpack)QQ_DYP脫殼后 _. exe"goto try”,達(dá)到刪除自身的目的。

        調(diào)試QQ_DYP時(shí),我們發(fā)現(xiàn)該惡意程序會(huì)將字符串或解密信息輸出至009D0000開始的內(nèi)存地址空間中,因此在該內(nèi)存地址空間設(shè)置寫入斷點(diǎn),并且在調(diào)試選項(xiàng)設(shè)置時(shí)不要忽略內(nèi)存訪問異常,這樣經(jīng)過跟蹤調(diào)試,009D009C處會(huì)出現(xiàn)如圖14所示的解密信息。從圖中可以看出,QQ_DYP不僅會(huì)將QQ賬號(hào)與密碼信息發(fā)送至用戶配置的郵箱信息中,還會(huì)像“QQ密碼大劃拉”一樣,將信息發(fā)送至事先內(nèi)置的ASP網(wǎng)頁地址。

        4 結(jié)語

        惡意程序編寫者一般具有較高的專業(yè)知識(shí)水平,他們會(huì)千方百計(jì)的模糊惡意程序行為,隱藏其真實(shí)意圖。這就對(duì)電子數(shù)據(jù)取證人員提出了更高的要求,需要對(duì)反匯編代碼進(jìn)行更深入的分析[3]。本文即是針對(duì)一特定的惡意程序,描述其逆向分析全過程,并對(duì)一般性方法進(jìn)行歸納總結(jié)。需要指出的是,惡意程序千變?nèi)f化,本文所描述的方法還具有相當(dāng)?shù)木窒扌?。比如在脫殼方面,該生成器及其生成的木馬使用的都是比較簡單的壓縮殼,脫殼相對(duì)簡單,而對(duì)于更為復(fù)雜的加密殼的破解研究,本身就是一個(gè)十分深入的領(lǐng)域,本文對(duì)此并未涉及;關(guān)鍵信息獲取方面,雖然介紹了一些典型斷點(diǎn)的設(shè)置方法,但實(shí)際上整個(gè)惡意程序的分析花費(fèi)了作者大量的時(shí)間與精力在繁雜的反匯編代碼中摸索穿行,因此針對(duì)快速定位關(guān)鍵信息的研究依然有很長的路要走;另外,如何將逆向分析方法與其他分析方法更好的結(jié)合,更加全面徹底的揭示惡意程序隱藏的秘密,也將是作者未來的主要研究方向之一。

        [1]Eldad Eilam.逆向工程揭秘[M].北京:電子工業(yè)出版社,2007:4-16.

        [2]段鋼.加密與解密[M].北京:電子工業(yè)出版社,2008:71-99.

        [3]金波,黃道麗,夏榮.電子數(shù)據(jù)鑒定標(biāo)準(zhǔn)體系研究[J].中國司法鑒定,2011,(1):49-52.

        猜你喜歡
        脫殼斷點(diǎn)木馬
        小木馬
        騎木馬
        河蟹脫殼期間注意事項(xiàng)
        小木馬
        一類無限可能問題的解法
        智慧農(nóng)業(yè)助上安村“脫殼”
        旋轉(zhuǎn)木馬
        主導(dǎo)電回路發(fā)生斷點(diǎn)故障判斷方法探討
        “空殼村”如何“脫殼”
        牡蠣超高壓脫殼效果的研究
        亚洲人成影院在线高清| 欧美亚洲日本在线| 思思久久99er热只有频精品66| а天堂中文在线官网| 国产aⅴ激情无码久久久无码| 国产一区国产二区亚洲精品| 日本三级香港三级人妇99| 欧美多人片高潮野外做片黑人| 欧美日韩在线视频一区| 国产精品毛片一区二区 | 激情五月婷婷综合| 久久国产免费观看精品| 色婷婷一区二区三区四区| 中文字幕一区二区在线看| 日本a级黄片免费观看| 曰韩少妇内射免费播放| 精品人妻无码一区二区三区蜜桃一| 国外精品视频在线观看免费| 亚洲人成电影在线无码| 啪啪视频免费看一区二区| 亚洲成人av一区二区| 亚洲精品视频中文字幕| 呦系列视频一区二区三区| 夜鲁很鲁在线视频| 国产日韩欧美在线| 亚州五十路伊人网| 国产av麻豆精品第一页| 日本免费一区二区三区影院 | 一区二区三区在线 | 欧| 色两性网欧美| 午夜福利影院不卡影院| 日韩精品av在线一区二区| 中文字幕亚洲入口久久| 免费a级毛片高清在钱| 国产亚洲2021成人乱码| 国产三级在线视频播放| 亚洲视频在线视频在线视频| 中文字幕av高清人妻| 欧美粗大猛烈老熟妇| 在线观看网址你懂的| 亚洲一区二区不卡日韩|