以前有過一款國產木馬,它有個好聽的名字,叫做“廣外女生”。這個木馬是廣東外語外貿大學“廣外女生”網絡小組的作品,它可以運行于WIN98,WIN98SE,WINME,WINNT,WIN2000或已經安裝Winsock2.0的Win95/97上。與以往的木馬相比,它具有體積更小、隱藏更為巧妙的特點?梢灶A料,在將來的日子里它會成為繼“冰河”之后的又一流行的木馬品種。 由于“廣外女生”這個木馬的駐留、啟動的方法比較具有典型性,下面我就通過對這種新型木馬的詳細分析過程來向大家闡述對一般木馬的研究方法。下面的測試環境為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,然后等一小會兒。如果你正在運行著“天網防火墻”或“金山毒霸”的話,應該發現這兩個程序自動退出了,很奇怪嗎?且聽我們后面的分析,F在木馬就已經駐留在我們的系統中了。我們來看一看它究竟對我們的做了哪些操作。重新打開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: 0 Modified keys: 15 New keys : 1 意思就是兩次記錄中,沒有刪除注冊表鍵,修改了15處注冊表,新增加了一處注冊表。再看看后邊的: File list in C:\WINNT\System32\*.* Summary info: Deleted files: 0 Modified files: 0 New files : 1 New files diagcfg.exe Size: 97 792 , Date/Time: 2001年07月01日 23:00:12 -------------- Total positions: 1 這一段話的意思就是,在C:\WINNT\System32\目錄下面新增加了一個文件diagcfg.exe,這個文件非?梢,因為我們在比較兩次系統信息之間只運行了“廣外女生”這個木馬,所以我們有理由相信diagcfg.exe就是木馬留在系統中的后門程序。不信的話你打開任務管理器看一下,會發現其中有一個DIAGCFG.EXE的進程,這就是木馬的原身。但這個時候千萬不要刪除DIAGCFG.EXE,否則系統就無法正常運行了。 木馬一般都會在注冊表中設置一些鍵值以便以后在系統每次重新啟動時能夠自動運行。我們再來看看Regsnp1-Regsnp2.htm中哪些注冊表項發生了變化,憑借經驗應該注意到下面這條了: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\open\command\@ Old value: String: ""%1" %*" New value: String: "C:\WINNT\System32\DIAGCFG.EXE "%1" %*" 這個鍵值由原來的"%1" %*被修改為了C:\WINNT\System32\DIAGCFG.EXE "%1" %*,因為其中包含了木馬程序DIAGCFG.EXE所以最為可疑。那么這個注冊表項有什么作用呢? 它就是運行可執行文件的格式,被改成C:\WINNT\System32\DIAGCFG.EXE "%1"。%*之后每次再運行任何可執行文件時都要先運行C:\WINNT\System32\DIAGCFG.EXE這個程序。 原來這個木馬就是通過這里做了手腳,使自己能夠自動運行,它的啟動方法與一般普通木馬不太一樣,一般的木馬是在 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run* 鍵里增加一個鍵值,使自己能夠自啟動,但這種方法被殺毒軟件所熟知了,所以很容易被查殺。而“廣外女生”這個木馬就比較狡猾,它把啟動項設在了另外的位置。 現在我們已經掌握了這個木馬的駐留位置以及在注冊表中的啟動項,還有重要的一點就是我們還要找出它到底監聽了哪個端口。使用fport可以輕松的實現這一點。在命令行中運行fport.exe,可以看到: C:\tool\fport>fport FPort v1.33 - TCP/IP Process to Port Mapper Copyright 2000 by Foundstone, Inc. http://www.foundstone.com Pid Process Port Proto Path 584 tcpsvcs -> 7 TCP C:\WINNT\System32\tcpsvcs.exe 584 tcpsvcs -> 9 TCP C:\WINNT\System32\tcpsvcs.exe 584 tcpsvcs -> 13 TCP C:\WINNT\System32\tcpsvcs.exe 584 tcpsvcs -> 17 TCP C:\WINNT\System32\tcpsvcs.exe 584 tcpsvcs -> 19 TCP C:\WINNT\System32\tcpsvcs.exe 836 inetinfo -> 80 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 408 svchost -> 135 TCP C:\WINNT\system32\svchost.exe 836 inetinfo -> 443 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 8 System -> 445 TCP 464 msdtc -> 1025 TCP C:\WINNT\System32\msdtc.exe 684 MSTask -> 1026 TCP C:\WINNT\system32\MSTask.exe 584 tcpsvcs -> 1028 TCP C:\WINNT\System32\tcpsvcs.exe 836 inetinfo -> 1029 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 8 System -> 1030 TCP 464 msdtc -> 3372 TCP C:\WINNT\System32\msdtc.exe 1176 DIAGCFG -> 6267 TCP C:\WINNT\System32\DIAGCFG.EXE ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 注意這行。。 836 inetinfo -> 7075 TCP C:\WINNT\System32\inetsrv\inetinfo.exe 584 tcpsvcs -> 7 UDP C:\WINNT\System32\tcpsvcs.exe 584 tcpsvcs -> 9 UDP C:\WINNT\System32\tcpsvcs.exe 584 tcpsvcs -> 13 UDP C:\WINNT\System32\tcpsvcs.exe 584 tcpsvcs -> 17 UDP C:\WINNT\System32\tcpsvcs.exe 584 tcpsvcs -> 19 UDP C:\WINNT\System32\tcpsvcs.exe 584 tcpsvcs -> 68 UDP C:\WINNT\System32\tcpsvcs.exe 408 svchost -> 135 UDP C:\WINNT\system32\svchost.exe 8 System -> 445 UDP 228 services -> 1027 UDP C:\WINNT\system32\services.exe 836 inetinfo -> 3456 UDP C:\WINNT\System32\inetsrv\inetinfo.exe 我們可以清楚的看到,木馬程序監聽在TCP的6267號端口上了。我們到目前為止就可以說掌握了“廣外女生”這個木馬在我們系統中的全部動作了,現在我們可以輕而易舉的查殺它了。 三、查殺 經過前面的分析我們已經了解了“廣外女生”這種木馬的工作方式,現在我們就來清除它。下面就是徹底清除“廣外女生”的方法,注意:這個步驟的次序不能顛倒,否則可能無法完全清除掉此木馬。 1.按“開始”菜單,選擇“運行”,輸入regedit,按確定。打開下面鍵值: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\open\command\ 但是先不要修改,因為如果這時就修改注冊表的話,DIAGCFG.EXE進程仍然會立刻把它改回來的。 2.打開“任務管理器”,找到DIAGCFG.EXE這個進程,選中它,按“結束進程”來關掉這個進程。注意,一定也不要先關進程再打開注冊表管理器,否則執行regedit.exe時就又會啟動DIAGCFG.EXE。 3.把 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\open\command\ 的鍵值由原來的C:\WINNT\System32\DIAGCFG.EXE "%1" %*改為"%1" %*。 4.這時就可以刪除C:\WINNT\System32\目錄下的DIAGCFG.EXE了。切記萬萬不可首先刪除這個文件,否則的話就無法再系統中運行任何可執行文件了。由于我們下面還打算進一步深入分析這個木馬,所以現在不刪除它,而是把它拷貝到其他的目錄以便研究。 四、深入研究 我們已經知道了“廣外女生”的基本工作原理、啟動流程以及如何徹底清除它了,但是還有一點我們沒有徹底弄清楚,那就是它是如何對付“天網防火墻”或“金山毒霸”的。要深入了解這一點,我們必須要去看“廣外女生”的代碼,這個木馬并沒有公布源代碼,但是我們仍然可以通過反匯編它來看個究竟。 “廣外女生”的服務器端只有96K,顯然是使用了壓縮軟件進行了加殼的,我們首先就要確定它到底加了什么殼。通過使用FileInfo這個小工具就可以偵測出來,F在我們就把前面分析過的那個DIAGCFG.EXE復制到FileInfo的目錄下,然后在命令行下fi.exe,然后按回車,就會顯示: FileInfo v2.45a (c) 1997-2001 from JUN-06-2001 FileInfo v2.45a (c) 1997-2001 by Michael Hering - herinmi@tu-cottbus.de C:\TOOL\FI\ ═─* ASPack v1.06b A.Solodovnikov .data DIAGCFG.EXE .....98304 01.01.1997 aPack 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:\TOOL\FI file 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的殼,所以就在其中選中Aspack 0042B1AC push offset aKernel32_dll ; "kernel32.dll" 0042B1B1 call j_LoadLibraryA 0042B1B6 mov [ebx], eax 0042B1B8 push offset aRegisterservic ; "RegisterServiceProcess" 0042B1BD mov eax, [ebx] 0042B1BF push eax 0042B1C0 call j_GetProcAddress 0042B1C5 mov ds:dword_42EA5C, eax 0042B1CA cmp ds:dword_42EA5C, 0 0042B1D1 jz short loc_42B1E1 0042B1D3 push 1 0042B1D5 call j_GetCurrentProcessId 0042B1DA push eax 0042B1DB call ds:dword_42EA5C 木馬首先加載了kernel32.dll,然后利用GetProcAddress來得到RegisterServiceProcess這個API的地址,木馬首先需要把自己注冊為系統服務,這樣在Win9x下運行時就不容易被任務管理器發現。然后它會GetCommandLineA來得到運行參數,如果參數是可執行文件的話就調用Winexec來運行。 0042B271 mov eax, ds:dword_42EA80 0042B276 mov edx, offset aSnfw_exe ; "snfw.exe" 0042B27B call sub_403900 0042B280 jz short loc_42B293 0042B282 mov eax, ds:dword_42EA80 0042B287 mov edx, offset aKav9x_exe ; "kav9x.exe" |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信