DNS的全称是Domain Name System(网络名称系统),它作为将域名和IP地址相互映射,使人更方便地访问互联网。当用户输入某一网址如littlehann.com,网络上的DNS Server会将该域名解析,并找到对应的真实IP如101.37.97.51,使用户可以访问这台服务器上相应的服务。
DNSlog就是存储在DNS Server上的域名访问信息,它记录着用户对域名littlehann.com等的访问信息,类似日志文件。
按照解析类型分类,DNS域名有如下几种:
当客户端对域名发起访问时,会将解析请求发送给递归解析服务器,递归服务器会代替客户端进行全球递归查询。
以上是DNS解析的标准流程,但是由于各种DNS缓存的存在,导致DNS解析环节更为复杂。
所谓DNS缓存是指DNS返回正确的IP地址之后,系统会将这个结果临时储存起来,并为缓存设定一个失效时间(TTL值),在TTL失效前,当再次访问这个网站,系统就会直接从DNS 缓存中将结果返回,而不必再次委托递归服务器进行全球解析查询,加快了DNS解析的流程。
当然TTL值失效后,系统还会自动再次询问DNS服务器以获取最新的解析结果。
按照缓存位置的不同,DNS缓存可以分为以下几类:
DNS解析顺序是“先查缓存,再递归解析”,查询顺序为:浏览器缓存—系统缓存—路由器缓存—递归服务器缓存—递归查询。
参考链接:
https://developer.aliyun.com/article/331012
在某些情况下,无法利用漏洞获得回显。但是,如果目标可以发送DNS请求,则可以通过DNS log方式将想获得的数据外带出来(oob)。
DNS log常用于以下情况:
首先,DNS服务是互联网核心基础设施之一,DNS query外连端口和外连请求几乎在整个互联网上都是默认开放的,这对攻击者来说就是一个绝佳地稳定oob通道。
其次,因为DNS解析服务整体上看是一个分布式地架构,NS server则是这个分布式架构的基础设施,同时攻击者可以很容易地创建自己的NS server,从而给攻击者利用DNS递归查询流程作为oob信息收集提供了极大地便利。
攻击者劫持受害机器的执行流后,发起DNS query查询,查询的域名是攻击者自有的A记录域名,同时由于攻击者声明了该A记录的NS记录,该NS记录指向的是攻击者控制的一台域名服务器,所以根路由会将该DNS query查询发送到攻击者控制的域名服务器上(也就是运行了dnslog程序的机器上),至此完成了oob信道传递过程。
注意,上述公网可访问机器必须开放UDP 53端口,以确保该机器可以接受DNS查询以及进行DNS递归查询。
通过制定NS记录,便指定了解析对应A记录的DNS域名服务器,以此完成了DNS oob的信道搭建。
下载地址: https://github.com/lanyi1998/DNSlog-GO/releases
下载对应版本并解压,
wget https://github.com/lanyi1998/DNSlog-GO/releases/download/1.5.6/dnslog-linux.zip
编辑配置文件,
启动服务,
参考链接:
https://github.com/aboul3la/Sublist3r https://blog.csdn.net/m0_51468027/article/details/125734951 https://cloud.tencent.com/developer/article/1948254 https://www.f12bug.com/archives/dnslog%E5%B9%B3%E5%8F%B0%E6%90%AD%E5%BB%BA https://github.com/lanyi1998/DNSlog-GO/releases/tag/1.5.6