远程Shellcode注入技巧

2019年9月14日13:30:16 发表评论

远程Shellcode注入技巧

PE进程远程注入shellcode到其它进程

PE类文件在进行进程注入的时候,可能会注入一个PE文件,也有可能是注入一段shellcode,但注入的流程通常是一样的。

注入已有进程:

OpenProcess —> WriteProcessMemory —> CreateRemoteThread;

创建进程注入:

CreateProcess —> WriteProcessMemory —> GetThreadContext —> SetThreadContext —> ResumeThread;

上面一种是注入已有进程,下面一种是自己创建一个进程进行注入,不过需要关注的点是一样的,就是远程线程启动时的context,如果是遇到CreateRemoteThread的情况,就比较直观,只要直接找到该函数的第四个参数lpStartAddress,就是我们要找的context值。

如果是遇到ResumeThread情形,就稍稍麻烦一些,需要先查看GetThreadContext的第二个参数lpContext,获取到的进程上下文会放在该指针结构中,然后代码对其中的地址值进行修改,再调用SetThreadContext。

找到上下文地址后,只需要断在CreateRemoteThread或ResumeThread函数上,使用WinHex打开程序要注入的进程,将该上下文地址处的代码修改为JMP到当前地址(或0xCC,此处可以发散一下,只要是能够想办法断下来即可),再单步步过(F8)CreateRemoteThread/ResumeThread,使用OD附加到注入的进程,断在上下文地址处,再将代码修改回原来的代码即可继续执行。

发表评论

后发表评论