深入分析MEMZ彩虹猫病毒

1. 已编译的病毒分析

首先,我们知道MEMZ有两个文件

(1).Bat代码

bat代码很明显是用来生成病毒文件的(base64加密)
js解密文件并解压到%appdata%目录
然后再由bat运行病毒主程序

(2).病毒主程序

工具:IDA

用IDA打开病毒

没有发现杂乱的代码,说明没加壳

然后就是一个F5

请输入图片描述

跟进start函数,发现程序先取出了运行参数,如果参数为/watchdog,执行sub_40114A

RLEAP~AIJK$0}L%~_G[_G(Q.png

顺便也创建了一个窗口

X}M(V`_~IOTZO2144CQTSL4.png

观察后发现窗口回调是sub_401000

跟进sub_401000

JMA%JPSD(9$K1PI4MML(82R.png

在winuser.h里面可以看到关于Message系列常数定义的值

WM_CLOSE对应窗口关闭请求,WM_ENDSESSION对应关机时关闭窗口请求

且如果传给当前窗口的消息不为其中任一时,窗口信息转为DefWindowProc处理。

否则调用函数sub_401021

跟进sub_401021函数,有一个执行20次线程的循环,意义不明

请输入图片描述

继续跟进,发现所有窗口事件都传入fn中,code=3为窗口创建事件

请输入图片描述

跟进函数sub_401A55,是个生成随机数的函数

UN`$6{7){[[(WVLMIL57Q1P.png

观察原fn函数,发现所有的随机数最后都存于v4

然后加载钩子

实现在随机在随机位置弹出提示框

最后卸载钩子

https://jasondi.xyz/usr/uploads/2020/08/383407742.png

MSG的内容则是随机以下内容

[X0MHJY~52VSFHWJ4U(WPVD.png

回到原函数,发现先用ntdll.dll的RtlAdjustPrivilege提取,接着执行蓝屏函数ntdll.dll的NtRaiseHardError,如果两个里有任意一个不成功则强制关机,注意:该函数微软并未公开

请输入图片描述

在创建窗口前还有一个函数sub_40114A

####![]Q}1H]3)RT}H$[1Q3NEJSMJ.png][11]

首先用GetProcessImageFileName获取当前运行文件名,然后利用tlhelp32.h里的CreateToolhelp32Snapshot结合Process32First和Process32Next遍历所有进程,也获取这些进程的文件名,并寻找与当前进程名相等的数量。如果数量v4比之前的数量v7还少(说明有进程被杀死),直接调用函数sub_401021,即之前的蓝屏/关机函数。

BV[9Q%QLY1W{EX6EX[VS6SV.png

OK,/watchdog看完了,接着看,如果参数不是/watchdog,那么直接就打卡磁盘0,开始执行写MBR操作

2KD`VLMT~{~0OI$Z}J33Q0J.png

写入MBR之后开始创建系统盘根目录的note.txt

[[J6KN2C0T`7RNYY65}ZG(6.png

写入之后用记事本打开,执行循环创建sub_401A2B函数

P)$D`9@4(K5G1MK}86K0RQK.png

跟进sub_401A2B函数,发现这个函数只是简单地调用了以参数lpThreadParameter传进来的函数,并且只要函数调用成功的话这个函数的两个参数都自加,10sec后又重新执行一遍。

GNW)M}LTXR0%29~HX~62)~B.png

OK,今天就写这么多,其他还有几十个函数明天写

Last modification:August 7th, 2020 at 06:20 pm
如果觉得我的文章对你有用,请随意赞赏