admin管理员组

文章数量:1530034

  1. 域名解析过程

目录

域名解析过程

DNS隧道原理 

DNS隧道数据包分析

DNS缓存投毒(DNS欺骗)

 DNS劫持

DNS加密

域名解析过程

① 浏览器检查自身缓存中是否存在该域名对应的ip地址的记录,如果缓存中有,解析结束

② 若浏览器缓存中无记录,浏览器查找操作系统缓存中是否存在该域名对应的DNS解析结果

③ 若以上过程均未解析成功,PC端则请求本地DNS域名解析服务器,本地DNS解析服务器查询缓存记录缓存中包含此记录,返回结果。

④-1 若不存在,本地DNS服务器向DNS根服务器进行查询

④-2 根服务器根据域名的顶级域名返回下一级需查询的顶级域名服务器的地址。

⑤-1 本地 DNS 服务器向 顶级DNS服务器发送 DNS 请求;

⑤-2 顶级域名服务器返回下一级服务器(权威服务器)的地址供本地域名服务器查询。

⑥-1 本地服务器向权威服务器发送 DNS 请求 权威服务器收到请求后,在自己的缓存表中发现了该域名和 IP 地址的对应映射关系表;

⑥-2 将 IP 地址返回给本地 DNS 服务器。

⑦ 本地 DNS 服务器将获取到与域名对应的 IP 地址返回给客户端,并且将域名和 IP 地址的对应关系保存在缓存中,以备下次别的用户查询时使用。

DNS隧道原理 

原理上在PC端与域名解析服务器上建立一条依靠DNS协议封装的隧道。

①从受控主机端开始,实际的C&C通信数据通过本地端口(如127.0.0.1:5353)输入到隧道工具,由工具按照DNS协议要求进行封装,携带通信数据的DNS查询请求通过DNS协议的53号端口发送到攻击者控制的DNS服务器。

②攻击者控制的DNS服务器接受到查询请求后,隧道服务端工具首先按照对应规则从请求数据包中提取C&C通信数据,并转发到事先设置好的C&C服务端对应的端口(也可以是另外的主机地址)。

③C&C服务端接受对应端口的C&C数据并响应,响应数据依然发送给服务端的隧道工具,隧道工具对响应数据同样按照DNS协议封装为对应(请求序列号)的DNS响应数据包,通过DNS隧道发送到受控端

④受控端的隧道工具从接收到的DNS响应数据包中提取C&C数据,交付给对应控制程序按照实现设置好的规则解析后执行命令、控制操作

⑴在直连型的DNS隧道中,pc端通过解析后的ip,对要传输数据利用DNS封装工具进行封装并将其利用DNS协议将数据传输至服务器;而服务器可以利用封装工具将要发送到PC端的命令封装,PC端执行利用工具解封后得到的命令。

⑵在中继型的DNS隧道中,其利用了DNS的解析过程,需要经过本地域名解析服务器,但本地域名服务器不会检查数据包,因此其效果看上去与隧道相似,一种端到端传输。

 DNS隧道数据包分析

DNS报文基础结构部分

字段

描述

事务ID

Transaction ID

DNS 报文的 ID 标识。对于请求报文和其对应的应答报文,该字段值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的。

Questions

问题计数,DNS 查询请求的数目。

Answers RRs

回答资源记录数,DNS 响应的数目。

Authority RRs

权威名称服务器计数,权威名称服务器的数目。

Additional RRs

附加资源记录数,额外记录数目(权威名称服务器对应 IP 地址的数目)

Flags

标志,DNS 报文中的标志字段。

Flags

QR(Response)

查询请求/响应的标志信息。查询请求时,值为 0;响应时,值为 1。

Opcode

操作码,0 表示标准查询;1 表示反向查询;2 表示服务器状态请求。

AA(Authoritative)

授权应答,该字段在响应报文中有效。值为 1 时,表示名称服务器是权威服务器;值为 0 时,表示不是权威服务器。

TC(Truncated)

表示是否被截断。值为 1 时,表示响应已超过 512 字节并已被截断,只返回前 512 个字节。

RD(Recursion Desired)

期望递归。该字段能在一个查询中设置,并在响应中返回。标志为递归查询,则域名服务器必须处理该查询。若值为 0,即迭代查询,且被请求的域名服务器没有一个授权回答,返回能解答该查询的其他域名服务器列表。

rcode

返回码字段,表示响应的差错状态。

Z

保留字段,在所有的请求和应答报文中,它的值必须为 0。

DNS响应报文中应答部分

查询名(Name):一般为要查询的域名,有时也会是 IP 地址,用于反向查询。

查询类型(Type):DNS 查询请求的资源类型。通常查询类型为 A 类型,表示由域名获取对应的 IP4 地址。(更多类型如 AAAA,CANME,SOA,PTR,NS 等)

查询类(Class):地址类型,通常为互联网地址,值为 1。

目前可用的DNS协议封装工具较多,包括Cobalt Strike、dnscat2、dns2tcp等工具,针对Cobalt Strike工具的数据包如下:

