阿里DNS:一种不断变化前缀域名攻击检测方法

简介: 不断变化前缀域名攻击是DNS系统经常会遭受的一种典型攻击类型。那么有没有一种自动化的域名攻击检测方法,可以快速地判断是否是一种不断变化前缀域名攻击类型,并且自动提取攻击特征呢? 今天【阿里DNS】为您介绍一种不断变化前缀域名攻击检测方法,自动化地完成攻击特征的识别和提取。

1.概述

不断变化前缀域名:是指域名的后缀不变,前缀随机变化,例如:

        aaaxbhzqegs.www.example.com.
        aachbgunkyi.www.example.com.
        aaazqppqiir.www.example.com.
        aabkwblebrz.www.example.com.
        aaaiwcdsrvf.www.example.com. 

其中:www.example.com 是三级后缀,aaaxbhzqegs,aachbgunkyi,aaazqppqiir等都是www.example.com 的紧邻下一级前缀;example.com 是二级后缀,www是它的紧邻下一级前缀。

另外,还有一些不断变化中缀域名:是指域名的前缀、后缀不变,中缀随机变化,例如:

        www.aaaxbhzqegs.example.com.
        www.aachbgunkyi.example.com.
        www.aaazqppqiir.example.com.
        www.aabkwblebrz.example.com.
        www.aaaiwcdsrvf.example.com.

其中:www是前缀,example.com 是二级后缀,aaaxbhzqegs,aachbgunkyi等都是中缀,同时也是 example.com 二级后缀的紧邻下一级前缀。


不断变化前缀域名攻击中,前缀字符串是随机变化的,且数量庞大,不对它们进行递归请求很难判断该域名是否存在,而递归能力一直是DNS系统的性能瓶颈,因此需要实时对此攻击进行检测,进而进行相应地防护。


2.难点

不断变化前缀域名攻击检测的一些已知难点有:

  • 不断变化的部分可能是任意级的前缀、中缀;
  • 攻击有可能同时针对多个后缀,且每个后缀的前缀变化次数都不显著,而它们加起来的变化次数比较显著;
  • 泛解析干扰:有些后缀配置了泛解析,则不管其前缀如何变化,均不能被认为是攻击;
  • 攻击域名与正常域名属于相同的后缀,正常域名容易被误杀,如 example.com 是攻击域名,而 www.example.com 是正常域名,当检测到后缀 example.com 遭受攻击时,容易将 www.example.com 误杀;


3.解决方案

针对上面遇到的问题,我们提出了一种基于在离线混合学习的随机域名攻击检测方案。该方案包括在线检测与离线训练两个部分,如下图所示:

v2-7f1d923d2b71b0f4411ea81f77644afe_hd.j图3-1 不断变化前缀域名攻击检测系统结构图

在线检测部分的功能是:根据离线训练好的分类模型对实时流入的DNS查询请求进行分类,分为疑似攻击域名与正常域名两类,再结合其响应结果分别统计,累计一段极短的时间后,根据阈值检测出攻击的后缀,并输出检测结果;

离线训练部分的功能是:对一段较长时间的DNS服务日志进行挖掘,分类训练,得到分类模型,供在线检测部分使用;


首先我们来看在线检测的流程,如下图所示:

v2-5b9b076f3cb93d1ab841385e0801c520_hd.j图3-2 在线检测流程图
  • 定时更新分类模型:每天定时从外部更新分类模型;
  • 旁路流入DNS查询、响应:旁路镜像流入DNS查询、响应数据包;
  • 查询、响应组合:根据五元组(源IP、源端口、目的IP、目的端口、DNS_ID)将查询包与响应报组合起来,得到每个查询对应的响应状态码(如NoError, ServFail, NxDomain等);
  • 过滤:过滤出没有响应(超时)或响应状态码是ServFail、NxDomain的查询;
  • 域名拆分组合:将查询域名拆分成各级后缀与其紧邻下一级前缀的组合,如 example.com 被拆分成:一级后缀与其紧邻下一级前缀的组合:com + [example]、二级后缀与其紧邻下一级前缀的组合:example.com + [aaaxbhzq];
  • 字符串判定:对各级后缀的紧邻下一级前缀字符串提取特征,根据分类模型判定其是否随机、无意义;
  • 重复前缀判定:对于每一个后缀,维护一个集合,用于缓存出现过的前缀,重复前缀被丢弃;
  • 累计缓存:把前缀追加到对应后缀的缓存集合里,对应后缀的计数器加1;
  • 窗口判定:统计时间窗口设置为一个极短的时间(如30秒);
  • 攻击判定:后缀计数器大于攻击阈值T0;
  • 输出攻击的后缀:此时不通知防御;
  • 防御判定:所有攻击后缀的计数器之和大于防御阈值T1;
  • 通知开启防御:及时通知外部开启防御,给出攻击后缀列表;
  • 清空缓存集合、计数器;


然后我们再来看一下离线训练的流程,如下图所示:

v2-82468981f89871d010dfc1c8d88ef8e5_hd.j图3-3 离线训练流程图
  • 日志预处理:将DNS服务日志处理成<查询域名,是否攻击>的二元组;
  • 样本采集:随机选择大量(如100万)的是攻击的二元组作为正样本、大量(如30万)的不是攻击的二元组作为负样本;
  • 样本划分:所有正负样本一起按一定的比例(如6:4)随机划分为训练集和测试集;
  • 计算变化前缀所在级数L及对应的信息熵均值h:在训练集上,遍历域名若干级后缀,提取其紧邻下一级前缀字符串的信息熵(见第6步中(b)信息熵),统计其均值,使得均值最大的级数即为所求的L,对应的均值记为h;
  • 信息熵均值是否大于阈值H;
  • 特征提取并归一化:对前缀字符串提取特征向量,它由三个特征组成:

