- 什么是进程注入
进程注入是指一种自定义代码写入到另一个正在运行的进程的地址空间,并设法执行该代码。
1、隐蔽性:绕过防火墙、杀软和监控工具的监测。
2、持久化:寄生在稳定、常见的系统进程(如svchost.exe 、lsass.exe、explorer.exe)中,即使重启也能存活。
3、访问权限:注入的代码会继承目标进程的权限。如果注入到系统权限的进程,会获得系统权限。
4、绕过防御:逃避基于进程白名单或父进程子进程关系1的检测。

- 常见进程注入
1、DLL注入
强制一个远程进程加载指定的DLL文件,在目标进程中分配内存,将DLL的完整路径写入内存,在目标进程中创建一个新的线程,该线程的起始地址设置为LoadLibrary函数的地址,参数指向之前写入的DLL路径。
2、反射型DLL注入:
注入器自己实现一个完整DLL加载器,将DLL的二进制内容(非文件路径)直接注入到目标进程,并自行完成重新定位、解析导入地址表等操作,最后直接跳转到DLL的入口点执行。(无文件、不调用敏感API、只在内存中操作)。
3、进程镂空
创建一个合法进程,但在其主线程序执行前,将其内存中的原始代码,替换为恶意负载,然后恢复执行。
以挂起模式创建目标进程,卸载目标进程的内存中的原始模块,在相同的内存地址分配空间并写入恶意代码。通过修改线程上下文指令指向新的代码入口,恢复主线程,进程开始执行恶意代码。
4、APC注入
利用异步过程调用APC机制,将恶意代码排队到目标线程的APC队列中。当该线程进入可警告状态时,就会执行排队的APC。
- 进程注入检测与防御思路
1、API监控
监控关键API调用程序,尤其是跨进程的调用。
2、行为分析
异常内存属性:检测具有可写可执行权限的内存域
远程线程创建:检测从外部进程创建的线程,尤其是目标进程explorer.exe等系统核心进程时。
父进程-子进程关系异常:
3、代码签名与信誉