写点什么

用 DNS 进行网络度量和安全分析

  • 2020-12-27
  • 本文字数:3516 字

    阅读完需:约 12 分钟

用DNS进行网络度量和安全分析

背景


今天为大家推荐由 360 网络安全研究院-安全分析资深专家分享的议题《用 DNS 进行网络度量和安全分析》,本课题简要阐述了 DNS 协议的历史和发展现状,在此基础上,结合 360 网络安全研究院的多年分析 DNS 数据的经验,介绍了我们利用 DNS 数据做过的一些关于大网方面的度量,并结合公司多维度的海量数据做的安全分析方面的一些工作。


DNS 概述


DNS 协议对互联网的从业者来说并不陌生,它是互联网的最古老也是最基础和最核心的协议之一。简单来说的话,它最主要的功能是完成域名和 IP 地址的映射,即互联网的电话簿。


但 DNS 协议能够完成的功能远远不止于完成域名和 IP 地址的映射,很多现代互联网的基础业务都要基于 DNS 协议才能够完成,可以认为跟域名相关的业务几乎都和 DNS 协议有关。根据 dns-camel 项目[1]统计,截止到 2019 年 6 月,共有 150 篇标准,建议,最佳实践方面的 RFC,共有 2637 页,非常庞杂的内容。所以 DNS 协议实际的复杂度超出了大多数人对其的理解。


下图显示了 DNS 协议相关的 RFC 页数从 1984 年到 2019 年的变化量,可以看到从 1996 年开始,几乎以每四年 500 页的速度在稳定增加。



也正因为如此基础和复杂,几乎所有的互联网业务都会在 DNS 数据中留下痕迹。使用了 DNS 服务的恶意行为也不例外,对 DNS 数据进行安全分析,可以涵盖绝大多数的恶意行为。


本文从使用 DNS 数据角度来介绍一下可以做的事情。主要是两大类,分别为网络(业务的)度量和安全分析。


网络度量

DNS 劫持情况


同大多数早期的互联网协议类似,DNS 协议在设计之初是以明文形式传输,支持 TCP 和 UDP 两种传输协议,并且在实际使用过程中传输协议主要以 UDP 为主。


所以到现在,大多数的 DNS 请求和应答仍然是基于 UDP 协议的明文形式进行传输,因此 DNS 劫持是 DNS 在实际环境中非常普遍的问题,为了对这个问题有个精确的度量。清华大学网络科学与网络空间研究院和 360 公司合作,对全球范围内的 DNS 劫持情况做了一个定量的度量。测量方案通过请求随机化子域名(避免缓存服务器对请求域名的缓存)在不同的公共 DNS 服务器,从不同的请求类型,顶级域以及协议等维度的方式来探测 DNS 劫持的情况。



测量结果表明:


  1. 基于 UDP 的 DNS 数据包更容易遭到劫持。

  2. A 类型(IPv4 地址)的 DNS 请求比其他类型稍高。

  3. 全球的 8.5%的自治域存在 DNS 劫持,其中包括像中国移动这种较大的 ISP。

  4. 推测 DNS 劫持的主要目的是为了减少财务结算和提高 DNS 相应的性能。


具体的测量详细过程和完整结果参见这里[2]。


小贴士:DNS 加密传输的进展


为了解决 DNS 明文传输所引起的问题,相应的解决方案最近几年在业界已经积极的推动起来了,客户端方面来看,有更好安全意识的浏览器厂商(Firefox,Chrome,360 浏览器等)和操作系统厂商(包括 windows 和 macOS)逐步开始支持 DoT/DoH;在服务器方面包括 360 安全 DNS[3]在内的公共 DNS 服务提供商都开始 DoT/DoH 服务,有条件的用户可以尝试一下,应该可以极大的缓解由于 DNS 劫持所引起的安全风险。


用 DNS 数据来度量 NTP pool 的使用情况


NTP pool 成立于 2003 年,是由志愿者提供的联网计算机组成的动态虚拟群集,可向全球数百万个系统提供高度准确的时间同步服务。它是大多数主要 Linux 发行版和许多联网设备的默认时间服务器。


由于它的特殊工作方式,在 PDNS(参见下面的小贴士)中,它的域名和 IP 的映射关系在一定程度上是随机的,特别像之前非常流行的僵尸网络躲避攻击检测和防封堵使用的 Fastflux[4]。


为了摸清楚 NTP pool 的实际工作情况,我们通过 DNS 数据对 NTP pool 做了一次度量。


主要有如下发现:


1. 服务器方面


  • NTP pool 服务器在 4000 左右,其中 IPv6 的占比在 25%,IPv4 占 75%。

  • NTP pool 服务器遍布全球 97 个国家,不过主要集中在美、德、法、英、荷、加等发达国家。

  • 国内的服务器只占总服务器个数的 2%,并且主要集中在香港,台湾,广东和北京等这些经济较为发达的地区。


