转载

如何下载所有已注册的域名列表

每天早晨,信息安全领域都要迎接新注册的恶意域名的袭击。这些域名被用来承载网络钓鱼网站、维持僵尸网络的命令与控制、收获窃取的信息,等等。

拥有一个每天新注册的域名的完整列表可以用于网络及响应。幸运的是,这样的列表不仅存在而且不需要费很大的力气便可获得(通常是免费的)。本文将介绍TLD区域文件并且介绍了如何访问它们以及如何使用它们。

区域文件

在被大量域名淹没之前,让我们先来谈一谈如何组织这些列表中的域名。有人对特定TLD(.com、.net、.ninja等)的所有域名进行了跟踪,这些被称为注册局。每个注册局都维护他们所负责的所有域名的主列表。这个主列表就称为“区域文件”。

注册局的职责是维护这个区域文件。你可以想象,因为新域名注册、其他域名到期以及域名服务器记录发生更改,TLD的区域文件每天都要进行多次更新。

我只是想要下载数据!

现在我们知道了什么是区域文件,但是我们该怎样访问它们呢?正如之前提到的,每个注册局负责维护他们自己的TLD的区域文件,但是他们同时也维护区域文件的访问权限。这就意味着在某些情况下我们需要直接转到注册商,而这里有一些有用的例外。

.COM、.NET 以及.NAME

让我们从最容易理解的地方开始:.com、.net和.name(因为它已经绑定在一起)。这些都是由Verisign维护的。 访问这些区域文件 包括下载一个 区域访问表单 和发送完整表单到电子邮箱tldzone@verisign-grs.com。

这需要花几个星期的时间等待授予访问权限。当你的表单被批准之后,便会收到用于下载区域文件的FTP凭证。

root@tld:~# ftp rz.verisign-grs.com Connected to rz.verisign-grs.com. 220-**** Welcome to the VeriSign Global Registry Services gTLD Zone FTP Server **** 220-*** 220-*** This computer system is owned and operated by VeriSign, Inc. 220-*** All software or information that you access or download from this 220-*** server is being licensed to you under the terms of our Registrar 220-*** License and Agreement.  Unauthorized access to this system may 220-*** result in criminal prosecution. 220-*** 220-*** All sessions established with this server are monitored and logged. 220-*** Disconnect now if you do not consent to having your actions monitored 220-*** and logged. 220-*** 220-******! 220 Name: [redacted] 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. <snip> -rw-r--r--    1 ftp      ftp      2497503218 Sep 29 15:20 com.zone.gz -rw-r--r--    1 ftp      ftp      321976673 Sep 29 15:12 net.zone.gz 226 Directory send OK.

我们将看看有了这些我们能够做些什么。首先,我们先说说如何捕获在.ninja上的所有恶意程序。

集中的区域数据服务(CZDS)

你可能已经注意到有大量通用顶级域名出现。在撰写本文时,ICANN的一个部门——IANA已认可的, 有效的TLD有1070个 。

由于每个注册表局维护它们自己的区域文件,试图分别访问它们是十分困难的。幸运的是,ICANN通过创建集中区域数据服务(CZDS)解决了这一问题。

CZDS“提供了一个集中的访问点……到参与其中的顶级域名”。这就意味着,通过CZDS注册,我们可以同时请求访问几乎所有TLD(包括通用的顶级域名)的区域文件。

如何下载所有已注册的域名列表

当你访问一个特殊的区域文件时,你能够通过 ICANN的API 进行下载。他们甚至提供了一个 Python客户端 ,可以用于批量下载你能够访问的所有区域文件。

不幸的是,你可能无法获得所有的区域文件。实际上,看过ICANN的 最新报告 后,如.aaa这样的顶级域名仅授权了3个人使用CZDS下载其区域文件。我想,我们可以使用我们已有的数据做点什么。

好啦,我们已经拥有了足够的数据,现在可以开始进行解析。

解析区域文件

如果你想要解析区域文件中的所有数据,你可以阅读 RFC 1035 中相关的完整格式,而本文只关注域名到域名服务器的映射。我们先来看看文件的内容。

