about DNS劫持
提示
本篇技术只限于技术交流,不得应用于违法犯罪!
DNS劫持是一种网络攻击手段,攻击者通过篡改DNS服务器的响应,将用户访问的网站重定向到恶意网站。这种攻击可能导致用户的个人信息泄露、财产损失等风险。
实现DNS劫持的技术有多种,总得来说是三种类型
- DNS缓存投毒:
攻击者通过向DNS服务器发送伪造的DNS响应,使其缓存错误的IP地址信息。当用户查询该域名时,DNS服务器会返回错误的IP地址,导致用户被重定向到恶意网站。 - 本地主机文件篡改:
攻击者修改用户计算机上的本地主机文件,将目标网站的域名映射到恶意IP地址上。这样,当用户访问该网站时,系统会直接使用恶意IP地址进行连接。 - 中间人攻击:
攻击者在用户和目标网站之间插入自己控制的服务器,截获用户的DNS请求并篡改其响应。这样,用户实际上访问的是攻击者控制的恶意网站。 这类攻击,比较难实现,也最难防范,影响面也是最大的。 在链路上,只要添加一个网桥型包过滤器
就能实现,很难被识破。
不同的DNS劫持,有不同的防范技术。
- 使用可信的DNS服务器:
选择可靠的DNS服务提 供商或使用公共DNS服务器,如Google DNS(8.8.8.8和8.8.4.4)或OpenDNS(208.67.222.222和208.67.222.223)。 - 启用DNSSEC:
DNSSEC是一种安全扩展,可以验证DNS响应的真实性和完整性,防止DNS劫持。 - 更新操作系统和应用程序:
及时安装操作系统和应用程序的安全补丁,以修复已知的安全漏洞。 - 使用防火墙和安全软件:
配置防火墙规则,限制对敏感端口的访问;使用安全软件进行实时监控和检测潜在的威胁。 - 定期备份数据:
定期备份重要数据,以防止数据丢失或受到勒索软件等威胁。
DNS中间人攻击的技术实现
此部分涉及较多知识,不便在此深讲,只讲实现的技术关健点。
DNS路由包劫持
在链路上,可采用路由器或防火墙或或网桥型包过滤器,对DNS数据包进行修改,将目标DNS改写也自己控制的DNS服务器。 例如:以iptables为例,如下规则可实现DNS数据包的目标地址改写为被自己控制的DNS服务器。
$ipt -t nat -A PREROUTING -i $lan_dev -p udp --dport 53 -j DNAT --to-destination x.x.x.x:53
$ipt -t nat -A PREROUTING -i $lan_dev -p tcp --dport 53 -j DNAT --to-destination x.x.x.x:53
$ipt -t filter -A FORWARD -i $lan_dev -p icmp -j ACCEPT
$ipt -t filter -A FORWARD -i $lan_dev -p udp --dport 53 -j ACCEPT
提示
在链路安装网桥型包过滤器,除可以做DNS劫持,其实可以做任何类型的数据包劫持,如mysql/3306、ssh/22等。
另外一个典型的应用场景是web透明代理。