DNS - Domain Name System

域名系统

Domain Name System( DNS) 是互联网的组成部分。例如,通过域名,我们可以访问托管提供商分配了一个或多个特定 IP 地址的 Web 服务器。DNS 是一个将计算机名称解析为 IP 地址的系统,它没有中央数据库。简单地说,我们可以把它想象成一个拥有许多不同电话簿的图书馆。该信息分布在数千个名称服务器上。全球分布的 DNS 服务器将域名转换为 IP 地址,从而控制用户可以通过特定域访问哪个服务器。全球范围内使用的 DNS 服务器有多种类型:

  • DNS根服务器

  • 权威名称服务器

  • 非权威名称服务器

  • 缓存服务器

  • 转发服务器

  • 旋转变压器

服务器类型

描述

DNS Root Server

DNS 的根服务器负责顶级域 ( TLD)。作为最后一个实例,仅当名称服务器未响应时才会请求它们。因此,根服务器是互联网上用户和内容之间的中央接口,因为它链接域和 IP 地址。互联网名称与数字地址分配机构( ICANN) 协调根名称服务器的工作。13全球各地都有这样的根服务器。

Authoritative Nameserver

权威名称服务器拥有特定区域的权限。他们只回答其职责范围内的询问,并且他们的信息具有约束力。如果权威名称服务器无法回答客户端的查询,则根名称服务器将在此时接管。

Non-authoritative Nameserver

非权威名称服务器不负责特定的 DNS 区域。相反,它们本身收集有关特定 DNS 区域的信息,这是使用递归或迭代 DNS 查询完成的。

Caching DNS Server

缓存 DNS 服务器在指定时间段内缓存来自其他名称服务器的信息。权威名称服务器决定此存储的持续时间。

Forwarding Server

转发服务器仅执行一项功能:它们将 DNS 查询转发到另一台 DNS 服务器。

Resolver

解析器不是权威 DNS 服务器,而是在计算机或路由器本地执行名称解析。

DNS 主要是未加密的。因此,本地 WLAN 和互联网提供商的设备可以侵入并监视 DNS 查询。由于这会带来隐私风险,因此现在有一些 DNS 加密的解决方案。默认情况下,IT 安全专业人员在此处应用DNS over TLS( DoT) 或DNS over HTTPS( DoH)。此外,网络协议DNSCrypt还对计算机和名称服务器之间的流量进行加密。

然而,DNS 不仅仅链接计算机名称和 IP 地址。它还存储和输出有关与域关联的服务的附加信息。因此,DNS 查询还可用于确定哪台计算机充当相关域的电子邮件服务器或该域的名称服务器的名称。

From HTB Academy

不同的 DNS 记录用于 DNS 查询,它们都有不同的任务。此外,由于我们可以为一个域设置邮件服务器和其他服务器,因此不同的功能有不同的条目。

DNS记录

描述

A

结果返回所请求域的 IPv4 地址。

AAAA

返回所请求域的 IPv6 地址。

MX

结果返回负责的邮件服务器。

NS

返回域的 DNS 服务器(名称服务器)。

TXT

该记录可以包含各种信息。该全能工具可用于验证 Google Search Console 或验证 SSL 证书等。此外,还设置了 SPF 和 DMARC 条目来验证邮件流量并保护其免受垃圾邮件的侵害。

CNAME

该记录用作别名。如果域名 www.hackthebox.eu 应该指向相同的 IP,我们会为其中一个创建 A 记录,为另一个创建 CNAME 记录。

PTR

PTR 记录以相反的方式工作(反向查找)。它将 IP 地址转换为有效的域名。

SOA

提供有关相应 DNS 区域和管理联系人的电子邮件地址的信息。

SOA记录位于域的区域文件中,指定谁负责域的操作以及如何管理域的 DNS 信息。

在电子邮件地址中,点(.)被 at 符号(@)取代。在本例中,管理员的电子邮件地址是 [email protected]

默认配置

DNS 有许多不同的配置类型。因此,我们只讨论最重要的几个,以便从管理的角度更好地说明功能原理。所有 DNS 服务器都使用三种不同类型的配置文件:

  1. 本地 DNS 配置文件

  2. 区域文件

  3. 反向名称解析文件

DNS 服务器Bind9经常在基于 Linux 的发行版上使用。其本地配置文件 ( named.conf) 大致分为两部分,首先是常规设置的选项部分,其次是各个域的区域条目。本地配置文件通常是:

  • named.conf.local

  • named.conf.options

  • named.conf.log

它包含关联的 RFC,我们可以根据需要自定义服务器,并使用不同域的单独区域来定制域结构。配置文件named.conf分为几个控制名称服务器行为的选项。global optionszone options之间有区别.

全局选项是通用的,影响所有区域。区域选项仅影响其分配到的区域。name.conf 中未列出的选项具有默认值。如果某个选项既是全局选项又是特定于区域的,则区域选项优先。

本地DNS配置

在该文件中,我们可以定义不同的区域。这些区域被划分为单独的文件,在大多数情况下主要只用于一个域。ISP 和公共 DNS 服务器除外。

