Bettercap局域网嗅探实战技术"

admin 2026-10-15 15:43:45 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

Bettercap 局域网嗅探实战技术

原创

钟智强
钟智强

哪吒网络安全

2026年10月13日 11:41
马来西亚

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

控制台模块体系 · Wi-Fi 中间人嗅探 · BLE 侦察

环境:macOS(Darwin 25.1.0)· bettercap v2.41.0(darwin\_arm64, go1.23.5) 网段:192.168.3.0/24 · 网关:192.168.3.1 · 记录日期:2026-10-13 仅限授权实验环境使用,严禁对他人网络实施。

1. Bettercap 是什么

一句话定义:Bettercap 是用 Go 语言编写的跨平台网络攻击与侦察框架,常被称作「瑞士军刀」式的中间人(Man-in-the-Middle, MitM)测试工具。它把 ARP/DNS 欺骗、流量代理与改写、无线(Wi-Fi/蓝牙)侦察、服务发现等能力全部封装成可独立开关的「模块」,通过一个统一的交互式控制台(或 gRPC/REST API、Web UI)编排调用。

与老一代工具(Ettercap、dsniff 等)相比,Bettercap 的三个工程化优势:

·模块化:每个能力是独立 goroutine 中的模块,on/off 即启停,互不阻塞,状态由 help / active 一条命令全览。

·可编程:内置 caplet 脚本引擎(类似 msfconsole 的 rc 文件),include xxx.cap 可一键复现整套攻击链;set/get 变量系统贯穿所有模块。

·事件驱动:events.stream 模块(默认运行)把发现、嗅探、欺骗产生的所有事件统一成事件流,可被 api.rest 转成 WebSocket 推给 Web UI,也可被 caplet 以 on 语句订阅。

本笔记基于一次真实终端会话(macOS 上 sudo bettercap 启动 v2.41.0),完整复现「开局 help 检查 → 打开嗅探/侦察 → net.show 枚举 → arp.spoof 定向投毒 → 收包验证」的局域网嗅探链路,并附 BLE 侦察入口说明。

2. 控制台与模块体系:命令即模块

Bettercap 交互界面里「能敲的东西」分两层:全局命令与模块。这是理解本工具的关键心智模型——help 不带参数时列出的每一行「xxx > not running / running」都是一个模块,模块名本身就是命令的动词前缀。

2.1 全局命令层

全局命令 作用 备注
help [MODULE] 不带参数列出全部模块及运行状态;带模块名输出该模块专属子命令 开工第一步
active 只显示当前 running 的模块 比 help 更聚焦
set NAME VALUE 设置模块参数变量 如 set arp.spoof.targets
get NAME 读取变量值,支持 \ 与 NAME\ 通配 排查配置用
MODULE on / off 启动/停止模块(模块通用子命令) 核心开关
sleep SECONDS 脚本中暂停 caplet 用
include CAPLET 加载并执行 .cap 脚本 自动化
! COMMAND 在会话内执行 shell 命令 如 ! ifconfig
alias MAC NAME 给设备 MAC 起别名 net.show 可读性
quit / clear 退出 / 清屏 —

2.2 模块分类速览(对应本次 help 输出)

本次启动后 help 共列出 31 个模块,除 events.stream 外全部 not running。按用途归类如下,本笔记重点讲侦察类与欺骗类,BLE 与 Wi-Fi 射频类见第 4、5 节。

类别 模块 一句话职责
侦察 net.recon 邻居发现与端点跟踪,所有网络模块的地基
侦察 net.sniff 被动抓包:DNS/mDNS/ARP/HTTP 等协议解析上报
侦察 net.probe 主动探测(ARP/DNS/mDNS),加速发现沉默主机
侦察 zeroconf mDNS/Bonjour 服务发现,解析 \_airplay.\_tcp 这类服务记录
侦察 api.rest REST + WebSocket 接口,Web UI 的后端
欺骗 arp.spoof ARP 投毒,把目标流量牵引到本机(本笔记主角)
欺骗 dns.spooof 伪造 DNS 应答,域名劫持
欺骗 dhcp6.spooof / ndp.spooof IPv6 侧对应物
欺骗 mac.changer 修改本机网卡 MAC
代理 http.proxy / https.proxy Strangler 框架:承接并改写 HTTP(S) 流量
代理 tcp.proxy / udp.proxy / packet.proxy 任意协议转发改写
无线 wifi 802.11 帧操作:扫描、deauth 等(需监听注入网卡)
无线 ble.recon 低功耗蓝牙设备扫描与事件订阅
服务端 http.server / mysql.server 伪服务承接被劫持的流量
其他 caplets / events.stream / ui / c2 / gps / hid / can / wol / ticker / update / graph / syn.scan 脚本库、事件流、图形界面、车载、唤醒等

