3601_lpk劫持病毒分析

1. 样本信息



病毒名称:3601劫持病毒
所属家族:Trojan-DDoS.Win32.Macri.atk
大小: 24576 byte
修改时间: 2007年1月22日, 16:48:04
MD5: b5752252b34a8af470db1830cc48504d
SHA1: aec38add0aac1bc59bfaaf1e43dbdab10e13db18
CRC32: 4EDB317F
壳类型:UPX壳
编写语言:VC6
病毒行为:连接恶意网址下载代码远程执行、对lpk.dll进行劫持
2. 行为分析



使用火绒剑对病毒的行为进行分析,可以归为以下四类:对文件的操作、对注册表的操作、对进程的操作、对网络的操作。
一、 对文件的操作
① 创建fadbwg.exe文件(之后经过分析此文件名是随机的六个字母),并写入数据:
            
② 删除原始的病毒文件:

③ 创建hra33.dll文件和临时文件,并写入数据:

④ 在多个文件夹中创建lpk.dll并写入数据:


二、 对注册表的操作

在注册表中创建Ghijkl Nopqrstu Wxy项,并对注册表有删除操作:

三、 对进程的操作
① 创建了进程,经过排查发现创建的都是cmd、find、rar的进程:

② 使用cmd进行跨进程写内存的操作:

四、 对网络的操作
① 发送网络数据包,经过查看数据包流量猜测是发送了计算机的相关信息:

② 网络连接行为:

3. 恶意代码分析



3.1 分析是否有壳,如果有壳则进行脱壳
① 首先使用PEID进行分析,可以得知此病毒是UPX壳:

② 使用OD使用esp定律进行脱壳,脱壳后再使用PEID进行分析,可以得知此程序是VC6.0编写的:

3.2 恶意程序的代码分析片段
一、首先打开注册表,然后判断是否打开成功


① 打开注册表的函数OpenRegFunc如图2-1:

图2-1

二、打开注册表失败

① 恶意函数sub_405B6E:

1. 首先获取各种API地址,如图2-2:

图2-2

2. 生成随机的六个字母,如图2-3:


图2-3
3, 将病毒拷贝到C:\Windows\,以刚才生成的随机字母命名,如图2-4:


图2-4
4. 创建服务Ghijkl Nopqrstu Wxy,路径为随机字母.exe的病毒,如图2-5:

图2-5
5. 更改服务的可选配置参数,如图2-6:

图2-6
6. 使用StartService运行病毒的服务,如图2-7:

图2-7
7. 修改病毒的注册表添加Description项,值为"Ghijklmn Pqrstuvwx Abcdefg Ijklmnop Rst",如图2-8:

图2-8

② 删除病毒自身的函数DeleteFileFunc:

1. 命令行删除原路径病毒如图2-9:

图2-9
2. 更新设置,如图2-10:

图2-10

③ 退出当前进程,如图2-11:

图2-11

三、打开注册表成功
① 使用StartServiceCtrlDispatcher函数,启动之前创建的病毒服务:

② 分析恶意函数sub_40561A,其行为主要包括创建恶意dll、创建4个线程。

1. 创建恶意dll:

Create_hra33dll_Func调用了EnumResourceNames函数,如图2-12:


图2-12
分析EnumResourceNames的回调函数,创建了hra33.dll并写入了可执行文件,如图2-13、图2-14:

图2-13

图2-14   

2. 修改了hra33.dll的文件资源,如图2-15,其主要步骤是先读取病毒的注册表,如图2-16,然后创建病毒文件、读取病毒文件,如图2-17,之后向dll资源中写入病毒文件和一个字符串,如图2-18、图2-19:

图2-15

图2-16


图2-17

图2-18

图2-19   

3. 载入hra33.dll,如图2-20、图2-21:  


图2-20   


图2-21

4. 创建的第一个线程:

分析其回调函数:其中有很多常用的用户名,如图2-22,猜测是用于暴力破解时使用:

图2-22   

其中主要函数的功能通过分析可以得知是通过局域网传播病毒,如图2-23,此函数的参数为图2-24:

图2-23

图2-24
分析NetCopyFunc,首先获取各种API地址,然后字符串操作得到 [url=]\192.168.49.1\ipc$[/url],如图2-25,之后调用WNetAddConnection2函数,参数如图2-26:

