草庐IT

IP rDNS(PTR)信息从理解到情报挖掘

青山依旧在,几度夕阳红 2023-03-28 原文

什么是IP的rdns信息?

  过去很多人,将IP的rDNS信息理解为解析到IP的反查域名信息。IP的rDNS信息和IP反查域名信息完全是两个不同的信息。IP的rdns信息被称之为反向DNS解析(rDNS),即通过DNS解析系统来将IP地址解析为域名。根据RFC1912标准“每一个互联网可以访问的主机都应该有一个名字”,所以rDNS信息更多是对应到一个IP地址的名字。IP的反查域名是指根据域名解析到IP的记录来反查出哪些域名解析到这个IP地址上。下面以8.8.8.8来说明IP的反查信息和rDNS信息的区别。

  通过命令nslookup可以直接获取到8.8.8.8的rDNS信息”dns.google.”,注意此处被标识为名称(name),即表示为IP的名称。

  通过virustotal平台查询8.8.8.8的IP反查信息,可以得到下图红框中10个域名是解析到8.8.8.8上的。IP反查的结果是域名A记录指向该IP的域名信息集合。

IP的rDNS是如何工作的?

PTR记录

  IP的rDNS信息本质上是IP地址的一个name信息。那这个信息是由谁在哪里设置的呢?在通过nslookup获取一个IP的rDNS信息请求时,本质上是发起了一个DNS请求,来获取一个IP的PTR解析记录。我们都知道DNS协议是域名解析协议,是用来解析协议的,那么如何能用来解析IP呢?这里要提到一个很牛的设计,为了能够通过DNS协议来解析到IP的rDNS信息,ICANN组织新增了一个tld(通用顶级域)“.arpa.”用来负责将IP映射为域名,支持rDNS协议和其他网络基础构架的管理工作。

  IP地址”4.3.2.1”映射转换之后的域名为1.2.3.4.in-addr.arpa.,IP地址114.114.115.115映射转换之后的域名为115.115.114.114.in-addr.arpa。然后通过DNS协议查询该域名的PTR记录就能够获得该IP的rDNS值,这个查询出来的值和nslookup命令查询出来的值是一样的。

IP rDNS的权威DNS

  我们都知道DNS协议中,每个域名都有对应的权威DNS服务器,用来维护这个域名的A记录、CNAME记录值等。在IP rDNS记录也是一样存在着权威DNS服务器。IP地址经过转换之后就是一个特殊的域名。下面我们来分别看一下各级域名对应的权威DNS服务器。

  下面各图就IP rDNS转换域名之后的各级权威DNS服务器进行了解析尝试发现,114.114这样的B段就配置了中国的DNS服务器,前面114这样的A段地址展示了全球五大RIR的权威DNS服务器,再往前的特殊域arpa.和in-addr.arpa.都在icann手上进行维护。这里可以做一个有趣的推论,全球的IP地址分配单位可能是按照B段来进行分配的。另外114.114.115这样的C段是没有查询到权威NS服务器的,由此也可以做一个有趣的推论,实际注册了IP网段的单位设定的权威DNS服务器可能不是严格按照C段来设定的。从方便的管理角度来看,按照C段更方便做    IP转化为域名的映射的管理,但实际上并没有这么分配,也就是国内注册IP的单位也不是严格按照C段来进行注册的。

arpa.的权威DNS服务器:

in-addr.arpa.的权威DNS服务器:

114.in-addr.arpa.的权威DNS服务器:

114.114.in-addr.arpa.的权威DNS服务器:


114.114.115.in-addr.arpa.的权威DNS服务器:

如何快速获得所有IPv4的rDNS数据:

向公共DNS发起全网IP的PTR DNS解析

  将所有的IP转化为域名之后,对公共DNS发起PTR的解析记录请求查询,这样的方法理论上是可行的。但是全球IPv4的地址大概有42亿,去除掉保留地址和一些特殊的IP地址之后,应该还有35亿左右,这个量可能会因为网络解析请求量过大,导致请求被拒绝,以致无法全面和准确的获得IP的rDNS信息。

