网络安全 频道

实例讲解木马的分析方法

3.把

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\open\command\

的键值由原来的C:\WINNT\System32\DIAGCFG.EXE "%1" %*改为"%1" %*。

4.这时就可以删除C:\WINNT\System32\目录下的DIAGCFG.EXE了。切记万万不可首先删除这个文件,否则的话就无法再系统中运行任何可执行文件了。由于我们下面还打算进一步深入分析这个木马,所以现在不删除它,而是把它拷贝到其他的目录以便研究。

四、深入研究

我们已经知道了“广外女生”的基本工作原理、启动流程以及如何彻底清除它了,但是还有一点我们没有彻底弄清楚,那就是它是如何对付“天网防火墙”或“金山毒霸”的。要深入了解这一点,我们必须要去看“广外女生”的代码,这个木马并没有公布源代码,但是我们仍然可以通过反汇编它来看个究竟。

“广外女生”的服务器端只有96K,显然是使用了压缩软件进行了加壳的,我们首先就要确定它到底加了什么壳。通过使用FileInfo这个小工具就可以侦测出来。现在我们就把前面分析过的那个DIAGCFG.EXE复制到FileInfo的目录下,然后在命令行下fi.exe,然后按回车,就会显示:

  FileInfo v2.45a (c) 1997-2001 from JUN-06-2001



FileInfo v2.45a (c) 1997-2001 by Michael Hering - herinmi@tu-cottbus.de



C:\TOOL\FI
═─*

ASPack v1.06b A.Solodovnikov .data   DIAGCFG.EXE .....98304 01.01.1997

aPack v0.98/0.99 (Jibz) {short} ....... EXETOOLS.COM .......895 10.11.2000 !

aPack v0.98/0.99 (Jibz) ............... FI.EXE ....135458 06.06.2001 !

...................................... FILE_ID.DIZ ......1088 06.06.2001 !

?7-bit text ........................... REG.BAT .......280 06.06.2001 !

...................................... SUMMER.KEY  .......157 06.06.2001 !



* detected 4/6 files in 110 ms



──═ FileInfo summary ═──── Date: Mi,01.01.1997 ─ Time: 21:32:15 ─



scan path: C:\TOOL\FI

file mask: *.*

all size: 236182 Bytes = 230 KB



   4/6 files in 110 ms (18.33 ms/file)

FileInfo就已经检测出DIAGCFG.EXE是使用了ASPack v1.06b进行加壳。知道了它的加密方法我们就可以使用ProcDump来把它脱壳了。

运行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
0
相关文章