所谓IP反查域名这件事, 其实就是拿一个已经知道的IP地址去反着查这个IP现在绑着或者以前绑过哪些域名, 也就是主机名。这在网络安全排查、网站运维还有域名资产盘点这些工作里头都是个基础操作。
它的最基本的实现流程是特别简单的, 你只要去利用DNS反向解析里的PTR记录或者是去找一些第三方的DNS查询服务来帮忙, 基本上就能查到那个IP对应着的都是什么域名了。
IP反查域名的三种核心方法
DNS反向解析(PTR查询)
这是那种最底层、也最有权威性的办法。具体的操作步骤是这样的:
1. 把那个IP地址给进行一下转换, 用的方法是点分十进制方式转换成逆序的点分类格式, 就像说如果这个IP地址是192.168.1.10这个样子呢, 那转换之后的逆序结果就应该是10.1.168.192那样。
2. 在末尾追加字符串“.in-addr.arpa”, 这样才能够构成完整的PTR查询名称, 这个名称就是10.1.168.192.in-addr.arpa。
3. 请采取操作, 也就是去使用 dig 这个命令, 或者去使用 nslookup 这个命令, 以便完成查询的任务。
Linux/Mac:dig -x 192.168.1.10
Windows:nslookup 192.168.1.10
4. 如果目标IP地址已经设置了PTR记录, 那么在返回的结果里面, 就会显示出它所对应的域名。要是没有设置这样的记录, 返回的内容可能是提示“No answer”这样的话, 或者是完全为空的一个结果。
在线DNS反向查询工具
在使用命令行工具进行具体操作的过程当中, 如果出现了一种不太习惯的情况, 就可以通过选择使用在线工具这一方式来最终完成查询任务。
用户可以在浏览器之中进入到 gname.xin 这个网站的 DNS 查询页面去操作, 需要把目标 IP 地址输入进去, 要选择"Reverse DNS Lookup" 这个功能项, 在提交以后, 就可以查看到该 IP 地址所对应的 PTR 记录以及关联的域名了。
我们还会用到一些常用的平台, 像dnslookup.com、ViewDNS.info、ThreatMiner等等。操作的逻辑是一样的。先输入IP地址。然后去选择Reverse Lookup这个选项。最后再去读取产生的结果。
WHOIS与证书信息交叉验证
PTR记录并非所有IP都配置。对于未设置PTR的IP,可辅助使用以下手段:
1. 你可以去访问目标IP所属的AS的注册局, 比如RIPE NCC、APNIC、ARIN这些机构, 然后通过WHOIS来查询该IP的分配记录, 部分注册局还会标注关联域名或者主机名。
2. 你可以选择访问 crt.sh 这个网站, 然后在搜索框里面填写上那个 IP 地址, 去查询一下在这个 IP 地址上面曾经签发过得所有的 SSL 证书, 最后再根据查出来的这些证书的数据, 从中把相关联的域名给提取出来即可。
3. 将前两个阶段得出的结果放在一起进行交叉比对和相互确认, 进而取得一份更为详尽周全的域名清单。
关键注意事项
PTR记录并非必须配置。 根据RFC 1815的规定, PTR记录的生成需要由网络管理员主动设置才会发生。在实际场景中, 大量的公网IP地址, 包括CDN节点和云厂商提供的弹性IP等, 默认情况下都不会进行配置, 因此在这种情况下执行反向查询操作时是不会返回任何结果的。
一个IP地址是可以对应多个域名的。 当处于共享主机的环境之中, 以及使用CDN进行加速, 或者是运用负载均衡技术的场景下, 同一个IP地址能够承载成百上千个不同的域名, 此时必须结合时间戳来判断具体哪一个是目前有效的那个项目。
结果具有时效性。DNS记录可能会随时发生更改, 所以查询所得到的答案仅仅能够代表在进行查询那个具体时刻里面的实际状态。
内网IP无法反查。 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16是私有地址段, 因为不具备公网PTR记录。
典型应用场景
以上说的这些个办法, 把IP反查域名这个事, 从最基础的查询环节, 一直做到最后的交叉验证这个步骤, 整个链路都覆盖到了。大家伙儿呢, 可以瞅瞅自己那边是个什么样的技术环境, 然后挑一个最适合自己的操作路数来干。