2. 子域名方面:


  • NTP pool 的子域名主要有三种划分方式:按照大洲,按照国家/地区,按照供应商。

  • NTP pool 的域名 DNS 请求中,大约 3%的域名请求是无效的,主要是拼写错误或者系统的 bug 导致的。

  • 按照供应商访问的 NTP pool 服务会在一定程度上暴露用户发起请求的客户端的类型。下图是我们对不同供应商的 DNS 请求次数的统计:


3. 使用服务器效率方面:


a. NTP pool 在轮询服务器方面理论上来说是均衡的


b. 在实际操作中,收到地理位置以及不同服务器服务能力,服务策略的不同导致不同的 IP 提供服务的机会并不均等。


c. TOP4000 的 RRset(约占总数的 1%)即可占总记录数的 41.21%,不同 RRset 的 CDF 图如下:



完整的文章请参阅:https://blog.netlab.360.com/look-at-ntp-pool-using-dns-data/


小贴士:被动 DNS 系统


所谓被动 DNS 也即 PassiveDNS(PDNS) 数据库是将历史 DNS 记录解析/融合/存储的系统。与主动扫描(探测)不同,可以利用大量的被动 DNS 数据进行大规模的基于 DNS 数据的度量。通过被动的收集 DNS 流量,构建域名和 Rdata(域名的解析结果)之间的全量历史映射关系,实现域名和 Rdata 的互查,以及历史 DNS 记录的查询。


