CLAWHunter:基于WiFi Pineapple Pager的OpenClaw AI网关自动化侦察与渗透工具
1. 项目概述与核心价值
如果你手头有一台Hak5的WiFi Pineapple Pager,并且对网络中的AI基础设施安全感兴趣,那么CLAWHunter这个项目绝对值得你花时间研究。简单来说,它是一个专门为Pager设备打造的“载荷套件”,核心任务是在本地网络中自动发现并识别那些暴露在外的OpenClaw AI网关实例。OpenClaw是一个开源的AI代理网关,默认情况下它只绑定在本地回环地址(127.0.0.1)上,但一旦管理员为了远程访问而修改了绑定配置,或者将其放在了反向代理后面,它就可能成为一个潜在的安全盲点。CLAWHunter就是用来定位这些“暴露”实例的利器。
这个项目的价值在于,它将一个复杂的网络侦察任务,封装成了一个在Pager上即点即用的工具。你不需要在电脑上打开终端、敲复杂的Nmap命令、再分析结果。整个过程被集成到了Pager的物理交互中:通过五个实体按键操作,配合彩色屏幕、RGB LED灯和震动马达的反馈,你就能完成从网络发现、端口扫描、指纹识别到结果浏览的全流程。更厉害的是,它还内置了一个“收割引擎”,一旦发现目标,可以直接从结果浏览器里一键启动,尝试与目标AI网关进行交互,收集系统信息、搜索内存中的敏感关键词,甚至导出会话历史。对于渗透测试人员、红队成员或是单纯对物联网/边缘AI安全感兴趣的研究者来说,这是一个将硬件优势与自动化脚本结合得非常巧妙的实战工具。
2. 项目架构与设计思路拆解
2.1 为什么选择WiFi Pineapple Pager作为平台?
CLAWHunter的设计紧密围绕Pager的硬件特性展开,这不是偶然。Pager本质上是一个运行着OpenWRT的便携式Linux设备,拥有网络接口、可编程按键、显示屏和丰富的状态指示灯。这使得它天生适合执行需要隐蔽、交互式反馈的现场侦察任务。与在笔记本电脑上运行脚本相比,Pager的优势非常明显:
- 隐蔽性:它看起来就像一个普通的寻呼机或MP3播放器,在非技术环境(如办公室、会议室)中操作不易引起怀疑。
- 交互即时性:扫描进度、发现结果通过屏幕和LED灯实时反馈,操作者无需频繁查看手机或电脑屏幕。
- 物理操作:实体按键提供了在“无头”(无图形界面)环境下进行复杂菜单选择的可能,这是纯命令行工具难以比拟的。
- 一体化部署:载荷(Payload)机制意味着工具可以预先部署好,现场只需按几个键就能启动完整攻击链。
项目的设计思路正是最大化利用这些硬件特性。例如,不同的扫描阶段(如mDNS监听、端口探测)用不同颜色的LED灯指示;发现目标时用特定频率的震动提示;所有用户交互(选择扫描模式、浏览结果)都通过UP/DOWN/B键完成。这种设计让工具的使用体验非常“嵌入式”和“特工化”,是典型的硬件黑客思维。
2.2 三合一载荷套件:应对不同场景的策略
CLAWHunter没有做成一个“万能”脚本,而是细分为三个独立的载荷变体,这体现了清晰的场景化设计思维:
- 用户载荷 (User Payload):这是功能最全的“瑞士军刀”。它提供了完整的交互式体验,包括扫描前的各种选项配置(扫描速度、目标子网、端口等)、扫描过程中的实时反馈、以及扫描后的结果浏览与收割。这是手动执行侦察任务时的首选。
- 侦察载荷 (Recon Payload):这个变体专为Pager的“侦察模式”优化。在侦察模式下,Pager会先扫描周围的Wi-Fi网络,用户选择一个目标AP后,再启动载荷。
Recon Payload会自动读取这个选定AP的SSID、BSSID和加密类型等上下文信息,然后尝试连接并在此网络内进行扫描。它省去了手动输入子网等步骤,实现了从无线网络侦察到内网主机发现的自动化衔接。 - 警报载荷 (Alert Payload):这是一个完全自动化的“看门狗”。当任何设备连接到Pager自身创建的Wi-Fi热点(AP模式)时,该载荷会自动触发。它不会进行全网段扫描,而是直接探测这个新连接客户端的IP地址。整个过程在5秒内完成,且强制静默(无声音)。一旦确认发现OpenClaw实例,它仅通过震动提示并记录日志。这适用于需要长时间、无人值守的监控场景。
这种设计允许用户根据任务性质(主动侦察、被动监控、自动化响应)选择最合适的工具,避免了单一脚本因功能堆砌而变得臃肿和难以使用。
2.3 核心指纹识别管道:七层递进验证
项目的核心技术在于其多阶段的指纹识别管道。这不仅仅是一个简单的端口扫描,而是一个逐步提升置信度的验证过程。我拆解一下这个管道,你会发现它的设计非常严谨:
- Stage 0 (mDNS监听):利用
avahi-browse进行被动监听,寻找网络中广播的_openclaw._tcp服务。这是最隐蔽的发现方式,零主动流量。如果发现,则直接标记为“已确认”,无需后续主动探测。 - Stage 1 (ARP缓存收割):在主动扫描前,先读取系统的ARP表和邻居缓存(
/proc/net/arp,ip neigh)。这些是系统近期通信过的主机,可以作为扫描的“种子”,提高效率。 - Stage 2 (主机发现):使用
arp-scan(如果已安装)或arping、ping来发现当前子网内存活的主机,构建待扫描列表。 - Stage 3 (TCP连接探测):用
nc -z快速尝试连接目标端口。如果端口关闭,则直接跳过,节省时间。 - Stage 4 (HTTP/HTTPS探测):对开放的端口发送HTTP/HTTPS请求。判断逻辑很关键:如果响应体包含
openclaw、clawd、gateway等关键词,或者在默认端口(18790)上返回401/403等认证错误,都标记为“已确认”。在其他扩展端口(如80, 443)上收到任何HTTP响应,则标记为“候选”。 - Stage 5 (WebSocket升级探测):这是高精度的一步。它发送一个标准的WebSocket升级握手请求。OpenClaw网关在认证前就会接受这个升级(返回HTTP 101)。而普通的Web服务器要么拒绝升级,要么返回其他响应。这一步的误报率极低。
- Stage 6 (Canvas路径探测):尝试访问OpenClaw特有的前端路径,如
/__openclaw__/canvas/和/__openclaw__/a2ui/。只要不是404,几乎可以100%确定是OpenClaw。 - Stage 7 (Agent状态情报):如果上述步骤确认了目标,最后会尝试访问
/agent/status接口。这个接口即使需要认证,有时也会泄露一些信息,比如正在使用的AI模型、上下文使用率、运行时间等,为后续的“收割”提供有价值的情报。
这个管道设计体现了“由宽到窄,由快到准”的原则。先用低成本、高速度的方法过滤掉大量无关目标,再对少量可疑目标进行高成本、高准确度的验证。这种分层策略在资源受限的嵌入式设备上尤为重要。
3. 部署与配置实操详解
3.1 环境准备与依赖安装
在将CLAWHunter部署到Pager之前,需要确保设备的基本环境就绪。首先,通过SSH连接到你的Pager(默认地址是pineapple.lan,用户root,密码hak5pineapple)。
第一步:更新软件源并安装核心依赖Pager的OpenWRT系统存储空间有限,分为根文件系统(很小)和内部4GB的eMMC分区。我们必须将较大的软件包安装到eMMC分区(-d mmc参数)。
# 连接到Pager后执行 opkg update opkg install -d mmc avahi-utils # 用于mDNS发现(Stage 0) opkg install -d mmc arp-scan # 用于更快的二层主机发现(Stage 2) opkg install -d mmc python3 # 用于运行harvest收割引擎注意:
opkg update需要Pager能访问互联网。如果你的Pager管理接口没有联网,需要先将其连接到有互联网的网络。python3是运行harvest.py所必需的,如果你只进行扫描不进行收割,可以不安装,但会无法使用结果浏览器中的“收割”功能。
第二步:理解Pager的载荷目录结构Pager的载荷存放在/root/payloads/目录下,并按类型(user,recon,alert)分子目录。CLAWHunter严格遵循这个结构。共享的函数库common.sh放在/root/payloads/lib/下。部署时必须保持这个结构,否则脚本会因为找不到依赖文件而失败。
3.2 一键部署与文件结构验证
最可靠的部署方式是使用rsync,它能保持完整的目录结构和文件权限。假设你的CLAWHunter项目文件夹在本地电脑上。
# 在本地电脑的终端中执行 # 确保你位于CLAWHunter项目的根目录下 rsync -av lib/ root@pineapple.lan:/root/payloads/lib/ rsync -av payloads/ root@pineapple.lan:/root/payloads/这两条命令会将lib/和payloads/目录及其所有内容同步到Pager的对应位置。完成后,在Pager上检查目录结构:
ssh root@pineapple.lan "find /root/payloads -type f -name '*.sh' -o -name '*.py' | sort"你应该看到类似以下的输出:
/root/payloads/alert/clawhunter-watchdog/payload.sh /root/payloads/lib/common.sh /root/payloads/recon/clawhunter/payload.sh /root/payloads/user/clawhunter/harvest.py /root/payloads/user/clawhunter/payload.sh关键点验证:
common.sh必须在/root/payloads/lib/。- 三个主要的
payload.sh必须分别在user/clawhunter/、recon/clawhunter/和alert/clawhunter-watchdog/目录下。 harvest.py必须在user/clawhunter/目录下,与用户载荷的payload.sh在同一目录。
3.3 可选功能:配置带外数据渗出
harvest.py模块支持将收集到的数据通过Telegram Bot或Webhook直接发送到你的服务器,实现“带外渗出”(OOB Exfiltration)。这避免了数据滞留在Pager上。配置需要在部署之前完成。
打开本地的payloads/user/clawhunter/payload.sh文件,找到顶部附近的配置区块:
# ── Out-of-band exfil config (optional — fill in before deploying) ────────── # EXFIL_BOT_TOKEN="" # Telegram bot token (from @BotFather) # EXFIL_CHAT_ID="" # Telegram chat_id to receive exfil data # EXFIL_WEBHOOK_URL="" # Alternative: HTTPS webhook URL取消注释并填写你的信息:
- Telegram Bot Token: 通过Telegram的
@BotFather创建一个新的Bot,它会给你一个token。 - Telegram Chat ID: 给你创建的Bot发送一条消息,然后访问
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates,在返回的JSON中找到message.chat.id。 - Webhook URL: 一个可以接收POST请求的HTTPS端点。
重要提醒:Pager的DuckyScript虽然支持
TEXT_PICKER命令,但它需要用五个物理按钮一个字符一个字符地输入,对于API Token或长密码来说极其不现实。因此,所有凭证都必须在部署前硬编码在脚本中。务必确保这些敏感信息不会泄露,并在使用后及时清理Pager上的脚本文件。
4. 核心功能使用与操作指南
4.1 用户载荷:全功能交互式扫描
这是最常用的模式。在Pager的图形界面中,导航到Payloads -> user -> clawhunter,按下B键执行。
扫描前配置流程: 启动后,你会经历一系列交互式提示,每个提示都有默认值(按B键接受默认或取消)。以下是每个选项的详细解读:
- 查看扫描历史?:如果之前运行过扫描并生成了日志,这里可以选择
Yes来浏览历史记录,并查看与本次扫描的差异(新增/消失的主机)。 - 静默模式?:选择
Yes将关闭所有提示音和震动反馈,适用于需要绝对安静的环境。 - 随机化MAC地址?:选择
Yes会在扫描前随机化Pager的MAC地址,扫描结束后恢复。这可以避免在目标网络的日志中留下固定的设备标识。依赖于macchanger命令,如果未安装会使用ip link命令尝试。 - 扫描配置文件:这是核心选项,决定了扫描的行为和隐蔽程度。
- GHOST:完全被动。只进行mDNS监听和ARP缓存读取,不发送任何探测包。最隐蔽,但发现能力有限。
- QUIET:安静模式。顺序探测,每个探测包之间有至少50毫秒的基础延迟,并附加0-200毫秒的随机抖动。强制开启静默模式。模拟正常用户浏览行为。
- NORMAL:普通模式。顺序探测,添加0-80毫秒的随机抖动,打破机械的计时模式。平衡了速度和隐蔽性,是默认推荐。
- FAST:快速模式。同时向3个主机发起探测(并行),抖动减少到0-25毫秒。速度提升约3倍,但网络流量特征更明显。
- AGGRESSIVE:激进模式。同时向5个主机发起探测,扫描所有端口(默认端口+扩展端口),无延迟。以速度优先,IDS告警风险最高。
- 先连接到AP?:如果选择
Yes,Pager会尝试切换到Wi-Fi客户端模式并连接到一个目标网络。注意:这需要你预先在Pager的Wi-Fi设置中保存好目标网络的密码,或者通过Recon UI选择AP(此时会自动填充SSID)。无法在载荷运行时输入密码。 - 目标子网:自动检测当前网络的子网(如
192.168.4),你也可以手动修改。它决定了扫描的IP范围(通常是.1到.254)。 - OpenClaw端口:默认是
18790,这是OpenClaw网关的默认端口。 - 高级选项?:如果选择
Yes,会展开更多端口扫描选项:- 宽端口范围?:扫描
18780-18800,而不仅仅是单个端口。 - 扩展端口?:额外扫描
80, 443, 3000, 8080, 8443这些常见的Web代理端口。 - 随机化顺序?:打乱待扫描的主机列表,增加扫描的不可预测性。
- 宽端口范围?:扫描
- 全/24扫描?:默认
Yes扫描254个主机(约90秒,NORMAL模式)。选择No则只扫描.1到.50,速度更快(约20秒)。 - mDNS驻留时间:如果安装了
avahi-utils,这里可以设置被动监听mDNS广播的时长,默认30秒。按B键可以跳过等待。
扫描过程与结果浏览: 配置完成后,扫描开始。屏幕会实时显示进度、发现的候选目标和确认目标。LED灯会以蓝色慢闪表示扫描中,发现确认目标时会快速绿色闪烁并伴随强震动。 扫描结束后,如果发现了目标,会进入结果浏览器。在这里,你可以用UP/DOWN键在发现的主机间导航。屏幕会显示目标的IP、端口、HTTP状态、检测到的模型等信息。
结果浏览器中的关键操作:
- 导航:
UP/DOWN键。 - 退出:
B或LEFT键。 - 启动收割:将光标移动到目标上,按下
RIGHT键(或除UP/DOWN/B/LEFT外的任意键)。这是触发harvest.py模块的入口。
4.2 侦察载荷:无缝衔接无线网络侦察
这个变体旨在与Pager的“侦察模式”工作流深度集成。
操作流程:
- 在Pager主界面进入Recon模式。
- 让Pager扫描周围的Wi-Fi网络,从列表中选择一个目标AP。
- 在选择AP的界面,启动Payload。此时你会看到Payloads -> recon -> clawhunter的选项。
- 启动后,载荷会自动读取三个环境变量:
_RECON_SELECTED_AP_SSID(SSID)、_RECON_SELECTED_AP_BSSID(BSSID)和_RECON_SELECTED_AP_ENCRYPTION_TYPE(加密类型)。 - 如果目标是WPA/WPA2加密网络,且Pager未保存密码,屏幕会显示提示,然后尝试连接(通常会失败)。因此,最佳实践是提前在Pager的Wi-Fi设置中保存好目标网络的密码。
- 连接成功后(或跳过连接),载荷会自动进行mDNS预扫描、ARP发现、端口扫描,并最终进入结果浏览器。
这个流程实现了从“发现无线网络”到“探测该网络内服务”的无缝自动化,非常适合物理渗透测试中快速评估一个陌生网络内部威胁的场景。
4.3 警报载荷:全自动无人值守监控
这个变体设计为“设置后不管”。将其放置在Payloads -> alert目录下,当Pager处于AP模式(创建了自己的Wi-Fi热点)时,任何设备连接上这个热点,该载荷都会自动触发。
它的工作逻辑是:
- 不进行任何交互,强制静默模式。
- 不扫描子网,直接探测新连接客户端的IP地址。
- 执行一个精简但快速的指纹识别流程(通常包括端口连接和HTTP探测)。
- 如果确认发现OpenClaw,则触发一次强震动(唯一的反馈),并将结果记录到
/root/loot/clawhunter/alert_*.log文件中。 - 整个过程在5秒内完成,然后载荷结束。
你可以把Pager伪装成一个公共Wi-Fi热点(如“Free_WiFi”),放在某个区域。当有设备(尤其是工程师的笔记本电脑)连接时,它会自动探测该设备上是否运行着暴露的OpenClaw实例。这是一种非常被动的、难以被察觉的侦察手段。
4.4 看门狗模式与历史对比
在用户载荷或侦察载荷扫描并发现目标后,会提示是否进入“看门狗模式”。如果选择Yes,你需要设置一个重新扫描的间隔(默认5分钟)。
看门狗模式的行为:
- 进入后,屏幕显示下次扫描的倒计时,LED灯呈品红色慢闪。
- 到达间隔时间后,自动重新执行一次扫描(使用之前的配置)。
- 扫描完成后,只与上一次扫描的结果进行对比。
- 如果发现有新的OpenClaw实例出现,会弹出一个“ALERT”提示框,并伴随强震动。
- 如果发现有之前存在但消失的实例,也会记录在日志的“DIFF”部分。
- 按
B键可以随时退出看门狗模式。
这个功能非常适合需要长时间监控某个网络,并希望只在状态发生变化时得到告警的场景。从v3.2.0开始,看门狗的状态(如计时器)还能在Pager重启后持久化,通过watchdog_state.json文件实现。
5. 收割引擎深度解析与实战应用
harvest.py是CLAWHunter套件中最具攻击性的部分。它不是一个简单的信息收集脚本,而是一个模拟真实用户、与OpenClaw网关进行多轮对话的AI代理会话工具。
5.1 收割引擎的三阶段工作流
当你在结果浏览器中按下RIGHT键触发收割时,引擎会按顺序执行以下三个阶段:
阶段1:认证探测
- 目标:判断目标网关的认证状态。
- 方法:尝试访问一个无需认证的端点(如
/或/agent/status),分析HTTP响应码和响应头。 - 结果分类:
- OPEN:网关完全开放,无需任何认证令牌。
- TOKEN_GATED:网关需要Bearer Token认证(通常在HTTP头
Authorization: Bearer <token>中)。 - UNREACHABLE:目标无法访问(可能已下线或网络不通)。
阶段2:HTTP信息收割
- 目标:尽可能多地收集无需认证即可访问的信息。
- 方法:系统性地请求一系列已知的OpenClaw路径:
/__openclaw__/canvas/和/__openclaw__/a2ui/:获取前端界面资源,可能包含版本信息。/agent/status:尝试获取代理状态信息(模型、上下文使用率等)。/:根路径,查看默认响应。
- 收集内容:HTTP状态码、响应头、HTML/JSON响应体。这些信息对于了解网关配置和版本非常有价值。
阶段3:多轮代理会话(仅对OPEN门户)这是核心攻击阶段。如果阶段1判断为OPEN,引擎会启动一个持久的WebSocket连接,模拟一个用户会话,并依次执行5轮“对话”(Turn)。每一轮都使用OpenClaw Agent原生的工具(Tools)来执行命令或查询信息。
| 轮次 | 标签 | 使用的Agent工具 | 超时 | 收集的信息 |
|---|---|---|---|---|
| Turn 1 | 系统枚举 | exec,Read | 60秒 | 系统信息(uname, id, hostname)、网络配置(ip addr, route)、运行进程(ps aux)、环境变量(env)、目录列表、关键配置文件(openclaw.json,secrets.json,.env)、SSH密钥、知识库文件。 |
| Turn 2 | 内存语义搜索 | memory_search | 30秒 | 在Agent的向量化记忆索引中搜索16个敏感关键词(如api_key,password,token,secret,ssh,aws等),返回匹配的文本片段及其来源。 |
| Turn 3 | 会话历史 | sessions_list,sessions_history | 30秒 | 列出所有会话ID,并获取最近5个会话中各自最后20条消息的完整内容,可能包含用户与AI的敏感对话。 |
| Turn 4 | 配对节点 | nodes(action=status, describe) | 20秒 | 枚举所有连接到该网关的设备(如手机、平板、摄像头),获取设备名称、类型、能力和最后在线时间。 |
| Turn 5 | 带外渗出(可选) | exec | 20秒 | 使用curl命令,从受害主机直接将前4轮收集的摘要数据发送到攻击者控制的Telegram Bot或Webhook。 |
关键点:Turn 5的“带外渗出”是整个链条的亮点。数据流是受害主机 -> 互联网 -> 攻击者服务器,完全绕开了作为攻击跳板的Pager设备。这极大地增加了隐蔽性,即使Pager被查获,攻击者早已拿到数据。
5.2 针对TOKEN_GATED门户的有限收割
如果目标需要Token认证,收割引擎不会尝试进行多轮会话(因为无法认证)。但它仍然会执行阶段2的HTTP信息收割。有时,即使返回401/403,响应头或错误的HTML页面中也可能泄露版本号、服务器类型等信息,这些对于后续的漏洞利用可能有帮助。
5.3 实战注意事项与技巧
- 会话超时与稳定性:多轮会话总共有一个3分钟的全局超时限制,每轮也有独立超时。OpenClaw网关有时响应较慢,特别是执行
exec命令时。如果收割中途卡住,检查/root/loot/clawhunter/harvest_*.log日志文件,通常能看到在哪一轮超时或出错了。 - 环境变量的金矿:Turn 1中收集的
env信息至关重要。开发人员经常将API密钥、数据库密码等敏感信息注入环境变量。harvest.py会专门对env的输出进行排序和提取,这是获取高价值凭证的最主要途径之一。 - 内存搜索的精度:
memory_search工具依赖于目标OpenClaw实例是否为其AI模型启用了记忆功能以及记忆索引的质量。如果目标配置中记忆功能未开启或索引不完整,可能搜不到内容。但一旦搜到,其精准度很高,因为它是基于语义的。 - 带外渗出的配置:务必在部署前正确配置
EXFIL_BOT_TOKEN和EXFIL_CHAT_ID或EXFIL_WEBHOOK_URL。并确保Pager在运行收割时,受害主机能够访问互联网(以将数据发送到你的服务器)。如果网络隔离严格,带外渗出会失败。 - 日志分析:所有的收割结果,无论成功与否,都会生成详细的日志文件。除了人类可读的
.log文件,还有结构化的.json文件,便于你用脚本进行后续分析和关联。
6. 故障排除与常见问题实录
在实际使用CLAWHunter的过程中,你可能会遇到一些问题。以下是我在测试中遇到的一些典型情况及其解决方法。
6.1 部署与依赖问题
问题:运行载荷时立即报错lib/common.sh: not found
- 原因:共享库文件路径不对。每个
payload.sh脚本都是通过相对路径../../lib/common.sh来引用库的。如果目录结构不符合预期,就会找不到。 - 解决:严格按照 3.2 一键部署与文件结构验证 中的步骤,使用
rsync命令部署,并验证最终的文件路径。绝对不要手动移动文件。
问题:opkg update失败,提示无法连接仓库
- 原因:Pager设备本身没有连接到互联网。
opkg需要网络来下载软件包。 - 解决:将Pager通过USB连接到电脑,并使用“RNDIS/Ethernet Gadget”模式,或者让Pager连接到一个可以上网的Wi-Fi。确保Pager的
eth0或wlan0接口有通往互联网的路由。
问题:harvest.py模块启动失败,提示python3: not found
- 原因:没有安装Python3,或者安装到了错误的路径。
- 解决:执行
opkg install -d mmc python3。-d mmc参数是关键,它确保Python3被安装到4GB的eMMC存储中,而不是很小的根文件系统里。
6.2 扫描与发现问题
问题:扫描了很久,但一个目标都没找到,而我确定网络里有OpenClaw。
- 原因1(最常见):OpenClaw默认绑定在
127.0.0.1。CLAWHunter只能发现绑定在局域网IP(如192.168.1.100)或通过反向代理暴露的实例。 - 排查:在运行OpenClaw的主机上,检查其配置文件(通常是
~/.openclaw/openclaw.json)中的gateway.bind设置。如果不是0.0.0.0或具体的局域网IP,则无法被网络扫描发现。 - 原因2:目标使用了非标准端口,而扫描配置中没有包含。
- 解决:在用户载荷的“高级选项”中,启用“宽端口范围”(
18780-18800)和“扩展端口”(80,443等)。 - 原因3:网络中存在防火墙,阻止了到目标端口的探测。
- 解决:尝试使用
GHOST或QUIET配置文件,并结合mDNS监听。如果mDNS能发现,则说明服务存在但端口被过滤。
问题:mDNS监听阶段(Stage 0)什么都没发现,而且等待时间很长。
- 原因:
avahi-browse工具未安装。 - 解决:安装它:
opkg install -d mmc avahi-utils。或者,在mDNS倒计时出现时,直接按B键跳过此阶段。
问题:MAC地址随机化好像没起作用,在目标网络设备上看到的还是Pager的真实MAC。
- 原因:Pager可能没有安装
macchanger,且ip link set命令可能因驱动或权限问题失败。 - 解决:尝试安装
macchanger:opkg install -d mmc macchanger。即使失败,扫描也会继续,但会在日志中记录警告。对于需要高度隐蔽的任务,可以考虑在运行载荷前,手动通过Pager的系统设置更改MAC地址。
6.3 收割引擎问题
问题:触发收割后,屏幕卡住很久,最后什么也没发生。
- 原因:与目标网关的WebSocket连接可能超时或中断。多轮会话的全局超时是3分钟。
- 排查:
- 查看最新的
/root/loot/clawhunter/harvest_<IP>_<TIMESTAMP>.log文件,看收割进行到了哪一步。 - 检查目标OpenClaw网关的日志,看是否收到了请求以及为何没有响应。
- 网络延迟或网关性能差可能导致单轮超时。可以尝试修改
harvest.py中的TURN_TIMEOUT变量(但需重新部署)。
- 查看最新的
- 临时解决:如果只是需要快速确认网关是否开放,可以关注阶段1和2的结果,它们通常较快。
问题:收割日志显示“Token-gated portal”,只进行了HTTP收割。
- 原因:这是预期行为。收割引擎检测到目标需要认证令牌,因此跳过了需要认证的多轮会话阶段(阶段3)。
- 后续操作:检查HTTP收割阶段获取的日志,看是否有泄露的版本信息或配置线索。要利用TOKEN_GATED门户,你需要获得有效的Bearer Token,这通常需要通过其他途径(如社会工程、漏洞利用、配置错误等)。
问题:带外渗出(OOB Exfil)失败了,但收割其他部分成功。
- 原因1:Telegram Bot Token或Chat ID配置错误,或者Webhook URL不可达。
- 解决:仔细检查
payload.sh中的配置。对于Telegram,可以用curl手动测试API。对于Webhook,确保它是HTTPS且能处理POST请求。 - 原因2:受害主机没有出网流量,无法连接到互联网上的你的服务器。
- 解决:带外渗出依赖受害主机的网络连通性。如果目标网络严格隔离,此功能将无法使用。此时,数据仍会保存在Pager的日志文件中,需要你事后手动提取。
6.4 硬件与交互问题
问题:屏幕显示乱码或卡在某个界面。
- 原因:Payload脚本可能因为某个命令出错而意外终止,但屏幕刷新逻辑被打乱。
- 解决:长按Pager的电源键强制重启。然后检查
/root/loot/clawhunter/目录下最新的扫描日志,看错误信息是什么。常见原因是缺少依赖或网络接口异常。
问题:我想在侦察模式下使用,但连接目标Wi-Fi总是失败。
- 原因:
Recon Payload依赖于Pager已保存的Wi-Fi密码。如果在Recon UI中选择了一个加密AP,但Pager从未连接过它(即未保存密码),连接尝试就会失败。 - 最佳实践:在执行侦察任务前,先通过Pager的图形界面(Settings -> WiFi)手动扫描并连接一次目标网络,输入密码并成功连接。这样密码就会被保存。之后,在Recon模式中选择该AP并启动Payload,就能自动连接了。
通过以上详细的拆解和问题排查指南,你应该能够充分理解并有效运用CLAWHunter这个强大的工具。记住,它的力量在于将复杂的网络攻击链简化为了几个按键操作,但真正的成效取决于你对目标网络的理解和临场的应变能力。始终在授权的环境中进行测试,并遵守相关的法律法规。
