彩虹猫分析
彩虹猫分析过程,今天分析了一整天了,结果最后还是疏漏一两个路径,明天再继续吧
概述
程序分为三种启动方式
一种是不带任何参数的启动
第二种是带
/main
参数启动第三种是带
/watchdog
参数启动
这部分是每个启动方式都会执行的代码
- 通过
GetSystemMetrics()
获取屏幕的宽高 但之后似乎并没有用到这部分? - 然后通过
GetCommandLineW()
获取命令行参数 - 最后再通过
CommandLineToArgvW()
函数解析参数得到参数数组(可以按照数组方式使用) - 根据参数确定两种带参执行行为
无参启动
首先用户在运行
MEMZ.exe
文件之后 是不带参数的执行, 我猜我得到的样本应该是被大佬修改过的,会进行两次提醒,然后病毒代码才会真的开始执行
上图是不带参数执行的代码
- 首先申请一段内存,之后通过
GetModuleFileNameW
函数获取到自己的可执行文件文件名 - 然后使用循环启动5个带
/watchdog
参数的副本 - 接下来构造
SHELLEXECUTEINFOW
结构体 用于创建一个副本,并且带/main
参数,与本身不同的是,会提高CPU的优先级,占用更多CPU时间,位后面占用系统资源做铺垫 - 然后退出进程
带/main
参数启动
该启动方式主要作用是为了将
MBR扇区
引导部分覆盖掉,并且写入重启之后的彩虹猫动画代码
带/watchdog
参数启动
该启动方式如同他的名字一般 (看门狗) ,是用来检测用户是否主动结束自身进程的,若结束了,则开始破坏用户电脑(其实
/main
参数已经)
- 创建一个新的线程,经过进入分析,得知该进程会监控进程列表,
写入的程序分为两段
第一段 长度是304 这个应该是引导代码
第二段 长度是 1952
这个应该是彩虹猫动画程序本体
这个地址开始 往下很长一段都是内容 要注意 那个 AA55 是MBR扇区的结束标志
这里据我了解,MBR扇区总共512字节