向权威DNS发起PTR解析

  由于公共DNS的数量和承载性能有限制,首先获得一个IP地址的rDNS域名对应的权威DNS,然后在向这个权威DNS服务器发起查询请求,这样能够将请求分散到不同的权威DNS服务器,降低并发太高的问题。但是仍然还会面临实际的请求数据量过于庞大的问题。下图展示了获取114.114.114.114的权威DNS服务器的过程:

  上级域名“114.114.114.in-addr.arpa.”没有配置权威DNS服务器:

  上上级域名“114.114.in-addr.arpa”配置了权威DNS服务器:

  向上上级域名的权威DNS服务器发起PTR解析请求,注意看此处返回了授权区域(“AUTHORITY SECTION”)没有返回具体的ANSWER。这规定了该域名的rDNS记录应该去对应的权威DNS服务器(ns100.114dns.net)上去查询。

  再次向该域名的权威DNS服务器发起PTR记录查询请求,成功获取到rDNS记录:

  根据上面这几个步骤来看,向权威DNS发起请求,获取rDNS记录的过程比直接向公共dns发起解析请求慢很多,因为中间可能会多了一步或者多步。整体上来看也不能很好的解决快速获取rDNS数据的问题。

按需积累IP的rDNS解析数据

  无论哪种方式,要瞬间获得42亿IP的rdns信息都会比较困难。所以按照实际的业务需求对出现的部分业务优先级高的IP通过网络发包获得rdns信息,然后不断的积累,预期能够获得更多的rdns数据。

使用开源的rDNS数据。

  网络安全公司Rapid7下属的一个sonar实验室,会定期对全网进行IPv4 的rdns信息探测收集。收集完成之后,会对外提供下载地址。这也是一个重要的数据来源通道。

情报生产应用

生产白名单

  所有IP映射为域名之后的各级权威DNS服务器,都是可以用来转化为DNS服务器、用来做白名单数据的;

识别IP用途

  很多机构为了让外部知道自己IP是做什么用途的,会在IP的rDNS信息上声明相关的信息。比如百度的爬虫就是根据rDNS信息来判断是否为百度的爬虫。

根据rDNS信息判断IP是否为家庭宽带IP

判断IP是否属于动态IP

该IP属于河南电信的动态IP:

该IP属于上海电信IP:

参考链接:

https://opendata.rapid7.com/sonar.rdns_v2/

https://help.baidu.com/question?prod_id=99&class=476&id=2996

有关IP rDNS(PTR)信息从理解到情报挖掘的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  4. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  5. TimeSformer:抛弃CNN的Transformer视频理解框架 - 2

    Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图

  6. ruby - 易于初学者理解的 Ruby 库 - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5

  7. ruby - what is - gets is a directory - 错误信息 - 2

    我遇到了这个奇怪的错误.../Users/gideon/Documents/ca_ruby/rubytactoe/lib/player.rb:13:in`gets':Isadirectory-spec(Errno::EISDIR)player_spec.rb:require_relative'../spec_helper'#theuniverseisvastandinfinite...itcontainsagame....butnoplayersdescribe"tictactoegame"docontext"theplayerclass"doit"musthaveahumanplay

  8. ruby - 无法理解 `puts{}.class` 和 `puts({}.class)` 之间的区别 - 2

    由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A

  9. ruby - 尝试比较两个文本文件,并根据信息创建第三个 - 2

    我有两个文本文件,master.txt和926.txt。如果926.txt中有一行不在master.txt中,我想写入一个新文件notinbook.txt。我写了我能想到的最好的东西,但考虑到我是一个糟糕的/新手程序员,它失败了。这是我的东西g=File.new("notinbook.txt","w")File.open("926.txt","r")do|f|while(line=f.gets)x=line.chompifFile.open("master.txt","w")do|h|endwhile(line=h.gets)ifline.chomp!=xputslineendende

  10. ruby - 如何理解 Ruby 中的发送者和接收者? - 2

    我很难理解Ruby中sender和receiver的实际含义。它们一般是什么意思?到目前为止,我只是将它们理解为方法调用和获取其返回值的调用。但是,我知道我的理解还远远不够。谁能给我一个Ruby中发送者和接收者的具体解释? 最佳答案 面向对象中的一个核心概念是消息传递和早期概念化,这在很大程度上借鉴了计算的Actor模型。艾伦·凯(AlanKay)创造了面向对象一词并发明了最早的OO语言之一SmallTalk,他拥有voicedregretatusingatermwhichputthefocusonobjectsinsteadofo

随机推荐