-
-
[原创]MEMZ彩虹病毒分析
-
发表于: 2021-7-17 17:02 15703
-
首先使用IDA将病毒文件样本打开(该病毒样本是32bit程序),打开之后,我们转换为伪代码形式。我们先大题说明一下该程序的执行逻辑。
程序首先获取主屏幕的长宽度,并且获取指令参数。
判断是否存在指令参数,并且根据不同情景执行不同的代码。
我们首先看如下图片中的代码,其中的操作即获取主屏幕长度,宽度,获取指令参数。
接着,首先看无参数的情况如何处理。即“pNumArgs > 1”为假的情况。
下面,我们再来看有参数的情况,即“pNumArgs > 1”为真的情况。紧接着就是判断参数是否为“/watchdog”如果是,则创建一个线程,并且设定消息循环代码。详细如下图:
下面就是将恶意代码写入MBR扇区部分。具体操作如下:
使用CreateFileA函数打开磁盘,其中有一个判断,即打开失败则退出。
准备修改MBR的数据,即首先是304字节的引导程序。
引导程序准备完成之后偏移510字节,加上AA55,即512字节的间隙,后面就是彩虹猫动画的代码。(注释:“AA55”表示MBR结尾标志)
数据准备完成之后,调用WiteFile写入磁盘。
恶意代码写入MBR扇区之后,下面就是弹框出现记事本,并且显示一些内容。
记事本弹框之后,会自定义一个结构体,其中一个函数指针,所指向的函数,作用是得到一个随机数,然后随机启动一个程序或者网址。详细代码如下图:
好的,知道现在,我们对彩虹猫这款病毒有了一个比较初步的了解,接下来。我们将眼光放到“29”行,即当参数为“/watchdog”的时候,新建了一个线程并且执行函数sub_40114A。
双击sub_40114A函数,进入当中。由代码分析,我们知道函数sub_40114A的功能是监控进程数目,如果进程数目一旦减少则运行sub_401021()函数。
双击sub_401021()函数,进入当中。观察发现这个是导致蓝屏的函数。
下面,我们将眼光放在第“95”行,我们发现这是一个地址,双击进去之后,我们发现这是一个包含了十个函数地址的数组。
这个里面的函数就是下面(第“99”行创建线程所使用的函数)
接下来,我们紧接着看看,彩虹猫随机调用的函数功能。
sub_401A55产出随机值
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
- [分享]应急响应工具-日志分析 4907
- [原创]MEMZ彩虹病毒分析 15704
- [原创]恶意程序分析-去除恶意程序混淆-学习记录 13177
- [原创]Ret2libc 学习记录笔记 15591
- [原创]基本语句逆向分析 12252