Morto蠕虫病毒分析报告

样本信息

名称:cache.txt
SHA1:a5f83e3baae0df2cdcf5b7e9e862705aeb2caedb

病毒现场复现

因为得到的样本没有病毒母体,所以只能手动复现病毒现场,手动复现病毒现场需要两个文件,一个是伪装成txt的病毒dll文件,另一个是写入注册表的payload

在这里插入图片描述

首先将md.reg导入进注册表,再将病毒dll加载起来,打开火绒剑监控,可以看到如下行为

在这里插入图片描述

可见,病毒将自身加到了服务中,用服务进行自启动。

后续病毒过程会在详细分析中体现。

重启电脑后(记得一定要断网),再继续监控行为

在这里插入图片描述在这里插入图片描述

可以看到病毒利用svchost不断的进行DNS请求和RDP爆破

分析过程

分析过程主要分为两个部分,一个是cache.txt文件用作loader的部分,另一个是真正在解密到内存中执行恶意代码的payload部分。

Loader部分

用IDA打开cache.txt文件,一共才十几个函数,看起来很简单,但是里面找函数和地址的方法还是很值的学习的

在这里插入图片描述

利用PEB结构查找kernel32的基址

在这里插入图片描述

根据传入的不同参数,查找kernel32.dll中不同函数的地址

在这里插入图片描述

get_func_addr_add_2函数中利用PE结构几个偏移查找函数地址

在这里插入图片描述

传入Advapi32,使用得到的LoadLibraryA地址进行调用继续获取其他函数地址

在这里插入图片描述

获取当前运行程序的绝对路径,然后进入judge_current_process_name函数进行比较

在这里插入图片描述

judge_current_process_name函数

在这里插入图片描述

使用od动态调试很明显的看到这一块是为了判断是否是rundll32.exe启动dll,判断不是rundll32.exe启动的dll后函数会直接返回。

在这里插入图片描述

如果是由rundll.exe启动,继续进行下面的操作

传入user32,获取Sleep和ExitWindowsEx的地址

在这里插入图片描述

拼接字符串\tsclient\a\moto,这应该是病毒母体释放的文件,但是我们是构建的病毒现场,所以不存在这个文件,打开文件会失败,会执行地址为10001827的跳转。

在这里插入图片描述

找不到文件就会Sleep一会,然后退出

在这里插入图片描述

如果不是由rundll.exe启动,函数会跳转回返回

根据前面填充出的字符串%SystemRoot%\system32\write.exe.%SystemRoot%\winhlp32.exe

使用ExpandEnvironmentStringsA函数获取完整路径,来判断系统中是否存在write.exe或winhlp32.exe文件,应该是检测运行环境是否为沙箱

在这里插入图片描述
在这里插入图片描述

打开注册表HKEY_LOCAL_MACHINE\SYSTEM\WPA,获取md键值

在这里插入图片描述

md的键值,是一大串十六进制数据。

在这里插入图片描述

decrypt_data_and_load_shellcode函数中,又包含了三个函数

在这里插入图片描述

在alloc_memory_and_decrypt_data函数中,将从注册表中获取的键值每个十六进制数据自减1,然后开辟内存空间,继续解密数据,将解密数据存放到申请的内存空间中

在这里插入图片描述
在这里插入图片描述

在get_some_dll_func_addr_and_save_alloc_memory函数中,会获取mfc42.dll中的一些函数,并将获取到的函数地址保存在申请的内存中

在这里插入图片描述

在这里插入图片描述

获取的函数地址在后面的使用

在这里插入图片描述

在find_shellcode_entry_point_and_call函数中,找到解密后的shellcode的初始化位置进行调用,这里调用的应该是一些初始化的操作,没发现一些关键操作

在这里插入图片描述

调用后,回到dllmain函数中,calc_shellcode_addr函数是计算再次进入解密shellcode的地址

地址10001710是调用开始执行恶意操作的函数

