微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 黑客实例讲解木马的分析方法!

黑客实例讲解木马的分析方法!

时间:01-16 来源:eNet硅谷动力 点击:

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_LoadLibraryA0042B1B6   mov   [ebx], eax0042B1B8   push  offset aRegisterservic ; "RegisterServiceProcess"0042B1BD   mov   eax, [ebx]0042B1BF   push  eax0042B1C0   call  j_GetProcAddress0042B1C5   mov   ds:dword_42EA5C, eax0042B1CA   cmp   ds:dword_42EA5C, 00042B1D1   jz   short loc_42B1E10042B1D3   push  10042B1D5   call  j_GetCurrentProcessId0042B1DA   push  eax0042B1DB   call  ds:dword_42EA5C

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

0042B271   mov   eax, ds:dword_42EA800042B276   mov   edx, offset aSnfw_exe ; "snfw.exe"0042B27B   call  sub_4039000042B280   jz   short loc_42B2930042B282   mov   eax, ds:dword_42EA800042B287   mov   edx, offset aKav9x_exe ; "kav9x.exe"

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

0042B6AD   push  ebx0042B6AE   push  00042B6B0   push  00042B6B2   push  offset aSoftwareMicr_0 ; "Software\Microsoft\Windows\CurrentVersi"...0042B6B7   push  80000002h0042B6BC   call  j_RegOpenKeyExA_00042B6C1   push  offset aKingsoftAntivi ; "Kingsoft AntiVirus"0042B6C6   mov   eax, [ebx]0042B6C8   push  eax0042B6C9   call  j_RegDeleteValueA0042B6CE   mov   eax, [ebx]0042B6D0   push  eax0042B6D1   call  j_RegCloseKey_0

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

0042B820   mov   dword ptr [esi], 100h0042B826   push  esi0042B827   push  edi0042B828   push  offset a_exe_1 ; ".exe"0042B82D   push  80000000h0042B832   call  j_RegQueryValueA0042B837   push  80042B839   push  offset a1 ; ""%1" %*"0042B83E   push  10042B840   lea   eax, [ebp+var_10]0042B843   mov   edx, edi0042B845   mov   ecx, 100h0042B84A   call  sub_4037A00042B84F   lea   eax, [ebp+var_10]0042B852   mov   edx, offset aShellOpenComma ; "\shell\open\command"0042B857   call  sub_4037F80042B85C   mov   eax, [ebp+var_10]0042B85F   call  sub_4039A40042B864   push  eax0042B865   push  80000000h0042B86A   call  j_RegSetValueA0042B86F   push  00042B871   mov   eax, ds:dword_42D0400042B876   mov   eax, [eax]0042B878   push  eax0042B879   call  j_WinExec

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top