企业内网环境中,DNS协议是必不可少的网络通信协议之一,网络设备和边界防护设备在一般的情况下很少对DNS进行过滤分析或屏蔽,因此将数据或指令藏匿于DNS协议中进行传输是一种隐蔽且有效的手段。这类手段常用于APT中维持访问和数据窃取阶段。在实际场景中,当攻击者拿下某台服务器权限,或服务器被恶意软件、蠕虫、木马等感染之后,通过建立DNS隧道从而达到敏感信息盗窃、文件传输、回传控制指令、回弹Shell等目的。 相比于基于规则的静态阈值检测误报高,易被绕过等问题,可以使用机器学习技术从历史数据中学习出一个DNS隧道模式用于检测。使用机器学习构建DNS隧道检测模型,重要步骤是对DNS隧道流量进行特征挖掘分析,需要以DNS协议标准中各字段的统计分析、DNS隧道实现原理为基础,同时结合安全专家知识提取模型特征。在机器学习算法模型选择方面,鉴于在安全检测类产品中要求模型具有高效性、结果便于解释性等特点,在模型选取上更侧重选用一些基于特征的浅层学习模型。