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

?

基于“關(guān)鍵函數(shù)”斷點(diǎn)設(shè)置木馬的逆向取證方法

2018-11-02 07:00徐國天
中國刑警學(xué)院學(xué)報 2018年5期
關(guān)鍵詞:斷點(diǎn)注冊表木馬

徐國天

(中國刑事警察學(xué)院網(wǎng)絡(luò)犯罪偵查系 遼寧 沈陽 110035)

1 引言

木馬惡意程序隱藏在受害者計算機(jī)系統(tǒng)或智能終端設(shè)備內(nèi),在后臺悄悄記錄用戶輸入的敏感信息,竊取受害者主機(jī)內(nèi)的涉密文件,甚至監(jiān)聽受害者的語音、視頻和網(wǎng)絡(luò)通信數(shù)據(jù)[1]??梢哉f,木馬惡意程序已對互聯(lián)網(wǎng)安全構(gòu)成嚴(yán)重威脅,研究木馬惡意程序的電子數(shù)據(jù)取證方法對公安機(jī)關(guān)的偵查辦案工作有實(shí)際意義。

目前,木馬惡意程序常用的取證方法是逆向分析法[2],這種方法是使用Ollydbg等反匯編分析工具將木馬的樣本程序反編譯為匯編代碼,再通過分析匯編程序了解木馬的執(zhí)行邏輯,進(jìn)而提取出相關(guān)線索信息,完成取證分析工作。逆向分析方法要求取證人員具備匯編語言程序設(shè)計基礎(chǔ),同時需要閱讀的匯編代碼量也非常大,這些因素導(dǎo)致取證周期長、難度大。為了降低取證難度、提高分析效率,本文提出一種基于“關(guān)鍵函數(shù)”斷點(diǎn)設(shè)置的木馬惡意程序取證分析方法。

2 基于“關(guān)鍵函數(shù)”斷點(diǎn)設(shè)置的木馬惡意程序取證方法

通過對多個木馬樣本進(jìn)行分析,我們發(fā)現(xiàn)不管是什么類型的木馬惡意程序通常都要實(shí)現(xiàn)幾個特定的核心功能,如進(jìn)程隱藏、開機(jī)自動運(yùn)行、躲避殺毒軟件查殺、繞過防火墻攔截、實(shí)現(xiàn)與攻擊者的遠(yuǎn)程通信聯(lián)絡(luò)、實(shí)現(xiàn)特定的惡意功能等[3]。這些核心功能在實(shí)現(xiàn)時都需要使用特定的系統(tǒng)函數(shù),如發(fā)送郵件需要使用connect和socket函數(shù),寫注冊表實(shí)現(xiàn)自啟動需要使用RegOpenKey函數(shù),實(shí)現(xiàn)鍵盤記錄需要獲得窗口標(biāo)題,這時通常使用GetWindowText函數(shù)。在這些函數(shù)上設(shè)置訪問斷點(diǎn)可以獲知木馬的核心功能,也可以通過傳遞給函數(shù)的相關(guān)參數(shù)得到重要的線索信息,例如通過GetWindowText函數(shù)可以獲知木馬對哪個窗口標(biāo)題進(jìn)行了監(jiān)控。

基于“關(guān)鍵函數(shù)”斷點(diǎn)設(shè)置的木馬惡意程序取證方法如圖1所示,首先取證工具Lordpe分析木馬程序使用了哪些系統(tǒng)函數(shù),從一些關(guān)鍵的系統(tǒng)函數(shù)可以初步判斷出惡意程序采用了哪些功能(例如木馬使用了createfile和deletefile函數(shù),說明它很可能向硬盤釋放了特定文件,同時還進(jìn)行了文件刪除操作),在關(guān)鍵函數(shù)上設(shè)置訪問斷點(diǎn),動態(tài)調(diào)試木馬程序,程序會自動停在斷點(diǎn)位置,從函數(shù)的傳入?yún)?shù)可以提取出關(guān)鍵的涉案信息(例如創(chuàng)建或刪除的文件名稱和路徑),使用這種方法可以簡化木馬程序的取證分析工作。

圖1 基于“關(guān)鍵函數(shù)”斷點(diǎn)設(shè)置的木馬惡意程序取證分析方法

本文以一款名為“紅蜘蛛”的盜號木馬為例,研究基于“關(guān)鍵函數(shù)”斷點(diǎn)設(shè)置的惡意程序取證分析方法。這款木馬程序文件的名稱是“紅蜘蛛v119版.exe”,文件大小為57344字節(jié),文件的MD5值為7C49FF0DE960DC67C1F52C00CD9E3423。本文研究對象為脫殼后的木馬惡意程序,具體的脫殼技術(shù)不在文章討論范圍內(nèi)。

3 木馬文件操作行為取證分析