360 的 PDNS 系统(https://passivedns.cn)是国内第一家公开的 PDNS 系统。系统建设于 2014 年,是国内目前规模最大和历史数据最久的 PDNS 系统。


其他的度量


利用 PDNS 可以完成很多其他的度量工作,比如:


  1. 不同 CDN 厂商规模的评估

  2. 黑灰色产业规模的评估

  3. 新通用顶级域名(new gTLD)使用情况/(在现实使用中的)冲突情况的评估

  4. 域名在注册,备案以及解析尤其是涉及到批量的域名处理时的相关情况的评估

  5. 国家(涉及域名方面)政策的执行情况的评估

  6. ……


总之在网络测量方面,只要涉及到域名,DNS 数据几乎就是天然的基准数据,只要设计合理的测量方案,就能够得到准确的结果。


安全分析


面向 DNS 的安全分析,大体可分为两类:


· 针对 DNS 协议和系统本身的安全问题的分析


  • DNS 投毒

  • DNS 劫持

  • 伪随机前缀 DoS 攻击

  • NXNSAttack 攻击


· 使用 DNS 数据来分析相关的安全事件


  • DNS 隧道

  • DNS 反射放大

  • DGA

  • Fastflux


DNSMon——基于 DNS 数据的威胁检测和分析系统


在日常工作中,针对 DNS 协议和系统的攻击在 DNS 数据中有一定的体现,但并不是利用 DNS 数据威胁发现的主要目标。如前所述,只要互联网使用域名的业务就会在 DNS 数据中留下自身的痕迹,恶意程序也不例外。因此从威胁发现的角度来说,使用 DNS 数据检测,分析和阻断安全威胁是海量 DNS 数据发挥作用的主要场景。


为了能够更加及时高效的发现安全事件,360 公司开发了 DNSMon 系统。该系统以 DNS 数据在统计维度上的异常为出发点筛选初始域名,综合 web 页面数据,证书数据,whois 数据,沙箱以及蜜罐等多维度的数据,并结合高质量的 IOC 和 word2vec,LSTM 等深度学习算法,对发生异常的域名进行综合判断,标定其异常状态,给出较为确定性的标签。


对于标黑和高危域名可以录入威胁情报库供第三方使用。对于白和其他灰域名则录入标签库供第三方查询使用。


基本流程如下图:



系统的优势主要体现为如下三点:


· 准实时的处理和关联海量的数据。目前在于能够在百万 QPS 的 DNS 请求的情况下,融合多维度的其他数据源进行处理,达到小时级别的输出。


· 自动化程度高。每天能够自动产生千级别的黑域名和高危域名。


· 无先验知识的情况下可以大规模的阻断黑,高危域名。例如:


  • 永恒之蓝挖矿蠕虫及其系列变种

  • MSRAminer 恶意挖矿程序及其系列变种

  • NuggetPhantom 恶意程序及其系列变种

  • DGA.popad 广告网络挖矿程序

  • Mylobot 僵尸网络

  • Godlua 后门

  • Burimi 挖矿蠕虫

  • LSDMiner 挖矿恶意程序

  • 盗贼恶意 SDK 应用

  • 恶意利用某大型互联网厂商的评论系统漏洞刷广告流量

  • Skidmap 恶意程序

  • 更多案例请参考:https://blog.netlab.360.com/tag/dnsmon/


安全分析的其他方面


在对 PDNS 数据进行深入分析之后,我们就会发现其实针对很多类型的攻击如果从 DNS 数据入口就会非常简单,能够达到事半功倍的效果。


  1. 比如传统的采用 DGA 技术和 fastflux 技术的僵尸网络从 DNS 数据入手是非常容易的。

  2. 再比如某些黑灰行业他们在不断的改进自己的攻击手法时,其所使用的基础设施却是不变的,以某一个或者几个 IP/域名为入口通过 DNS 数据能够很快的将其他之前未发现的 IOC 关联出来。

  3. 再比如一些恶意程序在运行时,在时序上有着非常稳定的顺序,这种非常强的关联关系也会在 DNS 中留下非常显著的特征。只要在时序上构建较好的模型,我们就能够对域名进行聚类和扩展分析,从而有效的提高分析效率。

总结


近年来 DNS 协议正向着更注重隐私性,安全性方面快速发展。而针对 DNS 数据的分析则在对度量 DNS 协议发展情况,对依托于 DNS 数据所做的安全分析方面,尤其是在威胁情报的生产方面发挥着越来越重要的作用。


毫无疑问,DNS 协议对未来互联网的发展起着重要的作用,尽管我们还不知道它将走向何处,会给未来的网络带来哪些影响,现在是体验这个变化过程的最好时机。无论是对 DNS 数据做安全分析还是利用 DNS 做各种度量,DNS 这个宝库都值得深入探索和挖掘。


文章转载自:360 技术(ID:qihoo_tech)

原文链接:用DNS进行网络度量和安全分析

2020-12-27 07:002296

评论

发布
暂无评论
发现更多内容

FL Studio21中文语言版水果编曲工具

茶色酒

FL Studio21

工作一年,我重新理解了《重构》

阿里巴巴中间件

阿里云 云原生 重构

架构训练营-模块9秒杀系统

张Dave

国内AGV调度系统到底是什么水平?

申扬科技

调度系统 AGV

Kubernetes容器状态探测的艺术

俞凡

Kubernetes 云原生

前端学习

阡陌r

订单超时怎么处理?我们用这种方案

阿里巴巴中间件

阿里云 云原生

经验分享:高德地图如何短时间快速完成春节出行备战工作?

阿里巴巴中间件

阿里云 云原生 函数计算

阿里云消息队列 Kafka 生态集成的实践与探索

阿里巴巴中间件

kafka 阿里云 云原生 消息队列

架构师日记-软件高可用实践那些事儿

京东科技开发者

高可用 软件架构 京东云 企业号 3 月 PK 榜

将老人拉出无声的世界,AI是怎么做的?

脑极体

AI医疗

在前端领域摸爬滚打7年,我终于掌握了这些沉淀技巧

小鑫同学

Orika JavaBean映射工具使用

京东科技开发者

JAVA开发 京东云 JavaBean 企业号 3 月 PK 榜

浅谈kafka

京东科技开发者

数据库 中间件 京东云 kafka manager 企业号 3 月 PK 榜

如何设计一个优秀的 Go Web 项目目录结构

江湖十年

Go 设计 后端 项目 Web Service

初识大热的ChatGPT的几点思考|社区征文

穿过生命散发芬芳

ChatGPT

前端学习路径

阡陌r

巧用GenericObjectPool创建自定义对象池

京东科技开发者

京东云 API 编排 对象池 京东物流 企业号 3 月 PK 榜

社交软件的月活利器:从UGC到互娱

曲多多(嗨翻屋)版权音乐

互联网 软件 社交 科技 社交媒体

大型供应链物流企业的数字化转型方法论

明道云

从混乱到完备:我的研发流程之路

SkyFire

研发流程

极氪汽车 APP 系统云原生架构转型实践

阿里巴巴中间件

阿里云 云原生

如何有效的进行用例评审

京东科技开发者

用例 京东云 代码评审 企业号 3 月 PK 榜

async 与 Thread 的错误结合

newbe36524

C#

Matlab常用图像处理命令108例(三)

timerring

图像处理

AutoCompleteTextView的基本使用

芯动大师

android 控件 AutoCompleteTextView

强强联合:Neovim+ChatGPT | 社区征文

SkyFire

ChatGPT neovim

28岁小公司程序员,无车无房不敢结婚,要不要转行?

程序员晚枫

程序员 收入

JavaScript异步编程的深入理解,使用回调函数实现异步编程

兴科Sinco

JavaScript 前端 前端开发 异步编程

Portraiture2023人像免费磨皮插件

茶色酒

Portraiture2023

统一观测丨使用 Prometheus 监控 E-MapReduce,我们该关注哪些指标?

阿里巴巴中间件

阿里云 云原生

用DNS进行网络度量和安全分析_语言 & 开发_360技术_InfoQ精选文章