一种基于字符解析的DNS隐蔽通道检测方法
星期三, 四月 29, 2020
网络隐蔽通道是攻击者绕过防火墙、IDS等安全策略进行非法传输信息的过程。DNS的作用是完成域名和IP地址相互映射,用户可通过DNS直接访问互联网。由于DNS往往能通过防火墙而不被拦截,能有效保证通道的穿透能力和隐蔽性,DNS协议被越来越多地用来传输隐秘信息。
DNS隐蔽通道技术的基本思想是利用一台伪装的DNS服务器作为中转节点,利用DNS的查询过程建立隐蔽通道,将数据编码在DNS协议中进行通信。目前的DNS隐蔽通道检测方法常用基于规则的特征匹配方法和基于阈值的方法进行检测,例如监控域名长度的方法,但其缺少智能性,攻击者可以通过修改域名长度等特征轻易绕过基于规则的检测;而阈值的设定不确定度较大,检测精准率较低。针对传统检测存在的误报率高、易被绕过等问题,本文采取对请求域名进行分析和特征提取的方法,使用机器学习算法对合法请求和隐蔽通道的特征进行判别,检测DNS隐蔽通道。
针对DNS请求域名,提取如下特征来完成对隐蔽通道特征的判别:
DNS隐蔽通道在运行时,产生的请求域名是较长的,并且存在大量不规则的字符,因此将域名的长度作为判别的依据之一,但是鉴于有的正常域名也存在较长的情况,且攻击者可以通过修改域名长度绕过检测。综上,域名长度可以作为评判的标准之一,但仅仅通过监控域名长度识别DNS隐蔽通道的方法准确率较低。
合法的DNS请求域名通常符合RFC编写规范,英文字母所占比例较大,小写字母偏多,大写字母偏少;且数字与其它字符的比例较小甚至没有,例如“/”这类的特殊字符基本不会出现。综上,可以把请求域名中大写字母、小写字母、数字与其他特殊字符的比例作为特征提取出来。
一般情况下合法域名的字符组成都具有一定的规律性,而DNS隐蔽通道请求域名往往是杂乱无章的字符组合,在数学上表示为不确定度。一条信息的大小量和它的不确定度有着很大的关联,信息越随机、越无意义,不确定度越高,了解它的所需的信息量就越大,这里可以用香农熵来表示域名的不确定度。
图1 不规范域名
图2 规范域名
所以将香农熵作为域名特征之一提取出来,香农熵的计算公式如下所示:
接下来利用dnscat和iodine等工具采集的DNS隐蔽通道样本和正常DNS请求样本,提取上述特征,训练决策树模型。决策树是一种树形结构,每个内部节点代表在一个属性上的测试,每个分支代表一个测试输出,每个叶节点就代表输出的类别。
图3 决策树
利用训练好的决策树模型在采集的23000条袋外样本进行测试,整体准确率达到99.95%。
可以考虑提取请求子域名的语义特性。在文本分类中,n-gram(包括unigram, bigram和trigram等)是一个基于概率的判别模型,将字符按照相邻n字切割,输出切割后各个词的联合概率,在域名解析中,计算unigram(单字)、2-gram和3-gram足以较好地完成特性判别;
合法域名通常由一些好念的词组成(例如baidu, ping和microsoft等等),而隐蔽通道的请求域名由于随机性在可读性上略差,所以可以用一个基于马尔可夫链的可读性模型来对域名的可读性进行标注,以判断域名中的组成字符是否能够用人类的语言念出来。