病毒分析的准备工作
环境:我采用的是吾爱破解的xp系统,里面有很多现成的工具,ida,xdbg都有,只不过ida版本有点低,但是对于本病毒的分析也没太大影响,百度网盘链接:https://pan.baidu.com/s/1YvO264J-atvRUZew8AlS9g 提取码:abcd。(如果有大佬知道怎么在xp系统中使用更高版本的ida,或者有更好的分析病毒的虚拟机,可以在评论区给点资源,谢谢啦)
分析步骤,一般的病毒分析步骤,如下
- 查壳,常见的有upx,ASpack,等等,可以用来实现简单免杀。
- 行为分析,是否修改注册表,联网,等等,可以在虚拟机中跑一遍看看效果(但是不要直接连网),或者用vt直接跑跑看,有个大致的判断。
- 导入的dll以及API,使用StudyPE+去查看。
- 关键字符串,ida中shift+f12就可以直接查看。
- 放到ida静态分析,或者动调。
但是,对于彩虹猫病毒这个样本,里面的函数和逻辑都比较清晰,先在虚拟机里面跑几遍,看看行为,就直接开始分析了。
分析过程
分析过程大致分为3部分,启动部分,检测部分,彩虹部分,MBR部分。
启动部分
首先判断该进程的传参,类似于标准 C 运行时argv和argc值。从而走不同的流程。
然后看下面干了什么。
大概就是以不同参数开了6个MEMZ.exe进程。对于里面出现的函数可以到MSDN官方文档去查,举个例子,对于SetPriorityClass(),推荐在谷歌用必应上直接搜索该函数,然后进官方文档看函数参数意义,比如说,我要看0x80代表什么。
检测部分
这一部分就是用来判断用户是否主动关机,是否主动关闭MEMZ.exe,从而来用函数进行相应措施。
最外层。
然后来看看创建的线程函数check干了什么。
可以看出check函数用来判断是否主动关闭MEMZ.exe。
shutdown()函数中的StartAddress无法直接反编译,先用一位师傅谁的狗哥处理一下函数,然后来看看shutdown()函数。
然后看看创建的20个线程,就是用SetWindowsHookExW()实现了20个随机位置的messagebox弹窗,要理解这一部分,去查阅官方文档的函数。
然后我们跳出来,回到最外层,来看看消息处理函数干了什么。
WM_QUERYENDSESSION,WM_QUERYENDSESSION与WM_ENDSESSION_jessicaiu的博客-CSDN博客所以这个就是用来防用户关机的。
到这里检测部分就分析完了。
彩虹部分
这部分是参数为/main的MEZE.exe进程执行的。主要表现在电脑桌面的花里胡哨。
这里v9类似于下面的结构
typedef struct {
int time;
int (*func)();
}functable;
functable a[10];
下面来分析这10个函数,里面很多api就不多讲了。
func1()