root@tld:~# head com.zone -n 50 ; The use of the Data contained in Verisign Inc.'s aggregated ; .com, and .net top-level domain zone files (including the checksum ; files) is subject to the restrictions described in the access Agreement ; with Verisign Inc.   $ORIGIN COM. $TTL 900 @ IN    SOA     a.gtld-servers.net. nstld.verisign-grs.com. (                                   1443370544 ;serial                                   1800 ;refresh every 30 min                                   900 ;retry every 15 min                                   604800 ;expire after a week                                   86400 ;minimum of a day                                   ) $TTL 172800  NS A.GTLD-SERVERS.NET.  NS G.GTLD-SERVERS.NET.  NS H.GTLD-SERVERS.NET.  NS C.GTLD-SERVERS.NET.  NS I.GTLD-SERVERS.NET.  NS B.GTLD-SERVERS.NET.  NS D.GTLD-SERVERS.NET.  NS L.GTLD-SERVERS.NET.  NS F.GTLD-SERVERS.NET.  NS J.GTLD-SERVERS.NET.  NS K.GTLD-SERVERS.NET.  NS E.GTLD-SERVERS.NET.  NS M.GTLD-SERVERS.NET. COM. 86400 DNSKEY 257 3 8 AQPD<snip> COM. 86400 DNSKEY 256 3 8 AQOp<snip> COM. 86400 NSEC3PARAM 1 0 0 - COM. 900 RRSIG SOA 8 1 900 20151004161544 20150927150544 35864 COM. MpW<snip> COM. RRSIG NS 8 1 172800 20151003045209 20150926034209 35864 COM. mcxl<snip> COM. 86400 RRSIG NSEC3PARAM 8 1 86400 20151003045209 20150926034209 35864 COM. SLk71<snip> COM. 86400 RRSIG DNSKEY 8 1 86400 20150930182533 20150923182033 30909 COM. pDtt<snip> KITCHENEROKTOBERFEST NS NS1.HOSTINGNET KITCHENEROKTOBERFEST NS NS2.HOSTINGNET KITCHENFLOORTILE NS NS1.HOSTINGNET

文件中前35行是包含了关于区域文件的一些信息,根域名服务器等。真正的干货是从第36行开始。

通常情况下,区域文件包括下面的格式内容:

· Name域名 · TTL 生存时间值 · Record Class 记录类 · Record Type  记录类型 · Record Data  记录数据

在我们的示例中,我们发现KITCHENROKTOBERFEST.COM(.com)指向了NS1.HOSTINGNET.COM和NS2.HOSTINGNET.COM的域名服务器。

除了显示域名映射到域名服务器的说明,在文件尾部有文件中每个域名服务器的A记录(IP地址)。但是如果我们想要删除全部“没用的数据”,然后只保留域名与对应映射域名服务器的内容。

我们可以使用简单的grep -E "^[a-zA-Z0-9-]+ NS ." com.zone找到“有意思”的行,这样我们只会得到域名与域名服务器的行。

root@tld:~# grep -E "^[a-zA-Z0-9-]+ NS ." com.zone | head -n 10 KITCHENEROKTOBERFEST NS NS1.HOSTINGNET KITCHENEROKTOBERFEST NS NS2.HOSTINGNET KITCHENFLOORTILE NS NS1.HOSTINGNET KITCHENFLOORTILE NS NS2.HOSTINGNET KITCHENTABLESET NS NS1.HOSTINGNET KITCHENTABLESET NS NS2.HOSTINGNET KITEPICTURES NS NS1.HOSTINGNET KITEPICTURES NS NS2.HOSTINGNET BOYSBOXERS NS NS1.HOSTINGNET BOYSBOXERS NS NS2.HOSTINGNET   root@tld:~# grep -E "^[a-zA-Z0-9-]+ NS ." com.zone | wc -l 281899907

简直太棒了! 我们可以用我们的域名列表解析出任何我们想要的输出结果。

结语

在信息安全方面,对这些数据的利用可以有很多,例如蓄意拼写错误监测(防止“蓄意错误拼写的抢注”)、DGA监测、位翻转监测等。当然,这些区域文件的用途远远不止这些,它还能用来监测域名趋势,查找关键字……

现在,考虑一下如果你每天都会拿到这些数据那么会发生什么?随着时间的推移,你会发现信息安全、域名等方面的变化趋势。CloudFlare或Akamai背后的域名是否发生了转移?如果是那么,在域名转移前你会有一条他们指向的域名服务器的记录。

我希望你不仅了解到区域文件是多么有用,还知道如何访问它们。感谢ICANN、Verisign以及其他注册商为公众提供了这些数据。

*参考来源: blog ,编译/明明知道,转载须注明来自FreeBuf黑客与极客(FreeBuf.COM)

正文到此结束
Loading...