首页
论坛
专栏
课程

[病毒木马] [原创]远控木马分析报告

2019-3-8 16:31 5540

[病毒木马] [原创]远控木马分析报告

2019-3-8 16:31
5540

之前一直没怎么分析过远控木马,偶然看到了一个木马样本,样本不难,也有大佬分析过,只为学习

1.样本概况

1.1 样本信息

病毒名称:3601.exe

MD5: C8102164058B27B5553924255093B643

SHA1: FAD5CDE82609751365344B14C777C1BF975E410F

CRC32: C3BEFC16

1.2 测试环境及工具

2.1.1 测试环境

Windows 7 32位操作系统

2.1.2 测试工具

查壳工具:PEID、ExeinfoPE

监测工具:火绒剑、PCHunter

调试工具:OD、IDApro

1.3 基础分析

1.3.1 病毒查壳

   使用PEID进行查壳,如图1-1是个VC6.0程序

 

图1-1 病毒查壳

LordPE查看区段,发现是加了UPX的壳,看程序的入口点特征,确实和vc6.0程序入口点特征不太一样,不过也能顺利的找到main函数,或许我拿到的样本是脱过壳的,不过这些都不是重要的。

 

图1-2 查看区段

1.3.1 加密算法

将恶意程序手动脱壳,使用PEID的插件查看恶意程序的加密算法,发现程序含有Base64算法。

 

图1-3 加密算法

1.3.1 云沙箱分析

将恶意样本上传到微步云沙箱,发现恶意程序有如下行为。

 

 

 

图1-4 云沙箱分析

2.具体行为分析

2.1 主要行为

将病毒样本拖入火绒剑中,过滤到行为监控,可以看到病毒释放文件自我复制、自我删除、释放dll文件等。

 

图2-1 病毒释放文件和自删除

 

图2-2 释放lpk文件

如图2-2,病毒在许多目录下释放了lpk.dll文件,具体都在什么目录下释放文件后续会继续分析。

 

图2-3 加载hra33.dll

首先释放的PE文件开始启动,期间恶意程序自我复制,并隐藏释放文件,最后恶意程序进行自删除。

对网络进行监控,恶意程序会请求一些IP的连接并发送数据包,如图2-2:

 

图2-4 恶意程序的网络监控

转到文件监控,恶意程序也创建了一些文件

 

图2-5 恶意程序的文件监控

最后使用注册表对比工具,将运行恶意程序前后对齐,新增了以下注册表键值

 

图2-6 注册表对比

3.恶意代码分析

3.1 病毒程序分析

不多废话,直接IDA F5搞起

 

图3-1 病毒main函数

看主函数,看起来很清晰,开工OD、IAD齐分析

上来就是WSAStartup,一看就是有网络操作。

进入sub_405A52函数

 

图3-2 拼接字符串

 

图3-3 打开注册表查看注册表键是否存在

继续运行程序,返回值为0,可以判断这个函数的操作是拼接注册表字符串,打开注册表,查看键值是否存在。

程序继续运行,走到sub_405B6E函数

 

图3-4 字符串比较

判断程序是否在系统目录下

 

图3-5 随机生成字符

随机生成字符,拼接成文件名,拷贝到C:\Windows目录下

 

图3-6 创建服务

 

图3-7 启动服务

创建并启动服务。

 

图3-8 添加注册表键

添加注册表键HKEY_LOCAL_MACHINE\system\\CurrentControlset\\services\\Ghijkl Nopqrstu Wxy

 

图3-9 cmd命令

最后,函数返回时执行cmd命令,自我删除

 

图3-10 拼接后的命令

 

图3-11 函数重新命名

程序已终止,将C:\Windows目录下的程序加载到OD,程序将执行以下代码

 

图3-12 条件语句的上部分

接下来主要分析回调函数

 

图3-13 将ASCII码转为char

 

图3-14 检查互斥体

根据图3-13和图3-14是为了检查互斥体"Ghijkl Nopqrstu Wxy"是否存在,存在则结束程序。

 

图3-15 下部分

sub_405394函数作用是枚举资源段释放hra0.dll

sub_4053A6函数如下:

 

图3-16 打开注册表

 

图3-17 读取注册表值

 

图3-18 操作资源

如图3-14、3-15、3-16可知,这个函数的作用是检查注册表键并在资源上操作了一串字符串。

 

图3-19 加载dll

sub_4034E5函数加载了dll文件

 

图3-20 整体

这些便分析完成,dll文件会稍后分析,下面继续分析三个线程函数

 

图3-21 三个线程函数

接下来分析三个线程函数

线程一函数:

 

图3-22 弱口令

看到这些弱口令,就应该能猜到是用于弱口令连接局域网进行感染

 

图3-23 拼接字符串

 

图3-24 共享目录

通过如上分析,线程一函数是通过弱口令感染局域网其他主机,并通过共享目录将病毒传播出去,利用at计划任务,直接admin$共享。

线程二函数:

 

图3-25 获取当前日期

 

图3-26 函数命名

首先获取系统当前日期,然后进入sub_405128函数

 

图3-27 sub_405128

在sub_405128函数中,又创建了一个线程(子),进入线程函数中

 

图3-28 连接域名

线程(子)首先连接sbcq.f3322.org,然后判断是否连接成功,连接成功继续执行代码,连接失败直接返回,当连接成功是时,继续执行以下代码

 

图3-29 判断I/O命令

图3-29判断使用了哪一种I/O控制命令,然后返回对应的句柄

 