首先使用Loadpe工具打開“紅蜘蛛v119版.exe”,查看木馬程序使用了哪些系統(tǒng)函數(shù),結(jié)果如圖2所示。木馬程序使用了KERNEL32.dll和ADVAPI32.dll兩個動態(tài)鏈接庫,點(diǎn)擊每個dll文件名,會顯示出木馬使用了該dll文件中的哪些系統(tǒng)函數(shù)。

我們首先對CreateFile函數(shù)進(jìn)行分析,函數(shù)的原型定義如圖3所示。這是一個多功能函數(shù),可打開或創(chuàng)建以下對象:通信資源、控制臺、磁盤驅(qū)動器、目錄、文件、管道、郵槽,返回可訪問的句柄。函數(shù)共有6個參數(shù),lpFileName表示即將打開的文件名稱,通過這個參數(shù)可以確定木馬創(chuàng)建的文件名稱和存儲路徑。dwDesiredAccess指定訪問對象的模式,如果值為GENERIC_WRITE 表示允許對設(shè)備進(jìn)行寫訪問;如果該值為GENERIC_READ表示允許對設(shè)備進(jìn)行讀訪問;如果值為零,表示只允許獲取與一個設(shè)備有關(guān)的信息。dwShareMode表示共享模式,如果值為零表示不共享,例如值為FILE_SHARE_READ表示讀請求可以成功執(zhí)行;值為FILE_SHARE_DELETE表示刪除請求可以成功執(zhí)行;如果值為FILE_SHARE_WRITE表示寫請求可以成功執(zhí)行。lpSecurityAttributes指向一個SECURITY_ATTRIBUTES結(jié)構(gòu)體指針,定義了文件的安全屬性。dwCreationDisposition代表文件如何創(chuàng)建,具體含義結(jié)合木馬實(shí)例分析。dwFlagsAndAttributes表示文件屬性。hTemplateFile存儲一個文件或設(shè)備句柄,表示以這個參數(shù)給出的句柄為模板創(chuàng)建文件。它將指定文件的相關(guān)屬性復(fù)制到新創(chuàng)建的文件上,這個參數(shù)可用于將某個新創(chuàng)建文件的屬性設(shè)置成與現(xiàn)有文件屬性完全相同,這種情況下函數(shù)會自動忽略dwFlagsAndAttributes參數(shù)。通常情況下這個參數(shù)值設(shè)置為NULL,表示不使用任何模板。

圖2 使用Loadpe查看木馬程序使用了哪些系統(tǒng)函數(shù)

圖3 CreateFile函數(shù)原型定義

使用Ollydbg在CreateFileA函數(shù)上設(shè)置訪問斷點(diǎn),當(dāng)木馬程序中斷在這個位置時,從lpFileName參數(shù)可以獲得木馬向硬盤釋放文件的路徑和名稱。圖4顯示的是木馬程序第一次中斷時Ollydbg顯示的系統(tǒng)堆棧狀態(tài),通過系統(tǒng)堆??梢钥吹侥抉R程序傳遞給CreateFileA函數(shù)的7個參數(shù)值。第一個參數(shù)FileName顯示木馬程序向C:WINDOWSsystem32路徑釋放了一個名為redspider.dll的文件。

圖4 第一次中斷時,系統(tǒng)堆棧顯示的參數(shù)信息

再次按下F9鍵,木馬程序第二次中斷在CreateFileA函數(shù)的入口位置。圖5顯示的是第二次中斷時,系統(tǒng)堆棧顯示的參數(shù)信息??梢娔抉R向C盤根目錄釋放了一個名為inflexible.wav的文件。

圖5 第二次中斷時,系統(tǒng)堆棧顯示的參數(shù)信息

從擴(kuò)展名來看,inflexible.wav應(yīng)該是一個音頻文件。但是,查看該文件屬性顯示大小只有303字節(jié),顯然不符合音頻文件的容量特點(diǎn)。使用記事本打開這個文件,查看到的結(jié)果如圖6所示。這組數(shù)據(jù)疑似木馬設(shè)置的相關(guān)參數(shù),發(fā)送郵件服務(wù)器使用的是smtp.163.com,發(fā)信郵箱是stp888@163.com,郵箱登錄密碼是86982430。其他信息的含義和作用需要通過匯編代碼分析來加以確定。

圖6 inflexible.wav文件內(nèi)容

4 進(jìn)程隱藏方式分析

