进程注入之DLL注入

前言

DLL注入是我在大一的时候接触的一种技术,那时候还不懂,最近结合小程序详细的理解了一下。

DLL注入是将代码注入到一个远程进程中,并让远程进程调用LoadLibrary()函数,从而强制远程进程加载一个DLL程序到进程中。而当DLL被加载时就会运行DLL中的DllMain()函数,所以就会为恶意代码的执行提供机会,而因为DLL本身是由感染后的进程加载的同时PE文件也并没有对系统进行过多的敏感操作,所以这种技术具有相当强的一种隐蔽性。

图解

进程注入之DLL注入_第1张图片

程序分析

这里的程序是由一个PE文件和一个DLL文件构成,毫无疑问,DLL文件是需要注入的,里面也会有相应的恶意代码,执行一下之后,启动explorer.exe就会出现异常,每分钟都会出现弹窗。

首先我们来分析一下主要的PE文件。进入main()函数是这样的

进程注入之DLL注入_第2张图片

首先加载了psapi.dll并且导入了三个函数,EnumProcessModules(),EnumProcesses(),GetModuleBaseNameA()。

然后获取DLL的路径,调用EnumProcesses()获取内存中所有进程的PID,形成一个数组,让数组中的每一个进程的pid成为参数传入sub_401000()。

所以我们进入sub_401000(),这个函数长这样

进程注入之DLL注入_第3张图片

应该是对pid相应的进程名与explorer.exe进行比对,如果相同就返回1,进入后面的操作

获取explorer.exe的句柄,使用VirtualAllocEx()函数动态的在explorer.exe中分配一块内存,成功之后指向那块内存的指针会保存在lpParameter中,与进程句柄一起作为参数传入WriteProcessMemory(),写入的数据就是DLL的路径。

然后Kernel32.dll中的LoadLibraryA()函数加载DLL也会被CreateRemoteThread()函数强行调用,从而执行DLL注入。

而我们看到DLL中就会有弹窗的相关代码。

进程注入之DLL注入_第4张图片

进程注入之DLL注入_第5张图片


DLL注入技术是比较经典的技术,我本身也觉得比较厉害,所以还是值得一学

程序与内容源自《恶意代码分析实战》一书12-1

你可能感兴趣的:(进程注入之DLL注入)