LPK病毒分析报告

文件: lpk.dll

大小: 44032 字节

MD5: 78311085E5CD3F86A7243D628BFACF95

SHA1: BA7C78590F1E940F51AFD2945674D904A814F976

CRC32: F223E90D

LPK.dl主要行为:

pk.dll获取了系统正常的lpk.dll文件的导出函数地址,并伪装成正常的lpk文件,当伪装的LPK.dll被加载后,该模块会进行以下的操作:

  1. 伪装的lpk.dll释放其中包含一段恶意资源到Windows临时目录下,将该资源命名为hrl*.tmp(*为随机字符), 用任意十六进制查看器可以看到该资源是PE文件。

 

                       图1   lpk.dll中的一段资源文件

 

                      图 2  调用FindResourceA查找资源

  1. 调用CreateProcess将创建hrl*.tmp进程。

 

  1. 遍历磁盘目录,如果当前目录存在”.exe”后缀的文件,将自身lpk.dll拷贝到当前目录。

 

将lpk.dll拷贝到当前目录,并将属性设置为隐藏:

 

对lpk.dll释放的母体hrl*.tmp的分析:

Hrl*.tmp主要行为:

hrl*.tmp是lpk.dll释放的恶意文件,当创建该进程后,将会进行大量的恶意操作,归类如下:

1、  创建服务:

首先判断注册表项:"SYSTEM\\CurrentControlSet\\Services\\Nationaluhm”是否存在,如果存在注册表项,则先将自己拷贝一份命名为”******.exe”,复制到”C:\Windows\System32\”目录下,然后创建一个名称为”Nationaluhm”的服务,将该服务的可执行文件指向刚刚复制的”C:\Windwos\System32\******.exe”,启动该服务。

 

 

                 图3 复制hrl*.tmp到系统目录

 

               图4 创建并启动服务

 

2.修改注册表

将” SYSTEM\\CurrentControlSet\\Services\\Nationaluhm\\”下Description的键值设置为” Nationallwk Instruments Domain Service”.

 

                  图5 修改注册表

3.进程操作:

如果注册表项不存在,将进程注入到Svhost.exe中:

(1)       首先调用CreatProcess函数创建一个Svchost.exe,并且使进程处于CREATE_SUSPEND状态。

(2)       调用GetThreadContect函数获取Svchost进程的各个寄存器的值,其中EBX指向PEB,EAX保存程序的入口点。

(3)从PEB中获取进程的基址base_address(EBX+0x8)

(4)调用ZwUnmapViewOfSection卸载这个基址内存空间的数据,(该函数由ntdll.dll导出),(5)然后调用VirtualAllocEx函数在Svchost.exe进程空间里申请足够大的一片内存,读取hrl.tmp到内存中,调用WriteProcessMemory函数将hrl*.tmp拷贝到申请的空间。

用hrl*.tmp的BaseAddress修正svchsot进程中的PEB。用Eax设置入口地址,调用SetThreadContext修正。

(6)用ResumeThread函数恢复svhost.exe,注入完成。

 

获取ZwUnmapViewOfSection的地址

 

调用WriteProcessMemory函数将hrl*.tmp写到到申请的空间

 

SetThreadContext修正入口地址,ResumeThread重启进程。

 

注入后的svhost进程相当于一个僵尸进程,可以用XueTr查看svhost.exe的模块

 

  1. 网络操作:

首先将当前进程的母体资源写入到hra33.dll,相当与重新合成lpk.dll.

 

                    Hrl**.exe中包含了的lpk.dll

调用EnumResourceNamel遍历当前模块,将资源写入hrl33.dll

 

调用CreateFileA将模块写入hra*.dll

 

给hra*.dll添加资源:

 

 

                     写入编号为0x66(102)的资源

 

                     写入编号为0x65(101)的资源

 

开启下载线程,从服务器地址为:http://www.ody.cc/vip48.html的页面,并从该页面获取病毒的服务器地址.

通过上面获取的页面信息获得服务器ip地址和端口号,与远程服务器建立socket连接,将连接设置为KEEPALIVE状态,75s检测一次连接状态。

获取计算机的运行Windows版本信息,CPU频率,以及运行内存大小,通过socket发送给远程服务器。

 

从远程服务器读取远控文件”PlusCtrl.dll”,并获取导出函数”ProcessTrans”来对计算机进行远程控制。

 

加载PlusCtr.dll

 

接收服务端指令,执行操作

 

接收远程服务器指令,通过switch case语句对不同的指令执行相应的操作,计算机成为僵尸机(肉鸡),可以对任意指定的服务器发起恶意请求(或DDOS攻击)。

 

其中402004保存执行操作的数据表

 

 当收到不同指令则对应表中不同的地址,然后指向相应的操作函数;

 

Case 22:从服务器获取PlusCtr.dll

 

Case 2:对指定的IP发起DDOS

 

Case 16 17:下载恶意文件到临时目录并执行

 

Case 19 以隐藏方式打开ie指定页面,case 20 用正常窗口方式打开指定页面

 

posted @ 2013-05-26 14:29  Lamboy  阅读(1842)  评论(1编辑  收藏  举报