1样本概况

1.1 样本信息

病毒名称:3601-lpk劫持病毒

所属家族:Trojan-DDoS.Win32.macri.atk

MD5值:B5752252B34A8AF470DB1830CC48504D

SHA1值:AEC38ADD0AAC1BC59BFAAF1E43DBDAB10E13DB18

CRC32:4EDB317F

病毒行为:

在Windows目录下拷贝了自己并启动,删除了自身程序、释放并隐藏了lpk.dll文件、设置注册表键值、持续性的网络连接行为

1.2 测试环境及工具

测试环境:Windows7 专业版

测试工具:Hash、PEID、OD、IDA、火绒剑、PCHunter、010Editor、ResourceHacker

1.3 分析目标

分析病毒的主要恶意行为,找到病毒的实现代码

2.具体行为分析

2.1 主要行为

获取样本之后,在虚拟机中,使用监控工具监控样本的运行。待病毒执行差不多之后,查看病毒的行为。

使用火绒剑,将样本拖到火绒剑,对样本进行监控:

1. 文件操作,主要看文件创建、修改、删除等操作

发现有文件创建、修改、删除的操作,创建了一个新的病毒程序,删除了原病毒程序,在很多文件中创建了lpk.dll,创建了临时文件,又删除了。

2. 注册表操作,主要看注册表设置、创建等操作

发现打开注册表值、获取注册表值、设置注册表值等操作

3.进程操作,主要看创建进程、写入内存等操作

4.网络操作,主要看网络连接地址、IP等信息

5.其他行为,以及人肉看样本运行后的反应

发现创建释放了PE文件,自我拷贝,然后自我删除,在很多路径下释放并隐藏了lpk.dll

查看执行监控,发现其创建了CMD的进程,使用命令,隐藏执行删除了自己,运行了拷贝后的程序

分析样本的行为之后,发现的恶意行为:

1、在Windows目录下拷贝了一份自己并启动,删除了自身程序

2、打开文件、设置文件属性、修改文件、创建临时文件、重命名文件、遍历目录

3、获取注册表键值、设置注册表键值,HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\Ghijkl Nopqrstu Wxy\Description

4、创建进程(cmd、Rar、find)、跨进程写内存、打开设备、跨进程恢复线程

5、大量的持续性的网络连接行为

6、释放并隐藏了lpk.dll文件

主程序流程图:

hra33.dll流程图:

2.2 恶意代码分析

使用PEid查看文件

发现是UPX壳,下载UPX自动脱壳工具,对其进行脱壳,脱壳命令:upx -d 3601.exe

脱壳之后,大小变成了53KB,下面开始使用IDA进行详细分析。

进入主函数之后,有三个函数,先对sub_405A52进行分析:

进来之后,发现将注册表的一个服务键值和字符串Ghijkl Nopqrstu Wxy,拼接了起来,然后打开这个键,如果没打开返回0,打开了返回1,能打开说明服务已经创建了,这个函数是在判断注册表中是否有Ghijkl Nopqrstu Wxy这个服务。如果没有打开,说明服务不存在,就执行sub_405B6E这个函数:

这个函数传入了三个参数,经过分析,分别是服务名、服务显示名、服务的描述,进入函数对其进行分析:

进来之后先是获取了一些API的地址,应该是后面要用到这些API。

获取了当前模块文件的路径,又获取了Windows目录的完整路径,然后求出来Windows目录的长度,比较当前模块名和Windows路径的前v15个字节。如果相等,说明当前程序是在Windows目录下运行的。

有一个获取运行时间的API,然后由获取的时间再和随机数进行操作,目的是生成随机数

生成的随机数又加上a,进行拼接,形成了一个xxxxxx.exe的文件名。然后又将该文件名拼接到了系统盘的Windows目录下,又将当前模块路径的文件拷贝到了这个文件中,将当前路径文件内存清为0,又将Windows目录下xxxxxx.exe的文件拷贝回当前文件。

之后,打开了服务管理器,创建了服务,此时服务是在Windows目录下运行的,然后锁定了服务数据库,设置了服务的描述。

接着,修改了服务配置信息。如果服务失败就再次打开服务,如果打开成功就启动服务,执行下面操作

拷贝系统服务设置字符串,然后拼接上我们要设置的服务名,打开这个拼接的注册表键值,又求得服务描述的长度,设置服务的描述。

关闭了服务,删除了当前文件,对删除当前文件的sub_40355B函数进行分析

获取了当前运行文件的模块名,获取了当前模块的短路径名,又获取了cmd路径,然后拼接了一条cmd的命令 /c del 当前文件路径 >nul