请求包

响应包

DNS缓存投毒(DNS欺骗)

原理上利用DNS的解析过程中的bug,修改本地域名服务器A中的对某域名的记录,对通过本地域名服务器A解析的主机在访问该域名时,返回假的ip地址。

一、普通DNS缓存投毒

根据图示可知想要完成投毒全过程,需满足一下条件:

  1. 满足本地域名服务器的缓存中不存在该域名,发起迭代查询(即TTL约束);
  2. 攻击者解析域名的服务器需知道请求包的Transaction ID,一般通过猜测的方式进行尝试,由于Transaction ID在数据包中占16位,因此最多猜测次。
  3. 由于本地域名服务器仅采纳第一次返回的响应包的DNS解析结果进行缓存更新,因此攻击者的服务器必须比权威服务器优先到达本地域名解析服务器,因此其整个猜测过程完成后的时间应小于正常域名解析的时间。

二、Kaminsky攻击

由于普通的DNS缓存投毒具有限制性条件,其中确定某域名是否在本地域名服务器中尤为重要,因此为了绕过该限制条件:

  1. 利用DNS返回包中additional region中的信息和时间差冒充最后一级域名解析服务器;
  2. 本地服务器将能解析相同二级域名的恶意域名服务器及其ip更新至本地缓存,使经过该本地域名服务器解析的所有相同二级域名的解析服务均发送至恶意服务器进行解析。

攻击成功的关键点:

1、要把握住时机,要能控制或知道什么时候LDNS发出针对某个域名的查询包。

2、响应包中的目的端口正是查询包里的源端口。

3、响应包中的QID也是对的。

4、响应包中的记录被LDNS接受并计入缓存。(这是最重要的)

 DNS劫持

⑴原理:攻击者利用其他攻击手段,篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP,导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址,从而实现非法窃取用户信息或者破坏正常网络服务的目的。

注:执行DNS劫持攻击,攻击者要么在用户的系统上安装恶意软件,要么通过利用已知漏洞或破解DNS通信来接管路由器。

⑵DNS劫持攻击的类型

1、在中间人(MiTM)DNS劫持攻击中,攻击者执行中间人(MiTM)攻击以拦截用户和DNS服务器之间的通信并提供不同的目标IP地址,从而将用户重定向到恶意站点。

2、在流氓DNS服务器攻击中,攻击者可以破解DNS服务器,并更改DNS记录以将DNS请求重定向到恶意站点。

3、在本地DNS劫持中,攻击者在用户系统上植入恶意软件并修改本地DNS设置,因此用户的系统现在使用由攻击者控制的DNS服务器。攻击者控制的DNS服务器将网站域请求转换为恶意站点的IP地址,从而将用户重定向到恶意站点。

4、在路由器DNS劫持攻击中,攻击者利用路由器中存在的固件漏洞来覆盖DNS设置,而影响连接到该路由从器的所有用户。攻击者还可以通过利用路由器的默认密码来接管路由器。

DNS加密

通过两种通信加密方式对DNS通信过程进行加密:通过TLS传输的DNS查询和通过HTTPS传输的DNS查询。以上两种方式均基于安全传输层协议(Transport Layer Security,TLS)来加密,服务器通过使用证书对客户端进行身份验证,以确保无法伪造服务器。

  • DOT通信过程

在加密的 DoT 情况下,在发送加密的 DNS 消息之前会交换一些 TLS 握手消息:

  1. 客户端发送一个Client Hello,广播他支持的 TLS 功能。
  2. 服务器以Server Hello响应,并协商将用于保护通信连接的TLS参数。证书(Certificate)消息包含服务器的身份,而证书验证(Certificate Verify) 消息将包含数字签名,客户端可以使用服务器证书对其进行验证。客户端通常会根据其本地信任的证书颁发机构(Certificate Authorities) 列表来检查此证书,但是 DoT 规范提到了可替代的信任机制(alternative trust mechanisms),例如公钥固定(public key pinning)。
  3. 一旦客户端和服务器都完成(Finished) TLS 握手后,终于它们可以开始交换加密的消息。上面的图片包含一个DNS查询和响应,实际上,安全TLS连接将保持打开状态,并将重用于后续的DNS查询。
  • DOH通信模式
    为了防止沿路(on-path)的设备干扰 DNS以及防火墙上通过端口屏蔽的问题,并且使 Web 应用程序能够通过现有的浏览器 API 访问 DNS。提出了一种基于HTTPS 的 DNS 查询(DNS Queries over HTTPS,DoH)。通过使用HTTPS来封装DNS请求,以实现通信过程加密的需求。

    参考链接:安全验证 - 知乎

 nslookup命令模拟DNS域名解析过程Quick Start-阿里云开发者社区https://wwwblogs/yd1227/archive/2011/01/26/1945377.html浅谈 DNS 加密的原理 | 驱蚊器喵的翻译平台

本文标签: 原理知识dns