高级内存代码注入技术样本.docx
《高级内存代码注入技术样本.docx》由会员分享,可在线阅读,更多相关《高级内存代码注入技术样本.docx(2页珍藏版)》请在冰豆网上搜索。
高级内存代码注入技术样本
高级内存代码注入技术
1、概述
1.1PE注入
我们知道进程注入的方法分类主要有以下几种:
DLL注入利用注册表注入利用WindowsHooks注入利用远程线程注入利用特洛伊DLL注入不带DLL的注入直接将代码写入目标进程,并启动远程线程
本文中的技术不同于以往的DLL注入和shellcode注入。
经过此方法可将一个进程的完整镜像完全注入到另外一个进程的内存空间中,从而在一个进程空间中包含了两套不同的代码。
与DLL注入相比,PE注入的主要优势是不需要很多文件,只需要MAIN.EXE注入到其它进程并唤起自身代码即可。
1.2影响
利用该方法能够达到一下多个效果:
创立Socket及网络访问访问文件系统 创立线程访问系统库访问普通运行时库远控键盘记录
2、技术原理
2.1进程代码注入
将代码写入进程的方法较简单,Windows提供了进程内存读取和写入的系统API。
首先需要获取某个进程的PID号,然后打开该进程,能够利用Kernel32链接库中的OpenProcess函数实现。
注:
远程打开进程是受限的,从Vista起,就存在了类似UAC之类的防护措施。
其中主要的进程内存保护机制是MandatoryIntegrityControl(MIC)。
MIC是基于”完整性级别”的对象访问控制保护方法。
完整性级别包括如下四个级别:
低级别:
被限制访问大部分系统资源(如IE);中级别:
开启UAC时非特权用户和管理员组用户启动的进程;高级别:
以管理员权限启动的进程系统级别:
SYSTEM用户启动的进程,如系统服务。
根据以上完整性级别要求,我们的进程注入将只允许注入低级别或同等级别的进程。
本文将利用explorer.exe来举例,远程打开进程后利用VirtualAllocEx函数申请一段可保存本进程镜像的内存段,为了计算需要的内存大小我们能够经过读取PE头信息来获取。