1) 最长元音距(mvd):即字符串中元音之间的最长间隔,如“alibaba-inc”的最长元音距是最后的“nc”2个字符长度(字符串中的连字符‘-’也当作元音处理,字符串结尾也当作有一个元音)。

元音距表征了字符串中各音节的长度,体现了发音的节奏。正常有意义的单词或短语的音节比较短,节奏比较均匀,以方便发出声音,相应地,其最长元音距偏短,如“alibaba-inc”的元音距为[1,1,1,2],最长元音距为2;而无意义的随机字符串的音节比较长,没有节奏,相应地,其最长元音距偏长,如“aaaxbhzqegs-2”的元音距为[5,2,1],最长元音距为5;

2)信息熵(entropy):表征字符串的随机程度,其计算公式为:

v2-673cc5ac44f503757eb735a481dddd72_hd.j

其中, Pi为每个字母(或数字)在字符串中出现的概率。

正常有意义的单词或短语,其字符排列遵从书写规范,不能任意排列,随机化程度不高,信息熵偏低,如“alibaba-inc”的信息熵为2.44;而无意义的随机字符串的字符排列则没有限制,随机化程度比较高,信息熵偏高,如“aaaxbhzqegs-2”的信息熵为3.19;

3)长度(len):字符串的长度。观察中发现,攻击字符串的长度在一段短时间内都比较稳定,且长度比较大;而正常的域名字符串则无此规律。

图3-4显示了这三种特征分别在攻击域名、正常域名中的分布情况,可以看出,它们在攻击域名与正常域名中的分布都具有较大差异,主要在于:在攻击域名中,均值都偏大。

特征归一化采用Z-score归一化法,其计算公式为:

v2-2906aab9bbfdc5008e716a040e247708_hd.j

其中u为样本均值,o~为样本标准差;

  • 训练分类模型:在训练集上进行模型训练,分类模型采用线性SVM(Support Vector Machine 支持向量机),其公式为:
v2-f1f38ebed42ddd04da3593dc7b2e7cd3_hd.j

其中x为特征向量(最长元音距,信息熵,长度), wT为系数向量, b为截距,如若结果大于0,则判定为正样例(攻击),否则判定为负样例(非攻击)。训练过程即是要找到一个最合适的wT和b;另外,还需要获取训练集的样本均值向量u、标准差向量o~;

  • 模型评估:在测试集上评估训练好的SVM模型,得到总体准确率;
  • 模型准确率是否大于阈值T;
  • 输出模型:模型包括SVM参数wT, b与归一化参数u, o~ 。
v2-c216e1e2a55b95b679ee4436cc7a9483_hd.j图3-4 最长元音距(mvd)、信息熵(entropy)、长度(len)分别在攻击域名(positive)、正常域名(negative)中的分布情况。

从图中可以看出,三种特征在攻击域名中的均值较正常域名大。

相关文章
|
3天前
|
域名解析 存储 缓存
Linux中搭建DNS 域名解析服务器(详细版)
Linux中搭建DNS 域名解析服务器(详细版)
|
4天前
|
存储 弹性计算 固态存储
阿里云服务器配置选择指南,2024年全解析
阿里云服务器配置选择涉及CPU、内存、带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型实例,如2核2G3M配置,适合网站和轻量应用。企业用户则应选择企业级独享型ECS,如计算型c7、通用型g7,至少2核4G起,带宽建议5M,系统盘考虑SSD云盘或ESSD云盘以保证性能。阿里云提供了多种实例类型和配置,用户需根据实际需求进行选择。
|
10天前
|
网络协议 Windows
Windows Server 各版本搭建 DNS 服务器实现域名正反向解析
Windows Server 各版本搭建 DNS 服务器实现域名正反向解析
|
10天前
|
弹性计算 运维 监控
Serverless 应用引擎产品使用之在阿里函数计算中,函数计算的的自定义域名的路由节约时间如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
141 0
|
11天前
|
人工智能 运维 Serverless
Serverless 应用引擎产品使用之阿里函数计算中3.0的函数只加自定义域名没有任何触发器的意义如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
22 1
|
11天前
|
运维 网络协议 安全
Serverless 应用引擎产品使用之阿里云函数计算中添加自定义域名进行域名DNS验证如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
20 1
|
11天前
|
域名解析 负载均衡 网络协议
【专栏】详解域名系统DNS
【4月更文挑战第28天】DNS是互联网的关键组件,将域名转换为IP地址,简化了上网方式。它是一个分布式数据库,类似电话簿,但具有动态、层次化和分布式的特性。工作原理涉及多步查询过程,从本地DNS到根服务器,最终找到权威名称服务器获取IP。DNS还支持负载均衡、地理定位和DNSSEC安全技术。随着技术发展,DNS的角色不断扩展,提供域名隐私保护和智能DNS等服务,是连接用户与数字世界的桥梁。理解DNS对于利用网络资源和理解互联网运作至关重要。
|
14天前
|
数据采集 安全 API
阿里云大学考试python中级题目及解析-python高级
阿里云大学考试python中级题目及解析-python高级
|
14天前
|
存储 SQL 缓存
阿里云大学考试python中级题目及解析-python中级
阿里云大学考试python中级题目及解析-python中级
20 0
|
14天前
|
XML Java 开发工具
阿里云大学考试Java高级题目及解析-java高级
阿里云大学考试Java高级题目及解析-java高级

相关产品

  • 云解析DNS
  • 推荐镜像

    更多