3. 网络嗅探与中间人攻击:ARP欺骗、DNS欺骗、SSLStrip

各位同学,咱们今天聊点真家伙。网络嗅探和中间人攻击,说白了就是让你能“看到”别人网络里在传什么,甚至还能“改一改”。我当年第一次在实验室里用Ettercap抓到隔壁同事的HTTP登录包时,说实话,后背有点发凉。这玩意儿太强了,也太危险了。

你想想看,在一个交换网络里,正常情况下你只能收到发给自己MAC地址的包。但如果我们用点手段,让流量都从你这儿过一遍呢?嗯,这就是中间人攻击的核心思路。

3.1 ARP欺骗:最经典的流量劫持

ARP协议本身有个设计缺陷——它不验证响应包的真伪。我习惯把这个叫“信任的代价”。你发一个“谁是192.168.1.1?”的广播,谁都能回一句“是我,我的MAC是XX:XX:XX:XX:XX:XX”。网关不会去查你是不是在撒谎。

攻击流程其实很简单:

  1. 你告诉网关:“192.168.1.100(受害者)的MAC地址是我的”
  2. 你告诉受害者:“192.168.1.1(网关)的MAC地址是我的”
  3. 两边都信了,流量全走你这里过

我在项目中遇到过一件事。有一次做内网渗透测试,客户说他们的财务系统偶尔会卡顿。我一查,发现有人在内网跑了个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。

  1. 信息收集:先扫一下内网,确认目标在线,看看它开了哪些端口
  2. ARP欺骗:用Bettercap或Ettercap让目标把网关流量发给你
  3. 流量转发:开启IP转发,让流量能正常通过你的机器到达网关
echo 1 > /proc/sys/net/ipv4/ip_forward
  1. DNS欺骗:把目标想访问的域名解析到你的钓鱼服务器
  2. SSLStrip:降级HTTPS到HTTP,捕获明文数据
  3. 数据提取:用Wireshark或者tcpdump抓包,提取Cookie、密码等敏感信息

嗯,这里要注意一点。如果你只是做ARP欺骗但不开启IP转发,目标就断网了。这其实也是一种攻击方式——拒绝服务。但如果你想悄无声息地做中间人,必须保证网络通畅。

⚠️ 法律警告:未经授权对他人网络进行嗅探和中间人攻击是违法行为。本课程所有内容仅供授权的安全测试和学习使用。我在做渗透测试时,每次都会签好授权书,明确测试范围和边界。别给自己找麻烦。

3.6 防御建议

讲完了攻击,咱们也得说说怎么防。毕竟你学了这些,不光是为了攻击,更是为了防守。

  • 静态ARP表:在关键设备(网关、服务器)上绑定静态ARP条目,防止ARP欺骗
  • 启用DAI:在交换机上开启Dynamic ARP Inspection,配合DHCP Snooping使用
  • 使用VPN:所有敏感流量走加密隧道,即使被嗅探也看不懂
  • HSTS预加载:网站开发者应该把自己的域名提交到HSTS预加载列表,浏览器会强制HTTPS
  • 证书固定:移动端App可以固定服务器证书,防止中间人用自签名证书冒充

我见过最离谱的一次,某公司财务系统跑在HTTP上,内网也没做任何防护。我进去之后,ARP欺骗一开,不到五分钟就抓到了财务主管的登录密码。密码是"123456"。嗯,你没看错。所以技术防护和人员意识,两手都要抓。

中间人攻击(MITM)完整攻击链 攻击者 (192.168.1.200) 受害者 (192.168.1.100) 网关 (192.168.1.1) ① ARP欺骗: “网关的MAC是我” ② ARP欺骗: “受害者的MAC是我” ③ 流量被劫持 ④ 转发到真实网关 攻击流程: 1. ARP欺骗 → 2. 开启IP转发 → 3. DNS欺骗(可选) → 4. SSLStrip(可选) → 5. 数据捕获 防御手段:静态ARP表 | DAI | HSTS | VPN | 证书固定 图:中间人攻击中ARP欺骗与流量劫持的完整流程

好了,这一章的内容就到这儿。网络嗅探和中间人攻击是渗透测试里非常核心的技能,但也是一把双刃剑。我希望你学完之后,能更清楚怎么保护自己的网络,而不是去搞破坏。记住,能力越大,责任越大。


公众号:蓝海资料掘金营,微信deep3321