2.3 开局状态检查:help(截图实证)

sudo bettercap 启动后,提示符显示当前网关与本机 IP(192.168.3.0/24 > 192.168.3.1)。敲 help,可见 arp.spoof、net.probe、net.recon、net.sniff、ble.recon、wifi 全部 not running——这就是嗅探前必须先解决的「三盏没点的灯」。

3. 本地 Wi-Fi 局域网嗅探全流程

本节为笔记核心。局域网嗅探的本质:Wi-Fi 交换机环境下本机默认收不到别人的流量,必须先用 arp.spoof 把目标流量「牵引」到本机,再用 net.sniff 收包解析。完整链路八步,先看流程图。

3.1 第一步:打开感知模块

net.sniff 负责收包解析,net.recon 负责维护邻居表(谁在线、IP/MAC 对应关系)。两者必须先于一切欺骗动作启动:

net.sniff on
net.recon on

此时 events.stream 会把 recon 的端点事件持续打到日志。注意:单独开 net.sniff 只能看到广播/组播和发给本机的包,看不到单播的他人流量——那是下一步 arp.spoof 的工作。

3.2 第二步:net.show 枚举邻居,确定目标 IP

net.show 以表格列出 net.recon 发现的所有端点:IP、MAC、Name(主机名)、Vendor(OUI 厂商)、Sent/Recvd(字节数)、Seen(最后可见时间)。本次实验网段内先只发现网关一台:

192.168.3.0/24 > 192.168.3.1 > net.show
IP            MAC                Name     Vendor  Sent  Recvd  Seen
192.168.3.1   36:27:10:c7:dd:40  bridge0            0 B   0 B    02:16:04

图 4 同时演示了紧接着的三连动作与一个重要现象:先 set arp.spoof.targets 192.168.3.1 圈定网关,再 arp.spoof on。日志依次出现:

·arp.spoof enabling forwarding —— 模块自动打开系统 IP 转发,保证被劫持流量不断网(不断网是隐蔽性的前提)。

·arp.spoof starting net.recon as a requirement for arp.spoof —— 模块依赖自动拉起:arp.spoof 强制要求 net.recon 在跑。

·arp.spoof arp spoofer started, probing 1 targets. —— 投毒循环启动,目标数 = 你 set 的条目数。

3.3 高频踩坑:could not find spoof targets

若先 arp.spoof on 而忘了 set arp.spoof.targets(或目标 IP 不在邻居表里),日志会以约 200 毫秒一条的速度疯狂刷:

[02:27:21] [sys.log] [war] arp.spoof could not find spoof targets

图 5 的价值在于状态与故障的对照:help 显示 arp.spoof > running、net.recon > running、net.sniff > running,三个灯都亮了,但模块「跑着」不等于「干活」——running 只代表 goroutine 存活,warn 刷屏说明投毒循环空转。排障口诀:状态看 help,实效看日志。

3.4 修正:先 set targets 再 on,以及 /32 与 /24 的爆炸半径

正确顺序是先配置后启动。targets 支持逗号分隔的多 IP/CIDR。图 6 演示了把目标从单 IP 换成整段:

set arp.spoof.targets 192.168.3.0/24
arp.spoof on
[02:32:29] [sys.log] [inf] arp.spoof enabling forwarding
[02:32:29] [sys.log] [inf] arp.spoof arp spoofer started, probing 256 targets.