图2-25

图2-26   

如果连接成功,则拷贝病毒命名为g1fd.exe,如图2-27,如果不成功会修改路径继续尝试,如图2-28:

图2-27

图2-28   

当成功拷贝病毒会执行CMD语句设置定时任务,如图2-29:

图2-29   

3. 创建的第二个线程:   


分析其回调函数,首先初始化套接字,然后获取当前日期,如图2-30,之后创建了一个新的线程如图2-31:

图2-30

图2-31   

分析线程回调函数sub_405128,此函数又创建了一个新线程,如图2-32:   


图2-32
分析其回调函数sub_4040DA,分析得知其功能是尝试连接主机 sbcq.f3322.org,如图2-33:

图2-33
之后判断是否连接成功,如图2-34:   


图2-34   

如果连接成功的话,会有一个函数获取当前计算机的相关信息如图2-35,此函数的主要功能函数如图2-36:

图2-35



图2-36   

然后会载入恶意dll,如图2-37:

图2-37
然后将发送获得的计算机信息,如图2-38、图2-39:

图2-38

图2-39   

如果发送成功,先获取UrlDownloadToFile函数地址:

之后有个switch-case结构,判断是根据消息码不同做出不同操作,有以下三种操作:
(1)执行下载的代码:

(2)删除病毒注册表和原文件,然后执行下载的exe文件:


(3)打开IE浏览器执行下载的代码:

之后有关于http数据包的函数,如图2-40、图2-41、图2-42,具体有什么作用暂时看不出来:

图2-40

图2-41

图2-42   

4. 创建的第三个线程:

分析其回调函数,发现做的事情和第二个线程相同,只是地址发生了变化,这次的远程连接地址为www.520123.xyz,如图2-43:

图2-43   

5. 第四个线程在sub_4030FD函数中,是while(1)循环调用此函数,如图2-44,回调函数如图2-45:   


图2-44   


图2-45
经过OD分析得知回调函数的地址为:0040387C,可以发现此函数也是尝试远程连接,网址为[url=]www.520520520.org:9426,和之前操作基本一致,但是含类似base64[/url]的加密,如图2-46、图2-47:

图2-46

图2-47

四、分析hra33.dll

① 加载病毒资源,判断是否加载成功,如图2-48,加载病毒资源的函数如图2-49:

图2-48

图2-49
② 如果加载成功,那么会判断当前进程加载模块的文件是不是 hrl.tmp,如图2-50:

图2-50
③ 判断是否在互斥体中,如图2-51:   


图2-51

④ 创建临时文件,写入病毒并运行,如图2-52~2-55:   


图2-52   


图2-53  


图2-54  


图2-55
⑤ 判断当前是否是lpk.dll,判断函数如图2-56,如果不是的话创建一个事件对象,如图2-57:   


图2-56   


图2-57
⑥ 恶意函数sub_100010CE:   


此函数创建线程循环遍历文件,判断后缀是否有.exe或.rar或.zip。如果有.exe的话判断是否存在lpk.dll,如果不存在就把恶意的hra.dll复制过去并命名为lpk.dll,如图2-58:

图2-58
如果有.rar或.zip的话就获取RAR.exe的路径然后进行恶意操作,操作步骤为:创建临时目录名->查看压缩包中是否存在lpk.dll->如果存在lpk.dll->在临时目录中把压缩包解压出来->替换lpk.dll、重新打包->删除临时目录,如图2-59:

图2-59
⑦ 最后加载原本lpk.dll的原始函数(如果①加载病毒资源失败将直接调到这里),以免原本调用了lpk.dll的程序无法正常运行,如图2-60、图2-61:

图2-60

图2-61
4. 手工查杀步骤



1. 注册表删除HKEY_LOCAL_MACHINE\system\CurrentControlset\services\Ghijkl NopqrstuWxy下注册表键。
2. 删除C:\windows\system32\hra33.dll文件。
3. 遍历所有磁盘和压缩包,删除lpk.dll文件。

THE END
喜欢就支持以下吧
点赞0
分享
评论 抢沙发
  • 管埋员

    昵称

  • 取消

    请填写用户信息: