1. DNS劫持与Ettercap工具初探想象一下这样的场景你正在公司内网浏览某个网站输入熟悉的网址后页面却跳转到了一个完全陌生的界面。这种情况很可能就是遭遇了DNS劫持攻击。作为网络安全领域常见的攻击手段DNS劫持通过篡改域名解析结果将用户引导至恶意网站。而Ettercap正是实现这类攻击的瑞士军刀它集ARP欺骗、中间人攻击、数据包嗅探等多种功能于一身。我第一次接触Ettercap是在一次内部红蓝对抗演练中。当时作为蓝队成员的我眼睁睁看着同事的浏览器被重定向到我们搭建的钓鱼页面这种眼见为实的体验比任何理论讲解都来得震撼。Ettercap最强大的特性在于其模块化设计通过加载不同插件可以实现各种攻击场景。比如我们今天要重点讨论的dns_spoof插件就是专门用于DNS欺骗的利器。在开始实战前我们需要明确几个关键概念ARP欺骗通过伪造ARP响应包让目标设备误以为攻击者的MAC地址对应网关IPDNS劫持篡改DNS查询响应将域名解析到攻击者控制的IP地址中间人攻击(MITM)通过ARP欺骗将自己置于通信双方之间实现流量拦截2. 实验环境搭建与配置2.1 基础网络拓扑设计为了还原真实企业环境我建议采用以下实验配置攻击机Kali Linux 2023.3IP: 192.168.1.100靶机Windows 10IP: 192.168.1.200网关路由器IP: 192.168.1.1网络模式桥接或NAT确保三者在同一网段这里有个容易踩坑的地方虚拟机网络配置。我遇到过不少初学者因为网络模式选错导致攻击失败的情况。如果你使用VMware建议选择桥接模式而不是NAT因为NAT模式下虚拟机可能无法直接与物理网络通信。可以通过以下命令检查网络连通性ping 192.168.1.200 # 从Kali ping Windows靶机 ping 192.168.1.1 # 测试网关连通性2.2 Ettercap的安装与准备大多数Kali Linux已经预装Ettercap但如果你的系统没有可以通过以下命令安装sudo apt update sudo apt install -y ettercap-graphical安装完成后我们需要配置关键文件 - etter.dns。这个文件决定了哪些域名会被劫持以及重定向到哪个IP。我建议先备份原始文件sudo cp /etc/ettercap/etter.dns /etc/ettercap/etter.dns.bak然后用vim编辑配置文件sudo vim /etc/ettercap/etter.dns在文件末尾添加如下规则按i进入编辑模式* A 192.168.1.100 *.baidu.com A 192.168.1.100这表示将所有域名(*)和baidu.com子域名都解析到攻击机IP。在实际攻击中你可以更有针对性地指定域名。保存退出后按ESC输入:wq建议用locate命令确认文件位置locate etter.dns3. 实施ARP欺骗与DNS劫持3.1 启动Ettercap图形界面在Kali终端输入以下命令启动图形界面sudo ettercap -G第一次运行时可能会提示缺少依赖按照提示安装即可。界面启动后按以下步骤操作点击Sniff菜单选择Unified sniffing选择正确的网卡通常是eth0或wlan0点击Hosts菜单选择Scan for hosts扫描存活主机查看Hosts list确认发现靶机和网关这里有个实用技巧我习惯先扫描整个网段然后在Hosts列表里右键点击网关选择Add to Target 2右键点击靶机选择Add to Target 1。这样设置是因为我们需要欺骗靶机Target 1和网关Target 2之间的通信。3.2 配置DNS欺骗插件在Ettercap界面中点击Plugins菜单选择Manage plugins找到dns_spoof插件并双击激活前面会出现*号此时可以点击Start菜单选择Start sniffing开始嗅探。但真正的攻击要等到执行ARP毒化后才开始点击Mitm菜单选择ARP poisoning 勾选Sniff remote connections选项 点击OK确认3.3 搭建钓鱼网站为了让DNS劫持效果更明显我们需要在攻击机上搭建一个简单的web服务器。Kali自带Apache2启动命令如下sudo systemctl start apache2然后在/var/www/html目录下创建index.html文件!DOCTYPE html html head title系统升级通知/title /head body h1您的系统需要紧急安全更新/h1 p请下载并安装以下补丁程序/p a hrefupdate.exe点击下载更新/a /body /html这个模拟的钓鱼页面利用了人的紧迫心理是实际攻击中常见的伎俩。记得开启IP转发功能让靶机可以正常访问其他网站echo 1 /proc/sys/net/ipv4/ip_forward4. 攻击验证与效果分析4.1 验证DNS劫持效果在Windows靶机上打开浏览器尝试访问以下网址http://www.baidu.comhttp://任意不存在的域名如果配置正确这些访问都应该被重定向到我们搭建的钓鱼页面。你可以通过Wireshark抓包来观察DNS响应sudo wireshark 过滤DNS流量可以看到所有查询都被解析成了攻击机的IP地址。这就是DNS劫持的核心原理 - 篡改域名解析结果。4.2 HTTPS的防护作用现在尝试访问https://www.baidu.com你会发现页面无法打开或出现证书警告。这是因为HTTPS的加密特性保护了通信安全浏览器检查SSL证书时发现域名不匹配加密连接阻止了中间人查看或修改传输内容HSTS机制可以进一步防止SSL剥离攻击这解释了为什么现代网站都强制使用HTTPS - 它能有效防御这类中间人攻击。作为攻击者要突破HTTPS保护需要更高级的技术如SSL剥离或伪造证书这些都会留下更多痕迹。5. 防御措施与检测方法5.1 企业级防御方案根据我在企业安全建设中的经验防御DNS劫持需要多层防护网络层防护部署ARP监控工具如Arpwatch启用端口安全功能绑定MAC地址划分VLAN隔离敏感区域系统层防护配置静态ARP表arp -s使用DNSSEC验证DNS响应禁用ICMP重定向应用层防护强制使用HTTPSHSTS部署证书钉扎Certificate Pinning员工安全意识培训5.2 个人检测技巧即使没有专业工具普通用户也可以通过以下迹象发现可能的DNS劫持经常访问的网站突然要求重新登录网站外观有细微变化如logo位置、字体样式浏览器地址栏出现不寻常的域名网络速度明显变慢因为流量经过攻击者中转一个简单的检测方法是使用nslookup对比不同DNS服务器的解析结果nslookup example.com 8.8.8.8 nslookup example.com 本地DNS服务器如果结果不一致就可能存在DNS劫持。我在一次内部演练中就靠这个方法发现了红队的攻击行为。6. 法律与道德考量在进行任何安全测试前必须获得明确的书面授权。我见过太多因为未经授权测试而引发的法律纠纷。即使是实验室环境也应该遵循以下原则所有实验都在隔离网络中进行不使用真实公司的域名和商标测试数据全部使用模拟信息测试完成后立即恢复原状安全是把双刃剑技术本身没有善恶关键在于使用者的意图。作为安全从业者我们更应该关注如何防御这类击而不是滥用技术手段。每次演示DNS劫持后我都会花同样多的时间讲解防御措施这才是技术分享的真正价值所在。