阅读提示
建议先通读一遍,再回看题目、开头、过渡和结尾,更容易提炼出可借鉴的写作框架。
这篇毕业论文主要做的就是整了个能自动识别恶意软件的智能检测系统。现在网络攻击花样越来越多,传统那些靠特征码比对的方法跟不上趟儿了,老是漏报误报。所以我们打算用深度学习这门技术,试试看能不能搞个更准更快的检测办法。
整个系统大概分三块。头一块是数据预处理,得先把收集来的大量软件样本(包括正常的和恶心的)收拾利索了。这活儿包括把可执行文件反汇编,提取操作码序列,还有把那些API调用、权限声明这些信息转化成神经网络能看懂的数值向量。数据不处理好,后面模型训练准抓瞎。
核心部分就是模型设计。我们选的是卷积神经网络(CNN)配合长短时记忆网络(LSTM)的混合结构。CNN擅长从操作码序列里抓取局部特征,比如某些特定指令组合可能就是恶意行为的标志。LSTM呢,能记住序列前后的关系,恶意代码经常是一连串操作才有害,这个它擅长。把这两个拼一块儿,模型就能既看细节又看整体流程。我们在Google的TensorFlow框架上搭了这个模型,调了挺多参数,比如卷积核大小、网络层数,还用了Dropout防止过拟合。
做完模型得训练和测试。我们把数据集按七比三分成训练集和测试集。训练的时候用Adam优化器,损失函数用交叉熵。跑下来看,模型在测试集上的准确率能到98.2%,比只用传统方法或者单一神经网络模型效果强不少,尤其是对新型变种恶意软件的检出率提高了。系统还有个简单的用户界面,上传个文件就能出检测报告。
过程中也碰上些麻烦。比如样本不平衡,恶意软件样本类型太多,有些类别数量少,模型就容易偏。我们用了数据增强技术,比如给少数类别样本加噪声,算是缓解了一些。再就是模型计算量不小,我们用了GPU加速训练,不然太费时间。
这个基于深度学习的检测系统算是跑通了,效果还行。它证明了用CNN加LSTM混合模型来从软件行为序列里挖特征这条路走得通,比老方法有优势。当然这只是一个原型,真要拿去商用,还得在更大规模数据上练,把系统做得更结实,检测速度也得再提提。