在事件响应中使用被动DNS

阅读量307981

|

发布时间 : 2016-02-29 14:31:16

x
译文声明

本文是翻译文章,文章来源:360安全播报

原文地址:https://www.vanimpe.eu/2016/02/27/passive-dns-for-incident-response/

译文仅供参考,具体内容表达以及含义原文为准。

http://p3.qhimg.com/t01ae86916fc48c610f.jpg

在过去的几年当中,我们已经经历了大量针对DNS基础设施的攻击威胁,例如针对验证域名服务器的DDoS攻击,利用域名服务器作为DDoS攻击的放大机制,顶替注册账户以修改授权信息,缓存投毒攻击以及由恶意软件实现的域名服务器滥用等等。但值得庆幸的是,如今我们也拥有了更多能够抵御这些威胁的强大新型安全机制,包括DNS安全扩展,响应策略区以及响应速率限制等手段。

而就目前而言,DNS安全乃至互联网整体安全强化领域最具前景的实施方案还没有得到充分发挥——也就是被动DNS数据。

什么是被动DNS?

根据isc.org的描述,被动DNS最初于2004年由Florian Weimer发明,旨在对抗恶意软件。根据其定义,递归域名服务器会响应其接收到的来自其它域名服务器的请求信息,然后对响应信息进行记录并将日志数据复制到中央数据库当中。

从实践的角度出发,收集与分析被动DNS(Passive DNS)数据能够帮助我们识别恶意站点并对抗钓鱼及恶意软件。这到底意味着什么呢?实际上,这就是一个存储了大量DNS解析数据的历史数据库。这意味着你可以查询到某一域名曾经解析过的IP地址。即使这一域名已经从域名服务器中移除了,你也可以查询到相关的信息。

当接收到查询请求时,域名服务器会首先检查自身缓存以及权威数据以获取请求所需的内容。如果解析内容尚不存在,则会进一步查询root域名服务器作为参考直到找出能够提供相关查询结果的验证域名服务器,最后查询其中的验证域名服务器来进行结果检索。值得注意的是,大部分的被动DNS数据会在“高于”检索域名服务器的位置被立即捕获。

这也就意味着,被动DNS数据大多由来自互联网上验证域名服务器的参考与查询结果构成(当然,其中也包含部分错误信息)。这部分数据拥有时间戳,经过重复数据删除与压缩,而后被复制到中央数据库内以备归档与分析。需要注意的是,整个流程捕捉到的是服务器到服务器之间的通信内容,而非来自存根解析器并指向递归域名服务器的查询内容。

我们为什么要使用被动DNS?

当我们需要进行事件响应调查时,你就会发现被动DNS是非常有用的。

各类企业都会采用不同的数据库来容纳被动DNS“传感器”所发来的上传数据。目前人气最高且最为知名的当数Farsight Security公司所打造的被动DNS数据库——DNSDB。在这一DNSDB中包含有多年以来由全世界范围内所有传感器收集而来的数据。对被动DNS数据库进行查询能够提供大量极具实用价值的信息。举例来说,大家可以通过查询被动DNS数据库来查找与某一网站相关联的DNS查询记录,或者自某一时间开始该网站曾经使用过哪些域名服务器,又或者另有哪些其它区域在使用同一套域名服务器。更进一步来讲,大家也可以选择某个已知的恶意IP地址,并查询各被动DNS传感器最近映射至该IP地址的全部相关域名服务器。

被动DNS::客户端-不同的服务器

被动DNS::客户端可以支持不同的被动DNS服务器:

l   BFK.de

l   Mnemonic

l   PassiveDNS.cn

l   CIRCL

l   VirusTotal

l   PassiveTotal

l   DNSDB

我认为,现在功能最为强大的服务器就是PassiveTotal了。PassiveTotal允许用户使用其他的外部源来检索数据,并且还能够帮助用户最大程度地使用检索结果。

http://p2.qhimg.com/t011c727fcaab965c56.png

