彩虹猫病毒(MEMZ)分析及思维导图
彩虹猫病毒(MEMZ)分析及思维导图
0x00 基本介绍
彩虹猫病毒是一款MBR类型病毒,中招的用户MBR会被篡改重启后无法正常进入系统只会出现彩虹猫的动画。同时在中招之后用户的鼠标和键盘会间歇性失效,桌面不断出现弹窗并且出现负片效果,鼠标图标会被修改,发出错误提示的声音,诺通过任务管理器关闭MEMZ.exe进程桌面会出现大量弹窗,随后出现蓝屏。
本文仅局限于逆向分析层面,如查壳,行为分析,运行效果分析等未在本文展开,文末会放上个人认为比较好的分析文章以供学习。
0x01 环境及工具
应用程序名称:MEMZ.exe
MD5:19DBEC50735B5F2A72D4199C4E184960
SHA1: 6FED7732F7CB6F59743795B2AB154A3676F4C822
工具: IDA Pro 7.0 & OD&die
分析环境:VMware Workstation Pro 15 + Win7 x64
0x02 逆向分析
程序中的函数很少我们只要把握大体执行流程,通过简单分析总共分为三大部分:
1. 初次运行执行流程
通过 GetCommandLineW 函数获取命令行参数,如果命令行无参数则为初次运行。
弹出俩个弹窗对用户进行提醒,如果都选择确认病毒就正式运行
创建了5个命令行参数为/watchdog的进程和一个命令行参数为/main的进程
至此初次运行流程就已经结束了,接下来分析命令行参数为/watchdog的进程执行了什么
2. /watchdog
此模块创建了一个线程和名为“hax”的窗口,线程的回调函数稍后分析,先来看看windows窗口的消息处理函数
我们发现消息处理函数只关注两个窗口关闭消息,如果捕获到了窗口关闭消息则触发 RandomBoxAndOverWindows 函数,那我们接下来就得分析该函数做了什么事情
RandomBoxAndOverWindows
首先我们发现该函数创建了20个线程
StartAddress
这个线程回调函数设置了消息钩子,对窗口创建进行挂钩让窗口出现的位置随机
弹窗的内容
DestroyWindows
通过GetProcessAddress 获取 RtlAdjustPrivilege和NtRaiseHardError函数的地址,如果获取成功则先用RtlAdjustPrivilege函数提权如何使用NtRaiseHardError制造蓝屏;如果有一个获取失败则启动备用方案使用ExitWindowsEx 函数强制关机。
至此WndProcess消息回调函数就分析结束了,接下来回过头分析先前的线程回调函数
ProtectSelf
循环创建进程快照,然后和自身路径进行比较,有相同的计数器就加1,假如有病毒进程被关闭了本次循环的计算器数值会小于上一次,就会进入RandomBoxAndOverWindows 函数,出现大量弹窗并引起蓝屏。
3. /main
接下来的操作就是本病毒最核心的部分了,对MBR的操作以及让电脑出现总总异常,这里放一个对MBR的介绍,简单的说就是早期系统的一个系统引导代码,从Win8开始以后的系统基本上都不在使用MBR分区做为系统引导了,都开始使用GPT分区了。
将程序内的硬编码拷贝到申请的堆内存中去,然后再写入MBR区域,写入成功就弹出note.txt
然后就循环创建10个线程,线程函数都在405130处
每个线程的功能都不相同,具体的功能都是由某个特定的API来实现的,相对来说是比较好分析的,这里就不具体展开了,就直接上思维导图里的图片了
至此三大模块都分析完毕
0x03 总结
此病毒的分析还是比较顺利的,没有遇到什么反调试,对于病毒本身还是具有局限性的只能应用在使用MBR分区的操作系统中。在github上有人写出了源码,将在下面的参考文章中放出