基于工控场景的DNS隧道检测方案

发布者:星河Salaxy
发布于:2022-05-12 17:07

一. 检测数据概述

 

数据收集方式

 

本方案数据主要通过以下方式收集:

1)工控场景内所部署的探针生成流量日志,并通过项目数据接入模块存入Elasticsearch数据库;

 

2)攻击者主机与被攻击者主机上抓取的流量包,并经pyshark、dpki等python库解析生成结构化数据;

 

 

数据集分类

 

本方案数据主要分为以下三类:

 

1)开源多级域名网址白名单;

 

2)不同DNS隧道工具攻击时段抓包;

 

3)Alexa top 10k websites list;

 

 

 

二. 检测方案概述

 

2.1 设计思路

 

完整的工控网络攻击事件主要分为四个环节:

外链->攻击渗透->实时攻击->回传数据

DNS隐蔽隧道攻击检测主要针对回传数据环节—外链传输数据部分。

正常的DNS的query_name的域名地址常为有价值或者容易理解的信息,如标准单词或者单词变体。

通常为了使用方便,正常域名地址的设计的长度较短,而DNS隐蔽隧道中为了将信息传递出去,往往会构造较长的域名请求发送出去,且通常会对字段进行加密,从而使得文本编码与正常文本编码差异明显。

因此利用自然语言处理(NLP)的思想,构建不同的特征序列,元音检测、HMM衡量字母链与单词相似度等特征检测。对不同的域名利用多维度特征值测试来衡量其与英语单词的相似度,同时讨论正常域名与DNS隧道域名在信息熵、长度等分布的不同,构建模型,对其进行分类识别。

 

2.2 检测步骤

 

第一步:数据预处理

 

对不同数据源的数据集进行提取融合与处理,主要包括:

  • 对使用不同dns隧道构造数据抓取的pcap文件,利用pyshark提取五元+query_name,并对其打标为负样本

  • 读入alexa top100k域名对其打标为正样本

  • 读入开源数据集,提取域名,并将攻击样本、alexa样本融合,按正负样本比例分层抽样

  • 数据打散,提取tld列表

  • 对正样本提取3-grm频数字典

 

第二步:特征分析

 

分别对组件和tld部分进行特征分析:

 

  • 组件特征分析:主要提取如下特征:乱码检测判断主domain 、subdomain、不同层级主子domain连续数字、连续字母占比、 sharon entroy值、字符 Hidden markov-chain 概率等。

  • tld部分特征分析:以白名单方式,考察其与常用tld是否匹配。

 

第三步:模型训练与测试

 

  • 数据分层:0.76训练集,0.04验证集,0.2测试集

  • 数据归一化方法:标准化

  • 模型:神经网络二分类模型

 

2.3 检测结果

 

迭代次数:100

 

检测效果:准确率:99.37%;F1:98.66%

 

*分类报告*:

 

Precision recall f1-scoreLabel 00.990.960.97Label 10.991.000.99avg / total 0.990.990.99

 

*损失曲线*:

 

 


编辑切换为居中

 

添加图片注释,不超过 140 字(可选)

 

 

 

 


编辑切换为居中

 

添加图片注释,不超过 140 字(可选)

 

 

 

*测试集成ROC曲线*:

 

 


编辑切换为居中

 

添加图片注释,不超过 140 字(可选)

 

 



声明:该文观点仅代表作者本人,转载请注明来自看雪