图3-30 系统版本号

在sub_4060F0函数中,首先获取系统版本号

 

图3-31 CPU信息

 

图3-32 内存信息

 

图3-33 系统其它信息

总之,sub_4060F0函数为获取系统信息函数

之后又是加载了dll文件,然后向控制端发送数据,等待接收控制端传来的命令

 

图3-34 向控制端发送消息

 

图3-35 等待控制端发的消息

之后就是几个if-else中的几个case语句,应该是根据控制端发过来的数据进行判断执行,首先看当接受的数据大于6时。

数据为0x10时,访问指定url下载恶意程序到临时文件目录并启动

 

图3-36 数据为0x10

数据为0x12时,首先打开互斥体,如果打开成功就释放掉,然后初始化一些信息,更新病毒,如果下载病毒成功,则删除原有的服务、注册表和程序。如图3-37和3-38

 

图3-37 数据为0x12(上)

 

图3-38 数据为0x12(下)

数据为0x12时,打开IE,访问网址

 

图3-39 数据为0x14

以上是接收的数据大于6时,小于等于6时情况如下:

等于6时,和数据为0x12时一样,首先打开互斥体,如果打开成功就释放掉,然后初始化一些信息,更新病毒,如果下载病毒成功,则删除原有的服务、注册表和程序。

 

图3-40 接收数据为6时

当数据小于6时

当数据为0x2时,对socket进行一些初始化

 

图3-41 初始化socket

当数据为0x3时,模拟浏览器headers信息请求数据包

 

图3-42 设置headers信息

 

图3-43 Get请求数据包

当数据为0x4时,也是对socket的一些初始化

 

图3-44 socket初始化

到这里,线程二函数分析完成

线程三函数:

进入线程三函数,发现与线程二函数的操作基本一致,只不过要连接的域名变为了www.520123.xyz

 

图3-45 连接www.520123.xyz

三个线程分析完毕

 

图3-46 三个线程

接下来分析while循环中的线程

 

图3-47 while循环中的线程

看到while循环中的线程函数,还是熟悉的感觉,和线程二、线程三的操作一模一样,只是要连接的网址使用Base64进行编码加密

 

图3-48 加密的网址

用工具进行解密,发现出现乱码,可能编码不一样

 

图3-49 解密工具解密

还是选择用OD跟踪,得到了正确的网址www.520520520.org:9426

 

图3-50 解密得到网址

最后将函数重命名

 

图3-51 函数重命名

病毒主程序分析完毕

3.2 hra33.dll分析

写一个程序LoadLibrary(hra33.dll),找到入口点

 

图3-52 hra33.dll入口点

用ida查看dll入口点函数,如图3-53

 

图3-53 ida查看dll入口点函数

开始分析hra33.dll,进入sub_10001134函数

 

图3-54 加载dll到内存

 

图3-55 LoadResource

通过LoadResource函数将资源中的dll文件加载到内存

查看sub_10001338函数,判断是否是临时文件

 

图3-56 sub_10001338函数

sub_10001193函数功能是加载资源,在临时目录下创建文件,创建进程

 

图3-57 sub_10001193函数

sub_100012F6函数判断当前目录下是否含有lpk.dll文件

 

图3-58 sub_100012F6函数

进入sub_100019E6函数,里面创建了一个线程函数,进入线程函数内部

 

图3-59 线程函数

里面判断了是否是exe、rar、zip文件,是的话在当前目录下放入lpk.dll,进入感染压缩包的函数

 

图3-60 感染压缩包

利用winrar自带的shell命令将lpk.dll放入压缩包中

进入sub_100010CE函数中,获取了系统目录下的lpk,并LoadLibrary

 

图3-61 加载系统目录下的lpk.dll

最后,关闭句柄,释放加载

 

图3-62 释放加载

恶意代码部分分析完毕

4.手动查杀

1.删除HKEY_LOCAL_MACHINE\system\\CurrentControlset\\services\\Ghijkl Nopqrstu Wxy下注册表键

2.停止Ghijkl Nopqrstu Wxy的服务,删除服务并删除服务路径下的程序

3. 删除C:\windows\system32\hra33.dll文件

4. 删除生成的lpk.dll文件


最后,上张pdf格式截图,有兴趣分析的朋友可以下载附加pdf,方便查看




[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最后于 2019-3-8 16:33 被妖气17编辑 ,原因:
上传的附件:
最新回复 (13)
Editor 2019-3-8 16:38
2
0
感谢分享!
DWwinter 2019-3-11 13:26
3
0
谢谢楼主码字贴图
WinMainE 2019-3-17 10:47
4
0
楼主贴图码字详细,辛苦
妖气17 1 2019-3-20 08:14
6
0
微步在线 楼主近期考虑工作机会吗?
正在找
风吹鸡蛋壳 2019-3-21 17:29
8
0
楼主,辛苦
d16ug_a1l 2019-4-15 23:08
9
0
楼主超厉害,辛苦啦

一号正派人物 2019-5-15 22:28
10
0
楼主,我想问一下,在vm虚拟机win7professional64位系统下,为什么3601.exe不能运行啊,如下图所示,一直卡在这,网络连接正常。
cyberknight 2019-7-24 07:41
11
0
哎,没咋看懂,自己还欠火候啊
mb_omqyxbij 2019-8-12 00:08
13
0
老哥能帮我分析一个?
niuzuoquan 2019-8-12 07:26
14
0
mark
游客
登录 | 注册 方可回帖
返回