Chisel 是一款基于 Go 语言开发的轻量级隧道工具,广泛应用于渗透测试、内网穿透和网络安全领域。它通过 WebSocket 协议实现高效的端口转发和代理功能,能够突破 NAT 或防火墙限制,将内网服务暴露到外网或其他网络。本教程将详细介绍 Chisel 的两种工作模式:正向端口转发 和 反向端口转发,每种模式均支持 特定端口转发 和 SOCKS5 代理。
1. Chisel 简介
Chisel 是一个基于 WebSocket 的端口转发工具,支持在复杂网络环境中建立安全隧道。其主要特点包括:
- 安全性:通过 SSH 加密保护通信数据。
- 稳定性:支持断开重连机制,连接中断后可自动恢复。
- 跨平台:兼容 Windows、Linux、macOS 等操作系统。
- 轻量便携:单一可执行文件,无需额外依赖,部署简单。
Chisel 的两种主要工作模式为:
- 正向端口转发:攻击机主动连接目标机,将攻击机的端口映射到目标机的服务,适合攻击机直接访问内网服务。
- 反向端口转发:目标机主动连接攻击机,将内网服务端口暴露到攻击机,适合目标机位于 NAT 后无法直接访问的场景。
每种模式均支持:
- 特定端口转发:暴露单一服务端口(如 SSH、HTTP)。
- SOCKS5 代理:通过代理访问整个内网,适合访问多个服务或主机。
1.1 R
参数的含义
在 Chisel 的命令中,R
表示 反向隧道(Reverse Tunnel)。当客户端使用 R
参数时,表明它将主动向服务器发起连接,并请求服务器将指定的端口或 SOCKS5 代理暴露到客户端所在的网络环境中。这与正向隧道的区别在于:
- 正向隧道:客户端将本地端口映射到服务器端的远程服务(流量从客户端流向服务器)。
- 反向隧道(R):服务器将端口或代理暴露到客户端的网络(流量从服务器流向客户端所在的内网)。
例如:
- 正向:
2222:localhost:22
表示将客户端的2222
端口映射到服务器的localhost:22
。 - 反向:
R:2222:127.0.0.1:22
表示将客户端的127.0.0.1:22
暴露到服务器的2222
端口。
2. 安装与配置 Chisel
在使用 Chisel 之前,需要在攻击机和目标机上安装 Chisel。
2.1 下载 Chisel
- 访问 Chisel GitHub 页面,下载适合操作系统的二进制文件。推荐使用版本 1.7.2,因为它兼容旧版 Windows 系统。如需最新功能,可选择 1.9.1 或更高版本。
- 在 Linux 系统(如 Kali)上,可通过以下命令下载并安装:
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
2.2 验证安装
运行以下命令检查 Chisel 是否正确安装:
chisel --version
若返回版本号(如 chisel version 1.7.2
),说明安装成功。
3. 正向端口转发
正向端口转发适用于攻击机主动连接目标机,将攻击机的端口映射到目标机的服务,适合目标机可直接访问的场景。以下分别介绍正向模式的 特定端口转发 和 SOCKS5 代理。
3.1 特定端口转发(正向)
场景
攻击机(Kali,IP 为 192.168.56.100
)需要访问目标机(IP 为 192.168.56.101
)的 SSH 服务(端口 22
),但目标机的防火墙限制了直接访问。通过正向端口转发,将攻击机的 2222
端口映射到目标机的 22
端口。
操作步骤
-
攻击机启动 Chisel 服务器
在攻击机上启动 Chisel 服务器,监听端口2024
:chisel server --port