参考文章:[原创]最适合新手的病毒分析——彩虹猫病毒
先拍个快照,再运行病毒程序,观察发生了什么
发现运行后存在以下现象:
最后在任务管理器发现了6个MEMZ.exe的进程,任意关闭一个,虚拟机直接卡死,关机重启失败,开机界面为一串大意为电脑已被攻击的英文,然后出现彩虹猫GIF
在百度以及查阅参考文章后,得到相关现象对应的函数:
这些函数都可以在StudyPE+中查看导入表时发现
再进一步,打开IDA分析
一开始就调用了GetCommandLineW()以及CommandLineToArgvW(),这两个函数的作用分别是获取命令行参数,解析命令行参数
但我们运行它的时候是不存在参数的,所以 pNumArgs > 1
可以不看,直接往后看
这里有弹窗,而在我们运行程序时,也会弹出两个一模一样的弹窗,合理推断这里才是程序入口点
进入入口点后,就可以看到前面说的生成6个MEMZ进程的函数了
利用do-while循环,以”/watchdog”为参数创建5个MEMZ进程,再用”/main”参数创建一个MEMZ进程
以main参数创建进程的代码中,还有一个函数 SetPriorityClass()
,这个函数是一个给进程设置优先级的函数,目测应该属于提权操作,而该函数的参数0x80,意味着该”/main”进程的优先级被设至最高(应该是)
创建完线程后调用 ExitProcess
退出进程
在添加参数创建的进程中,根据参数的不同,也可以分为两部分代码,即”/watchdog”和”/main”两个参数
这段代码有熟悉的 CreateThread
创建线程函数,还有 RegisterClassExA
函数,作用为注册一个窗口类,供以后在对CreateWindow或CreateWindowEx函数的调用中使用、CreateWindowExA
函数,用于创建窗口
在CreateWindowExA
函数下面的while循环,可以看到有三个与message相关的函数,一个是检索消息,另外两个是调度或发布消息,可以推断这是一个消息循环,作用未知
CreateThread
有利用到sub_40114A函数去作为参数,点进去查看该函数干了什么
一个申请空间,一个获取句柄,一个获取进程名
下面的while循环,看个人感觉大概有几个关键点
结合彩虹猫病毒的特性,合理猜想,这是在检测进程数,一旦进程数小于6个,即关闭了一个进程,就会触发下面的sub_401021
函数,直接蓝屏
点进去sub_401021
函数
看到RtlAdjustPrivilege
和NtRaiseHardError
,这两个东西放在一起,就是一个经典蓝屏手段,前者提权,后者触发蓝屏
再往下看
还有一个退出系统的操作,SeShutdownPrivilege
,这个东西和上半部分一起,保证关机,这个进程的参数真的没给错,”/watchdog”,看门狗
上述是关闭进程后的触发手段,现在回到关闭进程前,看看它有没有别的操作,毕竟开了5个参数为看门狗的进程,不可能就做这点事情
有一个sub_401000函数,点进去
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)