实验设备环境: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秒就会创建一次线程,所创建的线程点击进入: 可以看到此字符串就是弹出窗口中显示的字符串。