在这里插入图片描述

到此为止,loader部分分析完毕

Payload部分

进入payload部分,首先判断当前运行的进程是否是svchost去执行不同操作。

在这里插入图片描述

当进程非svchost时

会执行三个函数,然后进行退出

首先删除注册表键值为了清除历史运行记录

在这里插入图片描述

将system32目录下的wmi.dll文件复制到temp目录下并重命名为ntshrui.dll

在这里插入图片描述

获取svchost键值

在这里插入图片描述

创建名称为的服务

在这里插入图片描述

创建服务后注册表键值,利用svchost中的netsvcs服务组启动病毒dll

在这里插入图片描述

创建注册表项HKEY_LOCAL_MACHINE\SYSTEM\WPA\sn

在这里插入图片描述

设置注册表键值来注册服务

在这里插入图片描述

在temp目录下创建文件

在这里插入图片描述

最后从注册表读取键值比较是否设置正确

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2NqjWB5q-1572531034622)(D:\项目\病毒分析\Morto蠕虫病毒分析报告\pic\从注册表读取键值比较是否设置正确.png)]

当进程为svchost时

首先会创建一个线程

在这里插入图片描述

关键的一个大循环

在这里插入图片描述

查询安全软件

在这里插入图片描述

在这里插入图片描述

dns请求

在这里插入图片描述

在这里插入图片描述

遍历注册表项HELM\CurrentControlSet\Control\Sessin Manager\PendingFileRenameOperations,比较键值

在这里插入图片描述

注册表键值比较不上的话,在后续会设置键值\??\C:\Windows\offline web pages\cache.txt!\??\C:\Windows\temp\ntshrui.dll用来将cache.txt开机自动重命名为C:\Windows\Temp\ntshrui.dll

在这里插入图片描述

创建cache.txt文件

在这里插入图片描述

病毒还会进行RDP爆破,其中爆破弱口令如下

在这里插入图片描述

病毒查杀

直接删除C:\Windows\offline web pages\cache.txt或删除注册表项是没有用的,病毒会反复回写,造成清楚不掉的现象

需要先找到病毒利用启动的svchost,也就是不断3389爆破的svchost进程,结束掉它,再进行删除操作

有关病毒方面课程的实验内容 实验一 PE结构分析及DOS病毒感染与清除 一、实验目的 1.熟悉PE文件结构 2.掌握DOS系统下.EXE文件病毒感染与清除方法 二、实验要求 1.实验之前认真准备,编写好源程序。 2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。 3.不断积累程序的调试方法。 三、实验内容 1)手工或编程从user32.dll中获得MessageBoxA的函数地址; 2)查阅资料,结合第2章内容,根据PE结构编写一个小的工具软件,或者用PE Explorer、PEditor、Stud_PE等工具软件查看、分析PE文件格式。针对PE文件格式,请思考:Win32病毒感染PE文件,须对该文件作哪些修改; 3)示例病毒exe_v感染原理及其清除 实验二 Windows病毒分析与防治 一、实验目的 掌握Windows病毒感染与清除方法 二、实验要求 1.实验之前认真准备,编写好源程序。 2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。 3.不断积累程序的调试方法。 三、实验内容 1)编程实现Immunity病毒; 2)修复被Immunity感染的host_pe.exe 3)编程实现脚本病毒或宏病毒,参考相关章节爱虫/梅丽莎病毒;修复被上述病毒感染的系统 实验三 蠕虫/木马的分析与防治 一、实验目的 掌握蠕虫/木马感染与清除方法 二、实验要求 1.实验之前认真准备,编写好源程序。 2.实验中认真调试程序,对运行结果进行分析,注意程序的正确性和健壮性的验证。 3.不断积累程序的调试方法。 三、实验内容 1)实现“冲击着清除者”病毒; 2)实现远程线程动态嵌入技术的木马并验证; 3)实现木马远程监视/控制; 4)修复被上述病毒感染的系统
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值