在利用网络空间搜索引擎获取资产并进行漏洞检测时,会发现很多 IP 站存在漏洞,但是又无法直接证明 IP 的归属,通常会通过 IP 反查域名,然后通过域名的备案记录来确定归属,那么,如何通过 IP 反查域名呢?

在此之前,先来了解下 IP 和 域名的对应关系,下图是来自 chatgpt 关于 IP 和域名的关系解释:

从域名到 IP 的转换,通过 DNS 服务可以直接查询到,属于正向解析,但是从 IP 到域名,DNS 服务器并没有提供这项服务,属于不可逆查询,所以才有了今天的分享。

0x01 第三方平台反查

互联网上有很多平台通过积累自己的 DNS 记录库来提供反查域名的服务,有付费平台也有免费平台,这里分享几个我已经集成到自己脚本中的几个平台:

1、webscan.cc

http://api.webscan.cc/?action=query&ip=47.94.225.171

2、ip138

https://site.ip138.com/47.94.225.171/

3、rappiddns

https://rapiddns.io/sameip/

4、fofa

https://fofa.info/result?qbase64=aXA9IjQ3Ljk0LjIyNS4xNzEiICYmIGRvbWFpbiAhPSAiIg%3D%3D

5、hunter

https://hunter.qianxin.com/list?search=ip%3D%2247.94.225.171%22%26%26domain!%3D%22%22&conditions=

以上平台是我在用的几个,当然,还有很多其他的平台,这里推荐一个集成大量第三方平台的开源工具,模仿 subfinder 开发:

https://github.com/Lengso/iplookup

0x02 基于备案号

备案号?哪里来的备案号?国内网站对外提供服务均需要备案,且需要在页面中明确写出备案号,所以当你发现一个存在漏洞的 IP 站时,不妨试试,查看主页下是否存在备案号,不过这个不一定准确,因为站长伪造是一件非常容易的事儿。比如:

有了备案号之后,还要进一步确认,可以通过备案号进行反查注册的域名,这里可以使用多个平台,比如:

https://icplishi.com/

有了主域名,我们可以组合一些常见字典,进行 dns 枚举,尝试发现目标 IP 所对应的域名是什么。

0x03 证书信息

你所发现的 IP 站不一定是 443 端口,可能并没有绑定证书,但是该 IP 可能不仅仅只开放一个 80 端口,所以我们可以通过端口扫描的方式,探测常见的证书端口,如果存在,则获取该证书信息,从而提取证书中绑定的域名,也是一种证明归属的方式。比如:

0x04 数据汇总

将之前提到的几种方式获取到的主域名和子域名进行整合,先对子域名进行解析比对,是否有包含目标 IP 的域名存在,如果不存在,则需要将所有主域名进行整合,结合自定义的子域名字典,进行 DNS 枚举,从而发现该 IP 的真实域名。

0x05 总结

基于以上技术,我已经实现了一键查询脚本,在查询到数据之后会进行入库,下次再次查询将不再重新获取,也可以通过域名枚举的方式扩充本地数据库,从而让 IP 反查域名的效率翻倍,最终成果如图: