DNS数据分析


=Start=

缘由:

前几天花了点时间做了一下办公网DNS数据的分析,没有及时记录,怕过段时间就全忘了,今天有时间就整理记录一部分,方便以后参考。

正文:

参考解答:

先简单说一下分析DNS数据的意义和目的:

  1. DNS的作用非常简单——根据域名查对应的IP地址,但非常重要——DNS是互联网核心协议之一。
  2. 当一台设备接入公司的网络之后,它的流量都会流经公司内的网络设备,但因为HTTPS等加密协议的原因,即便你的流量经过了公司的网络设备但公司也没办法知道你在这些HTTPS网站内的具体行为(除非有对应的密钥能对流量进行解密),这对于普通人来说是好事,因为更安全了,但黑客和一些不怀好意的人也在利用这一点做坏事——此时安全人员无法进行有效检测,也就无法快速响应安全事件。虽然此时我们拿不到请求和响应内容了,但并不代表我们什么都做不了,DNS数据此时就提供了一些参考——它能粗略知道你大概访问了哪些域名,因为你要借助DNS来查找实际提供服务的IP地址,除非你完全放弃便利和可靠性,直接用固定IP进行通信。
  3. 当你能拿到相应的DNS数据之后,通过分析,你就可以清楚地知道在你的网络范围内哪些IP(后面对应的是设备/账号)分别在什么时间查询了哪些域名,当时查询返回的IP是什么。
  4. 也就可以知道在网络攻击/钓鱼行动中哪些内部用户受到了影响,从而就可以有的放矢的进行安全应急了。

==

具体的分析流程就是,先找到公司内和办公网DNS相关的数据表(没有的话赶紧找IT同学做记录和接入,要不等到出事的时候就晚了),然后分别抽样看看都记录了哪些字段,好有个大概的印象;然后抽出重点字段进行分析和关注。

从抽样数据来看可以得到以下几个信息:
1、日志是由 dnsmasq 这个程序记录的;
2、核心字段有5个(timestamp/type/domain/action/hostip)。

字段名 字段值
timestamp 2022-09-07 23:59:58
type query[AAAA]
domain www.google.com
action from
hostip 172.30.87.146

查询类型type分析

参考 WikiPedia 就行,办公网的案件溯源一般关注 query[A]/query[AAAA]

查询操作action分析

  • action=from 记录的是由客户端发起的DNS查询请求,即client_ip想知道domain的ip是什么
  • action=is 记录的是DNS查询的结果,即domain的ip实际是什么
  • action=to 主要记录的是指定DNS服务器进行查询,将domain的查询转发到指定的dns服务器上

action = ‘is’ 的dns日志,基本上是回复查询对象某个域名的IP是多少,hostip字段是域名的IP而不是查询对象的IP。type的取值范围是(reply#/etc/hosts#config#cached):

含义分别为:

  • cached 从缓存中返回之前查询到的结果
  • reply 返回查询结果
  • config 配置域名和IP的对应关系(能配置的基本都是内部域名)
  • /etc/hosts 从本地hosts文件(都是内部域名)中查询并返回结果

action = ‘to’ 的dns日志,其中 type=forwarded 是转发操作的日志,即指定dns服务器进行查询,所以hostip记录的是那几个常见的dns服务器的IP,比如Google的 8.8.8.8 阿里的 223.5.5.5 腾讯的119.29.29.29 等。

action = ‘to’ 的dns日志只有 type=forwarded 还有点用,但在调查的时候也没有大用,因为基本都是dns查询转发,没有记录发起dns查询请求的主机IP。

总体来看:只有 action = ‘from’ 的dns日志记录了发起dns查询请求的主机IP(可以用于辅助判断某个主机IP有没有使用过特定服务),且一般是type取值为(‘query[A]’,’query[AAAA]’)的是查域名对应IP的常规请求。

就DNS数据来说,核心的功能点在于提供以下2类信息:

  1. 哪个IP在什么时间点查了哪个域名(dns_log);
  2. 在相应时间点被查询域名的IP返回的是什么(dns_ip)。

从日常案件调查的情况来看,主要关注的query_type在于(‘query[A]’,’query[AAAA]’),即查询目标域名IP的查询请求(dns_log);
但最好也保存一下被查询域名的IP查询结果(dns_ip),对于溯源那些存活生命周期很短的domain/ip时很有用。

参考链接:

The Importance of DNS Logging in Enterprise Security
https://nxlog.co/whitepapers/dns-logging

什么是 DNS? | DNS 的工作方式
https://www.cloudflare.com/zh-cn/learning/dns/what-is-dns/

域名系统
https://zh.wikipedia.org/zh-sg/%E5%9F%9F%E5%90%8D%E7%B3%BB%E7%BB%9F
https://en.wikipedia.org/wiki/Domain_Name_System

List of DNS record types
https://en.wikipedia.org/wiki/List_of_DNS_record_types

=END=


《“DNS数据分析”》 有 1 条评论

  1. Encrypt DNS queries with DoT or DoH
    https://techdocs.akamai.com/etp/docs/configure-dot-doh
    `
    默认情况下,来自Internet的DNS查询是不加密的,并且在从客户端到DNS解析器的过程中以明文形式传递。DNS over TLS (DoT)和DNS over HTTPS (DoH)是允许您加密这些查询的协议。DoT通过添加隐私和防止威胁行为者从本地网络欺骗流量或劫持DNS,使用传输层安全(TLS)加密保护这些信息。DoH使用HTTPS协议加密DNS请求和响应。使用这种方法,DNS流量伪装成标准HTTPS流量,允许您从攻击者或第三方隐藏DNS。与DoT一样,DoH防止威胁行为者拦截或改变DNS流量。

    #Configure DoT or DoH on macOS or iOS(在macOS或iOS上配置DoT或DoH)
    在iOS的蜂窝网络状态下如果想配置DoT/DoH需要相应的描述配置文件来操作,其它的iOS/macOS的Wi-Fi网络状态下,直接改DNS配置就行。

    To configure DoT or DoH, you need to create a configuration profile. You can use a profile configuration application to create a profile where you provide the DoH or DoT domains.
    配置DoT或DoH时,需要创建配置文件。您可以使用配置文件管理应用程序来创建配置文件,在其中提供DoH或DoT域名。

    After generating a profile, an end user can download it. You can also use your device management solution to distribute the profile to Apple devices across your organization.
    生成配置文件后,终端用户可以下载它。您还可以使用您的设备管理解决方案将概要文件分发到整个组织的Apple设备。
    `

    你更倾向于 DoH 还是 DoT?
    https://www.v2ex.com/t/742709

    DoT DoH 除了 DNSCrypt,你还可以了解一下更好的 DNS 加密方案
    https://www.logcg.com/archives/3127.html

    DoH 与 DoT 说明
    https://docs.dnspod.cn/public-dns/dot-doh/

    iOS 系统接入公共解析 Public DNS
    https://docs.dnspod.cn/public-dns/ios-public-dns/

    macOS 系统接入公共解析 Public DNS
    https://docs.dnspod.cn/public-dns/macos-public-dns/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注