木马分析专家,木马的分析方法

木马的分析方法 - 故障解答 - 电脑教程网

木马的分析方法

日期:2007-09-22   荐:
木马的分析方法


  运行ProcDump,点击Unpack按钮,因为我们要脱ASPack v1.06b的壳,所以就在其中选中Aspack<108,然后按OK。这时它会让你打开要脱壳的文件,我们就选DIAGCFG.EXE,打开。然后稍微等几秒种后按“确定”,ProcDump就会把DIAGCFG.EXE脱壳,然后会出个对话框要你把脱壳过的文件存盘,我们就把它存为gwns.exe。

  注意:这时候,木马又在你的系统上运行了一次,所以必须按照前面的清除步骤重新把它清除掉。由于前面已经写过清除方法,这里就不再赘述了。

  好了,现在我们已经得到了这个木马加壳前的原始文件了,看看脱壳过的gwns.exe,有194k之大,比原来的程序大了一倍还多,这就是加壳软件的功劳了。现在就可以使用反汇编程序对其进行反汇编,然后看它的汇编程序代码了。

  我们就用IDA来反汇编它,顺便说一句,这个IDA是个超强的反汇编工具,是cracker以及Windows hacker所必备的工具。下面我们就来看看部分反汇编过的代码:

0042B1AC   push  offset aKernel32_dll ; "kernel32.dll"
0042B1B1   call  j_LoadLibraryA
0042B1B6   mov   [ebx], eax
0042B1B8   push  offset aRegisterservic ; "RegisterServiceProcess"
0042B1BD   mov   eax, [ebx]
0042B1BF   push  eax
0042B1C0   call  j_GetProcAddress
0042B1C5   mov   ds:dword_42EA5C, eax
0042B1CA   cmp   ds:dword_42EA5C, 0
0042B1D1   jz   short loc_42B1E1
0042B1D3   push  1
0042B1D5   call  j_GetCurrentProcessId
0042B1DA   push  eax
0042B1DB   call  ds:dword_42EA5C

  木马首先加载了kernel32.dll,然后利用GetProcAddress来得到RegisterServiceProcess这个API的地址,木马首先需要把自己注册为系统服务,这样在Win9x下运行时就不容易被任务管理器发现。然后它会GetCommandLineA来得到运行参数,如果参数是可执行文件的话就调用Winexec来运行。

0042B271   mov   eax, ds:dword_42EA80
0042B276   mov   edx, offset aSnfw_exe ; "snfw.exe"
0042B27B   call  sub_403900
0042B280   jz   short loc_42B293
0042B282   mov   eax, ds:dword_42EA80
0042B287   mov   edx, offset aKav9x_exe ; "kav9x.exe"

  然后木马会查找snfw.exe和kav9x.exe的进程,也就是“天网防火墙”或“金山毒霸”的进程,然后将其杀掉。

0042B6AD   push  ebx
0042B6AE   push  0
0042B6B0   push  0
0042B6B2   push  offset aSoftwareMicr_0 ; "Software\\Microsoft\\Windows\\CurrentVersi"...
0042B6B7   push  80000002h
0042B6BC   call  j_RegOpenKeyExA_0
0042B6C1   push  offset aKingsoftAntivi ; "Kingsoft AntiVirus"
0042B6C6   mov   eax, [ebx]
0042B6C8   push  eax
0042B6C9   call  j_RegDeleteValueA
0042B6CE   mov   eax, [ebx]
0042B6D0   push  eax
0042B6D1   call  j_RegCloseKey_0

  木马还会修改“天网防火墙”或“金山毒霸”在注册表中的启动项,使其在下次系统重新启动时无法自动运行。

0042B820   mov   dword ptr [esi], 100h
0042B826   push  esi
0042B827   push  edi
0042B828   push  offset a_exe_1 ; ".exe"
0042B82D   push  80000000h
0042B832   call  j_RegQueryValueA
0042B837   push  8
0042B839   push  offset a1 ; "\"%1\" %*"
0042B83E   push  1
0042B840   lea   eax, [ebp var_10]


0042B843   mov   edx, edi
0042B845   mov   ecx, 100h
0042B84A   call  sub_4037A0
0042B84F   lea   eax, [ebp var_10]
0042B852   mov   edx, offset aShellOpenComma ; "\\shell\\open\\command"
0042B857   call  sub_4037F8
0042B85C   mov   eax, [ebp var_10]
0042B85F   call  sub_4039A4
0042B864   push  eax
0042B865   push  80000000h
0042B86A   call  j_RegSetValueA
0042B86F   push  0
0042B871   mov   eax, ds:dword_42D040
0042B876   mov   eax, [eax]
0042B878   push  eax
0042B879   call  j_WinExec

  下面就是修改木马的注册表启动项,即HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\open\command\项,使其能够在每次系统重新启动时能够自行启动。接下来木马就会初始化Winsock dll,绑定端口,等待木马客户端的连接。

五、总结

  截止目前为止,我们已经完成了对“广外女生”这个木马程序的全部分析过程,了解了木马的启动、运行机制。当然,我写本文的目的并不是简单的介绍“广外女生”这一种木马,而是通过对这个具有典型意义的木马的详细分析,来向大家介绍对一般木马的分析方法。利用本文的分析方法,你完全对任何一种未知的木马品种进行分析。最后我们再来总结一下对木马分析的方法及步骤:

  首先对系统注册表以及系统文件进行备份,然后运行木马服务器端,再对运行过木马的注册表以及系统文件进行记录,利用注册表分析工具对两次记录结果进行比较,这样就可以了解木马在系统中做了哪些手脚。利用fport来查看木马监听端口。然后利用所获取的信息做出木马的清除方法。

  如果想要对木马进行深入的分析,还应该对木马服务器端进行脱壳、反汇编。这样就可以完全掌握木马的任何动作,当然,这需要你对汇编语言有相当的掌握程度以及一定的耐心,因为冗长的汇编代码不是一般的新手所能完全阅读的。

  如果还想进一步分析木马报文格式的话,就用sniffer对木马的端口进行监听,然后进行比较分析,这种分析方法比较复杂,本文就不举例说明了。

  只是阅读文章还不行,要想完全分析清楚一只木马,还需要实际操练一下!祝你好运!(完)
标签: