RedTeamPentesting/resocks
GitHub: RedTeamPentesting/resocks
基于mTLS加密的反向SOCKS5代理隧道工具,用于在NAT环境下建立安全的内网穿透通道。
Stars: 479 | Forks: 36
resocks
`resocks` 是一个反向/回连 SOCKS5 代理隧道,可用于将流量路由通过无法直接访问的系统(例如由于 NAT)。该通道由基于连接密钥自动生成证书的互信 TLS 保护。阅读我们的[博客文章](https://blog.redteam-pentesting.de/2023/introducing-resocks/)了解更多信息。  ## 用法 在充当 SOCKS5 隧道入口点的系统上启动监听器(listener): ``` # 在 IP 为 1.2.3.4 的 proxy entry point 系统上 $ resocks listen ``` 复制连接密钥并将其传递给中继(relay)系统上的 `resocks`: ``` # 在 IP 为 10.0.0.1 的 remote relay 系统上 $ resocks 1.2.3.4 --key $CONNECTION_KEY ``` 现在将代理入口点系统上的工具配置为使用本地 SOCKS5 服务器,例如: ``` $ curl --proxy 'socks5://127.0.0.1:1080' 'http://10.0.0.2' ``` 你也可以使用 `resocks generate` 生成连接密钥,并将其传递给 `listen` 命令,以避免每次都生成新的连接密钥。也可以通过环境变量指定: ``` $ export RESOCKS_KEY="$(resocks generate)" $ resocks listen ``` ## 安全性 `resocks` 的威胁模型主要考虑了能够检查、拦截和修改监听器与中继之间流量的攻击者。具体而言,`resocks` 旨在防御以下场景: - **A:恶意观察者:** 在监听器和代理之间拥有网络访问权限的攻击者不应看到通过隧道路由的 SOCKS5 流量。 - **B:恶意监听器:** 当将代理连接到监听器时,攻击者不应能够将流量重定向到恶意监听器,因为这会授予他们访问代理服务器网络的权限。 - **C:恶意中继:** 攻击者不应能够连接到现有监听器,以便接收旨在通过合法代理路由的流量。 该威胁模型建议在监听器和中继之间使用相互认证的加密连接,如[此处](#key-based-tls)所述。 请注意,`resocks` **并非**设计用于防御以下场景: - **D:监听器系统上的恶意用户:** 托管监听器的系统上的恶意用户通常能够连接到 SOCKS5 代理或提取连接密钥。 - **E:中继系统上的恶意用户:** 托管中继的系统上的恶意用户通常可以提取连接密钥。 然而,如[此处](#defense-in-depth)所述,可以采取一些深度防御措施来加固 `resocks` 以抵御此类攻击。 ### 基于密钥的 TLS 监听器和中继之间的隧道由共享连接密钥保护,该密钥用于建立互信的 TLS 1.3 连接。其工作原理是在双方使用该密钥派生相同的 CA 证书,然后用于签名即时生成的服务器和客户端证书。实现此技术的库(`kbtls`)可在[此处](https://github.com/RedTeamPentesting/kbtls)获取。  ### 深度防御 当在不受信任的系统上运行 `resocks` 监听器或中继时(场景 D/E),攻击者可能会读取连接密钥,从而削弱针对场景 A、B 和 C 的防御。 默认情况下,连接密钥作为命令行标志传递,可以被有权查看包含参数的进程列表的攻击者读取。或者,可以通过环境变量(`$RESOCKS_KEY`)指定连接密钥,或者可以按照[下文](#building)所述将其静态构建到二进制文件中。在这种情况下,需要撤销其他用户的读取权限。在某些场景下,这些技术可能会阻止某些低权限攻击者获取连接密钥。 ## 构建 可以使用以下命令构建 `resocks`: ``` go build ``` 为了将静态连接密钥作为默认连接密钥直接编译到二进制文件中,请使用以下命令: ``` go run . generate # generate a connection key go build -ldflags="-X main.defaultConnectionKey=YOUR_CONNECTION_KEY" ``` 同样,默认回连地址也可以静态编译到二进制文件中: ``` go build -ldflags="-X main.defaultConnectBackAddress=192.0.2.1" ```
标签:EVTX分析, EVTX分析, Go语言, IP 地址批量处理, mTLS, NAT穿透, SOCKS5代理, TLS加密, 内网穿透, 加密通信, 反向连接, 回连代理, 数据展示, 日志审计, 流量路由, 流量转发, 程序破解, 红队, 红队作战, 网络安全, 背连代理, 跨网络访问, 隐私保护, 隧道工具