為了防止惡意程序被發(fā)現(xiàn),木馬運(yùn)行之后通常不會在受害者主機(jī)系統(tǒng)內(nèi)產(chǎn)生一個獨(dú)立的進(jìn)程,而是將自身隱藏到某個合法進(jìn)程之內(nèi)。目前經(jīng)常采用的進(jìn)程隱藏技術(shù)是遠(yuǎn)程線程植入,木馬源程序以dll文件形式存在,通過遠(yuǎn)程線程植入方式進(jìn)入目標(biāo)進(jìn)程運(yùn)行。這樣一來,就可以獲得合法進(jìn)程的相關(guān)權(quán)限。例如用戶計算機(jī)上的防火墻軟件通常會攔截某個客戶程序與因特網(wǎng)的主動連接請求,但是不會攔截IE瀏覽器進(jìn)程與外界的通信連接,否則用戶將不能瀏覽任何網(wǎng)頁信息。木馬程序只要將自身植入IE瀏覽器進(jìn)程,就可以合法進(jìn)程身份通過防火墻的攔截,與外界進(jìn)行網(wǎng)絡(luò)通信。

使用Loadpe查看到“紅蜘蛛v119版.exe”木馬程序使用了4個涉及遠(yuǎn)程線程植入的系統(tǒng)函數(shù):OpenProcess、VirtualAllocEx、WriteProcessMemory和CreateRemoteThread。OpenProcess函數(shù)的主要功能是打開一個進(jìn)程,同時返回該進(jìn)程的句柄。WriteProcessMemory函數(shù)負(fù)責(zé)將dll惡意程序數(shù)據(jù)內(nèi)容寫入到合法進(jìn)程的地址空間里。CreateRemoteThread函數(shù)負(fù)責(zé)遠(yuǎn)程啟動dll惡意程序。

從這些系統(tǒng)函數(shù)傳遞的參數(shù)里可以獲得重要的涉案信息,參數(shù)關(guān)系分析如圖7所示。OpenProcess函數(shù)的第三個參數(shù)dwProcessId代表被打開的目標(biāo)進(jìn)程PID,利用這個數(shù)值可以確定木馬附著到哪個系統(tǒng)進(jìn)程上。OpenProcess函數(shù)的返回值是一個HANDLE類型的句柄,這個值和WriteProcessMemory函數(shù)的第一個參數(shù)以及CreateRemoteThread函數(shù)的第一個參數(shù)值相同,通過該值可以進(jìn)行關(guān)聯(lián)。WriteProcessMemory函數(shù)的第三個參數(shù)lpBuffer存儲了dll惡意程序的路徑和名稱,第二個參數(shù)存儲了惡意程序?qū)懭雰?nèi)存的起始地址,這個參數(shù)和CreateRemoteThread函數(shù)的第五個參數(shù)值相同。通過這些函數(shù)之間的相互關(guān)系,可以確定一個dll惡意程序被加載到哪個系統(tǒng)進(jìn)程之中。

使用Ollydbg對“紅蜘蛛v119版.exe”木馬程序進(jìn)行分析,在圖7所示3個函數(shù)上設(shè)置斷點(diǎn),提取出函數(shù)中斷時傳遞的內(nèi)存參數(shù),分析結(jié)果如圖8所示。OpenProcess函數(shù)的ProcessId參數(shù)值為3784,調(diào)出任務(wù)管理器查詢到這個PID對應(yīng)的是explorer進(jìn)程。函數(shù)返回一個句柄,值為0X0028,這個值與WriteProcessMemory函數(shù)和CreateRemoteThread函數(shù)的第一個參數(shù)相同,說明木馬使用這兩個函數(shù)向explorer進(jìn)程寫入數(shù)據(jù)。WriteProcessMemory函數(shù)的第三個參數(shù)存儲了被寫入dll文件的存儲路徑和名稱,查看起始地址為0X00407CFC的內(nèi)存區(qū)域可以看到“C:WINDOWSsystem32 edspider.dll”字符串,可見惡意dll程序被附著到explorer進(jìn)程。

圖7 從函數(shù)參數(shù)中提取涉案線索

圖8 使用Ollydbg分析函數(shù)參數(shù)

5 木馬的自動運(yùn)行方式分析

木馬程序?yàn)榱藢?shí)現(xiàn)對受害者主機(jī)的長久、穩(wěn)定控制,通常要實(shí)現(xiàn)開機(jī)自動運(yùn)行機(jī)制,即木馬程序在受害者主機(jī)每次開機(jī)后自動運(yùn)行。木馬自動運(yùn)行方式的分析對于從主機(jī)內(nèi)清除惡意程序至關(guān)重要。使用Loadpe查看“紅蜘蛛v119版.exe”,發(fā)現(xiàn)在ADVAPI32.dll鏈接庫下存在3個與注冊表操作相關(guān)的系統(tǒng)函數(shù):RegOpenKeyExA、RegSetValueExA和RegCloseKey函數(shù)。對注冊表執(zhí)行寫入操作是實(shí)現(xiàn)程序開機(jī)運(yùn)行的常用方式,我們先來分析這幾個函數(shù)的參數(shù)關(guān)系。

