基于机器学习的恶意软件加密流量检测研究分享

2020/03/24 -
本篇文章[1]来自FreeBuf,阅读后增加自己的理解。


引言

本篇文章主要利用机器学习方法来实现恶意软件的加密流量检测。
文中介绍,一些企业为了防止这类威胁,会使用硬件HTTPS中间人的方式,也就是我之前自己弄的那个HTTPS中间人攻击的平台。文中指出缺点在与** 使用拦截器的问题在于它昂贵,计算要求高,同时造成网络性能下降,而且它不尊重HTTPS的原始想法,即拥有私密和安全的通信。**

恶意软件加密流量介绍

恶意软件逐渐采用加密的流量,这肯定是必然的趋势,不然怎么做到隐蔽,毕竟现在HTTP的检测已经非常普遍了。当然,我感觉HTTP的对抗还是有困难的,毕竟这么多的变种。
这里他说提出的恶意软件,包括了木马、病毒、蠕虫等等。

对于流量的处理

他对流量的处理,好像是分为了三个日志,但是我感觉,如果是为了检测的话,直接使用一条日志是不是更好。很有可能是,他多个日志是不同软件生成的。
也可能是为了将日志分类吧,可能是存储什么的。
日志部分包括:连接日志、SSL日志、证书日志

特征工程

我看了一下,他这里的流量并不是单独的。而是说,他的这一个样本里面包含了多个连接,所以他的这种样本的处理方式是说,我把一个恶意软件的流量样本全都收集了,这样作为一条样本来处理,因为看到了,他的特征里面有一个SSL连接的占比。

特征工程

可以看看他的证书部分使用的特征,这个之前没有接触过。

数据采集

负例样本(恶意软件),一方面是从[2]中下载,另一方面是他自己捕获的10W个,利用沙箱来捕获恶意软件的流量。
我看了[2]的数据集,这个网站上好像还有别的数据集。不过我看了列出来的数据,进去以后,没看明白,因为有很多文件,我本来以为就是一个traffic呢。
这个就不管了。

模型检测

最后的检测的话,他使用随机森林和XGBOOST,不过他的指标是准确率,其他的都没说,这个有点说不过去。
然后开发了一个Flask的在线检测框架。
最后他也是弄了一个大数据的检测平台,但是他没有具体说明。
意思是利用spark从hive中读取数据,数据是流量采集器采集后经过深度包解析之后传回来的日志。

问题

  1. 因为他的这种方式是以恶意软件生成的全部流量作为样本,那么这种对单条样本(就是单条流量)的检测率准确吗?
  2. 后续我可以自己开发一个flask的这种应用,我记得我之前在github上看到过。

这篇文章算是给通过加密流量做恶意软件检测提供了思路。

参考文献

[1]基于机器学习的恶意软件加密流量检测研究分享
[2]/datasets-malware