长亭百川云 - 文章详情

Chisel: 内网渗透的利器 - 红队必备工具深度解析

VlangCN

35

2024-08-22

亲爱的HW安全之路的读者们,在当今复杂多变的网络安全环境中,一款强大而灵活的内网渗透工具对红队来说至关重要。今天,我们将深入探讨Chisel这款工具,剖析其工作原理,并分享一些实战技巧。

最近微信改变了推送规则,文章不再按时间轴排列了。不想错过最新推送的你,就 设为星标 吧。

Chisel简介

Chisel是一个基于Go语言开发的高效TCP/UDP隧道工具。它的特点包括:

  • 支持TCP和UDP协议,满足多样化的渗透需求

  • 利用HTTP/HTTPS进行数据传输,易于绕过大多数防火墙

  • 内置SSH加密,确保数据传输安全性

  • 支持反向端口转发,便于内网穿透

  • 轻量级设计,易于在目标系统上部署和隐藏

Chisel的安装与配置

作为一个Go语言开发的工具,Chisel的安装和使用相对简单。以下是详细的安装步骤:

二进制文件安装(推荐)

  1. 访问Chisel的GitHub发布页面:https://github.com/jpillora/chisel/releases

  2. 下载适合你操作系统的最新版本

  3. 解压下载的文件

  4. 将解压后的chisel可执行文件移动到系统的PATH路径下

Linux/MacOS示例:

1wget https://github.com/jpillora/chisel/releases/download/v1.8.1/chisel_1.8.1_linux_amd64.gz
2gunzip chisel_1.8.1_linux_amd64.gz
3chmod +x chisel_1.8.1_linux_amd64
4sudo mv chisel_1.8.1_linux_amd64 /usr/local/bin/chisel

Windows示例:

  1. 下载Windows版本的zip文件

  2. 解压到一个文件夹,如 C:\Tools\

  3. 将 C:\Tools\ 添加到系统环境变量PATH中

从源码编译(适合需要自定义的场景)

  1. 确保已安装Go环境(版本1.16+)

  2. 执行以下命令:

1go install github.com/jpillora/chisel@latest

基本配置

Chisel的配置主要通过命令行参数完成。以下是一些常用的配置示例:

服务器端:

1chisel server -p 8080 --auth username:password

客户端(正向代理):

1chisel client server_ip:8080 9001:example.com:80

客户端(反向代理):

1chisel client server_ip:8080 R:3000:localhost:3000

注意:在实际渗透测试中,建议使用非标准端口和强密码,以提高安全性。

跨平台编译

在某些场景下,我们可能需要为不同的目标系统编译Chisel。可以使用Go的交叉编译功能:

1# 编译Windows 64位版本
2GOOS=windows GOARCH=amd64 go build
3
4# 编译Linux ARM版本
5GOOS=linux GOARCH=arm go build

这种方法允许我们为各种目标环境准备最适合的Chisel版本。

工作原理深度解析

Chisel采用客户端-服务器模式工作,其流程如下:

  1. 客户端发起HTTP/HTTPS连接请求服务器

  2. 双方协商加密参数,建立SSH通道

  3. 客户端请求打开指定端口的隧道

  4. 服务器确认后开始转发流量

  5. 应用层数据经过SSH加密后通过HTTP隧道传输

这种设计允许Chisel在高度受限的网络环境中运行,同时保持较高的安全性。

核心代码剖析

让我们看看Chisel的一些关键实现:

1// SSH隧道建立
2sshConn := p.sshTun.getSSH(ctx)
3dst, reqs, err := sshConn.OpenChannel("chisel", []byte(p.remote.Remote()))
4
5// 数据转发
6func Pipe(src io.ReadWriteCloser, dst io.ReadWriteCloser) (int64int64) {
7    var sent, received int64
8    var wg sync.WaitGroup
9    
10    wg.Add(2)
11    go func() {
12        received, _ = io.Copy(srcdst)
13        wg.Done()
14    }()
15    go func() {
16        sent, _ = io.Copy(dstsrc)
17        wg.Done() 
18    }()
19    
20    wg.Wait()
21    return sent, received
22}
23
24// 多路复用
25func newMux(p packetConn) *mux {
26    m := &mux{
27        conn:             p,
28        incomingChannels: make(chan NewChannel, chanSize),
29        incomingRequests: make(chan *Request, chanSize),
30    }
31    go m.loop()
32    return m
33}

这些代码片段展示了Chisel如何建立SSH隧道、实现双向数据转发以及处理多路复用。

流量混淆技术

Chisel采用多种技术来混淆流量,提高隐蔽性:

  1. HTTP伪装:所有通信都封装在HTTP请求中

  2. WebSocket伪装:进一步模仿正常的Web应用行为

  3. 数据包分片:将大数据包分割成多个小包发送

  4. 流量填充:在空闲时发送无意义的填充数据

  5. 动态端口:支持动态更换通信端口

代码示例:

1// HTTP伪装
2func (c *Client) connectHTTP(ctx context.Context) (net.Conn, error) {
3    req, err := http.NewRequest("GET", c.url.String(), nil)
4    if err != nil {
5        return nil, err
6    }
7    req.Header.Set("User-Agent", UserAgent)
8    req.Header.Set("Upgrade""websocket")
9    // ... 其他HTTP头部设置
10}
11
12// 数据包分片
13func (ch *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err error) {
14    for len(data) > 0 {
15        space := min(ch.maxRemotePayload, len(data))
16        // ... 分片发送逻辑
17    }
18}

实战应用

在内网渗透中,Chisel可以用于多种场景:

  • 反向Shell:通过反向连接绕过防火墙,获取目标系统的远程控制

  • 内网代理:在已控制的主机上设置SOCKS5代理,方便后续的内网探测

  • 端口转发:将内网服务暴露到外网,便于远程访问内网资源

  • 横向移动:在不同网段间建立隧道,扩大渗透范围

实战技巧:

  • 使用反向连接时,可以将Chisel伪装成常见服务,如web服务器

  • 结合其他工具如Metasploit,可以构建更复杂的攻击链

  • 在多层内网中,可以使用Chisel构建多级代理链

安全建议

作为红队成员,我们应该注意:

  • 使用自定义的User-Agent和其他HTTP头,避免被防御系统识别

  • 适当调整流量混淆参数,在隐蔽性和性能之间找到平衡

  • 定期更换通信端口和服务器地址,增加追踪难度

  • 在目标系统上使用后要彻底清理痕迹,包括日志和临时文件

  • 考虑将Chisel与其他工具结合使用,如将流量通过Tor网络转发

随着网络安全领域的不断发展,像Chisel这样的工具也在不断进化。未来可能会看到:

  • 更先进的流量混淆技术,如模仿特定应用的流量模式

  • 与人工智能结合,自动调整行为以适应不同的网络环境

  • 更强大的加密方式,以应对量子计算带来的挑战

总结:

Chisel作为一款强大的内网渗透工具,其灵活性和隐蔽性使它成为红队工具箱中不可或缺的一员。深入理解其工作原理和代码实现,不仅能帮助我们更好地利用这个工具,也能启发我们开发自己的定制工具。

在实际使用中,我们要注意结合具体的渗透测试场景,灵活运用Chisel的各项功能。同时,也要时刻保持警惕,确保合法合规地使用工具。

最后,贴上项目的地址:jpillora/chisel: A fast TCP/UDP tunnel over HTTP (github.com)

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2