区域文件是用 BIND 文件格式描述 DNS 区域的文本文件。换句话说,它是 DNS 树中的一个授权点。BIND 文件格式是业界首选的区域文件格式,现已在 DNS 服务器软件中得到广泛应用。区域文件完整地描述了一个区域。其中必须包含一条 SOA 记录和至少一条 NS 记录。SOA 资源记录通常位于区域文件的开头。这些全局规则的主要目的是提高区域文件的可读性。语法错误通常会导致整个区域文件无法使用。名称服务器的行为与此区域不存在时类似。它会以 SERVFAIL 错误消息响应 DNS 查询。

简而言之,这里的所有转发记录都是按照 BIND 格式输入的。这样,DNS 服务器就能识别 IP 地址属于哪个域、主机名和角色。简单地说,这就是 DNS 服务器查找域名地址的电话簿。

区域文件

要从完全合格域名Fully Qualified Domain Name(FQDN)解析 IP 地址,DNS 服务器必须有一个反向查询文件。在该文件中,计算机名称(FQDN)通过 PTR 记录分配给 IP 地址的最后一个八位位组,该八位位组与相应的主机相对应。如上表所示,PTR 记录负责将 IP 地址反向转换为名称。

反向名称解析区域文件

危险环境

DNS 服务器受到攻击的方式有很多种。例如,可以在CVEdetails中找到针对 BIND9 服务器的漏洞列表。此外,SecurityTrails 还提供了DNS 服务器上最流行的攻击的简短列表。

选项

描述

allow-query

定义允许哪些主机向 DNS 服务器发送请求。

allow-recursion

定义允许哪些主机向 DNS 服务器发送递归请求。

allow-transfer

定义允许哪些主机接收来自 DNS 服务器的区域传输。

zone-statistics

收集区域统计数据。

Footprinting the Service 足迹服务

DNS 服务器的 "足迹 "是我们发送请求的结果。因此,首先可以向 DNS 服务器查询已知的其他名称服务器。我们可以使用 NS 记录,并使用 @ 字符指定要查询的 DNS 服务器。因为如果有其他 DNS 服务器,我们也可以使用它们并查询记录。不过,其他 DNS 服务器的配置可能不同,而且可能是其他区域的永久服务器。

DIG - NS Query

DIG - Version Query 版本查询

有时也可以使用 CHAOS 类查询和 TXT 类型来查询 DNS 服务器的版本。不过,该条目必须存在于 DNS 服务器上。为此,我们可以使用以下命令:

DIG - any Query任何查询

我们可以使用该选项ANY来查看所有可用记录。这将导致服务器向我们显示它愿意披露的所有可用条目。需要注意的是,并非所有区域的条目都会显示。

区域传输

Introduce

区域传输Zone transfer是指在 DNS 中将区域传输到另一台服务器,一般通过 TCP 端口 53 进行。这一过程被简称为异步完全传输区域Asynchronous Full Transfer Zone(AXFR)。由于 DNS 故障通常会给公司带来严重后果,因此区域文件几乎总是在多个名称服务器上保持一致。在进行更改时,必须确保所有服务器都有相同的数据。相关服务器之间的同步是通过区域传输实现的。通过使用密钥 rndc-key(我们在默认配置中已经看到过),服务器可确保与自己的主服务器或从服务器进行通信。区域传输只涉及文件或记录的传输以及相关服务器数据集差异的检测。

区域的原始数据位于一个 DNS 服务器上,该服务器被称为该区域的域名服务器。但是,为了提高可靠性、实现简单的负载分配或保护主服务器免受攻击,几乎在所有情况下都会额外安装一个或多个服务器,这些服务器被称为该区域的二级域名服务器。对于某些顶级域名 Top-Level Domains (TLD),必须使二级域名的区域文件至少可在两台服务器上访问。

DNS 条目一般只在主服务器上创建、修改或删除。这可以通过手动编辑相关区域文件或自动从数据库进行动态更新来实现。作为同步区域文件直接来源的 DNS 服务器称为主服务器。从主服务器获取区域数据的 DNS 服务器称为从服务器。主服务器始终是主服务器,而从属服务器既可以是从属服务器,也可以是主服务器。

从属节点每隔一定时间(即所谓的刷新时间,通常为一小时)从主节点获取相关区域的 SOA 记录,并比较序列号。如果主服务器 SOA 记录的序列号大于从服务器的序列号,则数据集不再匹配。

DIG - AXFR Zone Transfer

如果管理员出于测试目的或作为一种变通办法,在允许传输allow-transfer选项中使用了一个子网,或将其设置为any任意,那么所有人都会在 DNS 服务器上查询整个区域文件。此外,还可以查询其他区域,甚至可能显示内部 IP 地址和主机名。

DIG - AXFR Zone Transfer - Internal

带有主机名的个人A记录也可以通过暴力攻击找到。为此,我们需要一个可能的主机名列表,用于按顺序发送请求。例如,此类列表由SecLists提供。

一个选项是在 Bash 中执行for-loop,列出这些条目并将相应的查询发送到所需的 DNS 服务器。

Subdomain Brute Forcing - 子域暴力破解

为此可以使用许多不同的工具,并且大多数工具的工作方式相同。例如,这些工具之一是DNSenum

最后更新于

这有帮助吗?