本文将通过一个真实的域名污染案例,展示什么是域名污染,它的危害有哪些,以及如何识别和处理域名污染问题。文章覆盖了域名污染的形式、后果,并给出了具体的日志分析实例,以及临时解决方案和彻底处理建议。
域名污染是一种网络攻击或干扰行为,旨在干扰特定域名或主机名的正常解析过程,从而导致用户无法访问目标网站或资源,或者被重定向到恶意站点。域名污染可以采用多种方式进行,其目的通常是欺骗、劫持、屏蔽或干扰用户的网络连接。
以下是一些常见的域名污染方式:
我们的应用程序使用HTTPS通信,所有网络请求设计要进行TLS握手,以建立安全连接。但是域名被污染后,DNS解析结果将连接导向了错误的IP地址。这会导致TLS握手过程中,证书中的域名(DNS name)无法匹配目标服务器的地址(Host name),从而造成TLS握手失败,连接无法建立。
当TLS握手失败时,为了保证用户体验,我们的应用程序会像浏览器一样,弹出一个证书错误的警告框提示用户。用户可以选择忽略这个错误并强制继续连接,也可以选择中断这个连接。
如果用户忽略错误强制连接,应用程序会使用不可信的证书完成TLS握手,然后访问被污染的域名。这可能导致:
所以域名污染会直接导致我们的应用无法通过TLS安全连接到真实服务器。用户可能在应用中看到各种网络连接错误、证书警告等异常表象。这严重影响了用户体验。
[CSBPTApp::VTLS_NotifyCertItemVerifyFailed] Cert verified failed:
SN:02 72 BA ...............
ISSUER:DigiCert SHA2 High Assurance Server CA
DNS:*.cdninstagram.com,*.igcdn.com,*.igsonar.com,*.instagram.com,cdninstagram.com,igcdn.com,igsonar.com,instagram.com
CAFP:A0 31 C4 67 ...............
FP:8F 83 6C 81 A2 ...............
host:secure.gravatar.com
通过分析应用程序的日志,可以识别域名污染事件。关键是要解析日志中记录的主机名和域名信息,并与实际域名解析结果进行比对。
例如上述日志显示:
通过对比可以发现,日志记录的连接主机名secure.gravatar.com并不在证书授权的域名列表内。这说明该连接主机名并不被该证书信任,因此出现了证书验证失败的错误。
这很可能是域名污染所导致的,证书与实际服务器不匹配。进一步查询证书信息和与公网DNS解析的比较,可以确认域名污染事件。