基于LSTM模型的APT攻击信道检测方法
2022-04-20魏峰张驯
魏峰, 张驯
(国网甘肃省电力公司, 电力科学研究院,甘肃, 兰州 730070)
0 引言
高级持续性威胁(APT)攻击[1]已经对全球范围内的重要企业和政府机构造成了重大危害,尽管企业在网络安全防护领域中的能力有所提高,基于特征码识别和模式匹配的传统检测系统已经可以识别大部分的网络恶意行为,如端口扫描、分布式拒绝服务攻击、木马蠕虫等,但是对攻击技术高超、持续时间持久、隐蔽能力极强的APT攻击的检测效果却差强人意,因为黑客往往通过流量加密[2]、DGA生成C&C域名[3]、0day漏洞躲避网络安防系统的检测[4]。
针对APT攻击的检测与防范,一些全球知名安全公司在对APT攻击展开持续跟踪和分析后的报告中指出,虽然在攻击过程中黑客使用的恶意代码变化速度快,变异程度高,通过文件特征对其识别十分困难,但是黑客在攻击成功时操纵受害者与C&C服务器通信却存在一定特点,黑客为了躲避安防系统中域名黑名单的识别,往往使用域名生成算法动态生成C&C域名。本文针对APT攻击者使用DGA算法生成C&C域名进行通信的特点,利用长短期记忆网络对正常域名和恶意域名建模分类,从域名通信这一环节实现对APT攻击的有效检测。
1 相关技术及方法
1.1 域名生成算法(DGA)
在早期僵尸网络领域中,受害主机通常会使用轮询的方式去访问硬编码的C&C域名与服务器建立通信。但是这种方式并不可靠,安全人员可以通过逆向工程得到C&C域名的编码,并通过域名黑名单有效地屏蔽恶意连接。APT攻击者为了避免C&C域名被发现,会使用Domain Flux或者IP Flux技术快速创建大量的域名和地址[5]。Domain Flux通过不断变换域名,使多个域名指向同一个IP地址;IP Flux不断变换IP地址,使一个域名使用多个IP地址。域名生成算法是一种利用随机字符生成C&C域名从而逃避域名黑名单检测的技术手段。APT攻击者为了防止自己与受害主机之间的通信被屏蔽,实现持续、隐蔽地窃取数据,也将DGA算法引入进来。
在攻击者端,黑客使用种子通过DGA生成大量域名,出于经济利益和伪装隐蔽的目的,黑客一般会从中随机选择少量的域名进行注册,将注册的域名指向C&C服务器。在受害者端,使用与攻击者端相同的种子通过DGA生成大量域名,植入受害计算机中的恶意代码将通过域名解析系统遍历查询,如果查询的域名未被注册,恶意代码将继续查询其他域名,直到查询到已经注册的域名,使用该域名与C&C服务器建立通信。
DGA可以使用很多类型的数据作为生成域名的种子,包括随机数、时间、字典、热门话题字符串等,根据种子可以生成一系列随机字符串作为二级域名,再添加相应的一级域名就能得到最终的域名。DGA的实现如图1所示。
图1 DGA实现示意图
根据DGA输入的种子是否依赖于时间,可以将DGA分为2类:依赖于时间的和不依赖于时间的。时间种子可以从受害计算机的系统时间获取,也可以从网络数据报文的日期字段中获取。DGA输入种子既可以是确定的,也可以是不确定的。大多数DGA的种子都是确定的。种子被安全人员获得后,安全人员可以利用该种子产生DGA生成的域名,抢先注册并通过网络沉洞技术[6]劫持分析APT攻击的通信。
1.2 长短期记忆网络(LSTM)
长短期记忆网络是一种特殊的循环神经网络模型,解决了传统RNN模型中存在的梯度爆炸和消失问题[7]。在传统的RNN模型中,使用时间反向传播算法训练模型,当训练时间较长时,需要回传的残差造成指数下降,导致网络权重更新缓慢,无法体现RNN的长期记忆的效果,需要一个存储单元来存储记忆,因此学者基于RNN提出了LSTM模型。
LSTM引入了门控单元和内部的自循环单元(记忆单元)。长短期记忆网络单元示意图如图2所示,各单元由输入门、遗忘门和输出门等3个门控单元以及1个记忆单元组成。LSTM网络是由一个又一个的LSTM单元构成的,通过门控单元就可以对信息进行添加和删除。当一个信息通过输入门进入LSTM单元中,符合一定规则的信息会被留下,反之则通过遗忘门被遗忘,以此来解决传统神经网络中长序列的依赖问题。总之,LSTM网络可以“记住”信息中心比较重要的部分,并且让此“记忆”保存较长时间。
图2 LSTM 单元示意图
2 模型搭建及结果验证
2.1 实验数据
本次实验的数据分为恶意域名样本和正常域名样本。恶意样本通过爬虫程序对安全公司公布的恶意域名进行定期收集,最终得到70万余条DGA恶意域名,部分安全公司网址见表1。正常样本来源于Alexa域名信誉排名的前100万条记录。
表1 部分安全公司网址
2.2 数据处理
通过对收集的域名样本进行正则化、数值化、向量化等操作,统计域名长度分布,删除不适合训练模型的域名,并过滤掉域名中的前缀、后缀,最终得到100万余条域名样本。为了训练LSTM模型,需要将域名数据转换成向量,将域名中字符以独热编码的方式进行转换。
通过安全公司发布的安全报告,可以为数据集中的全部样本匹配攻击类型并打上标签。经过数据处理后的样本分布如图3所示。
图3 域名样本统计分布
本文从统计特征、语言特征和结构特征等3个方面来选取了13类特征值,分别为n元模型的1-gram、2-gram、3-gram、4-gram、5-gram的正则化分数;有意义的单词占比;数字个数占比;元音个数占比;不同数字占比;不同字母占比;域名长度;域名后缀出现的次数、字符变换次数。其中,序号为1~5的特征值属于统计特征,序号6~10属于语言特征,第11~13属于结构特征。
统计特征部分,n-gram的正则化分数计算,是利用文献[8]中提供的10 000个常用单词的文件实现的。逐行读取文件中的单词,以单词“security”为例,1-gram将其划分为s、e、c等8个元组,分别对这8个字母对应字典中的值加一,2-gram将字符串划分为se、ec、cu等元组以相同的方式检测并统计,以此类推至5-gram,遍历文件中所有单词完成统计处理。用单词划分后的字符序列在之前求出的统计字典中找到对应出现的次数,求和并除以“字符数-n+1”作为n-gram正则化分数。
语言特征部分,以域名“123 sport”为例,检索词典后发现域名中有意义的单词为“sport”,则其有意义单词的占比为单词的长度除以域名长度,即0.625;不重复的数字有3个,不重复的字母有5个,则数字个数占比与不同数字占比均为0.375;不同字母占比为0.625;元音字母只有1个,则元音个数的占比就是0.125。
结构特征部分,域名长度为8;统计测试集中域名后缀,即顶级域名出现的频次;域名中字符变换发生在数字1与字母s之间,次数为1。
2.3 模型搭建
从数据集中随机抽取九十万条恶意域名样本和九十万条良性域名样本(来自Alexa)构建训练集用来训练神经网络模型,另外再抽取十万条恶意域名样本和十万条良性域名样本构建测试集验证模型检测效果,如表2所示。
表2 实验样本分布 单位:条
利用Keras框架搭建LSTM神经网络模型,LSTM神经网络结构如图4所示。首先构建一个基本的LSTM网络模型。嵌入层将编码后的样本向量转化成固定向量,将输入的字符转化为128个浮点数的向量进行输出。LSTM层是模型训练的核心,可以将其看作是隐式特征提取层,LSTM层的维度大小影响模型对训练集的学习效果,维度越大对数据的学习能力也就更全面,将LSTM层的维度设置为128。为了防止训练的神经网络模型过拟合,使用Dropout层随机断开半数比例的神经元连接。全连接层用来实现特征的非线性组合,并将学习到的特征映射到样本空间。激活层使用S型函数作为激活函数,将输入的实数转化到[0,1]之间,实现将权值转化为二分类结果。
图4 LSTM模型网络结构图
2.4 性能评估指标及结果
选择机器学习常用的精确率、召回率和综合评价指标作为衡量检测模型性能的评价指标。准确率体现的是预测正确的数据占全部数据的比值。召回率体现的是所有预测为恶意域名的样本中预测正确的比率。综合评价指标F1分数则是综合考虑精确率、召回率后给出的计算结果,能够综合地代表和体现模型性能。具体评价参数和评价指标公式如表3和表4所示。
表3 评价参数
表4 评价指标公式
使用训练好的LSTM模型对测试集中的未知域名进行预测,对LSTM模型性能进行评估,评估结果如表5所示。
表5 模型性能
通过表5可以看出,本文提出的LSTM模型对恶性域名、良性域名均达到较高的准确率和召回率,在实验中训练的LSTM模型对恶意域名的检测具有较好的效果。
3 总结
根据国内外安全公司对APT攻击的报告分析,针对APT攻击中普遍存在与C&C服务器进行通信的特点[9],本文从对C&C服务器通信时使用DGA算法生成的恶意域名的识别出发,将LSTM神经网络模型引入进来,通过机器学习对恶意域名进行准确、快速的识别。通过识别APT攻击者为了维持通信而使用DGA算法生成的恶意域名,实现对APT攻击行为的检测。
本文的检测方法也存在许多不足,因为DGA算法生成的恶意域名变化速度很快,本文需要升级爬虫程序,定期对恶意域名进行收集,不断对LSTM模型进行更新,才能对不断变化的APT攻击实现有效监测。