Chisel:基于HTTP的快速稳定TCPUDP隧道工具
Chisel:基于HTTP的快速稳定TCPUDP隧道工具
Chisel是一个快速稳定的TCP/UDP隧道工具,该工具基于HTTP实现其功能,并通过SSH保证通信安全。Chisel是一个可执行文件,其中包含了客户端和服务器端,该工具基于Go(golang)语言开发,因此具备较好的跨平台特性。
Chisel主要可以用于绕过防火墙,但也可以用于向网络中提供安全终端节点。
工具的运行机制如下图所示:
功能介绍
- 易于使用
- 高性能
- 使用SSH协议对通信连接进行加密(通过crypto/SSH)
- 连接经过身份验证
- 通过用户配置文件进行身份验证的客户端
- 通过用户配置文件进行身份验证的客户端连接
- 通过指纹匹配进行身份验证的服务器连接
- 客户端使用指数回退自动重新连接
- 客户端可以通过一个TCP连接创建多个隧道端点
- 客户端可以选择通过SOCKS或HTTP连接代理
- 反向端口转发
- 服务器反向代理
- 服务器允许SOCKS5连接
- 客户端可以选择允许从反向端口进行SOCKS5连接
- 支持ssh-o ProxyCommand通过HTTP提供SSH加密
工具安装
源码安装
广大研究人员可以点击https://github.com/jpillora/chisel/releases/latest访问该项目的Releases页面下载并安装该工具的最新版本,或运行下列命令:
curl https://i.jpillora.com/chisel! | bash
Docker安装
docker run --rm -it jpillora/chisel --help
Fedora
该项目包目前由Fedora社区进行维护,如果你遇到了关于RPM使用的问题,可以使用这个问题跟踪工具https://bugzilla.redhat.com/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&classification=Fedora&component=chisel&list_id=11614537&product=Fedora&product=Fedora%20EPEL
sudo dnf -y install chisel
源安装
$ go get -v github.com/jpillora/chisel
安全性
通信连接始终启用了加密。当你启动Chisel服务器时,它将会在内存中生成一个ECDSA公钥/私钥对。其中的公钥指纹(Base64编码的SHA256)将在服务器启动时显示。服务器可以选择使用–key选项指定密钥种子,而不是生成随机密钥,该选项将用于为密钥生成种子。当客户端连接时,它们还将显示服务器的公钥指纹。客户端可以使用–fingerprint选项指定特定的指纹。
身份验证
使用–authfile选项,服务器可以选择提供用户.json配置文件以创建接受的用户访问列表。然后,客户端使用–auth选项进行身份验证。我们可以查看users.json以获取认证配置文件样例。使用–help查看更多帮助信息。
在内部,这是使用SSH提供的密码验证方法实现的。点击http://blog.gopheracademy.com/go-and-ssh/了解更多关于SSH加密的信息。
Socks5指引
- 开启你的Chisel服务器:
docker run \
--name chisel -p 9312:9312 \
-d --restart always \
jpillora/chisel server -p 9312 --socks5 --key supersecret
- 连接你的Chisel客户端(使用服务器的指纹信息):
chisel client --fingerprint 'rHb55mcxf6vSckL2AezFV09rLs7pfPpavVu++MF7AhQ=' :9312 socks
- 指向你的Socks5客户端:
:1080