<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 黑客實(shí)例講解木馬的分析方法!

          黑客實(shí)例講解木馬的分析方法!

          作者: 時(shí)間:2017-06-13 來(lái)源:網(wǎng)絡(luò) 收藏

          以前有過(guò)一款國(guó)產(chǎn),它有個(gè)好聽(tīng)的名字,叫做“廣外女生”。這個(gè)是廣東外語(yǔ)外貿(mào)大學(xué)“廣外女生”網(wǎng)絡(luò)小組的作品,它可以運(yùn)行于WIN98,WIN98SE,WINME,WINNT,WIN2000或已經(jīng)安裝Winsock2.0的Win95/97上。與以往的相比,它具有體積更小、隱藏更為巧妙的特點(diǎn)。可以預(yù)料,在將來(lái)的日子里它會(huì)成為繼“冰河”之后的又一流行的木馬品種。

          本文引用地址:http://www.ex-cimer.com/article/201706/357346.htm

          由于“廣外女生”這個(gè)木馬的駐留、啟動(dòng)的方法比較具有典型性,下面我就通過(guò)對(duì)這種新型木馬的詳細(xì)分析過(guò)程來(lái)向大家闡述對(duì)一般木馬的研究方法。下面的測(cè)試環(huán)境為Windows2000中文版。

          一、所需工具

          1.RegSnap v2.80 監(jiān)視注冊(cè)表以及系統(tǒng)文件變化的最好工具

          2.fport v1.33 查看程序所打開(kāi)的端口的工具

          3.FileInfo v2.45a 查看文件類型的工具

          4.ProcDump v1.6.2 脫殼工具

          5.IDA v4.0.4 反匯編工具

          二、分析步驟

          一切工具準(zhǔn)備就緒了,我們開(kāi)始分析這個(gè)木馬。一般的木馬的端一旦運(yùn)行之后都會(huì)對(duì)注冊(cè)表以及系統(tǒng)文件做一些手腳,所以我們?cè)诜治鲋熬鸵葘?duì)注冊(cè)表以及系統(tǒng)文件做一個(gè)備份。

          首先打開(kāi)RegSnap,從file菜單選new,然后點(diǎn)OK。這樣就對(duì)當(dāng)前的注冊(cè)表以及系統(tǒng)文件做了一個(gè)記錄,一會(huì)兒如果木馬修改了其中某項(xiàng),我們就可以分析出來(lái)了。備份完成之后把它存為Regsnp1.rgs。

          然后我們就在我們的電腦上運(yùn)行“廣外女生”的端,不要害怕,因?yàn)槲覀円呀?jīng)做了比較詳細(xì)的備份了,它做的手腳我們都可以照原樣改回來(lái)的。雙擊gdufs.exe,然后等一小會(huì)兒。如果你正在運(yùn)行著“天網(wǎng)”或“金山毒霸”的話,應(yīng)該發(fā)現(xiàn)這兩個(gè)程序自動(dòng)退出了,很奇怪嗎?且聽(tīng)我們后面的分析。現(xiàn)在木馬就已經(jīng)駐留在我們的系統(tǒng)中了。我們來(lái)看一看它究竟對(duì)我們的做了哪些操作。重新打開(kāi)RegSnap,從file菜單選new,然后點(diǎn)OK,把這次的snap結(jié)果存為Regsnp2.rgs。

          從RegSnap的file菜單選擇Compare,在First snapshot中選擇打開(kāi)Regsnp1.rgs,在Second snapshot中選擇打開(kāi)Regsnp2.rgs,并在下面的單選框中選中Show modifiedkey names and key values。然后按OK按鈕,這樣RegSnap就開(kāi)始比較兩次記錄又什么區(qū)別了,當(dāng)比較完成時(shí)會(huì)自動(dòng)打開(kāi)分析結(jié)果文件Regsnp1-Regsnp2.htm。

          看一下Regsnp1-Regsnp2.htm,注意其中的:

          Summary info:Deleted keys: 0Modified keys: 15New keys : 1

          意思就是兩次記錄中,沒(méi)有刪除注冊(cè)表鍵,修改了15處注冊(cè)表,新增加了一處注冊(cè)表。再看看后邊的:

          File list in C:WINNTSystem32*.*Summary info:Deleted files: 0Modified files: 0New files : 1New filesdiagcfg.exe Size: 97 792 , Date/Time: 2001年07月01日 23:00:12--------------Total positions: 1

          這一段話的意思就是,在C:WINNTSystem32目錄下面新增加了一個(gè)文件diagcfg.exe,這個(gè)文件非??梢桑?yàn)槲覀冊(cè)诒容^兩次系統(tǒng)信息之間只運(yùn)行了“廣外女生”這個(gè)木馬,所以我們有理由相信diagcfg.exe就是木馬留在系統(tǒng)中的后門程序。不信的話你打開(kāi)任務(wù)管理器看一下,會(huì)發(fā)現(xiàn)其中有一個(gè)DIAGCFG.EXE的進(jìn)程,這就是木馬的原身。但這個(gè)時(shí)候千萬(wàn)不要?jiǎng)h除DIAGCFG.EXE,否則系統(tǒng)就無(wú)法正常運(yùn)行了。

          木馬一般都會(huì)在注冊(cè)表中設(shè)置一些鍵值以便以后在系統(tǒng)每次重新啟動(dòng)時(shí)能夠自動(dòng)運(yùn)行。我們?cè)賮?lái)看看Regsnp1-Regsnp2.htm中哪些注冊(cè)表項(xiàng)發(fā)生了變化,憑借經(jīng)驗(yàn)應(yīng)該注意到下面這條了:

          HKEY_LOCAL_MACHINESOFTWAREClassesexefileshellopencommand@Old value: String: %1 %*New value: String: C:WINNTSystem32DIAGCFG.EXE %1 %*

          這個(gè)鍵值由原來(lái)的%1 %*被修改為了C:WINNTSystem32DIAGCFG.EXE %1 %*,因?yàn)槠渲邪四抉R程序DIAGCFG.EXE所以最為可疑。那么這個(gè)注冊(cè)表項(xiàng)有什么作用呢?

          它就是運(yùn)行可執(zhí)行文件的格式,被改成C:WINNTSystem32DIAGCFG.EXE %1。%*之后每次再運(yùn)行任何可執(zhí)行文件時(shí)都要先運(yùn)行C:WINNTSystem32DIAGCFG.EXE這個(gè)程序。

          原來(lái)這個(gè)木馬就是通過(guò)這里做了手腳,使自己能夠自動(dòng)運(yùn)行,它的啟動(dòng)方法與一般普通木馬不太一樣,一般的木馬是在

          HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun*


          鍵里增加一個(gè)鍵值,使自己能夠自啟動(dòng),但這種方法被殺毒軟件所熟知了,所以很容易被查殺。而“廣外女生”這個(gè)木馬就比較狡猾,它把啟動(dòng)項(xiàng)設(shè)在了另外的位置。

          現(xiàn)在我們已經(jīng)掌握了這個(gè)木馬的駐留位置以及在注冊(cè)表中的啟動(dòng)項(xiàng),還有重要的一點(diǎn)就是我們還要找出它到底監(jiān)聽(tīng)了哪個(gè)端口。使用fport可以輕松的實(shí)現(xiàn)這一點(diǎn)。在命令行中運(yùn)行fport.exe,可以看到:

          C:toolfport>fportFPort v1.33 - TCP/IP Process to Port MapperCopyright 2000 by Foundstone, Inc.http://www.foundstone.comPid Process   Port Proto Path584 tcpsvcs -> 7   TCP C:WINNTSystem32tcpsvcs.exe584 tcpsvcs -> 9   TCP C:WINNTSystem32tcpsvcs.exe584 tcpsvcs -> 13  TCP C:WINNTSystem32tcpsvcs.exe584 tcpsvcs -> 17  TCP C:WINNTSystem32tcpsvcs.exe584 tcpsvcs -> 19  TCP C:WINNTSystem32tcpsvcs.exe836 inetinfo -> 80  TCP C:WINNTSystem32inetsrvinetinfo.exe408 svchost -> 135 TCP C:WINNTsystem32svchost.exe836 inetinfo -> 443 TCP C:WINNTSystem32inetsrvinetinfo.exe8   System  -> 445 TCP464 msdtc  -> 1025 TCP C:WINNTSystem32msdtc.exe684 MSTask  -> 1026 TCP C:WINNTsystem32MSTask.exe584 tcpsvcs -> 1028 TCP C:WINNTSystem32tcpsvcs.exe836 inetinfo -> 1029 TCP C:WINNTSystem32inetsrvinetinfo.exe8   System  -> 1030 TCP464 msdtc  -> 3372 TCP C:WINNTSystem32msdtc.exe1176 DIAGCFG -> 6267 TCP C:WINNTSystem32DIAGCFG.EXE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 注意這行!??!836 inetinfo -> 7075 TCP C:WINNTSystem32inetsrvinetinfo.exe584 tcpsvcs -> 7   UDP C:WINNTSystem32tcpsvcs.exe584 tcpsvcs -> 9   UDP C:WINNTSystem32tcpsvcs.exe584 tcpsvcs -> 13  UDP C:WINNTSystem32tcpsvcs.exe584 tcpsvcs -> 17  UDP C:WINNTSystem32tcpsvcs.exe584 tcpsvcs -> 19  UDP C:WINNTSystem32tcpsvcs.exe584 tcpsvcs -> 68  UDP C:WINNTSystem32tcpsvcs.exe408 svchost -> 135 UDP C:WINNTsystem32svchost.exe8   System  -> 445 UDP228 services -> 1027 UDP C:WINNTsystem32services.exe836 inetinfo -> 3456 UDP C:WINNTSystem32inetsrvinetinfo.exe

          我們可以清楚的看到,木馬程序監(jiān)聽(tīng)在TCP的6267號(hào)端口上了。我們到目前為止就可以說(shuō)掌握了“廣外女生”這個(gè)木馬在我們系統(tǒng)中的全部動(dòng)作了,現(xiàn)在我們可以輕而易舉的查殺它了。

          三、查殺

          經(jīng)過(guò)前面的分析我們已經(jīng)了解了“廣外女生”這種木馬的工作方式,現(xiàn)在我們就來(lái)清除它。下面就是徹底清除“廣外女生”的方法,注意:這個(gè)步驟的次序不能顛倒,否則可能無(wú)法完全清除掉此木馬。

          1.按“開(kāi)始”菜單,選擇“運(yùn)行”,輸入regedit,按確定。打開(kāi)下面鍵值:

          HKEY_LOCAL_MACHINESOFTWAREClassesexefileshellopencommand


          但是先不要修改,因?yàn)槿绻@時(shí)就修改注冊(cè)表的話,DIAGCFG.EXE進(jìn)程仍然會(huì)立刻把它改回來(lái)的。

          2.打開(kāi)“任務(wù)管理器”,找到DIAGCFG.EXE這個(gè)進(jìn)程,選中它,按“結(jié)束進(jìn)程”來(lái)關(guān)掉這個(gè)進(jìn)程。注意,一定也不要先關(guān)進(jìn)程再打開(kāi)注冊(cè)表管理器,否則執(zhí)行regedit.exe時(shí)就又會(huì)啟動(dòng)DIAGCFG.EXE。

          3.把

          HKEY_LOCAL_MACHINESOFTWAREClassesexefileshellopencommand


          的鍵值由原來(lái)的C:WINNTSystem32DIAGCFG.EXE %1 %*改為%1 %*。

          4.這時(shí)就可以刪除C:WINNTSystem32目錄下的DIAGCFG.EXE了。切記萬(wàn)萬(wàn)不可首先刪除這個(gè)文件,否則的話就無(wú)法再系統(tǒng)中運(yùn)行任何可執(zhí)行文件了。由于我們下面還打算進(jìn)一步深入分析這個(gè)木馬,所以現(xiàn)在不刪除它,而是把它拷貝到其他的目錄以便研究。

          四、深入研究

          我們已經(jīng)知道了“廣外女生”的基本工作原理、啟動(dòng)流程以及如何徹底清除它了,但是還有一點(diǎn)我們沒(méi)有徹底弄清楚,那就是它是如何對(duì)付“天網(wǎng)”或“金山毒霸”的。要深入了解這一點(diǎn),我們必須要去看“廣外女生”的代碼,這個(gè)木馬并沒(méi)有公布源代碼,但是我們?nèi)匀豢梢酝ㄟ^(guò)反匯編它來(lái)看個(gè)究竟。

          “廣外女生”的端只有96K,顯然是使用了壓縮軟件進(jìn)行了加殼的,我們首先就要確定它到底加了什么殼。通過(guò)使用FileInfo這個(gè)小工具就可以偵測(cè)出來(lái)?,F(xiàn)在我們就把前面分析過(guò)的那個(gè)DIAGCFG.EXE復(fù)制到FileInfo的目錄下,然后在命令行下fi.exe,然后按回車,就會(huì)顯示:

            FileInfo v2.45a (c) 1997-2001 from JUN-06-2001FileInfo v2.45a (c) 1997-2001 by Michael Hering - herinmi@tu-cottbus.deC:TOOLFI═─*ASPack v1.06b A.Solodovnikov .data   DIAGCFG.EXE .....98304 01.01.1997aPack v0.98/0.99 (Jibz) {short} ....... EXETOOLS.COM .......895 10.11.2000 !aPack v0.98/0.99 (Jibz) ............... FI.EXE ....135458 06.06.2001 !...................................... FILE_ID.DIZ ......1088 06.06.2001 !?7-bit text ........................... REG.BAT .......280 06.06.2001 !...................................... SUMMER.KEY  .......157 06.06.2001 !* detected 4/6 files in 110 ms──═ FileInfo summary ═──── Date: Mi,01.01.1997 ─ Time: 21:32:15 ─scan path: C:TOOLFIfile mask: *.*all size: 236182 Bytes = 230 KB   4/6 files in 110 ms (18.33 ms/file)

          FileInfo就已經(jīng)檢測(cè)出DIAGCFG.EXE是使用了ASPack v1.06b進(jìn)行加殼。知道了它的加密方法我們就可以使用ProcDump來(lái)把它脫殼了。

          運(yùn)行ProcDump,點(diǎn)擊Unpack按鈕,因?yàn)槲覀円揂SPack v1.06b的殼,所以就在其中選中Aspack108,然后按OK。這時(shí)它會(huì)讓你打開(kāi)要脫殼的文件,我們就選DIAGCFG.EXE,打開(kāi)。然后稍微等幾秒種后按“確定”,ProcDump就會(huì)把DIAGCFG.EXE脫殼,然后會(huì)出個(gè)對(duì)話框要你把脫殼過(guò)的文件存盤,我們就把它存為gwns.exe。

          注意:這時(shí)候,木馬又在你的系統(tǒng)上運(yùn)行了一次,所以必須按照前面的清除步驟重新把它清除掉。由于前面已經(jīng)寫過(guò)清除方法,這里就不再贅述了。

          好了,現(xiàn)在我們已經(jīng)得到了這個(gè)木馬加殼前的原始文件了,看看脫殼過(guò)的gwns.exe,有194k之大,比原來(lái)的程序大了一倍還多,這就是加殼軟件的功勞了?,F(xiàn)在就可以使用反匯編程序?qū)ζ溥M(jìn)行反匯編,然后看它的匯編程序代碼了。

          我們就用IDA來(lái)反匯編它,順便說(shuō)一句,這個(gè)IDA是個(gè)超強(qiáng)的反匯編工具,是cracker以及Windows hacker所必備的工具。下面我們就來(lái)看看部分反匯編過(guò)的代碼:

          0042B1AC   push  offset aKernel32_dll ; kernel32.dll0042B1B1   call  j_LoadLibraryA0042B1B6   mov   [ebx], eax0042B1B8   push  offset aRegisterservic ; RegisterServiceProcess0042B1BD   mov   eax, [ebx]0042B1BF   push  eax0042B1C0   call  j_GetProcAddress0042B1C5   mov   ds:dword_42EA5C, eax0042B1CA   cmp   ds:dword_42EA5C, 00042B1D1   jz   short loc_42B1E10042B1D3   push  10042B1D5   call  j_GetCurrentProcessId0042B1DA   push  eax0042B1DB   call  ds:dword_42EA5C

          木馬首先加載了kernel32.dll,然后利用GetProcAddress來(lái)得到RegisterServiceProcess這個(gè)API的地址,木馬首先需要把自己注冊(cè)為系統(tǒng)服務(wù),這樣在Win9x下運(yùn)行時(shí)就不容易被任務(wù)管理器發(fā)現(xiàn)。然后它會(huì)GetCommandLineA來(lái)得到運(yùn)行參數(shù),如果參數(shù)是可執(zhí)行文件的話就調(diào)用Winexec來(lái)運(yùn)行。

          0042B271   mov   eax, ds:dword_42EA800042B276   mov   edx, offset aSnfw_exe ; snfw.exe0042B27B   call  sub_4039000042B280   jz   short loc_42B2930042B282   mov   eax, ds:dword_42EA800042B287   mov   edx, offset aKav9x_exe ; kav9x.exe

          然后木馬會(huì)查找snfw.exe和kav9x.exe的進(jìn)程,也就是“天網(wǎng)”或“金山毒霸”的進(jìn)程,然后將其殺掉。

          0042B6AD   push  ebx0042B6AE   push  00042B6B0   push  00042B6B2   push  offset aSoftwareMicr_0 ; SoftwareMicrosoftWindowsCurrentVersi...0042B6B7   push  80000002h0042B6BC   call  j_RegOpenKeyExA_00042B6C1   push  offset aKingsoftAntivi ; Kingsoft AntiVirus0042B6C6   mov   eax, [ebx]0042B6C8   push  eax0042B6C9   call  j_RegDeleteValueA0042B6CE   mov   eax, [ebx]0042B6D0   push  eax0042B6D1   call  j_RegCloseKey_0

          木馬還會(huì)修改“天網(wǎng)防火墻”或“金山毒霸”在注冊(cè)表中的啟動(dòng)項(xiàng),使其在下次系統(tǒng)重新啟動(dòng)時(shí)無(wú)法自動(dòng)運(yùn)行。

          0042B820   mov   dword ptr [esi], 100h0042B826   push  esi0042B827   push  edi0042B828   push  offset a_exe_1 ; .exe0042B82D   push  80000000h0042B832   call  j_RegQueryValueA0042B837   push  80042B839   push  offset a1 ; %1 %*0042B83E   push  10042B840   lea   eax, [ebp+var_10]0042B843   mov   edx, edi0042B845   mov   ecx, 100h0042B84A   call  sub_4037A00042B84F   lea   eax, [ebp+var_10]0042B852   mov   edx, offset aShellOpenComma ; shellopencommand0042B857   call  sub_4037F80042B85C   mov   eax, [ebp+var_10]0042B85F   call  sub_4039A40042B864   push  eax0042B865   push  80000000h0042B86A   call  j_RegSetValueA0042B86F   push  00042B871   mov   eax, ds:dword_42D0400042B876   mov   eax, [eax]0042B878   push  eax0042B879   call  j_WinExec

          下面就是修改木馬的注冊(cè)表啟動(dòng)項(xiàng),即

          HKEY_LOCAL_MACHINESOFTWAREClassesexefileshellopencommand

          項(xiàng),使其能夠在每次系統(tǒng)重新啟動(dòng)時(shí)能夠自行啟動(dòng)。接下來(lái)木馬就會(huì)初始化Winsock dll,綁定端口,等待木馬客戶端的連接。

          五、總結(jié)

          截止目前為止,我們已經(jīng)完成了對(duì)“廣外女生”這個(gè)木馬程序的全部分析過(guò)程,了解了木馬的啟動(dòng)、運(yùn)行機(jī)制。當(dāng)然,我寫本文的目的并不是簡(jiǎn)單的介紹“廣外女生”這一種木馬,而是通過(guò)對(duì)這個(gè)具有典型意義的木馬的詳細(xì)分析,來(lái)向大家介紹對(duì)一般木馬的分析方法。利用本文的分析方法,你完全對(duì)任何一種未知的木馬品種進(jìn)行分析。最后我們?cè)賮?lái)總結(jié)一下對(duì)木馬分析的方法及步驟:

          首先對(duì)系統(tǒng)注冊(cè)表以及系統(tǒng)文件進(jìn)行備份,然后運(yùn)行木馬服務(wù)器端,再對(duì)運(yùn)行過(guò)木馬的注冊(cè)表以及系統(tǒng)文件進(jìn)行記錄,利用注冊(cè)表分析工具對(duì)兩次記錄結(jié)果進(jìn)行比較,這樣就可以了解木馬在系統(tǒng)中做了哪些手腳。利用fport來(lái)查看木馬監(jiān)聽(tīng)端口。然后利用所獲取的信息做出木馬的清除方法。

          如果想要對(duì)木馬進(jìn)行深入的分析,還應(yīng)該對(duì)木馬服務(wù)器端進(jìn)行脫殼、反匯編。這樣就可以完全掌握木馬的任何動(dòng)作,當(dāng)然,這需要你對(duì)匯編語(yǔ)言有相當(dāng)?shù)恼莆粘潭纫约耙欢ǖ哪托?,因?yàn)槿唛L(zhǎng)的匯編代碼不是一般的新手所能完全閱讀的。

          如果還想進(jìn)一步分析木馬報(bào)文格式的話,就用sniffer對(duì)木馬的端口進(jìn)行監(jiān)聽(tīng),然后進(jìn)行比較分析,這種分析方法比較復(fù)雜,本文就不舉例說(shuō)明了。

          只是閱讀文章還不行,要想完全分析清楚一只木馬,還需要實(shí)際操練一下!祝你好運(yùn)!



          關(guān)鍵詞: 黑客 木馬 服務(wù)器 防火墻

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();