华乐网
当前位置: 首页 >头条 >科技 >正文

使用LSTM检测DGA域名

2018-08-05 22:53    

0×01 为什么要发现DGA域名

DGA(Domain generation algorithms)域名生成算法经常被用作恶意软件连接C2中控。恶意软件定期使用DGA算法生成为随机域名,有效绕过黑名单检测,尝试连接,寻找C2中控。如果一个生成的域名无法连接,便生成下一个DGA为随机域名进行连接尝试。这样即使中控机的IP地址发生变化,或一个中控域名被干掉,一定时间后肉鸡仍能寻找到C2中控继续工作。

比如今年爆发的几次恶意软件感染事件均使用了DGA域名:Wannacry(iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com)xshell(xmponmzmxkxkh.com)ccleaner(ab3d685a0c37.com)

如果能从流量中快速检测DGA域名,在一定程度上能够快速发现、评估恶意软件的感染情况。包括使用越来越多的Passive DNS,其很大一部分工作也是致力于发现DGA恶意域名。

0×02 尝试机器学习

在机器学习、AI这么火爆的当下,当然要尝试将机器学习方法引入攻防对抗。Nominum的一篇ppt尝试将word2vec引入DGA随机域名的检测。尝试了下有效果,问题是无监督聚类后不太好找到为随机域名被分类到了哪里,作图应该是会炫酷。

从正常域名拼写符合一定拼写规律,DGA域名伪随机性来看,ngram、hmm、lstm应该有一定效果。

参考 Predicting Domain Generation Algorithms with Long Short-Term Memory Networks

LSTM应该能达到比较理想的效果。

0×03 LSTM

这里引用一些网上的介绍,了解一循环神经网络与LSTM端下概念。

人类看到一段文字不是不是从头开始思考,而是会根据已经阅读过的内容来对后面的内容进行理解,传统的神经网络做不到这一点。然而循环神经网络可以做到这一点,它允许信息持续存在。

一个循环神经网络可以被认为是同一个网络的多个副本,每一个都传递一个消息给后继者, 将循环展开如图:

在相关信息和需要该信息的距离较近的时候,RNN能够学会去利用历史信息。例如:试图预测“the clouds are in the ( )”的最后一个单词,下一个单词显然是sky。

不幸的是,随着距离的增加,RNN无法有效的利用大跨度历史信息。

所以在RNN在算法大牛的改进下诞生了LSTM(Long Short Term Memory),解决了长距离信息使用的问题。

检测DGA域名正好利用LSTM对前后文理解优势,利用域名的前后字符判断域名的拼写特征、随机特征,达到检测DGA域名的目的。

0×04 LSTM建模

参考文章中的论述,将要搭建的模型如下:

embedding层将编码后的样本向量转换为固定大小,如[[4],[20]]->[[0.25,0.1],[0.6,-0.2]]lstm层是训练模型的核心,将从样本中学习特征dropout层是为了训练的神经网络过拟合,随机断开一定比例的神经元连接dense层是为了将学习到的特征映射到样本空间activation激活层将权值转换成二分类结果

简单的模型代码:

model = Sequential() model.add(Embedding(max_features, 128, input_length=maxlen)) model.add(LSTM(128)) model.add(Dropout(0.5)) model.add(Dense(1)) model.add(Activation("sigmoid"))

训练数据采用了Alexa-top 50W作为正样本,从公开威胁情报收集到的50W DGA域名作为负数样本进行训练。

品牌、内容合作请点这里: 寻求合作 ››

榜单

今日推荐