安装和配置

在其GitHub的主页上已经提供了PassiveDNS::客户端的详细安装方法,用户可以访问该页面来获取这一部分的内容。首先,我们需要使用git clone命令来进行远程下载和安装:

git clone https://github.com/chrislee35/passivedns-client.git
cd passivedns-client.git
sudo gem install passivedns-client

当你完成安装之后,你需要创建一个配置文件,配置文件的存储目录通常为$HOME/.passivedns-client。

在我的操作过程中,我使用的是PassiveTotal和VirusTotal,所以我的配置文件结构如下:

[virustotal]
APIKEY = key
[passivetotal]
APIKEY = key

输出格式

被动DNS::客户端支持使用大量不同的输出格式。在默认情况下,它会将输出数据显示在命令控制台之中。如果你想要获取到更丰富的内容,你可以选择使用JSON,XML或者CSV等格式的数据。如果你需要使用不同格式的输出数据,那么以下是我给大家提供的设置方法:

-c CSV
-x XML
-j JSON
-t ASCII text

查询不同的服务器

被动DNS::客户端同样还支持下列服务器:

l   -d3 use 360.cn

l   -dc use CIRCL

l   -dd use DNSDB

l   -dp use PassiveTotal

l   -dv use VirusTotal

运行你自己的被动DNS服务器

被动DNS 传感器

如果大家想要运行自己的被动DNS服务器,那么还需要进行一些配置。你可以使用Farsight安全公司所提供的被动DNS传感器。它可以帮助你向社区贡献更多有价值的数据集,并让你的努力和付出更加的有意义。

当然了,大家也可以选择使用自己的被动DNS传感器,并且只在服务器内部使用这些数据。我发现,最佳的选择就是使用Gamelinux.org所提供的被动DNS服务。从更高的层次来看,它可以算得上是一个网络嗅探器,它可以提取出网络流量中的DNS数据包,并将数据包的内容存储在日志文件中。你可以使用一个Perl脚本来监测日志文件中的内容,并且通过SQL语句来将这些内容存储至关系数据库中。

与Moloch配合使用

我最近才开始研究如何使用Moloch来获取完整的网络通信数据。Moloch可以将网络通信数据的详细信息存储至中央服务器中,以便我们日后对其进行分析处理。

http://p2.qhimg.com/t0123de70851e888722.png

Moloch是一个开源项目,它提供了PCAP浏览的web界面,能够大规模地捕获IPv4数据包(PCAP),而且还可以帮助技术人员搜索内容和输出结果。它的API都是公开的,并且允许用户直接下载PCAP数据和JSON格式的会话数据。

Moloch允许用户直接对DNS查询请求进行检索,但是我发现,如果需要在一定时间内从指定的域名中提取出所有的查询请求和结果,那么整个过程就显得有些麻烦了。

传感器的位置标注

由于我们所能配置的传感器数量有限,所以我们应该更加谨慎地选择传感器的位置。如果用户能够直接将DNS查询请求发送至网络上,那么你将有可能无法捕捉到完整的通讯数据,因为传感器是无法捕捉到这类通信流量的。在理想情况下,你可以要求用户使用你所配置的DNS服务器,并且阻止所有的发送至其他DNS服务器的查询请求。除此之外,你公司网络的DNS服务器也不失为一个放置被动DNS传感器的好地方。

总结

我很早之前就已经了解到了有关被动DNS的知识,但是在此之前我从未尝试去使用过它。在最近的一次技术研讨会上,相关技术人员曾给我介绍了Moloch系统,在我对这一检索系统进行了分析和研究之后,我觉得这个系统可以与被动DNS配合使用。

总的来说,如果你需要进行事件响应调查,我认为被动DNS(无论是线上还是线下的)对你来说将会是一个非常有价值的信息源。

本文翻译自360安全播报 原文链接。如若转载请注明出处。
分享到:微信
+12赞
收藏
WisFree
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66