前言
在adwp或者adw赛制中当我们打进内网时(前提是打进去,这就不得不提ccb了😭),搭建代理是必不可少的一部分
介绍几种简单的方法
内网穿透
frp
有公网ip的话可以试试frp
有时间补上(狗头)🐶
花生壳内网穿透
没有公网ip的话就直接使用花生壳吧
简单无脑一看就会
端口转发
使用iptable可以转发但是够简单,有没有简单又方便的方法的呢
有的兄弟有的,那就是LCX简单的端口转发工具
基本使用
-llisten
本地监听模式
lcx -listen <本地端口> <转发端口>
将本地端口的流量转发到本地的转发端口
-slave
远程转发模式
lcx -slave <本地IP> <本地端口> <远程IP> <远程端口>
将本地端口的流量转发到远程ip
-tran
流量转发模式
lcx -tran <本地端口> <目标IP> <目标端口>
将本地端口流量转发到目标端口,支持内网环境
内网隧道搭建
ssh
ssh有点是方便,不要安装啥东西,直接就可以使用,但是弊端也很明显,只能一个端口一个端口的转发流量
单层ssh隧道搭建
我们的机器只能访问外围主机,我们可以使用外围主机当跳板访问内网
在我们机器上运行
ssh -L 8085:172.2.136.5:80 ctfshow@pwn.challenge.ctf.show -p 28227
这里我们将可控linux服务器中172.2.136.5:80的流量转发到本地windows的8085端口上,然后就可以通过访问127.0.0.1:8085以访问172.2.136.5的web服务,流量转发过程为:
172.2.136.5:80->windows的80端口
多层ssh隧道搭建
不同内网之间没法直接相互通信,因此如果我们想用windows攻击机直接访问深层内网的web服务,需要先在表层内网服务器和深层内网服务器之间建立隧道,然后再在windows攻击机和表层内网服务器之间建立隧道,最后就可以用windows攻击机直接访问到深层内网的web服务。
在表层内网服务器上运行:
ssh -L 9383:172.2.136.5:80 ctfshow@pwn.challenge.ctf.show -p 28227
将深层内网中172.2.136.5:80的流量转发到表层内网服务器的9383端口上,然后在windows机器上运行:
ssh -L 8086:127.0.0.1:9383 root@vps_ip -p vps_port
将表层内网服务器中127.0.0.1:9383的流量转发到windows机器的8086端口上,流量转发的过程变为:
172.2.136.5:80->VPS:9383->windows的8086端口
然后我们就可以通过在本地访问8086直接访问深层内网中的172.2.136.5的web服务
Stowaway
目前有很多优秀的内网代理工具如frp, nps等,但是有些情况下,我们需要搭建多级网络代理,直达目标内网深处。而目前frp,nps等工具在搭建多级代理时操作过去复杂不便于管理。
而Stowaway工具就是需要解决这一问题。Stowaway是一个利用go语言编写、专为渗透测试工作者制作的多级代理工具,用户可使用此程序将外部流量通过多个节点代理至内网,突破内网访问限制,构造树状节点网络,并轻松实现管理功能
它不仅仅是linux对linux,win对win还可以 win对linux,我最喜欢的就是这个,简单无脑
towaway一共包含两种角色,分别是:
-
admin 代表控制端
-
agent 代表被控端
admin:
-l 被动模式下的监听地址[ip]:<port>
-s 节点通信加密密钥,所有节点(admin&&agent)必须一致
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--down 下游协议类型,默认为裸TCP流量,可选HTTP
agent:
-l 被动模式下的监听地址[ip]:<port>
-s 节点通信加密密钥
-c 主动模式下的目标节点地址
--proxy socks5代理服务器地址
--proxyu socks5代理服务器用户名(可选)
--proxyp socks5代理服务器密码(可选)
--reconnect 重连时间间隔(s)
--rehost 端口复用时复用的IP地址
--report 端口复用时复用的端口号
--up 上游协议类型,默认为裸TCP流量,可选HTTP
--down 下游协议类型,默认为裸TCP流量,可选HTTP
--cs 运行平台的shell编码类型,默认为utf-8,可选gbk
单层隧道搭建
控制端配置
windows使用被动模式,监听端口8000,并对通信进行加密秘钥为123。等待被控端的连接
windows_x64_admin.exe -l 192.168.125.134:8000 -s 123
windows_x64_admin.exe -l 8000 -s 123 #或者不指定ip默认监听0.0.0.0
被控端配置
在可控linux上执行,使用秘钥123连接控制端8000端口,并设置重连间隔时间,当控制端掉线时客户端每隔8s重连控制端
./linux_x64_agent -c 192.168.125.134:8000 -s 123 --reconnect 8
此时客户端与控制端间搭建了一条socks隧道。
此时,admin端就可以控制
可以看到detail有一个节点
我们使用这个节点use 0
建立socks隧道
在windows使用proxifier创建代理
创建代理规则
目标ip填目标靶机地址
在linux使用proxychains创建代理
我们需要修改/etc/proxychains4.conf
修改成指定端口(这里是windows做admin就不演示)
成功访问内网
多层隧道搭建
在单层的基础上我们use 0
之后继续使用监听
模式选择普通模式1,2是iptables 重用模式,仅限linux,3是复用socks模式,这里没必要,要是是docker容器限制端口可以使用3
继续在深层内网机器主动连接我们的10000端口
./linux_x64_agent -c ip:10000 -s 123 --reconnect 8
此时我们的admin又会上线二级代理机器,没环境就不复现了
我们use 1
在创建socks
这是我们的widows就可以访问深层内网了在效仿node0
配置代理就行
多级代理就可以了,速度稳定性都还可以
ps:图片来自网络,写的不好大佬轻点喷