新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 黑客實例講解木馬的分析方法!

        黑客實例講解木馬的分析方法!

        作者: 時間:2017-06-13 來源:網絡 收藏

        以前有過一款國產,它有個好聽的名字,叫做“廣外女生”。這個是廣東外語外貿大學“廣外女生”網絡小組的作品,它可以運行于WIN98,WIN98SE,WINME,WINNT,WIN2000或已經安裝Winsock2.0的Win95/97上。與以往的相比,它具有體積更小、隱藏更為巧妙的特點。可以預料,在將來的日子里它會成為繼“冰河”之后的又一流行的木馬品種。

        本文引用地址:http://www.104case.com/article/201706/357346.htm

        由于“廣外女生”這個木馬的駐留、啟動的方法比較具有典型性,下面我就通過對這種新型木馬的詳細分析過程來向大家闡述對一般木馬的研究方法。下面的測試環境為Windows2000中文版。

        一、所需工具

        1.RegSnap v2.80 監視注冊表以及系統文件變化的最好工具

        2.fport v1.33 查看程序所打開的端口的工具

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

        4.ProcDump v1.6.2 脫殼工具

        5.IDA v4.0.4 反匯編工具

        二、分析步驟

        一切工具準備就緒了,我們開始分析這個木馬。一般的木馬的端一旦運行之后都會對注冊表以及系統文件做一些手腳,所以我們在分析之前就要先對注冊表以及系統文件做一個備份。

        首先打開RegSnap,從file菜單選new,然后點OK。這樣就對當前的注冊表以及系統文件做了一個記錄,一會兒如果木馬修改了其中某項,我們就可以分析出來了。備份完成之后把它存為Regsnp1.rgs。

        然后我們就在我們的電腦上運行“廣外女生”的端,不要害怕,因為我們已經做了比較詳細的備份了,它做的手腳我們都可以照原樣改回來的。雙擊gdufs.exe,然后等一小會兒。如果你正在運行著“天網”或“金山毒霸”的話,應該發現這兩個程序自動退出了,很奇怪嗎?且聽我們后面的分析。現在木馬就已經駐留在我們的系統中了。我們來看一看它究竟對我們的做了哪些操作。重新打開RegSnap,從file菜單選new,然后點OK,把這次的snap結果存為Regsnp2.rgs。

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

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

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

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

        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目錄下面新增加了一個文件diagcfg.exe,這個文件非常可疑,因為我們在比較兩次系統信息之間只運行了“廣外女生”這個木馬,所以我們有理由相信diagcfg.exe就是木馬留在系統中的后門程序。不信的話你打開任務管理器看一下,會發現其中有一個DIAGCFG.EXE的進程,這就是木馬的原身。但這個時候千萬不要刪除DIAGCFG.EXE,否則系統就無法正常運行了。

        木馬一般都會在注冊表中設置一些鍵值以便以后在系統每次重新啟動時能夠自動運行。我們再來看看Regsnp1-Regsnp2.htm中哪些注冊表項發生了變化,憑借經驗應該注意到下面這條了:

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

        這個鍵值由原來的%1 %*被修改為了C:WINNTSystem32DIAGCFG.EXE %1 %*,因為其中包含了木馬程序DIAGCFG.EXE所以最為可疑。那么這個注冊表項有什么作用呢?

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

        原來這個木馬就是通過這里做了手腳,使自己能夠自動運行,它的啟動方法與一般普通木馬不太一樣,一般的木馬是在

        HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun*


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

        現在我們已經掌握了這個木馬的駐留位置以及在注冊表中的啟動項,還有重要的一點就是我們還要找出它到底監聽了哪個端口。使用fport可以輕松的實現這一點。在命令行中運行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

        我們可以清楚的看到,木馬程序監聽在TCP的6267號端口上了。我們到目前為止就可以說掌握了“廣外女生”這個木馬在我們系統中的全部動作了,現在我們可以輕而易舉的查殺它了。

        三、查殺

        經過前面的分析我們已經了解了“廣外女生”這種木馬的工作方式,現在我們就來清除它。下面就是徹底清除“廣外女生”的方法,注意:這個步驟的次序不能顛倒,否則可能無法完全清除掉此木馬。

        1.按“開始”菜單,選擇“運行”,輸入regedit,按確定。打開下面鍵值:

        HKEY_LOCAL_MACHINESOFTWAREClassesexefileshellopencommand


        但是先不要修改,因為如果這時就修改注冊表的話,DIAGCFG.EXE進程仍然會立刻把它改回來的。

        2.打開“任務管理器”,找到DIAGCFG.EXE這個進程,選中它,按“結束進程”來關掉這個進程。注意,一定也不要先關進程再打開注冊表管理器,否則執行regedit.exe時就又會啟動DIAGCFG.EXE。

        3.把

        HKEY_LOCAL_MACHINESOFTWAREClassesexefileshellopencommand


        的鍵值由原來的C:WINNTSystem32DIAGCFG.EXE %1 %*改為%1 %*。

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

        四、深入研究

        我們已經知道了“廣外女生”的基本工作原理、啟動流程以及如何徹底清除它了,但是還有一點我們沒有徹底弄清楚,那就是它是如何對付“天網”或“金山毒霸”的。要深入了解這一點,我們必須要去看“廣外女生”的代碼,這個木馬并沒有公布源代碼,但是我們仍然可以通過反匯編它來看個究竟。

        “廣外女生”的端只有96K,顯然是使用了壓縮軟件進行了加殼的,我們首先就要確定它到底加了什么殼。通過使用FileInfo這個小工具就可以偵測出來。現在我們就把前面分析過的那個DIAGCFG.EXE復制到FileInfo的目錄下,然后在命令行下fi.exe,然后按回車,就會顯示:

          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就已經檢測出DIAGCFG.EXE是使用了ASPack v1.06b進行加殼。知道了它的加密方法我們就可以使用ProcDump來把它脫殼了。

        運行ProcDump,點擊Unpack按鈕,因為我們要脫ASPack v1.06b的殼,所以就在其中選中Aspack108,然后按OK。這時它會讓你打開要脫殼的文件,我們就選DIAGCFG.EXE,打開。然后稍微等幾秒種后按“確定”,ProcDump就會把DIAGCFG.EXE脫殼,然后會出個對話框要你把脫殼過的文件存盤,我們就把它存為gwns.exe。

        注意:這時候,木馬又在你的系統上運行了一次,所以必須按照前面的清除步驟重新把它清除掉。由于前面已經寫過清除方法,這里就不再贅述了。

        好了,現在我們已經得到了這個木馬加殼前的原始文件了,看看脫殼過的gwns.exe,有194k之大,比原來的程序大了一倍還多,這就是加殼軟件的功勞了。現在就可以使用反匯編程序對其進行反匯編,然后看它的匯編程序代碼了。

        我們就用IDA來反匯編它,順便說一句,這個IDA是個超強的反匯編工具,是cracker以及Windows hacker所必備的工具。下面我們就來看看部分反匯編過的代碼:

        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來得到RegisterServiceProcess這個API的地址,木馬首先需要把自己注冊為系統服務,這樣在Win9x下運行時就不容易被任務管理器發現。然后它會GetCommandLineA來得到運行參數,如果參數是可執行文件的話就調用Winexec來運行。

        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

        然后木馬會查找snfw.exe和kav9x.exe的進程,也就是“天網”或“金山毒霸”的進程,然后將其殺掉。

        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

        木馬還會修改“天網防火墻”或“金山毒霸”在注冊表中的啟動項,使其在下次系統重新啟動時無法自動運行。

        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

        下面就是修改木馬的注冊表啟動項,即

        HKEY_LOCAL_MACHINESOFTWAREClassesexefileshellopencommand

        項,使其能夠在每次系統重新啟動時能夠自行啟動。接下來木馬就會初始化Winsock dll,綁定端口,等待木馬客戶端的連接。

        五、總結

        截止目前為止,我們已經完成了對“廣外女生”這個木馬程序的全部分析過程,了解了木馬的啟動、運行機制。當然,我寫本文的目的并不是簡單的介紹“廣外女生”這一種木馬,而是通過對這個具有典型意義的木馬的詳細分析,來向大家介紹對一般木馬的分析方法。利用本文的分析方法,你完全對任何一種未知的木馬品種進行分析。最后我們再來總結一下對木馬分析的方法及步驟:

        首先對系統注冊表以及系統文件進行備份,然后運行木馬服務器端,再對運行過木馬的注冊表以及系統文件進行記錄,利用注冊表分析工具對兩次記錄結果進行比較,這樣就可以了解木馬在系統中做了哪些手腳。利用fport來查看木馬監聽端口。然后利用所獲取的信息做出木馬的清除方法。

        如果想要對木馬進行深入的分析,還應該對木馬服務器端進行脫殼、反匯編。這樣就可以完全掌握木馬的任何動作,當然,這需要你對匯編語言有相當的掌握程度以及一定的耐心,因為冗長的匯編代碼不是一般的新手所能完全閱讀的。

        如果還想進一步分析木馬報文格式的話,就用sniffer對木馬的端口進行監聽,然后進行比較分析,這種分析方法比較復雜,本文就不舉例說明了。

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西盟| 武川县| 城固县| 六枝特区| 东阳市| 枝江市| 江达县| 望都县| 漾濞| 全南县| 衡阳市| 定结县| 乡城县| 清水县| 洛扎县| 曲水县| 邛崃市| 龙州县| 正阳县| 绍兴县| 行唐县| 普兰县| 洪湖市| 潞城市| 尼勒克县| 通江县| 乡宁县| 那曲县| 邹城市| 丰宁| 余江县| 泸西县| 吴江市| 阳高县| 台州市| 玉山县| 水城县| 鲁甸县| 宕昌县| 沙田区| 延边|