3. 网络嗅探与中间人攻击:ARP欺骗、DNS欺骗、SSLStrip
各位同学,咱们今天聊点真家伙。网络嗅探和中间人攻击,说白了就是让你能“看到”别人网络里在传什么,甚至还能“改一改”。我当年第一次在实验室里用Ettercap抓到隔壁同事的HTTP登录包时,说实话,后背有点发凉。这玩意儿太强了,也太危险了。
你想想看,在一个交换网络里,正常情况下你只能收到发给自己MAC地址的包。但如果我们用点手段,让流量都从你这儿过一遍呢?嗯,这就是中间人攻击的核心思路。
3.1 ARP欺骗:最经典的流量劫持
ARP协议本身有个设计缺陷——它不验证响应包的真伪。我习惯把这个叫“信任的代价”。你发一个“谁是192.168.1.1?”的广播,谁都能回一句“是我,我的MAC是XX:XX:XX:XX:XX:XX”。网关不会去查你是不是在撒谎。
攻击流程其实很简单:
- 你告诉网关:“192.168.1.100(受害者)的MAC地址是我的”
- 你告诉受害者:“192.168.1.1(网关)的MAC地址是我的”
- 两边都信了,流量全走你这里过
我在项目中遇到过一件事。有一次做内网渗透测试,客户说他们的财务系统偶尔会卡顿。我一查,发现有人在内网跑了个ARP欺骗脚本,把整个部门的流量都劫到了他那台破笔记本上。嗯,那台笔记本的网卡根本扛不住,丢包严重。这就是典型的“劫了但没完全劫”。
⚠️ 注意:ARP欺骗在大多数交换机上都能生效,但如果你碰到开启了DAI(Dynamic ARP Inspection)的网络,这招就不好使了。DAI会检查ARP包的合法性,只有DHCP Snooping绑定表里的MAC-IP对应关系才被允许。
3.2 DNS欺骗:让你访问假网站
ARP欺骗是把流量引到你这里,但流量到了之后呢?你得知道怎么处理。DNS欺骗就是下一步——当受害者想访问baidu.com时,你给他返回一个假的IP地址,指向你搭建的钓鱼页面。
Ettercap里做这个特别方便。它自带了一个dns_spoof插件,你只需要编辑/etc/ettercap/etter.dns文件:
# 把目标域名指向你的攻击机IP
*.baidu.com A 192.168.1.200
*.taobao.com A 192.168.1.200
*.alipay.com A 192.168.1.200
然后启动Ettercap,加载插件:
ettercap -T -M arp:remote /192.168.1.1// /192.168.1.100// -P dns_spoof
这里-T是文本模式,-M arp:remote是开启ARP欺骗,后面两个IP分别是网关和受害者。加上-P dns_spoof就启动了DNS欺骗插件。
💡 小技巧:我建议你在做DNS欺骗时,把目标网站的页面完整克隆下来。别只改个IP就完事,用户一看页面不对劲就露馅了。用wget或者HTTrack把整个站扒下来,放到你的Apache或Nginx里。
3.3 SSLStrip:干掉HTTPS的保护
你可能会问:“现在大部分网站都用HTTPS了,DNS欺骗还有用吗?”问得好。SSLStrip就是专门对付HTTPS的。
它的原理其实很巧妙。受害者访问https://example.com,但你的攻击机把所有的https://链接替换成http://。用户浏览器不会显示小锁图标,但很多人根本不会注意到这个细节。然后你这边再跟真正的服务器建立HTTPS连接,把内容解密后再用HTTP转发给受害者。
说白了,你就是在中间当了个“翻译官”——跟服务器说加密的话,跟受害者说明文的话。
Bettercap里集成了SSLStrip功能,用起来比Ettercap顺手多了:
# 启动Bettercap的ARP欺骗和SSLStrip
sudo bettercap -eval "set arp.spoof.targets 192.168.1.100; arp.spoof on; set http.proxy.sslstrip true; http.proxy on"
我曾经在一次红蓝对抗演练中用过这招。蓝队那边部署了很完善的WAF和IDS,但SSLStrip这种“降级攻击”他们愣是没发现。为什么?因为流量本身是合法的,只是从HTTPS降到了HTTP。很多安全设备只关注攻击特征,不关注协议版本的变化。
🔑 核心要点:SSLStrip能成功的前提是——用户手动在地址栏输入域名,或者点击了HTTP页面上的链接。如果用户直接输入https://或者浏览器有HSTS预加载列表,SSLStrip就失效了。HSTS会强制浏览器只使用HTTPS连接,不给中间人任何降级的机会。
3.4 Ettercap vs Bettercap:选哪个?
这两个工具我都用过很长时间。简单说说我的感受:
| 特性 | Ettercap | Bettercap |
|---|---|---|
| 易用性 | 命令行参数多,学习曲线陡 | 交互式Shell,更友好 |
| 插件生态 | 丰富,但很多年没更新了 | 模块化设计,持续更新 |
| SSLStrip支持 | 需要额外配置 | 内置支持,一键开启 |
| 性能 | 老牌稳定,但单线程 | 多线程,处理大流量更稳 |
| 跨平台 | Linux/Windows/macOS | Linux/macOS,Windows支持有限 |
我个人习惯是:快速验证用Ettercap,正式渗透用Bettercap。Ettercap的-M arp:remote参数我闭着眼睛都能打出来,但Bettercap的模块化设计确实更适合复杂场景。
3.5 实战流程:完整攻击链
咱们把整个流程串起来走一遍。假设目标IP是192.168.1.100,网关是192.168.1.1,你的攻击机是192.168.1.200。
- 信息收集:先扫一下内网,确认目标在线,看看它开了哪些端口
- ARP欺骗:用Bettercap或Ettercap让目标把网关流量发给你
- 流量转发:开启IP转发,让流量能正常通过你的机器到达网关
echo 1 > /proc/sys/net/ipv4/ip_forward
- DNS欺骗:把目标想访问的域名解析到你的钓鱼服务器
- SSLStrip:降级HTTPS到HTTP,捕获明文数据
- 数据提取:用Wireshark或者tcpdump抓包,提取Cookie、密码等敏感信息
嗯,这里要注意一点。如果你只是做ARP欺骗但不开启IP转发,目标就断网了。这其实也是一种攻击方式——拒绝服务。但如果你想悄无声息地做中间人,必须保证网络通畅。
⚠️ 法律警告:未经授权对他人网络进行嗅探和中间人攻击是违法行为。本课程所有内容仅供授权的安全测试和学习使用。我在做渗透测试时,每次都会签好授权书,明确测试范围和边界。别给自己找麻烦。
3.6 防御建议
讲完了攻击,咱们也得说说怎么防。毕竟你学了这些,不光是为了攻击,更是为了防守。
- 静态ARP表:在关键设备(网关、服务器)上绑定静态ARP条目,防止ARP欺骗
- 启用DAI:在交换机上开启Dynamic ARP Inspection,配合DHCP Snooping使用
- 使用VPN:所有敏感流量走加密隧道,即使被嗅探也看不懂
- HSTS预加载:网站开发者应该把自己的域名提交到HSTS预加载列表,浏览器会强制HTTPS
- 证书固定:移动端App可以固定服务器证书,防止中间人用自签名证书冒充
我见过最离谱的一次,某公司财务系统跑在HTTP上,内网也没做任何防护。我进去之后,ARP欺骗一开,不到五分钟就抓到了财务主管的登录密码。密码是"123456"。嗯,你没看错。所以技术防护和人员意识,两手都要抓。
好了,这一章的内容就到这儿。网络嗅探和中间人攻击是渗透测试里非常核心的技能,但也是一把双刃剑。我希望你学完之后,能更清楚怎么保护自己的网络,而不是去搞破坏。记住,能力越大,责任越大。
公众号:蓝海资料掘金营,微信deep3321