安全中国首页 > 文章中心 > Q Q技巧
 
安全中国网友投稿专用上传FTP空间:
Ftp服务器:download.anqn.com
Ftp端口:21
用户名:anqn
密 码:anqn.com
 

别让MP3黑走你的QQ--对一个病毒形式的QQ木马分析(图)

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

/pic/3/a2007-10-2-734001.png

 

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


/pic/3/a2007-10-2-371003.png



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

/pic/3/a2007-10-2-833005.png

 

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

/pic/3/a2007-10-2-876007.png



程序脱出来后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 下一页

 
相关文章
一日一文章
 
一日一软件
一日一动画