前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人工智能在网络安全领域的应用与提高

人工智能在网络安全领域的应用与提高

作者头像
代码医生工作室
发布2020-05-25 15:13:46
1.2K0
发布2020-05-25 15:13:46
举报
文章被收录于专栏:相约机器人相约机器人

网络安全领域中的加密流量的检测是一个老生常谈的话题,随着人工智能的发展,给同样的问题,带来了不同的解决思路。

近年来,越来越多的研究着,尝试着将AI应用到已有的网络安全领域中。从早先的一些不靠谱的文章人工智能网络安全?请再认真点!,到如今的一些是实实在在的实验成果。可以看到,科学的确在进步。AI在网络安全领域中的应用,也的确越来越多。

绿盟天枢实验室发布的一篇《基于深度学习的物联网恶意软件家族细粒度分类研究》就是一篇靠谱的文章。通过具体的实验验证自己的思路,从中可以看到作者是在真真正正的在用AI做一些事情,其解决问题的思路也非常值得借鉴。当然从业务角度和专业的AI算法角度出发,仍有不足和提升的空间。今天我们就来隔空对话,详细的聊聊该方法中的一些道道。

1 文章中,识别木马的主要思路

用一句话来概括这篇文章《基于深度学习的物联网恶意软件家族细粒度分类研究》的主要思路就是:把木马通信的pcap包做切分,然后用AI图片分类模型进行训练。其原理是想借助AI的分类功能从木马的通信数据中找到线索。

这种思想很有创意,从流量测入手也是网络安全问题的只一个主要解决手段之一。难能可贵的是作者也做了一些实验,验证的其思路的可行性。如图:

从结果中可以看出,这种做法有一定的识别能力,但也暴漏出了一定的问题,例如第4、8、10、11类的分类问题。

面对这样的结果,忍不住想深入分析一下,我们觉得,分类模型是没问题的,问题应该出在业务层面的数据处理环节。

2 业务角度的提升

文章中描述了对业务数据处理的方法:“首先调研当前流行的物联网恶意软件家族,然后在内部平台上查询并下载样本,共下载到12种恶意家族的样本,最后通过沙箱返回相应的pcap数据包。并使用USTC-TK2016工具集对数据进行预处理”

要了解这个问题需要先明白USTC-TK2016工具会做什么。

2.1 USTC-TK2016工具集做了什么?

USTC-TK2016工具集应该是把所有的会话的前多少个字节切一块儿,多余的去掉,不够的补0。这种做法其实和DPI的数据处理非常相似, DPI系统中,也是重点对每一个流量的前几个字节进行分析。当然实际情况中,作者也可能不是这么做的。但从文章中看不出具体做法,我们就先对该做法进行分析,与作者无关,仅仅是技术层面的探讨。

这么做的话,会带来什么?我们接着往下看

2.2 数据采集的问题

按照前文所说的做法,本质是把一个会话当成一个识别的对象,然后拿这个去训练。即,从一个会话里按照一定的规则取出784字节,将其转成28*28大小的图片,然后以图片的方式来进行分类处理。

从海量的数据分析角度来看,依赖一个会话的一行数据去做输入的方式并不可取。因为每个APP会有多种会话可能,而且在某种情况下,多个APP也可能会有相似的会话数据产生。

还有一个问题就是这些木马在那个所谓的沙箱里跑的时候,有些时候产生的流量其实并不一定全是木马的流量,有一些也可能是背景流量,比如它附着的win10或者说是某一个linux操作系统时,系统本身就会产生一些流量。文章中并没有提及清洗噪音一事。如果在处理数据时,没有做这些去噪音的动作,也会影像识别效果。

2.3 清洗掉了关键信息

在数据清洗阶段,作者将流量数据特有的ip地址等信息进行随机替换,这一操作使得模型在识别任务中损失了大量的线索。其实木马的通讯流量中,远端的IP加端口是一个特别固定的集合,是识别木马的最有利线索。