务必注意爆炸半径:probing 1 targets 只劫持一台设备;probing 256 targets 意味着对全网段每台主机双向投毒(对目标谎称「网关是我」,对网关谎称「目标是我」),整个 Wi-Fi 的流量都会过你的机器——带宽、CPU、以及法律风险同步放大。实验环境请始终优先 /32 定向。

3.5 ARP 投毒原理(为什么能收到别人的包)

ARP 协议(RFC 826)无状态、无认证:主机收到 gratuitous(免费/声称式)ARP 应答会直接刷新本地 ARP 缓存。arp.spoof 周期性对目标宣称「192.168.3.1 的 MAC 是本机网卡」,同时对网关宣称「目标的 MAC 是本机网卡」。两端缓存中毒后,单播流量全部经本机二层转发(enabling forwarding 的作用),net.sniff 即可在镜像位置收包解析。这就是经典的 MitM 位置获取,与交换网络是否「安全」无关——防它要靠 DAI(动态 ARP 检测)或静态 ARP 绑定。

3.6 加速发现与收包验证:net.probe 与 zeroconf 日志

net.show 列表稀疏时,沉默主机(不发广播的 IoT/手机)看不见。开 net.probe on:模块主动发 ARP 探测、DNS/mDNS 查询,逼所有主机回包从而进入邻居表。同时 net.sniff + zeroconf 会把劫持到的 mDNS 服务公告实时解出,图 8 是本次实测的「收获页」:

从图 8 可读出三类信息,逐条对应嗅探价值:

日志证据 解读 嗅探意义
service nearby-presence-... detected for [192.168.1.13] (Android\_...local) Android 设备的 Nearby Presence 服务 确认目标为安卓终端并暴露设备名
\_airplay.\_tcp / \_raop.\_tcp / \_home-sharing.\_tcp detected for [192.168.2.1] (M2.local) Mac mini(SFMac-mini)的投屏与共享服务 识别苹果生态主机与开放端口
mDNS fe80::3427:... PTR query for \_clawdbot-gw.\_tcp.local IPv6 链路本地地址发起的服务查询 即使 v6 侧流量也在被解析
[zeroconf.service] service ... \_ssh.\_tcp.local detected ... 18b642 网内存在 SSH 服务宣告 攻击面清单自动成形

换句话说:arp.spoof 负责「把水管接到你家」,net.sniff/zeroconf 负责「看水里流过来什么」。设备名、服务类型、厂商 OUI、主机名(本例 bridge0、M2.local)这类元数据本身已是高价值侦察成果。

3.7 本笔记命令链总表(按敲入顺序)

序 命令 层级 作用
1 help 全局 检查模块状态,确认三盏灯未亮
2 net.sniff on 模块 启动被动抓包解析
3 net.recon on 模块 启动邻居发现,维护端点表
4 net.show net.recon 子命令 列出 IP/MAC/Name/Vendor,选定目标
5 set arp.spoof.targets 全局 set 圈定投毒对象(先配后开!)
6 arp.spoof on 模块 启动投毒,自动开转发、自动拉起 net.recon
7 net.probe on 模块 主动探测,逼沉默主机现形
8 观察 events/zeroconf 日志 — 收包验证;嗅探成果实时滚动
9 arp.spoof off; net.sniff off; net.recon off; quit 模块+全局 实验结束必须回收,恢复网络原状

4. BLE(低功耗蓝牙)侦察入口

help 列表里的 ble.recon 就是 BLE 模块,与 net.recon 同构:负责扫描周边广播 BLE 广告包(beacon、手环、耳机、车钥匙)的设备并维护端点表。标准用法:

ble.recon on
ble.show
ble.set   # 给设备起别名
ble.track on / off     # 跟踪设备移动(RSSI 变化)

BLE 与 Wi-Fi 嗅探的本质差异:BLE 侦察基本是「被动收广告包」,不需要投毒这类主动攻击动作即可持续获得设备清单与 RSSI;但反过来,BLE 的深层交互(连接、GATT 读写、配对抓包)需要支持注入的蓝牙适配器。