圖9說明了RegOpenKeyEx和RegSetValueEx函數(shù)的參數(shù)關(guān)系,RegOpenKeyEx函數(shù)的第一個參數(shù)hKey存儲了準(zhǔn)備打開的主鍵、第二個參數(shù)lpSubKey存儲了準(zhǔn)備打開的子鍵、第三個參數(shù)phKResult和RegSetValueEx函數(shù)的第一個參數(shù)存儲的是相同的句柄值,通過這個數(shù)值可以確定是對注冊表哪個鍵值進(jìn)行操作。RegSetValueEx函數(shù)的第二個參數(shù)lpValueName存儲的是寫入的變量名稱,第五個參數(shù)存儲寫入的變量值。通過在這兩個函數(shù)上設(shè)置斷點(diǎn),可以獲得傳遞的參數(shù)值,進(jìn)而明確木馬向那個注冊表鍵值寫入了什么數(shù)據(jù)。

圖9 注冊表操作函數(shù)參數(shù)關(guān)系分析

圖10 使用Ollydbg分析函數(shù)的參數(shù)關(guān)系

使用Ollydbg對“紅蜘蛛v119版.exe”木馬程序進(jìn)行分析,在圖9所示兩個函數(shù)上設(shè)置斷點(diǎn),提取出函數(shù)中斷時傳遞的參數(shù)值,分析結(jié)果如圖10所示。RegOpenKeyEx函數(shù)的前兩個參數(shù)hKey和SubKey指明木馬操作的注冊表鍵值為“HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun”,這個鍵值存儲的是計算機(jī)的開機(jī)啟動項(xiàng),該鍵值下的應(yīng)用程序?qū)⒃谟嬎銠C(jī)開機(jī)后自動運(yùn)行。第五個參數(shù)存儲的是打開句柄,本例值為0X00000024,這個數(shù)值與RegSetValueEx函數(shù)的第一個參數(shù)值相同,通過該值可以確定RegSetValueEx函數(shù)是對之前打開的鍵值進(jìn)行寫入操作,寫入的變量名為RedSpider,變量值存儲在第五個參數(shù)中,即內(nèi)存地址0X00407C84位置。直接查看這個內(nèi)存位置,可以看到存儲的數(shù)值為“C:WINDOWSsystem32 edspider.exe”,說明計算機(jī)開機(jī)后,將自動運(yùn)行系統(tǒng)目錄下的redspider.exe程序,但此時該程序文件還沒有生成。

6 木馬主體程序分析結(jié)論

“紅蜘蛛v119版.exe”主體程序引用的動態(tài)鏈接庫中沒有使用到網(wǎng)絡(luò)通信函數(shù)和鍵盤監(jiān)控等相關(guān)函數(shù),因此,對主體程序的分析可以暫時告一段落,分析結(jié)論如圖11所示。通過文件操作行為分析發(fā)現(xiàn)木馬向系統(tǒng)目錄下釋放了一個名為redspider.dll動態(tài)鏈接庫文件,向C盤根目錄下釋放了一個名為inflexible.wav的參數(shù)配置文件。通過進(jìn)程隱藏方式分析發(fā)現(xiàn)木馬程序通過遠(yuǎn)程線程植入的方式將redspider.dll植入explorer進(jìn)程空間運(yùn)行。通過自動運(yùn)行方式分析發(fā)現(xiàn)木馬在注冊表啟動鍵下寫入鍵值,實(shí)現(xiàn)開機(jī)自動運(yùn)行redspider.exe程序,但是此時這個exe文件還未生成?!凹t蜘蛛v119版.exe”的主要任務(wù)已經(jīng)完成,接下來木馬的主要功能轉(zhuǎn)由redspider.dll惡意程序來實(shí)現(xiàn)。

7 總結(jié)

本文提出了一種基于“關(guān)鍵函數(shù)”斷點(diǎn)設(shè)置的木馬惡意程序取證分析方法,并通過一個實(shí)例對這種方法的具體應(yīng)用進(jìn)行了研究。這種取證方法從木馬惡意程序使用的核心系統(tǒng)函數(shù)入手,通過設(shè)置斷點(diǎn)、獲取參數(shù)值,進(jìn)而判斷惡意程序的主要功能,可以規(guī)避大量匯編代碼的閱讀工作、簡化分析難度、縮短取證周期。

圖11 木馬主體程序分析結(jié)論

猜你喜歡
斷點(diǎn)注冊表木馬
一種適用于繼電保護(hù)在線整定的極小斷點(diǎn)集求取算法
小木馬
騎木馬
小木馬
用Eclipse調(diào)試Python
一類無限可能問題的解法
旋轉(zhuǎn)木馬
三維地震在新疆伊寧礦區(qū)北區(qū)七號礦井勘探的應(yīng)用
更上一層樓 用好注冊表編輯器
注冊表的便捷用法