B^B .. Oh

一群爱搞事情的小弱鸡

内网简易PDNS采集系统(PassiveDNS)

前言

国内关于PassiveDNS的文章不是很多,本文旨在帮助读者快速地了解PassiveDNS。

 

什么是PassiveDNS

PassiveDNS,又叫被动DNS、pDNS。它最初是Florian Weimer在2005年的论文Passive DNS Replication中提出的一种方案,用来解决DNS系统PTR反向查询能力不足的问题。

我们经常使用到的DNS服务器里面有两个区域,即“正向查找区域”和“反向查找区域”。正向查找区域就是我们通常所说的域名解析,反向查找区域即是这里所说的IP反向解析。它的作用就是通过查询IP地址的PTR记录来得到该IP地址对应的域名。当然,要成功得到域名就必须要设置该IP地址的PTR记录。所以并不是对每一个IP进行反向解析都会找到对应的域名。

我们可以将PassiveDNS简单理解为一个数据库,它收集每条DNS解析记录:如baidu.com→202.112.14.178,这时我们再去查询202.112.14.178所对应的域名时就不必查PTR记录了,而是转化为了简单的数据库查询操作。

PassiveDNS存储了DNS查询的历史解析记录。我们知道,DNS并不负责记录改变,当我们对一条资源记录进行修改后,这个修改后的记录会在整个互联网上传播,之前的记录便永远消失了。所以如果我们记录下这些DNS解析记录,我们就能得到很多有价值的信息。包括:

  • 该域名曾经绑定过哪些IP
  • 这个IP有没有其他的域名
  • 对于一个域名服务器(NS),它负责解析哪些域名
  • 这个域名最早/最晚什么时候出现
  • 一个域名下有哪些子域名

另外利用PassiveDNS可以实现对网络的DNS监控,基于此可以研究很多安全问题。

 

PassiveDNS系统实现流程

被动DNS数据的具体收集方式多种多样。一部分递归域名服务器,例如Knot以及Unbound,其中包含有软件钩子,旨在更为轻松地捕捉被动DNS数据。管理员可以利用dnstap这款免费程序从此类域名服务器当中直接读取被动DNS数据。

在骨干网环境下,被动DNS的采集关键是建立PassiveDNS Sensor,该Sensor可以部署在Client与Recursive,Recursive与Authority之间,采用交换机端口镜像旁路监听原理,具体的捕包技术有DPDK、Libpcap、零拷贝等。下图是PassiveDNS系统的原理示意图:

《内网简易PDNS采集系统(PassiveDNS)》

C2R(客户端-递归服务器) DNS流量

《内网简易PDNS采集系统(PassiveDNS)》

R2A(递归-授权)DNS流量

实验室解决方案

在实验室中通过端口镜像的方式进行DNS采集,因为只是为了采集DNS信息进行情报分析以及后期的数据处理,因此采用了 ELK 架构,后期通过数据处理程序进行WHOIS采集、历史解析记录采集、域名相关性分析、恶意域名识别等等

 

交换机镜像   –>  服务器(Packetbeat) –>   服务器(logstash)  –>   ES集群

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注