命令拼接好之后,执行cmd命令,隐藏执行删除了自身。同时设置了cmd命令进进场的优先级,将当前进进程的优先级设为最高,当当前进程执行完的时候,再执行删除自身的cmd命令。

sub_405B6E这个函数就分析完了,主要操作就是,拷贝自身到系统目录,创建服务,启动服务,然后删除自身。

如果打开了Ghijkl Nopqrstu Wxy这个服务的键值,就说明服务存在,就会执行sub_40561A这个函数,下面对这个函数进行分析:

进来之后,显示获取了几个关闭套接字、设置服务状态等几个API,便于后面使用。然后注册了一个函数来处理扩展的服务控制请求,设置了服务的状态。

又获取了几个API

然后又创建了互斥体,如果创建互斥体成功并且Ghijkl Nopqrstu Wxy服务存在,就退出,防止多开,下面分析sub_405394函数,进来之后,发现是在枚举资源名:

进入EnumFunc回调函数进行分析:

先是找到指定模块、指定类型、指定名称的资源所在伪装,然后获取资源的大小,加载资源,加载成后锁定资源。然后拼接资源名为hra33.dll,以共享可读的属性创建资源文件,之后将资源文件写入到刚才创建的文件,将文件指针移动到文件头,将MZ 写入到文件头。这个函数的操作是获取指定资源,然后创建hra33.dll文件,将资源中的内容写入到文件中。

下面对sub_4053A6这个函数进行分析:

先是拼接键值路径,打开刚才的服务子键,如果打开成功,说明服务存在,继续执行。接着查询有没有ImagePath值,这个值就是Window目录下的病毒的路径,如果说明Windows目录下的病毒存在,继续执行

接着,获取病毒文件的属性,打开病毒文件,获取病毒文件的大小。又申请了有可读、可写、可执行权限的堆空间,将病毒文件读取到申请的内存空间中。

而后,有将病毒文件xxxxxx.exe.作为资源更新到hra33.dll中,将服务Ghijkl Nopqrstu Wxy作为资源更新到hra33.dll中,结束资源的更新,释放申请的内存。这个函数主要操作是将病毒和服务作为资源添加到hra33.dll中。

紧接着就加载了hra33.dll这个模块:

之后有三个创建线程的函数,有四个线程回调函数:

对这个四个回调函数逐个进行分析,先分析sub_402DD5这个函数:

进来之后,看到一堆用户名和密码,然后用WSAStartup初始化了网络连接

然后获取了主机名,根据主机名获取主机信息的结构体,包括主机IP,如果获取IP成功,就将主机IP拷贝给v66

然后拼接了主机IP ,通过双重循环去暴力破解登录主机,外层循环是在循环用户名,内层循环是在取密码,对暴力破解的函数sub_402AD0进行分析:

先是判断密码是否为空,如果不为空,就拼接了一个命令字符串,然后创建了同一网络资源的连接(IPC连接)

连接建立完之后,将病毒文件拷贝到IPC连接的目标机器上

如果拷贝成功,就获取本地时间,然后添加计划任务,定时启动病毒文件

如果不成功,就拷贝文件到目标机器的F盘上。

回调函数1的操作就是,暴力破解登录,建立IPC连接,通过连接局域网传播病毒,并定时执行病毒程序。

下面分析第二个回调函数sub_4051E0

进来之后先是获取了本地时间,然后又创建了线程,对回调函数sub_405128进行分析:

继续进入,对sub_4040DA进行分析:

获取了一个API,然后连接了sbcq.f3322.org这个服务,连接之后设置了socket

然后有一个函数获取系统系统的一些信息,进行分析:

先是获取了系统的版本

然后获取了CPU的信息

又获取了CPU的频率,系统的信息,获取了系统的核心数

最后获取了网卡的信息,获取了网络的流量

获取完系统的信息之后,加载了hra33.dll, 将收集的系统信息发给了连接的目标服务器。

如果发送成功,就开始循环接收远程服务器的命令,如果命令标识是10,就获取临时文件路径,拼接临时文件路径和系统启动的毫秒数,然后加载urlmon.dll模块,然后从指定的URL 服务器下载到临时文件中,下载之后执行临时文件

如果命令标识是12,就打开互斥体,如果能打开,说明互斥体存在,就释放互斥体,关闭。获取临时文件目录,生成随机数,拼接成随机的文件名,然后将文件名拼接到临时目录后,再从服务器下载数据到临时目录中的xxxxxxcn.exe中

然后结束当前的服务,删除服务的注册表键值,关闭套接字,删除自身,然后执行从服务器下载的临时文件,退出进程。

如果命令标识是14,获取桌面窗口的句柄,用iexplore.exe浏览器打开下载的数据

