这个问题很棘手,但这是我在模拟渗透测试中试图解决的问题。也许我的方法不对,也许我应该在另一个论坛上发布这个问题,但考虑到我实际上要问的问题,我觉得在这里发布是合适的。
我可以远程连接到另一台计算机并访问 Windows 命令提示符。另一台计算机位于 VPN 后面。仅使用我手头的工具(即反向连接的 meterpreter),我如何才能找出远程计算机的真正外部 IP 地址?
我想我需要通过命令行访问一个外部网站(比如 ipchicken.com)或者只是拉下一个外部网页(因为我有该服务器的服务器日志),同时强制它不通过 VPN。
任何帮助,将不胜感激!
答案1
首先,检查本地 IP 地址!确保设备未分配公共地址。
如果确实存在 NAT,您需要首先查看您的路由表。
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
使用它你应该可以看到该计算机上有哪些路由。最有可能的是一条通过 VPN(你的)的路由,然后是其他路由。你要找的是默认路由,确保它存在,然后通过它发送流量;如果默认路由是你的 VPN,那么尝试找到一条更具体的路由,让你离开网络。
如果您有默认路由,但不是您的 VPN,请转到任何可以跟踪连接到它的 IP 地址的服务器。这可以是您尝试 ping 的服务器,也可以是尝试访问服务器上的网页的服务器。
编辑:
在 Windows 中添加路线:
route ADD *prefix* MASK *subnet* *gateway* METRIC *metric* IF *interface number*
route ADD 157.0.0.0 MASK 255.0.0.0 157.55.80.1 METRIC 30
虽然你可以使用 meterpreter 更改路线:
route add *prefix* *subnet* *gateway*
route add 157.0.0.0 255.0.0.0 157.55.80.1
来源:
http://www.offensive-security.com/metasploit-unleashed/Msfconsole_Commands#route
路线 /?
答案2
我通常使用 checkip.dyndns.org (216.146.39.70) 来识别我的外部 IP,通过命令
curl -s checkip.dyndns.org
就你的情况而言,你只需在路由表中添加一条绕过 VPN 的特定规则即可。假设你的本地网关是 10.1.1.254,你只需说
ip route add 216.146.39.70/32 via 10.1.1.254 dev eth0
现在,当您的请求“curl -s chekip.dyndns.org”离开您的电脑时,它将通过本地网关而不是 VPN 进行路由,并且答复将显示您的真实外部 IP。