首页
社区
课程
招聘
[原创]粗浅的彩虹猫分析
发表于: 2021-3-9 14:14 7747

[原创]粗浅的彩虹猫分析

2021-3-9 14:14
7747

参考文章:[原创]最适合新手的病毒分析——彩虹猫病毒

先拍个快照,再运行病毒程序,观察发生了什么

发现运行后存在以下现象:

最后在任务管理器发现了6个MEMZ.exe的进程,任意关闭一个,虚拟机直接卡死,关机重启失败,开机界面为一串大意为电脑已被攻击的英文,然后出现彩虹猫GIF

在百度以及查阅参考文章后,得到相关现象对应的函数:

这些函数都可以在StudyPE+中查看导入表时发现

再进一步,打开IDA分析

image-20210307154335370

一开始就调用了GetCommandLineW()以及CommandLineToArgvW(),这两个函数的作用分别是获取命令行参数,解析命令行参数

但我们运行它的时候是不存在参数的,所以 pNumArgs > 1可以不看,直接往后看

image-20210307173939775

这里有弹窗,而在我们运行程序时,也会弹出两个一模一样的弹窗,合理推断这里才是程序入口点

image-20210307174105693

进入入口点后,就可以看到前面说的生成6个MEMZ进程的函数了

image-20210307174252150

利用do-while循环,以”/watchdog”为参数创建5个MEMZ进程,再用”/main”参数创建一个MEMZ进程

以main参数创建进程的代码中,还有一个函数 SetPriorityClass(),这个函数是一个给进程设置优先级的函数,目测应该属于提权操作,而该函数的参数0x80,意味着该”/main”进程的优先级被设至最高(应该是)

创建完线程后调用 ExitProcess退出进程

在添加参数创建的进程中,根据参数的不同,也可以分为两部分代码,即”/watchdog”和”/main”两个参数

image-20210307204338336

这段代码有熟悉的 CreateThread创建线程函数,还有 RegisterClassExA函数,作用为注册一个窗口类,供以后在对CreateWindowCreateWindowEx函数的调用中使用、CreateWindowExA函数,用于创建窗口

CreateWindowExA函数下面的while循环,可以看到有三个与message相关的函数,一个是检索消息,另外两个是调度或发布消息,可以推断这是一个消息循环,作用未知

CreateThread有利用到sub_40114A函数去作为参数,点进去查看该函数干了什么

image-20210307205420821

一个申请空间,一个获取句柄,一个获取进程名

image-20210307205632817

下面的while循环,看个人感觉大概有几个关键点

结合彩虹猫病毒的特性,合理猜想,这是在检测进程数,一旦进程数小于6个,即关闭了一个进程,就会触发下面的sub_401021函数,直接蓝屏

点进去sub_401021函数

image-20210307210853672

看到RtlAdjustPrivilegeNtRaiseHardError,这两个东西放在一起,就是一个经典蓝屏手段,前者提权,后者触发蓝屏

再往下看

image-20210307211326958

还有一个退出系统的操作,SeShutdownPrivilege,这个东西和上半部分一起,保证关机,这个进程的参数真的没给错,”/watchdog”,看门狗

上述是关闭进程后的触发手段,现在回到关闭进程前,看看它有没有别的操作,毕竟开了5个参数为看门狗的进程,不可能就做这点事情

image-20210307204338336

有一个sub_401000函数,点进去

image-20210307212210133


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (2)
雪    币: 968
活跃值: (6818)
能力值: (RANK:462 )
在线值:
发帖
回帖
粉丝
2
感谢分享,由于本文篇幅较短,并且彩虹猫病毒已有很多分析文章,本文就不给优秀了~  期待下次分享
2021-3-9 14:39
0
雪    币: 4885
活跃值: (2554)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
非常感谢分享!
2021-3-13 09:25
0
游客
登录 | 注册 方可回帖
返回
//