doublegate/CLAWHunter

GitHub: doublegate/CLAWHunter

专为 Hak5 WiFi Pineapple Pager 设计的 OpenClaw AI 网关发现套件,集成多层指纹识别、规避扫描和后渗透数据收集能力。

Stars: 1 | Forks: 0

# ✦ CLAWHunter 一款用于在本地网络发现 [OpenClaw](https://docs.openclaw.ai) AI 网关实例的 [Hak5 WiFi Pineapple Pager](https://docs.hak5.org/wifi-pineapple-pager/) payload **套件**。包含三种 payload 变体 —— 交互式、侦察触发式和警报触发式 —— 共享通用的指纹识别库。完整的硬件集成:彩色显示屏、RGB LED、触觉反馈、音频提示以及交互式结果浏览器。 ![平台](https://img.shields.io/badge/platform-Hak5%20WiFi%20Pineapple%20Pager-red) ![语言](https://img.shields.io/badge/script-Bash-yellow) ![类别](https://img.shields.io/badge/category-Reconnaissance-blue) ![版本](https://img.shields.io/badge/version-3.0.3-green) ## v3.0.3 更新内容 | 变更 | 详情 | |--------|--------| | **时间抖动** | 每个扫描配置文件现在应用随机的探测间延迟(基数 + 抖动)。打破了有状态 IDS 引擎所依赖的节拍式时间特征。与现有的随机主机顺序(功能 4)协同工作,形成双轴规避策略:*扫描对象*被打乱,*探测时间*被抖动。 | | **移除无用导入** | `hashlib` 在 `harvest.py` 中被导入但从未调用。已移除。 | ### 各配置文件的抖动值 | 配置文件 | 基础延迟 | 最大抖动 | 总最大值 | 意图 | |---------|-----------|-----------|-----------|--------| | GHOST | 0 ms | 0 ms | 0 ms | 仅被动 — 无探测 | | QUIET | 50 ms | 200 ms | 250 ms | 模拟人工浏览节奏;极低的 IDS 特征 | | NORMAL | 0 ms | 80 ms | 80 ms | 在不减慢扫描速度的情况下打破节拍式时间特征 | | FAST | 0 ms | 25 ms | 25 ms | 最小化 — 足以避免精确间隔检测 | | AGGRESSIVE | 0 ms | 0 ms | 0 ms | 速度优先;接受 IDS 风险 | 抖动使用 `$RANDOM % (max+1)` — bash 内置,无需外部工具。 ## v3.0.0 更新内容 | # | 功能 | 描述 | |---|---------|-------------| | A1 | **WebSocket 探测** | 通过 `/dev/tcp` 进行原始 WS 升级 — 协议层确认(约 99% 准确率) | | A2 | **Canvas 路径探测** | `/__openclaw__/canvas/` + `/__openclaw__/a2ui/` — OpenClaw 独有的 HTTP 路径 | | A3 | **`/agent/status` 情报** | 提取模型、上下文使用率%、活动工具调用数、子代理数、运行时间 | | B1 | **Recon payload 变体** | RF 优先:读取 Recon 上下文变量,连接,扫描 — 无需选择器 | | B2 | **Alert payload 变体** | 客户端连接时自动触发 — 单主机探测,<5s,静默 | | C1 | **持续 mDNS 监控** | 定时 mDNS 循环,带倒计时(可配置驻留时间,默认 30s) | | C2 | **ARP 缓存收集** | 在 ARP 扫描前检查 `/proc/net/arp` + `ip neigh` — 跳过已知主机的发现 | | D1 | **JSON 报告输出** | 结构化的 `scan_YYYYMMDD_HHMMSS.json` 与 `.log` 文件并存 | | E1 | **MAC 随机化** | 随机化扫描器 MAC(macchanger 或 ip link),退出时恢复 | | F4 | **扫描速度配置** | GHOST / QUIET / NORMAL / FAST / AGGRESSIVE — 取代二元的快/慢模式 | | F5 | **Watchdog 模式** | 周期性重扫,间隔可配置,仅在变更时发出警报 | ## v2.1.0 功能(全部保留) | # | 功能 | 描述 | |---|---------|-------------| | 1 | **静默模式** | 抑制所有音频和触觉反馈,用于隐蔽操作 | | 2 | **进度计数器** | 旋转图标中实时显示 `%` 并跟踪主机索引(`n/总数`) | | 3 | **ARP 主机发现** | 通过 `arp-scan` → `arping` → ping 回退进行二层主机检测 | | 4 | **随机扫描顺序** | 打乱主机列表以降低 IDS/IPS 检测特征 | | 5 | **HTTPS 探测** | 对每个开放端口依次尝试 `http://` 和 `https://` 以发现 TLS 封装的网关 | | 6 | **扩展端口** | 可选扫描 80, 443, 3000, 8080, 8443(反向代理检测) | | 7 | **mDNS 预扫描** | `avahi-browse` 零探测发现(现已在 user payload 中变为持续模式) | | 8 | **深度指纹识别** | 从 `/health`, `/status` 等路径提取版本、角色设定、服务器头信息 | | 9 | **WiFi 客户端模式** | 通过 Recon 或手动 SSID/password 连接目标 AP,自动扫描 | | 10 | **多子网扫描** | 每次扫描后,循环扫描另一个子网,无需重启 | | 11 | **跨运行历史/差异** | 浏览所有过往发现;对比新增与消失的实例及先前运行记录 | ## 仓库结构 ``` CLAWHunter/ ├── lib/ │ └── common.sh ← Shared library (LED, audio, probing, fingerprinting) ├── payloads/ │ ├── user/clawhunter/ │ │ └── payload.sh ← Interactive payload (all features, Pager UI) │ ├── recon/clawhunter/ │ │ └── payload.sh ← Recon variant (RF-first, auto-connect) │ └── alert/clawhunter-watchdog/ │ └── payload.sh ← Alert variant (auto-fires, <5s, silent) ├── payload.sh ← Legacy v2.1.0 (kept for reference) └── README.md ``` ## 使用的硬件功能 | 硬件 | 用途 | |----------|-------| | **480×222 px 16-bit 彩色显示屏** | 彩色编码的日志输出、交互式选择器、ALERT 弹窗、结果浏览器、历史浏览器、mDNS 倒计时 | | **RGB LED 阵列(4 颗 LED)** | 蓝色脉冲 = 扫描中,快速绿色 = 已确认,交替闪烁 = 候选,青色 = mDNS/被动,白色 = WiFi 连接中,洋红色 = watchdog 休眠,红色 = 错误 | | **触觉(振动)** | 候选时轻振(150ms),mDNS/WiFi 时中振(300ms),确认时强振(500ms);alert 变体仅使用振动(强制静默) | | **音频(RINGTONE / RTTTL)** | 启动、发现、mDNS 发现、候选 ping、完成(有/无)、中止、WiFi 已连接、watchdog 警报 — 静默模式下全部抑制 | | **5 键导航** | UP/DOWN 用于选择器和配置选择;B 键中止扫描、退出浏览器、退出 watchdog | ## Payload 变体 ### User payload — `payloads/user/clawhunter/` 完整的交互式体验。从 Pager UI 中的 **Payloads → user → clawhunter** 启动。包含所有 11 项 v2.1.0 功能及所有 v3.0.0 功能。这是手动现场操作的主要 payload。 ### Recon payload — `payloads/recon/clawhunter/` RF 优先工作流。在 **Recon UI** 中选择目标 AP 后启动。自动读取 `_RECON_SELECTED_AP_*` 上下文变量 —— 无需手动选择子网或端口。仅在 AP 加密时提示输入密码。连接、扫描、显示结果、断开。 **流程:** Recon UI 选择 AP → payload 启动 → 读取 AP 上下文 → 密码提示(如果是 WPA) → 连接 → 一次性 mDNS 预扫描 → ARP 发现 → 端口扫描 → 结果 → 断开 ### Alert payload — `payloads/alert/clawhunter-watchdog/` 零交互自动触发。当客户端连接到 Pager 的 AP 时触发。探测连接客户端的 IP 是否具有 OpenClaw 特征 —— 不进行子网扫描。在 <5 秒内完成。默认静默。发现确认时振动。日志记录到 `/root/loot/clawhunter/alert_YYYYMMDD_HHMMSS.log`。 ## 部署 ### lib/ 目录(所有变体必需) ``` # 复制共享库到 Pager scp -r lib root@pineapple.lan:/root/payloads/ # Pager 上的结果: # /root/payloads/lib/common.sh ``` ### User payload ``` ssh root@pineapple.lan "mkdir -p /root/payloads/user/clawhunter" scp payloads/user/clawhunter/payload.sh \ root@pineapple.lan:/root/payloads/user/clawhunter/payload.sh ``` ### Recon payload ``` ssh root@pineapple.lan "mkdir -p /root/payloads/recon/clawhunter" scp payloads/recon/clawhunter/payload.sh \ root@pineapple.lan:/root/payloads/recon/clawhunter/payload.sh ``` ### Alert payload ``` ssh root@pineapple.lan "mkdir -p /root/payloads/alert/clawhunter-watchdog" scp payloads/alert/clawhunter-watchdog/payload.sh \ root@pineapple.lan:/root/payloads/alert/clawhunter-watchdog/payload.sh ``` ### 一次性全部部署 ``` scp -r lib payloads root@pineapple.lan:/root/payloads/ ``` **部署后 Pager 上的目录结构:** ``` /root/payloads/ ├── lib/ │ └── common.sh ├── user/clawhunter/payload.sh ├── recon/clawhunter/payload.sh └── alert/clawhunter-watchdog/payload.sh ``` ## 使用方法 — User payload 从 Pager UI 中的 **Payloads → user → clawhunter** 启动。 | 提示 | 默认值 | 描述 | |--------|---------|-------------| | 查看扫描历史? | No | 浏览所有扫描日志中的过往发现 | | 静默模式? | No | 抑制所有音频和振动 | | 随机化 MAC? | No | 随机化扫描器 MAC,退出时恢复 (E1) | | 扫描配置文件 | NORMAL | GHOST / QUIET / NORMAL / FAST / AGGRESSIVE (F4) | | 先连接 AP? | No | WiFi 客户端模式 — 扫描前连接 | | 目标子网 | 自动检测 | 前三个八位组(例如 `192.168.4`) | | OpenClaw 端口 | `18790` | 主要目标端口 | | 高级选项? | No | 进入端口范围、扩展端口、随机化设置 | | → 宽端口范围? | No | 扫描 `18780–18800` 而非单个端口 | | → 扩展端口? | No | 同时探测 80, 443, 3000, 8080, 8443 | | → 随机化顺序? | No | 打乱主机列表 | | 完整 /24 扫描? | Yes | 254 台主机(约 90s)或快速扫描 `.1–.50`(约 20s) | | mDNS 驻留时间 (秒) | 30 | 端口扫描前的持续 mDNS 监控时长 | | Watchdog 模式? | No | 扫描后:周期性重扫并在变更时发出警报 (F5) | | → 重扫间隔 (分钟) | 5 | watchdog 重扫之间的分钟数 | ## 扫描速度配置 (F4) | 配置文件 | 行为 | 抖动 (基数 + 抖动) | 备注 | |---------|----------|----------------------|-------| | **GHOST** | 仅被动 — mDNS 监控 + ARP 缓存收集,无端口探测 | 无 | 零主动流量 | | **QUIET** | 顺序探测,50ms 下限,强制静默 | 50ms + 0–200ms | 模拟人工浏览节奏 | | **NORMAL** | 顺序探测,默认行为 | 0ms + 0–80ms | 打破节拍式时间特征 | | **FAST** | 并行探测(一次 3 台主机) | 0ms + 0–25ms | 最小抖动,约 3 倍吞吐量 | | **AGGRESSIVE** | 所有端口 + 扩展端口,5 个并行探测 | 无 | 速度优先,接受 IDS 风险 | ## 控制 | 按键 | 上下文 | 动作 | |--------|---------|--------| | UP/DOWN | 选择器,配置选择器 | 调整值 / 更改选择 | | B | 配置选择器 | 确认选择 | | B | 任何选择器 | 取消 | | B | 扫描期间 | 干净地中止扫描 | | B | mDNS 倒计时 | 提前中止 mDNS 监控 | | UP/DOWN | 结果浏览器 | 导航发现的主机 | | RIGHT(或任何未处理的键) | 结果浏览器 | 对当前发现启动 harvest | | B 或 LEFT | 结果浏览器 | 退出浏览器 | | UP/DOWN | 历史浏览器 | 导航过往发现 | | B 或 LEFT | 历史浏览器 | 退出浏览器 | | B | Watchdog 倒计时 | 退出 watchdog 模式 | | 任意 | ALERT 弹窗 | 关闭并继续扫描 | | 任意 | 最终 PROMPT | 退出 payload | ## OpenClaw 指纹识别 (v3.0.0) ### 阶段 0 — mDNS 监控 (C1) 在可配置的驻留期(默认 30s)内持续运行 `avahi-browse`。显示屏上可见倒计时。LED 呈青色脉冲。任何匹配 `openclaw` 或 `clawd` 的服务记录 = 确认发现,在端口扫描前添加。 ### 阶段 1 — TCP 连接 通过 `nc -z -w 1` 快速过滤关闭的端口。 ### 阶段 2 — HTTP/HTTPS 探测 (功能 5+6) 带 3s 超时的 `curl`。依次尝试 `http://` 和 `://`。确认条件:主体包含 `openclaw|clawd|gateway` 关键词,或在主要目标端口上返回 HTTP 400/401/403。 ### 阶段 3 — 协议层确认 (A1) 通过 `/dev/tcp` 进行 WebSocket 升级: ``` GET / HTTP/1.1 Upgrade: websocket Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== ``` 有效的 OpenClaw 网关会接受 WS 升级 (HTTP 101)。检测置信度:**约 99%**。 ### 阶段 4 — Canvas 路径探测 (A2) `GET /__openclaw__/canvas/` 和 `GET /__openclaw__/a2ui/`。这些路径是 OpenClaw 独有的。任何非 404 的 HTTP 响应 = 几乎确定的确认。 ### 阶段 5 — `/agent/status` 情报 (A3) `GET /agent/status?session=agent:main:main`。如果端点存活,则提取: - 使用中的模型(例如 `anthropic/claude-opus-4-6`) - 上下文使用百分比 - 活动工具调用计数 - 子代理计数 - 网关运行时间戳 ## Harvest 模块 (v3.0.2) 集成的后渗透模块可直接从 **Results Browser** 中针对已确认的 OpenClaw 发现触发。无需调用单独的工具。 ### 它的功能 针对已确认目标的三阶段收集: | 阶段 | 名称 | 功能 | |-------|------|--------------| | 1 | **认证探测** | WebSocket 连接尝试 — 将目标分类为 OPEN, TOKEN_GATED, 或 UNREACHABLE | | 2 | **HTTP 收集** | 探测 `/__openclaw__/canvas/`, `/__openclaw__/a2ui/`, `/agent/status`, 和 `/` — 记录状态码、头信息和主体内容 | | 3 | **Agent 利用** | 仅限 OPEN 门户 — 通过 WebSocket 发送 15 条 agent 命令以窃取环境变量、内存、SSH 密钥、凭据、配置文件和系统信息 | ### 要求 Pager 上必须安装 Python3: ``` opkg install -d mmc python3 ``` harvest.py 仅使用 stdlib — 无需 pip,无需第三方包。 ### 如何触发 1. 运行 CLAWHunter 直到确认的 OpenClaw 实例出现在 Results Browser 中 2. 使用 **UP/DOWN** 导航至目标 3. 按 **RIGHT**(或除 UP/DOWN/B/LEFT 以外的任意键)启动 harvest harvest 期间的显示: ``` Find 1/1 ← green 192.168.4.100 ← green port: 18790 ← blue http:// | HTTP 401 | ... UP/DOWN=nav B=done >=harvest ``` ### 它收集的内容 **在 OPEN 门户上(无需 token):** - 完整环境转储 (`env | sort`) — 包括 `ANTHROPIC_API_KEY` 和其他机密 - `~/clawd/MEMORY.md`, `USER.md`, `SOUL.md`, `IDENTITY.md` — 角色设定和知识文件 - `~/.openclaw/secrets.json` — 所有网关凭据 - `~/.openclaw/credentials/` — 所有凭据 JSON 文件 - `~/.ssh/id_rsa`, `id_ed25519`, `id_ecdsa` — SSH 私钥 - `~/.openclaw/.env` 和 `openclaw.json` — 配置和机密 - `~/clawd/HEARTBEAT.md`, `TOOLS.md` — 运行上下文 - `whoami`, `id`, `hostname`, `uname -a` — 系统身份 - 主目录列表 **在 TOKEN_GATED 门户上:** - 仅 HTTP 收集(canvas, a2ui, agent/status, 根路径) - 没有有效 token 则不进行 agent 利用 ### 日志位置 ``` /root/loot/clawhunter/harvest__.log ``` ### 退出代码 | 代码 | 含义 | |------|---------| | 0 | 收集完成 — 已收集 agent 数据 | | 1 | Token 限制 — 仅 HTTP 收集,无 agent 访问权限 | | 2 | 不可达 — 目标已离线 | | 3 | 错误 — 意外失败(请检查日志) | ## 显示行为 **扫描期间:** ``` ✦ CLAWHunter v3.0.0 ← blue OpenClaw Discovery Suite mDNS monitoring (30s)... ← cyan (C1 countdown) mDNS: 25s remaining... Checking ARP cache... ← blue (C2) Cache: 3 host(s) pre-known Discovering hosts... ← blue Live hosts: 47 12% — 192.168.4.6 (6/47) ← blue ✦ FOUND: 192.168.4.100:18790 (http) ← green HTTP 401 — token-gated gateway Model: claude-opus-4-6 | Ctx: 44% ← (A3 intel) ``` **配置选择器:** ``` Profile: FAST ← green Parallel probes (3 at a time) UP/DOWN=change B=confirm ``` **Watchdog 休眠:** ``` Watchdog: next scan in 240s ← magenta LED pulsing B to exit watchdog ``` ## LED 状态 | 状态 | 模式 | 颜色 | |-------|---------|-------| | 扫描中 | 慢脉冲 (600ms / 400ms) | 蓝色 | | 候选端口开放 | 交替 250ms | 蓝 ↔ 绿 | | 已确认 OpenClaw | 快速闪烁 (120ms) | 绿色 | | mDNS 命中 | 青色双闪(前 2 颗 LED) | 青色 | | 被动 mDNS 监控 | 慢脉冲 (800ms / 600ms) | 青色 | | WiFi 连接中 | 慢脉冲 (500ms / 300ms) | 白色 | | Watchdog 休眠 | 慢脉冲 (1000ms / 800ms) | 洋红色 | | 错误 / 中止 | 常亮 5s | 红色 | | 完成 — 有发现 | 慢脉冲 (700ms / 500ms) | 绿色 | | 完成 — 无发现 | 慢脉冲 (700ms / 500ms) | 蓝色 | | 退出中 | 关闭 | — | ## 端口参考 | 端口 | 描述 | |------|-------------| | `18790` | OpenClaw 网关默认端口(agent 端口) | | `18789` | OpenClaw 控制平面(WebSocket 探测目标) | | `18780–18800` | 宽范围(非默认配置) | | `80, 443` | 常见反向代理端口 | | `3000, 8080, 8443` | 常见开发/备用代理端口 | ## 日志输出 ### 文本日志 (`.log`) — 保留 v2.1.0 格式 ``` /root/loot/clawhunter/scan_YYYYMMDD_HHMMSS.log /root/loot/clawhunter/alert_YYYYMMDD_HHMMSS.log ← alert variant ``` 示例: ``` ================================================== CLAWHunter v3.0.0 — OpenClaw Discovery Hak5 WiFi Pineapple Pager ================================================== Scan ID : 20260307_143512 Date/Time : Sat Mar 7 14:35:12 UTC 2026 Scanner IP : 192.168.4.150 Subnet : 192.168.4.1-254 Port(s) : 18790 Wide range : NO Extended ports : NO Randomized : NO Silent mode : NO Scan profile : NORMAL MAC randomized : YES ARP available : YES avahi available: YES ================================================== ── mDNS MONITOR (30s) ── [MDNS] 192.168.4.100 via mDNS | record: ... ── PORT SCAN ── [14:35:42] C2: ARP cache harvest: 3 host(s) [14:35:44] Probing: 192.168.4.100 (12/47, 25%) [FOUND] 192.168.4.100:18790 | http | HTTP 401 | HTTP 401 — token-gated gateway [14:35:44] A1: WebSocket upgrade accepted — protocol-layer confirmed [14:35:44] A2: canvas path HTTP 200 — OpenClaw-unique path confirmed [14:35:45] A3: model=anthropic/claude-opus-4-6 ctx=44.5% tools=2 subagents=1 [14:35:45] Detail: Version: 2026.3.2 | Persona: Undertow | Model: anthropic/claude-opus-4-6 | Ctx: 44.5% ── DIFF vs PREVIOUS SCANS ── New instances : 1 Gone instances: 0 ================================================== SUMMARY Hosts scanned : 47 OpenClaw found : 1 Elapsed : 95s Status : COMPLETE DISCOVERED INSTANCES: ✦ 192.168.4.100:18790 ================================================== Log : /root/loot/clawhunter/scan_20260307_143512.log JSON: /root/loot/clawhunter/scan_20260307_143512.json ================================================== ``` ### JSON 报告 (`.json`) — v3.0.0 新增 (D1) ``` { "scan_id": "20260307_143512", "payload_version": "3.0.0", "subnet": "192.168.4.1-254", "hosts_scanned": 47, "elapsed_seconds": 95, "timestamp": "2026-03-07T14:37:47Z", "instances": [ { "ip": "192.168.4.100", "port": "18790", "detail": "http:// | HTTP 401 — token-gated gateway | Version: 2026.3.2 | Persona: Undertow | Model: anthropic/claude-opus-4-6 | Ctx: 44.5% | Canvas: confirmed | WS: confirmed", "fingerprint": { "version": "2026.3.2", "persona": "Undertow", "model": "anthropic/claude-opus-4-6", "context_percent": "44.5%", "canvas_confirmed": true, "websocket_confirmed": true } } ] } ``` ## 许可证 MIT — 详见 [LICENSE](LICENSE)
标签:AI网关, C2日志可视化, Hak5, OpenClaw, WebSocket, WiFi Pineapple, 依赖分析, 侧信道检测, 密码管理, 局域网扫描, 应用安全, 指纹识别, 插件系统, 时间抖动, 物联网安全, 硬件植入, 网络安全, 规避检测, 隐私保护