Lab12-01-恶意样本分析-简单进程注入分析

简单进程注入分析

样本来自《恶意样本分析》Lab12-1.exe Lab12-01.dll

运行程序后,发生了什么?

观察程序运行信息,会弹出一个对话框提示Press Ok to reboot,点击确认后会再次弹出,可以肯定程序是应该有一个循环,每次弹出对话快之后就等待,如果对话框没被关闭,会重复弹出,如果关闭了,则会在定时器触发后再次弹框。

Lab12-01-恶意样本分析-简单进程注入分析

哪个进程被注入了

这个在运行时没有准确定位到,对比了可以的程序并没有发现,需要实际逆向分析程序。分析后可知,explore.exe被注入加载dll

如何关闭弹窗

需要逆向分析并做patch掉弹框程序,将被注入的进程关闭即可。

程序是如何工作的

首先将样本拖入ida分析,来到main入口,程序先获取获取可执行程序的路径,并拼接了currentpath\to\Lab12-07.dll的完整路径,这时候通过EnumProcesses来枚举进程,如果枚举失败,则返回装填1退出,如下

Lab12-01-恶意样本分析-简单进程注入分析
Lab12-01-恶意样本分析-简单进程注入分析
枚举完成进程后,开始查找目标进程

Lab12-01-恶意样本分析-简单进程注入分析

经过分析后知道,程序在syub_401000处查找目标explore.exe进程,如果找到则返回1,失败就继续循环

Lab12-01-恶意样本分析-简单进程注入分析

当找到目标进程后,开始执行进程注入逻辑。通过OpenProcess打开一个进程目标句柄,

Lab12-01-恶意样本分析-简单进程注入分析

接着调用VirtualAlloc函数在目标进程分配一块内存,然后调用WriteProcessMemeory函数将Lab12-07.dll写入到目标进程explore.exe内,紧接着通过kernel32.dll获取LoaLibraryA函数,最后将获取的LoadLibraryA函数设置给CreateRemoteThread函数的lpStartAddress,写入到explore.exeLab12-01.dll的地址设置给lpParameter参数,最后调用CreateRemoteThread执行Lab12-01.dllDllMain函数,这样一个进程注入就完成了。

Lab12-01-恶意样本分析-简单进程注入分析

分析Lab12-01.dll

根据前面可以知道程序在会被LoadLibrayA函数加载,dll的DllMain函数会被调用,如下

Lab12-01-恶意样本分析-简单进程注入分析

使用一个线程去执行,直接查看lpStartAddress函数,经过分析后知道,程序另开了一个线程来调用MessageBox函数,标题是"Practical Malware Analysis %d",

Lab12-01-恶意样本分析-简单进程注入分析

消息内容是"Press OK to reboot"

Lab12-01-恶意样本分析-简单进程注入分析
休眠60000毫秒
Lab12-01-恶意样本分析-简单进程注入分析
休眠完成后继续循环执行一次,因此这个程序不会停止,会不停的弹框。

总结

程序首先获取了当前执行的路径以便获取到Lab12-1.dll的绝对路径,接着枚举进程并找到explore.exe作为注入目标进程,之后利用OpenProcess函数获得目标进程的句柄并在目标进程内分配内存空间写入要注入的dll,通过CreateRemoteThread执行LoadLibraryAdll在目标进程内加载并运行,通过这个注入方法来隐藏实际的恶意行为。