如果命令标识是6,如果互斥体存在就释放关闭互斥体,打开服务管理器,关闭Ghijkl Nopqrstu Wxy服务

然后同样删除服务的注册表键值,关闭套接字,删除自身,退出进程

还有一些命令标识小于6的,如果是2,和socket有关;如果是3,和http数据包有关;如果是4,和socket有关

回调函数2的操作是:连接sbcq.f3322.org服务,将主机的系统信息发给服务器,根据服务器不同的命令执行响应的操作

下面分析第三个回调函数sub_405241

经过分析,回调函数3和回调函数2的操作一样,只是连接的服务器是:www.520123.xyz

下面分析第四个回调函数sub_4030FD

经过分析,回调函数4也和前面的操作,一样,只是连接的服务器是加密后的,无法看到,将相应的解密代码拷贝到VS中,编译进行解密:

解密后的服务器是:www.520520520.org:9426。

至此整个程序分析完了,下面对其hra33.dll进行分析,先将其从资源中拷贝出来,然后用IDA打开进行分析:

获取了当前模块的路径,然后禁用了当前模块的通知,对sub_10001134进行分析:

先是找到资源文件,就是我们加进去的病毒文件,然后获取资源的大小,加载资源,锁定资源,又拷贝了一份病毒资源。这个函数主要是判断当前资源中是否有病毒文件。

sub_10001338是获取模块的全路径和模块名,然后判断模块名开头是不是hrl,如果是hrl就获取文件的后缀,再判断后缀是不是.TMP。主要是根据后缀名,判断是否是临时文件。

sub_1000012BD是创建互斥体,如果互斥体存在就关闭。主要是判断是否存在互斥体。

如果不是临时文件,互斥体也不存在,就找到病毒资源,然后获取临时文件路径,在临时文件路径下创建hrl.TMP文件,然后将病毒文件写入到临时文件中,创建进程启动临时目录下的病毒文件。

sub_100012F6函数,获取当前模块文件名,判断是否是lpk.dll模块。如果是lpk.dl文件,创建事件,执行sub_100019E6函数,进去分析:

创建了线程,分析其线程回调函数sub_100018D3

获取驱动器类型,然后又创建了线程,分析其回调函数:

先是判断路径大小,如果小于256,就拼着上盘符:A:\\,然后又在路径后面追加了

然后开始遍历文件,获取文件的扩展名,如果是.exe文件,就将lpk.dll追加到当前路径下,获取文件属性,如果能获取到说明lpk.dll文件存在,跳转走,如果文件不存在,就拷贝当前模块的文件到这个目录下的lpk.dll中,设置文件的属性为:只读、隐藏、系统。

如果是压缩文件,就执行sub_1000142B函数:

在注册表下找到指定注册表的数据,这里是RAR的命令,去掉路径中的反斜杠和尾文件名,将rar.exe拼接上,然后判断文件是否存在。如果文件存在,就获取临时文件路径,获取当前的线程ID,创建临时空文件,文件名是:IRA+线程ID,然后拼接命令字符串,再隐藏执行Winrar命令,在rar文件中找lpk.dll文件。

如果在rar中找到了lpk.dll文件,就解压rar文件,将压缩包中的*.exe解压到临时文件,然后递归遍历文件,应该是在创建lpk.dll文件。之后将临时文件再压缩,此时文件中已经有被替换的lpk.dll文件了,之后执行删除命令,删除临时文件。主要操作是,解压文件,将lpk.dll文件替换成病毒文件,再压缩回文件。

判断系统有哪些驱动器,然后再每个驱动器下都执行同样的操作。

sub_100019E6函数,主要操作是,创建线程遍历文件,如果找到exe,就将lpk.dll文件替换成病毒文件;如果是压缩文件,就解压文件,将lpk.dll(病毒文件)拷贝到文件中,再压缩回文件。

之后sub_100010CE是动态获取API,加载原始的lpk.dll,要保证能正常调用这些API。

至此,整个hra33.dll分析完了。

3.解决方案(或总结)

3.1 提取病毒的特征,利用杀毒软件查杀

病毒特征: Ghijkl Nopqrstu Wxy、ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+、1NTUHRYRExYRExYREx3c0eQJChcRFUM=

将病毒特征添加到规则库,使用工具进行查杀

3.2 手工查杀

1、强制删除可疑进程

2、删除病毒进程启动项

3、删除注册表的病毒服务

4、删除响应的病毒exe和hra32.dll

5、遍历文件,删除lpk.dll