一般来讲,木马都会与C2服务器(command and control server)通讯,而这种C2服务器全球一共也没几个,例如大部分的蠕虫木马,其C2服务器最多也就二十几个地址,然后端口也是固定的,所以直接使用几个地址再加几个固定端口马上就能搞定问题。

当然了,如果直接这么用就是确定模型了,根本不需要人工智能啊!其实也是这样的。

自己把最有用信息去掉,然后通过细微的特征来进行观察,并对其分类,这有种给自己出难题的感觉。它违背了使用AI的本质:AI还是要根据实际需要而用,而不是为了使用AI而用。

2.4 应该将AI用到适合的场景

从AI的应用场景来看,该文章是可行方案,但不是最佳方案。其实以目前的技术,这种层次上的应用识别, DPI已经做得非常完美了。

文章开头出说到传统的DPI系统对加密数据识别不出来的现象是有一些问题的。因为在作者所提供的那个场景里, 所涉及到的80%或90%的流量,都是使用这种确定性的DPI模型来识别出来的。现在又在识别出来的结果之上,使用人工智能再去尝试识别一下,有点多此一举。不过从学术角度来看,作者所做的实验还是有价值的。起码证明了使用AI在通过流量进行应用识别领域的可行性。

该文章是想用它的这个方法去否定DPI,其实他也没有证明为什么他可以解决加密数据识别问题。因为对于加密出来的数据,还有可能会出现各种不同的图。

而单纯对于文章中的这个特定场景,本质上直接用多项式算法是完全可以描述的。实际上不应该用人工智能。

2.5 安全领域的AI到底要怎么用?

就本篇文章来说,把某一个源地址出来的数据做一个识别目标,或是把某一个源地址出来的每一个会话单独去识别,这个是很难做到的。

如果要做的话,可以换个思路将远端的某一个地址当一个识别目标,会好一些。因为它更能够捕捉到以IP为单位的个体意图。而监控会话也不应该只是一条,应该是根据多条会话合并后所产生的整体行为来进行定性。

将数据转成图片进行分类是一个很出色的思想,因为图片本身是2维数据,要充分利用这个特征,在转化过程中将每条的会话作为行,多条的序列作为列,才会更大程度的还原事件本身的信息。而不是直接将单条数据的1维特征硬转成二维来进行处理。

2.6 更好的AI技术支招

同为AI人,看到安全领域有人用AI踏踏实实的做实验、做研究甚是开心。AI技术的发展和推广离不开我们这一代同行们的努力。

以上仅仅是我们根据以往的经验,对该文章中技术方法的一些建议。由于我们并不是安全出身,不周之处还望多多指正。

下面,献上我们在AI方向的一些经验,希望会对该行业的同行们一些帮助。

1,对于超多类识别问题,尤其是识别APP问题,不建议用分类算法。因为种类实在太多了,而大多分类都依赖于有监督学习,在没有看到样本同时,很难训练分类模型。尤其APP还有版本更新问题,一个版本就会换一批特征,无法正确的定位和捕捉

2,这种超多分类识别问题,建议使用表示学习,通过拟合空间距离来做相似度匹配。这样可以应对各种未知情况,而且对于非监督训练可以可以平滑过渡

3,文章中提到的分类模型虽然很成熟,但实在太老。使用的输入格式,当今也很少有人再用。建议使用ResNet、NasNet等目前主流的分类模型。现在最先进的分类模型是EfficientNet。《技术解读EfficientNet系列模型》建议关注一下,使用该模型可以将分类效果提升很多。类似这些模型的主流使用方法可以参考我们出版的图书《深度学习之TensorFlow工程化项目实战》第3、5、6章。

4,推荐一些比较优秀的非监督训练模型,可供参考,自编码、变分自编码、最大化互信息、f-gan等,这些技术可以在网络安全的数据研究方面提供很多的启发。

5,对于未知分类,未知威胁的识别处理,也是我们目前研究的方向。这个比较有挑战的任务引起了我们极大的兴趣。目前我们主要使用了图神经网络和零次学习的相关技术。目前部分成果和知识点同样也写到了书里,未来会陆续出版。同时也希望这方面有研究的同行们一起交流互相学习。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档