LPK病毒分析报告
文件: lpk.dll
大小: 44032 字节
MD5: 78311085E5CD3F86A7243D628BFACF95
SHA1: BA7C78590F1E940F51AFD2945674D904A814F976
CRC32: F223E90D
LPK.dl主要行为:
pk.dll获取了系统正常的lpk.dll文件的导出函数地址,并伪装成正常的lpk文件,当伪装的LPK.dll被加载后,该模块会进行以下的操作:
- 伪装的lpk.dll释放其中包含一段恶意资源到Windows临时目录下,将该资源命名为hrl*.tmp(*为随机字符), 用任意十六进制查看器可以看到该资源是PE文件。
图1 lpk.dll中的一段资源文件
图 2 调用FindResourceA查找资源
- 调用CreateProcess将创建hrl*.tmp进程。
- 遍历磁盘目录,如果当前目录存在”.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的模块
- 网络操作:
首先将当前进程的母体资源写入到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 用正常窗口方式打开指定页面