LF3551/ClawSec

GitHub: LF3551/ClawSec

ClawSec 是一款轻量级现代加密网络工具,以单密码即可提供端到端加密通信、反向 Shell、文件传输和隧道转发,同时具备反 DPI 和后量子安全能力。

Stars: 3 | Forks: 0

ClawSec logo

Build Status License: BSD Platforms GitHub release GitHub stars

从 Cryptcat 演进而来的现代加密网络工具,采用最先进的加密技术。 ## 为什么选择 ClawSec? | 特性 | ClawSec | Cryptcat | Ncat (--ssl) | socat (openssl) | |---------|---------|----------|--------------|---------------| | **加密** | AES-256-GCM | Twofish (已弃用) | TLS 1.3 | TLS 1.3 | | **密钥交换** | X25519 ECDHE | 无 | TLS 握手 | TLS 握手 | | **完全前向保密** | ✅ 是 | ❌ 否 | ✅ 是 | ✅ 是 | | **身份验证** | 密码绑定的 ECDHE | 无 | 证书 | 证书 | | **配置** | 单一密码 | 硬编码密钥 | 需要证书 | 需要证书 | | **重放保护** | ✅ 序列号计数器 | ❌ 否 | ✅ TLS | ✅ TLS | | **UDP 支持** | ✅ `-u` 标志 | ❌ 否 | ✅ 是 | ✅ 是 | | **IPv6** | ✅ `-4`/`-6` 标志 | ❌ 否 | ✅ 是 | ✅ 是 | | **轻量级** | ✅ ~50KB | ✅ 体积小 | ❌ ~3MB (nmap) | ❌ ~400KB | | **Netcat 直接替代** | ✅ 是 | ✅ 是 | ⚠️ 部分 | ❌ 否 | | **Shell 自动补全** | ✅ bash/zsh/fish | ❌ 否 | ❌ 否 | ❌ 否 | | **保持连接** | ✅ `-K` 多客户端 | ❌ 否 | ✅ 是 | ✅ 是 | | **端口转发** | ✅ `-L` (无需 SSH) | ❌ 否 | ❌ 否 | ✅ 是 | | **反向隧道** | ✅ `-R` (类 SSH 反向转发) | ❌ 否 | ❌ 否 | ✅ 是 | | **自动重连** | ✅ `--persistent` (指数退避) | ❌ 否 | ❌ 否 | ❌ 否 | | **流量混淆** | ✅ `--obfs http/tls` | ❌ 否 | ❌ 否 | ❌ 否 | | **TLS 伪装** | ✅ `--obfs tls` (TLS 1.3) | ❌ 否 | ❌ 否 | ❌ 否 | | **TLS 指纹** | ✅ `--fingerprint` (Chrome/FF/Safari) | ❌ 否 | ❌ 否 | ❌ 否 | | **TOFU 身份** | ✅ `--tofu` (类 SSH 的 known_hosts) | ❌ 否 | ❌ 否 | ❌ 否 | | **后量子** | ✅ `--pq` (X25519 + ML-KEM-768) | ❌ 否 | ❌ 否 | ❌ 否 | | **加密客户端问候** | ✅ `--ech` (GREASE ECH) | ❌ 否 | ❌ 否 | ❌ 否 | | **主动探测防御** | ✅ `--fallback` (类 REALITY) | ❌ 否 | ❌ 否 | ❌ 否 | | **流多路复用** | ✅ `--mux` (64 个流) | ❌ 否 | ❌ 否 | ❌ 否 | | **抗流量分析** | ✅ `--pad` + `--jitter` | ❌ 否 | ❌ 否 | ❌ 否 | | **隐蔽端口扫描** | ✅ `--scan` (SYN/connect, 随机化) | ❌ 否 | ✅ nmap | ❌ 否 | | **Banner 抓取** | ✅ `-b` (服务版本检测) | ❌ 否 | ✅ nmap | ❌ 否 | | **SOCKS5 代理** | ✅ `--socks` (加密隧道) | ❌ 否 | ❌ 否 | ❌ 否 | | **文件传输** | ✅ `--send/--recv` (断点续传 + SHA-256) | ❌ 否 | ❌ 否 | ❌ 否 | | **压缩** | ✅ `-z` zlib | ❌ 否 | ❌ 否 | ❌ 否 | | **进度条** | ✅ `-P` 内置 | ❌ 否 | ❌ 否 | ❌ 否 | | **文件校验** | ✅ `-V` SHA-256 | ❌ 否 | ❌ 否 | ❌ 否 | | **零依赖** | ✅ 仅 libssl | ✅ | ❌ nmap 套件 | ❌ | 适用场景:安全文件传输、反向 shell、无需证书管理的加密隧道。 ## 安全特性 - **AES-256-GCM**:带完整性验证的认证加密 - **X25519 ECDHE**:完全前向保密 —— 每个会话都有唯一的临时密钥 - **PBKDF2**:基于密码的密钥派生,100,000 次迭代 - **随机会话盐值**:每次会话的盐值交换防止会话间密钥重用 - **重放保护**:消息序列计数器拒绝重复/乱序的数据包 - **安全随机 IV**:加密强度高的每消息随机化 - **协议版本控制**:面向未来的二进制消息格式 - **内存安全**:安全的密钥擦除和资源清理 ### 反审查 / 反 DPI | 特性 | 标志 | 功能说明 | |---------|------|--------------| | TOFU 身份 | `--tofu` | 类似 SSH 的 Ed25519 服务器身份 + known_hosts | | 后量子 | `--pq` | 混合 X25519 + ML-KEM-768 (抗量子) | | TLS 伪装 | `--obfs tls` | 将连接包装在真实的 TLS 1.3 会话中 | | 浏览器模拟 | `--fingerprint chrome\|firefox\|safari` | 调整 ClientHello 以匹配真实浏览器 (JA3/JA4) | | 加密客户端问候 | `--ech` | 使用 GREASE ECH 扩展向 DPI 隐藏 SNI | | 主动探测防御 | `--fallback host:port` | DPI 探测会看到一个真实网站;只有 ClawSec 能获得隧道 | | 数据包填充 | `--pad` | 所有数据包变为统一的 1400 字节 | | 时间抖动 | `--jitter N` | 随机的 0-N 毫秒延迟,对抗时间相关性分析 | | 隐蔽端口扫描 | `--scan range` | 并行 SYN/connect 扫描,带有随机顺序和抖动 | | Banner 抓取 | `-b` | 检测开放端口上的服务版本 (SSH, HTTP 等) | | SOCKS5 代理 | `--socks port` | 通过加密隧道路由任何应用 (curl, 浏览器等) | ## 快速开始 ### 自动安装 ``` # 克隆仓库 git clone https://github.com/LF3551/ClawSec.git cd ClawSec # 运行安装程序 chmod +x install.sh ./install.sh ``` ### 手动构建 ``` cd src make linux # Linux with system OpenSSL make macos # macOS with Homebrew OpenSSL make alpine # Alpine Linux (Docker) make freebsd # FreeBSD make netbsd # NetBSD ``` ### Docker ``` # 构建镜像 docker build -t clawsec . # 运行 server docker run -p 8888:8888 clawsec -l -p 8888 -k "YourPassword" # 或使用 docker-compose docker-compose up ``` ### 基本用法 ClawSec 支持三种主要模式:**聊天模式**、**反向 Shell 模式**和**文件传输模式**。 #### 1. 聊天模式(加密通信) 具有会话指纹、已读回执、内联文件共享和斜杠命令的安全加密聊天。 **服务端:** ``` ./clawsec -l -p 8888 -k "TestPass123" -c -n "Alice" ``` **客户端:** ``` ./clawsec -k "TestPass123" -c -n "Bob" server-ip 8888 ``` **功能:** - 🔐 **会话指纹**:连接时显示 emoji + 十六进制指纹 —— 验证双方是否匹配以确认没有中间人攻击 (MITM) - 📛 **自定义昵称** (`-n`):显示名称而不是 Server/Client - ✓✓ **已读回执**:自动送达确认 - 📎 **内联文件共享**:`/file path` 通过聊天发送最大 4MB 的文件 - 🏓 **加密 ping**:`/ping` 测量通过加密隧道的 RTT - 斜杠命令:`/file`、`/ping`、`/clear`、`/whoami`、`/help` - 彩色时间戳:本地显示为绿色,远程显示为青色 - 断开连接时显示会话持续时间 - 所有通信均使用 AES-256-GCM + PFS 加密 #### 2. 反向 Shell 模式(加密远程访问) 获取对远程机器的加密命令行访问权限。 **服务端(目标机器):** ``` cd ~/ClawSec/unix ./clawsec -l -p 8888 -k "TestPass123" -e /bin/bash ``` **客户端(你的机器):** ``` ./clawsec -k "TestPass123" server-ip 8888 ``` **功能:** - 对目标机器的完全加密 shell 访问 - 运行命令:`ls`、`cd`、`cat`、`ps`、`whoami`、`pwd` 等 - 所有流量端到端加密 - 无格式化的干净输出 **注意**:现在通过 PTY(伪终端)支持交互式程序(`nano`、`vim`、`top`)。使用 Ctrl+C 终止程序,使用 `exit` 或 Ctrl+D 关闭 shell。 #### 3. 文件传输模式(安全文件传输) 支持压缩、进度条和 SHA-256 校验的文件传输。 **服务端(接收机器):** ``` ./clawsec -v -l -p 8888 -k "FilePass123" > received_file.py ``` **客户端(发送机器):** ``` ./clawsec -v -k "FilePass123" server-ip 8888 < file_to_send.py ``` **带压缩、进度和校验:** ``` # Server ./clawsec -l -p 8888 -k "FilePass123" -z -P -V > received.tar.gz # Client ./clawsec -k "FilePass123" -z -P -V server-ip 8888 < archive.tar.gz ``` **功能:** - `-z` zlib 压缩:文本文件带宽减少 3-5 倍 - `-P` 内置进度条,显示速度和字节数(无需外部 `pv`) - `-V` SHA-256 端到端校验:传输后发送哈希值,接收方进行验证 - 传输完成后自动关闭连接 - 传输统计:`[Transfer complete] Sent/Received X bytes` - 文件采用完整的 AES-256-GCM 加密传输 - 支持任何文件类型(文本、二进制、压缩包) **高级示例:** ``` # 传输存档 tar -czf - /path/to/directory | ./clawsec -k "pass" server 9999 ./clawsec -l -p 9999 -k "pass" | tar -xzf - # 带进度的传输(需要 pv) pv largefile.iso | ./clawsec -k "pass" server 7777 ./clawsec -l -p 7777 -k "pass" > largefile.iso ``` ## 依赖要求 - **OpenSSL 3.x**:用于 AES-GCM 加密 - **GCC/G++**:C++11 或更高版本 - **POSIX 系统**:Linux、BSD、macOS、Solaris ### 安装 OpenSSL ``` # macOS brew install openssl@3 # Debian/Ubuntu sudo apt-get install libssl-dev # RedHat/CentOS sudo yum install openssl-devel ``` ## 用法 ``` Usage: clawsec [options] hostname port clawsec -l -p port [options] Required: -k password Encryption password (REQUIRED) Connection: -l Listen mode for inbound connections -p port Local port number Options: -c Chat mode with timestamps and colors -v Verbose mode -z Compress data with zlib before encryption -P Show transfer progress bar -V SHA-256 end-to-end file verification -n name Chat nickname (default: Server/Client) -K Keep-open: accept multiple clients -L host:port Port forwarding (encrypted tunnel) --obfs http Traffic obfuscation (anti-DPI) --obfs tls TLS 1.3 camouflage (stealth mode) --ech Encrypted Client Hello (hide SNI from DPI) --mux Multiplex streams over one tunnel (with -L) --fallback h:p Proxy non-ClawSec probes to real site (REALITY-like) --tofu Trust On First Use (SSH-like server identity) --pq Post-quantum hybrid (X25519 + ML-KEM-768) --fingerprint p Mimic browser TLS (chrome, firefox, safari) --scan range Stealth port scan (1-1024, 22-443, all) -b Banner grab (show service version on open ports) --socks port SOCKS5 proxy through encrypted tunnel --pad Pad packets to uniform 1400 bytes --jitter ms Random delay 0-N ms between packets -w secs Timeout for connects -e prog Execute program after connect (requires GAPING_SECURITY_HOLE) ``` ## 示例 ### 聊天模式 ``` # Server: 监听加密聊天 ./clawsec -l -p 8888 -k "TestPass123" -c -n "Alice" # Client: 连接到 server 进行聊天 ./clawsec -k "TestPass123" -c -n "Bob" server-ip 8888 ``` 双方将看到: ``` ╔══════════════════════════════════════╗ ║ 🔐 ClawSec Encrypted Chat ║ ╚══════════════════════════════════════╝ 🔐 Session: a3f2-81bc-44de-9f71 🔒🌟💎🚀🍀🌸 Verify this matches on both sides to confirm no MITM. Type /help for commands 📛 Peer identified as: Bob [10:30:15 Alice] Hello! ✓✓ delivered [10:30:18 Bob] Hi! Check /ping ✓✓ delivered 🏓 Pong: 12 ms RTT ``` ### 反向 Shell 模式 ``` # Server: 提供加密的 shell 访问 ./clawsec -l -p 8888 -k "TestPass123" -e /bin/bash # Client: 连接并执行命令 ./clawsec -k "TestPass123" server-ip 8888 ls pwd whoami ``` ### 文件传输模式 ``` # Server: 接收文件并显示统计信息 ./clawsec -v -l -p 8888 -k "FilePass123" > received.py # Client: 发送文件 ./clawsec -v -k "FilePass123" server-ip 8888 < file.py # 带压缩 + 进度 + 验证 ./clawsec -z -P -V -l -p 8888 -k "FilePass123" > received.iso ./clawsec -z -P -V -k "FilePass123" server-ip 8888 < file.iso ``` 输出: ``` [Sent] 42.3 MB (12.5 MB/s) [Transfer complete] Sent 88000000→42300000 bytes (compressed) [Verify] SHA-256 OK: ba7816bf8f01cfea... ``` ### 高级示例 ``` # 将目录作为存档传输 tar -czf - /data | ./clawsec -k "pass" server 9999 ./clawsec -l -p 9999 -k "pass" | tar -xzf - # 详细 debug 模式 ./clawsec -vv -l -p 8080 -k "debug" ``` ### 隐蔽端口扫描 ``` # 扫描常用端口 (1-1024) ./clawsec --scan 1-1024 target.com # 扫描所有端口 (65535) — localhost 约需 2 秒,远程约需 60 秒 ./clawsec --scan all target.com # 带抖动的自定义范围 (anti-IDS) ./clawsec --scan 1-65535 --jitter 50 target.com # 强制 IPv4/IPv6 ./clawsec --scan 1-1024 -4 target.com ./clawsec --scan 1-1024 -6 target.com # Verbose — 显示扫描方法 ./clawsec --scan 22-443 -v target.com ``` ### Banner 抓取 ``` # 带服务版本检测的扫描 ./clawsec --scan 1-1024 -b target.com # 示例输出: # 22/tcp open # └─ SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6 # 80/tcp open # └─ HTTP/1.1 200 OK # 443/tcp open # └─ (TLS — 无明文 banner) ``` ### SOCKS5 代理(加密隧道) ``` # Server: 接受连接并代理出站流量 ./clawsec -l -k "strongpass" -p 9999 --socks 0 # Client: 在端口 1080 开启本地 SOCKS5 proxy ./clawsec -k "strongpass" --socks 1080 server.com 9999 # 现在使用任何支持 SOCKS5 的应用程序: curl --proxy socks5://127.0.0.1:1080 https://ifconfig.me # Firefox: Settings → Network → SOCKS5 → 127.0.0.1:1080 # ssh: ssh -o ProxyCommand='nc -x 127.0.0.1:1080 %h %p' user@target # 结合其他功能: ./clawsec -k "pass" --socks 1080 --pq --tofu --obfs tls server.com 9999 ``` ### 加密文件传输(断点续传 + SHA-256) ``` # 接收端: 监听并将文件保存到 ./incoming/ ./clawsec -l -k "secretkey" -p 4444 --recv ./incoming # 发送端: 加密并传输文件 ./clawsec -k "secretkey" --send backup.tar.gz remote.host 4444 # 功能特性: # - AES-256-GCM 加密传输 # - SHA-256 端到端验证 # - 中断传输自动恢复 # - 带速度显示的进度条 # - 接收端的路径遍历保护 # 结合后量子加密和 obfuscation: ./clawsec -k "pass" --send secret.pdf --pq --obfs tls server.com 4444 ``` ### 反向隧道 (-R) ``` # 将内部服务(例如 :3000 上的 web app)公开到远程 server # Server: 监听 9999,开放公共端口 8080 用于 reverse ./clawsec -l -k "strongpass" -p 9999 -R 0.0.0.0:8080 -v # Client (在 NAT/firewall 后): 连接并转发到本地 :3000 ./clawsec -k "strongpass" -R 127.0.0.1:3000 -v server.com 9999 # 现在任何人都可以访问 server.com:8080 → 隧道到 client 的 localhost:3000 # 工作原理类似 SSH -R,但使用 AES-256-GCM 加密,无需证书 # 结合 stealth 功能建立隐蔽通道: ./clawsec -k "pass" -R 127.0.0.1:22 --pq --obfs tls --persistent server.com 443 ``` ### 持久自动重连 ``` # Client 在断开连接时自动重新连接(exponential backoff 1s→60s) ./clawsec -k "pass" --persistent -R 127.0.0.1:22 server.com 9999 # 在网络中断期间保持隧道活跃 # 适用于任何模式: -L, -R, --socks, chat 等 ./clawsec -k "pass" --persistent --socks 1080 server.com 443 # 适用于: # - 不稳定的网络(移动网络、卫星网络) # - 必须在重启后继续存在的长期运行隧道 # - Pentest 植入程序的持久化(使用 --obfs tls --pq) ``` ### 密码要求 **强密码:** - 建议至少 12 个字符 - 混合使用大写字母、小写字母、数字和符号 - 示例:`MyS3cur3Tr@nsf3r2025` **应避免:** - 默认密码 - 字典词汇 - 短密码(少于 8 个字符) ### 操作安全 1. 切勿在脚本中硬编码密码 2. 在自动化场景中使用环境变量 3. 使用后清除命令历史记录 4. 仅通过安全渠道共享密码 ``` # 使用环境变量 export CLAW_KEY="YourSecurePassword" clawsec -l -p 1234 -k "$CLAW_KEY" ``` ## 加密规范 | 组件 | 算法 | 参数 | |-----------|-----------|------------| | 密码算法 | AES-256 | 256 位密钥 | | 模式 | GCM | 带身份验证的 AEAD | | 密钥派生 | PBKDF2-HMAC-SHA256 | 100,000 次迭代 | | IV | CSPRNG | 96 位 (12 字节) | | 认证标签 | GMAC | 128 位 (16 字节) | ### 协议格式 ``` [MAGIC:4][VERSION:2][FLAGS:2][SEQ:4][LENGTH:4][IV:12][TAG:16][CIPHERTEXT] ``` - Magic number:`0x434C4157` ("CLAW") - 版本:`0x0001` (协议 v1) - 序列号:单调递增计数器(重放保护) - 自动身份验证和完整性校验 ### 会话握手 ``` Client ──TCP connect──▶ Server Client ◀──X25519 pubkey (32B)── Server Client ──X25519 pubkey (32B)──▶ Server [Both: key = SHA256(ECDH_secret || PBKDF2(password))] Client ◀──encrypted messages──▶ Server ``` 完全前向保密:即使密码后来被泄露, 以前记录的会话也无法被解密。 有关详细的加密文档,请参阅 [SECURITY.md](SECURITY.md)。 ## 对比 | 特性 | ClawSec | 原版 Cryptcat | Netcat | |---------|---------|-------------------|--------| | 加密 | AES-256-GCM | Twofish (已弃用) | 无 | | 身份验证 | GCM 标签 | 无 | 无 | | 密钥派生 | PBKDF2 | 直接密钥 | N/A | | 内存安全 | 安全擦除 否 | N/A | | 协议版本 | 是 | 否 | N/A | ## 测试 ``` # 运行集成测试套件(65 个测试) cd src make macos # or: make linux make test XFLAGS='-I/opt/homebrew/opt/openssl@3/include' XLIBS='-L/opt/homebrew/opt/openssl@3/lib -lssl -lcrypto -lstdc++' # 在 Linux 上(系统 OpenSSL): make linux && make test ``` 测试覆盖范围: - 加密/解密往返 - 多消息排序 - 随机盐值生成及唯一性 - 不同盐值 → 不同密文 - 错误密码拒绝 - 重放保护(重复数据包被拒绝) - 大消息 (8KB) - 输入验证(NULL/空密码,无效盐值) - 协议 Magic number 验证 - 完整握手模拟 - 双向通信 - 混淆(HTTP 模式发送/接收,多消息,大负载) - Host:port 解析(IPv4, IPv6, 主机名,无效输入) - Zlib 压缩/解压往返 - SHA-256 已知向量和增量哈希 - 会话指纹确定性 - 控制消息协议格式 - farm9crypt_initialized 状态跟踪 - 原始 32 字节密钥初始化 - 未初始化时的指纹错误 - write_all 完整缓冲区正确性 - TLS 伪装 接受/连接往返 - 数据包填充/去填充往返 - 不同输入的填充统一大小 - 填充拒绝超大的输入 - 时间抖动应用延迟 - 时间抖动(0) 为无操作 ``` # 手动连接测试(两个终端) # 终端 1: ./clawsec -l -p 12345 -k "TestPassword" -v # 终端 2: echo "Test message" | ./clawsec localhost 12345 -k "TestPassword" ``` ## 故障排除 ### "Encryption not initialized" 缺少 `-k` 密码选项。请始终提供密码参数。 ### "Decryption/authentication failed" 密码不匹配或数据损坏。请验证两端是否使用了完全相同的密码。 ### "Connection closed by peer" 协议版本不匹配或网络错误。请将两端更新至相同版本。 ### OpenSSL 库错误 ``` # macOS: 设置 OpenSSL 路径 export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include" export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib" make clean && make linux ``` ## 贡献 欢迎贡献。请: 1. 在提交与安全相关的更改之前,请查看 [SECURITY.md](SECURITY.md) 2. 进行彻底的测试 3. 记录所有更改 4. 遵循现有的代码风格 ## 许可证 基于 Netcat 和 Cryptcat。详情请见 [LICENSE](LICENSE)。 ## 法律声明 本工具仅用于授权测试和合法用途。 - 在测试网络之前获取许可 - 遵守所有适用的法律和法规 - 作者不对滥用或未经授权的访问负责 - 风险自负 ## 致谢 - 原版 Netcat:Hobbit - 原版 Cryptcat:Farm9 团队 - ClawSec 现代化:2025 安全增强 - OpenSSL 项目:加密库 ## 文档 - [SECURITY.md](SECURITY.md) - 详细的安全文档 - [docs/EXAMPLE_USAGE.md](docs/EXAMPLE_USAGE.md) - 使用示例 - [docs/FAQ.md](docs/FAQ.md) - 常见问题解答 - [CHANGELOG.md](CHANGELOG.md) - 版本历史 - [CONTRIBUTING.md](CONTRIBUTING.md) - 开发指南 - [OpenSSL GCM 文档](https://wiki.openssl.org/index.php/EVP_Authenticated_Encryption_and_Decryption) - [NIST SP 800-38D](https://csrc.nist.gov/publications/detail/sp/800-38d/final) - GCM 规范 - [PBKDF2 RFC 8018](https://tools.ietf.org/html/rfc8018) ## 项目结构 ``` ClawSec/ ├── src/ # Source code (C/C++) ├── tests/ # Test suite (58 tests) ├── docs/ # Documentation (FAQ, examples, man page) ├── scripts/ # Build, install, quickstart scripts ├── deploy/ # Deployment configs (systemd, k8s, Homebrew) ├── completions/ # Shell completions (bash, fish, zsh) ├── releases/ # Release archives ├── .github/workflows # CI/CD (build, CodeQL, Docker) ├── Dockerfile # Docker build └── docker-compose.yml ```
标签:AES-256-GCM, Bing搜索, BSD, ECDHE, Netcat替代品, PB级数据处理, UML, X25519, 前向保密, 加密通信, 安全运维, 安全防护, 客户端加密, 数据传输, 数据挖掘, 文件传输, 极简主义, 端到端加密, 网络信息收集, 网络安全, 网络安全, 网络工具, 请求拦截, 逆向Shell, 通信加密, 隐私保护, 隐私保护, 隧道代理