实验环境:
实验设备环境:windows xp
实验工具:IDAPro,processmonitor,processexplore
实验过程
首先我们采用IDA打开exe程序,进入imports导入函数窗口:
以上圈出的函数很有可能会是有关于进程注入。
在IDA中查看strings窗口:
我们会观察到很多不常见的dll文件,可能会和注入有关。
1、在你运行恶意代码可执行文件时,会发生什么?
我们会看到会弹出来一个窗口,其会一分钟弹出来一次。
2、哪个进程会被注入?
查看IDA:
可以看到其会调用LoadLibraryA
加载psapi.dll文件,解析枚举函数,并将解析出的函数保存在dword_408714
中,同理下面调用的那两次。
下面就可以进行名称的修改,这样会更加容易识别:
继续向下分析:
这里调用了这个函数,这个函数可以获取系统所有进程的PID值,下面掉用了sub_401000这个函数,点击进入:
这个进程的目的就是查找当前进程是不是explore.exe
进程。
返回上一层,如果说找到此进程的话,就会打开此程序的句柄,获得了句柄以后就可以利用这个句柄操纵这个进程:
操作过程中调用了VirtualAllocEx
函数,调用结束以后一个指向被调用进程的指针就会保存在lpBaseAddress
中。
之后会利用WriteProcessMemory
向explore.exe中写入数据,写入的数据就是缓冲区中的数据,缓冲区中的数据经过向上分析我们知道其是系统根目录拼接Lab12-01.dll字符串。
向下使用了GetModuleHandleA
以及GetProcAddress
两个函数获取LoadLibrary
函数的地址,并将其保存在了lpStartAddress
中,之后会作为CreateRemoteThread
函数的参数被调用,这样就可以强制explore.exe强制运行LoadLibrary
这个函数,这个函数会加载Lab12-01.dll文件。
总结来说此程序会在远程进程explore.exe程序中创建一个线程,线程的作用就是调用loadlibrary
函数,这个函数会调用Lab12-01.dll,也就是远程注入Lab12-01.dll文件。
3、你如何让恶意代码停止弹出窗口?
利用processexplore软件:
查找Lab12-01.dll:
其存在于explore.exe程序里面。
现在我们可以关闭此进程,之后File->Run:
重新启动此程序。
4、这个恶意代码样本时如何工作的?
在IDA分析Lab12-01.dll:
其主要调用了**CreateThread
**函数,此函数主要参数就是lpStartAddress
,点击进入:
可以看到这个函数也是每隔60秒就会创建一次线程,所创建的线程点击进入:
可以看到此字符串就是弹出窗口中显示的字符串。