平台限制提示:Bettercap 的 BLE 与 wifi 模块主要面向 Linux 内核的蓝牙/802.11 注入栈;在 macOS 上这两个模块虽出现在 help 列表,但启动往往因缺少监听/注入能力而失败或不可用。本次会话中 ble.recon 与 wifi 始终保持 not running,属于预期现象。要在真机上跑 BLE 嗅探,请换 Linux(如 Kali)+ 外置支持注入的蓝牙网卡(CSR8510、nRF52840 一类)。

5. Wi-Fi 射频层能力(wifi 模块)边界说明

第 3 节的链路是「连上 Wi-Fi 之后」的二三层嗅探;wifi 模块则工作在 802.11 帧层:扫描周边 AP 与终端、发 deauth 帧迫使客户端重连(配合捕获 WPA 四次握手)等。同样受 macOS 驱动限制,本机不可用;其命令形态供 Linux 环境参考:

wifi.recon onwifi.recon.networks listwifi.recon.clients 60wifi.deauth

帧层攻击会直接打断他人连接,属于对可用性的破坏动作,风险与法律后果远高于 arp.spoof,仅限完全隔离的自有实验网络。

6. 故障排查对照表

现象 根因 处置
日志刷 [war] arp.spoof could not find spoof targets targets 未设置或目标不在邻居表 net.show 确认 IP → set 正确 targets → 再 arp.spoof on
help 显示 running 但无流量 只劫持未收包,或 net.sniff 未开 net.sniff on;确认模块依赖链完整
net.show 列表长期只有一两台 沉默主机不发广播 net.probe on 主动探测
被劫持设备断网 系统 IP 转发未生效(手动关过) 确认日志出现 enabling forwarding;检查系统转发开关
macOS 上 ble.recon/wifi 起不来 平台不支持注入栈 换 Linux + 兼容网卡,见第 4、5 节
退出后网络异常 投毒未回收就 kill 规范收尾:arp.spoof off → 各模块 off → quit

7. 合规红线

1.授权先行:仅在本机自建网络或持有书面渗透测试授权的网络中执行;arp.spoof 对未授权第三方构成《网络安全法》意义上的非法侵入与数据截取。

2.最小爆炸半径:targets 用 /32 定向单台实验机,禁止图省事直接 /24(probing 256 targets 即对全部邻居投毒)。

3.数据不落盘:嗅探到的凭证、设备名、服务清单属他人数据,实验结束即销毁,不上传、不留存。

4.可恢复:每次会话以 arp.spoof off、模块 off、quit 收尾,让 ARP 缓存自然老化,网络恢复原状。

Bettercap局域网嗅探实战技术" 网络安全文章

Bettercap局域网嗅探实战技术"

本文为Bettercap局域网嗅探实战技术笔记,系统讲解其模块化架构与核心命令用法。重点演示了通过ARP欺骗实现中间人攻击的完整链路,包括开启嗅探、邻居枚举、目标投毒及收包验证等步骤,并给出常见踩坑与排障建议。同时简要介绍BLE侦察入口。文章强调仅限授权环境使用,具备较强实战参考价值。
东北冬天更冷,为什么数据中心偏偏扎堆贵州?" 网络安全文章

东北冬天更冷,为什么数据中心偏偏扎堆贵州?"

文章分析数据中心选址贵州而非东北的原因,指出选址并非单纯追求低温,而是气候稳定性、电力条件、政策红利等多重因素综合作用的结果。贵州凭借恒温气候、水电资源、政策先发优势成为算力枢纽,同时内蒙古、甘肃、宁夏等新能源区域正快速崛起,成为新一代算力热土。
仓库里多出一份安全检查工作流,它专门偷密钥" 网络安全文章

仓库里多出一份安全检查工作流,它专门偷密钥"

该文披露名为GhostAction的GitHubActions供应链攻击活动,攻击者利用窃取的维护者账号,通过自动化脚本向数百个仓库批量注入伪装成安全检查的恶意工作流文件,窃取CI/CD密钥及云服务凭据,并新增对提交历史中云凭据的正则扫描。文章拆解攻击链四步,并提供搜索可疑文件、审查提交日志、轮换密钥三步自查建议,强调需按已失守处理。
评论:0   参与:  0