3601lpk.dll劫持病毒分析相关推荐

  1. 3601-lpk.dll劫持病毒分析

    文章目录 3601-lpk.dll劫持病毒分析 1.样本概况 1.1 样本信息 1.2 测试环境及工具 1.3 分析目标 1.4 样本行为概述 2.具体行为分析 2.1 主要行为 2.2 提取恶意代码 ...

  2. 3601劫持病毒分析报告

    1.样本概况 1.1 样本信息 病毒名称:3601.exe 所属家族:Trojan-DDoS.Win32.Macri.atk MD5值:b5752252b34a8af470db1830cc48504d ...

  3. Zoom 5.1.2及旧版本在 Win7 上的 DLL 劫持漏洞分析

     聚焦源代码安全,网罗国内外最新资讯! 一 漏洞原因 Zoom 5.1.2及之前版本尝试加载了一个名为 shcore.dll 的系统库文件来辅助设置显示 Dpi,但是这个库文件在 Win7 Syste ...

  4. 病毒丨3601lpk劫持病毒分析

    作者:黑蛋 一.病毒简介 文件名称: 1f3e836b4677a6df2c2d34d3c6413df2c5e448b5bc1d5702f2a96a7f6ca0d7fb 文件类型(Magic): PE3 ...

  5. CVE-2020-3535:Cisco Webex Teams windows客户端dll劫持漏洞分析

    360-CERT [三六零CERT](javascript:void(0)

  6. DLL搜索路径和DLL劫持

    DLL搜索路径和DLL劫持 环境:XP SP3 VS2005 作者:magictong 为什么要把DLL搜索路径(DLL ORDER)和DLL劫持(DLL Hajack)拿到一起讲呢?呵呵,其实没啥深 ...

  7. 你的应用是如何被替换的,App劫持病毒剖析

    你的应用是如何被替换的,App劫持病毒剖析 Author:逆巴@阿里移动安全 0x00 App劫持病毒介绍 App劫持是指执行流程被重定向,又可分为Activity劫持.安装劫持.流量劫持.函数执行劫 ...

  8. 二进制分析工具自动发现DLL劫持漏洞

    aDLL简介 aDLL是一款功能强大的代码分析工具,可以帮助广大研究人员以自动化的方式识别并发现DLL劫持漏洞.该工具可以分析加载至内存中的源码镜像,并在加载过程中搜索DLL,并且利用了微软Detou ...

  9. c语言劫持dll写法,[原创]DLL劫持生成器 源码开放(纯WINDOWS SDK)+ 实例分析

    本菜最近学习了什么DLL注入啊,hook啊(r3)的相关技术,觉得很好玩,于是深入发现还有DLL劫持这种东西觉得挺好玩的,加上最近看到各种木马分析报告中都还有发现有利用白加黑的现象.于是自己想找几个来 ...

最新文章

  1. 发布AI操作系统、应用市场,开源机器学习数据库和AI操作系统内核,第四范式这波操作有点秀!
  2. nodejs-函数路由
  3. jvm内存收集器总结(图片)
  4. linux-mv移动更名-硬链接
  5. JAVA_java.util.Date与java.sql.Date相互转换
  6. 简单的3个SQL视图搞定所有SqlServer数据库字典 (转载)
  7. 【经典】MIT人工智能实验室: 如何做研究?
  8. 众专家推荐《移动微技(Mobile Widget)应用开发权威指南》
  9. 一次CDN源站负载高的问题排查及解决
  10. 泽众AutoRunner软件的使用方法,以测试win10环境下系统自带的计算器为例
  11. 手机java应用安装失败_解决OPPO手机在Android studio 环境下安装失败问题
  12. HCIP(八)---OSPF的防环机制(SPF算法)
  13. Ant-design 源码分析之数据展示(八)Descriptions
  14. 报错 [Error] expected primary-expression before ‘)‘ token
  15. 【第一期】大话计算机网络(猫、路由器、wifi)
  16. 极验:验证码在黑灰产对抗中的角色和实践
  17. 浅谈IT企业人力资源流失现状与对策
  18. 炫龙 shinelon笔记本电脑-毁灭者DD2如何U盘启动?
  19. 我6个月的学习编程经历:从”大齿怪“到“狂欢者”
  20. sqlserver 添加字段说明

热门文章

  1. 设计模式之备忘录模式
  2. 【最优化】C++实现0.618法、Fibonacci法、二分法
  3. Linux系统下Kafka的搭建与启动
  4. jmeter问题排查:关于察看结果树里缺少请求
  5. (完整项目系统)人工智能医疗健康管理疾病诊断分析系统,医疗健康机器人系统框架
  6. java求因数_java求质因数
  7. STC51和STM32使用串口输出中文乱码问题解决
  8. nvm下载node版本缓慢问题
  9. Linux i2ctool 工具的使用方法
  10. 【格式化文档】ISO 27001控制措施+ISO27002实施指南 【下】