引用
用PEID查看,并没有加壳,但是竟然有附加数据
用LoadPe查看导入表信息,明显很奇怪
用火绒剑分析进行行为分析,发现创建了一个跟自己同名的子进程
载入Od,在这个call里程序就跑飞了
跟踪进入,一脸懵*
全都是这样的代码,既然创建了进程,于是直接下API断点
CreateProcessW CreateProcessA
栈回溯发现地址很小,明显是申请的堆空间,且这个进程是被挂起来的,经验告诉我,既然是挂起,肯定是要修改OEP,活者是写入一段shellcode等操作
继续下 WriteProcessMemory断点
和我想的不太一样,虽然写入了内存,但是发现是把所有的区段都给改了,包括PE头,多次写入,不用想这块内存肯定我们真实的病毒程序
经过分析这块内存是利用VirtualAlloc申请出来的,把内存中的数据复制过来并解密,然后写入挂起的线程
直接把这块内存dump出来
经过测试,dump出来的程序确实真正的病毒程序
下面开始分析病毒的行为
用火绒剑过滤的时候发现病毒会复制到
C:\Users\用户名\Documents\yfqgbh.exe
名字是六位数的随机字母
在CopyFileW上下断
栈回溯发现下面有创建新的进程,这个进程就是我们复制过去的病毒,往上看的话肯定是判断
往上走,发现有拼接字符串,下F2断,重新跑起来
发现在获取目得的路径
然后打开这个位置的病毒,很显然,这个位置并没有我们的程序,所以GetLastError会返回错误代码2
这样我们的跳转实现不了(实现不了则会复制文件到目标目录)为了分析方面我直接把这个jnz改成jmp分析
单步往下跟踪
发现先创建了一个互斥体,防止多开
到这里我们可以先用IDA静态分析,配合OD动态验证我们的猜想
在IDA里我们可以看到 ,在获取系统版本之后,下面有几个call
第一个call跟进去之后,发现明显是在提权
第二个call,发现看不到什么,回到OD,继续单步
发现返回值是CreateThread
继续单步,发现创建了一个线程,回调函数地址是我们传进来的参数a1
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)