目前大多数的杀软都是hook NtWriteVirtualMemory和NtUserSetWindowsHookAW、NtUserSetWindowsHookE来防止代码注入。
关于代码注入Ring3层的方法主要有:
远程线程CreateRemoteThread
消息钩子SetWindowsHookEx
Ring3 APC QueueUserApc
修改线程上下文SetContextThread
其中第一种和第三种方法需要传入一个param,但是要求这个param必须在目标进程内存空间,之前的一些方法比较笨重,直接在目标进程 VirtualAllocEx内存,然后把希望的参数内容写入这个内存,使用了WriteProcessMemory函数,而这个函数是被hook的,所以杀软可以很容易的拦截代码注入行为。
仔细想想,杀软的这种防御是很失败的!原因是为了要一个param,攻击者完全没有必要做这么大的动作去目标进程内存空间申请内存并写内存,我在思考是否可以不用WriteProcessMemory函数呢?反正我的目的就是得到一个合理的param,并且这个param是在目标进程内存空间即可!
思考后,原来一切是这么容易啊,哈哈!乐了我半天~~~
举个例子:假设我是这样注入的:
QueueUserAPC((PAPCFUNC)LoadLibraryA, hThread, (ULONG_PTR)param) ;
我想让上面的param的内容是一个“xxx.dll”,就可以了,而且要求这个param是在目标进程内存空间
您想到了么?哈哈
答案
主动防御的代码注入方法一点思考 (转载)
最新推荐文章于 2022-04-10 14:15:04 发布
本文探讨了一种绕过杀毒软件主动防御的代码注入技术,通过在目标进程中搜索已存在的字符串,如"nel32.dll",作为参数传递给QueueUserAPC,避免了WriteProcessMemory函数的使用,从而成功实现注入,同时举例并提供了实验代码证明其可行性。
摘要由CSDN通过智能技术生成