你的DNS可被窥探吗?
你已经为网络采取了所有预防措施:设置了锁定控制、使用了强大的密码策略(20个字符,包含大小写、特殊字符甚至wingdings字体)、全面部署了双因素认证、锁定了Web应用,跨站脚本和SQL注入已不再构成威胁。你对基础设施的安全性感到满意。
但为什么你仍然担心(除了身为系统管理员之外)?如今,社会工程似乎成了新的攻击向量。为什么?因为获取组织中特定人员的信息并以此为目标获取有价值信息,比从网络获取更容易。最终,每个人的网络都会安全到无需再担心(对吧☺)……在BHIS,我们只能希望如此,但在此期间,我们会继续发布博客文章,帮助发现漏洞。
你可能想知道我到底要说什么。好吧,有时我们会忽略一些小事情,比如域名服务器(DNS)缓存窥探。
许多非技术读者可能想知道DNS到底是什么,它有什么作用?
在不涉及太多技术细节的情况下,DNS用于将人类可读的格式转换为机器语言,即你试图访问的系统的IP地址。例如,如果你在浏览器中输入www.peanuts.com,请求会被发送到DNS服务器,搜索与www.peanuts.com对应的记录(IP)。在这个例子中,记录会转换为IP地址54.201.160.175。你可以看到,输入一个容易记住的名称比输入IP地址更容易。许多人用电话簿来类比命名约定与系统IP地址的关联。
许多组织拥有并管理自己的域名服务器,这取决于他们拥有的IP数量以及是否频繁更改机器、主机名或IP地址。在本地管理DNS变更比通过传真或填写表格给第三方进行变更更容易。如果你的组织管理自己的DNS,那么这篇博客就是为你准备的。
DNS使用递归和非递归查询,取决于站点是否已被缓存(本地存储)。
- 递归:如果DNS不知道网站,则使用这种查询类型。域名服务器必须轮询其他服务器以获取信息,将网站名称解析为IP地址,并正确路由流量。
- 非递归:这种查询类型存储在域名服务器的缓存中,因此无需外出轮询其他服务器即可轻松访问,这与递归查询不同。
攻击者使用DNS缓存窥探来收集有关组织浏览习惯的信息。这些信息可用于策划针对公司的攻击,例如电子邮件钓鱼或鱼叉式钓鱼活动。这还可能披露敏感信息,例如最近访问的金融机构或其他公司可能不希望公开的敏感网站。
根据DNS服务器在网络上的配置方式,风险级别可能不同。例如,如果你位于网络内部,你的域名服务器可能允许为本地网络上的人缓存网站,而不为外部网络的人缓存。始终建议从网络外部进行测试,以确定缓存窥探是否在公共空间有效。尽管缓存窥探可能在网络内部实现,但风险较低,因为攻击者必须从网络内部访问才能进行窥探。
我的侧,你的侧 – 内部,外部
一个简单的测试是使用Nmap和dns-snoop-cache.nse脚本。下面我运行了脚本在Google DNS 8.8.8.8上验证它是否缓存网站。默认情况下,Nmap命令使用非递归查询,因此输出与服务器上缓存的站点相关。
Nmap输出 –script dns-cache-snoop.nse for 8.8.8.8
从上面的输出可以看出,Google的8.8.8.8 DNS缓存了100个域名中的61个。
我还应该指出,Nmap使用预配置的前100个域名集来检查它们是否被缓存。如果你愿意,可以提供域名列表,从而使其更针对你的组织。通过使用Nmap命令的参数来指定要检查的域名。参数是:
dns-cache-snoop.domains={host1,host2,host3,etc}
下面的截图演示了使用特定域名或主机的输出。
提供特定域名
如果你想找出最近访问过的站点,可以使用参数dns-cache-snoop.mode=timed,这只能可靠地运行一次,因为它也会缓存到服务器。
使用Nmap的时序参数
你可以看到,最近访问的站点与未包含dns-cache-snoop.mode=timed参数时运行的Nmap命令略有不同。
根据DNS服务器的设置方式,你可能无法获取任何信息。这也可能取决于你的组织是否阻止某些域名。许多组织会阻止前100个域名,因为它们大多与社交或购物网站相关。如果是这种情况,你可能想检查特定域名,例如wellfargo.com或chase.com。你还可以访问网络上的特定站点,然后检查DNS是否已缓存它。
还有其他与DNS相关的漏洞,例如缓存中毒、分布式拒绝服务(DDoS)或DNS放大攻击。我会将这些留待将来讨论,因为对许多人来说,DNS不如我们所有人都喜欢的可爱小猫视频那么令人兴奋。
快乐窥探!
加分题 – 这篇博客中的图片来自哪部剧,角色名字是什么?如果你知道答案,请通过Twitter @BHinfoSecurity告诉我们!
准备好了解更多?
通过Antisyphon的实惠课程提升你的技能!
付费前向培训
提供实时/虚拟和点播选项