杨文远,赵 鑫
(南昌航空大学科技学院,江西 共青城 332020)
恶意软件会造成计算机网络系统的瘫痪,并导致用户隐私信息的泄露或数字财产的损失。鉴于恶意软件具有变种多、危害大等特点,必须坚持预防为主的原则,通过准确识别恶意软件并及时采取控制措施,保护计算机网络系统的安全。相关人员需将基于机器学习的静态检测模型和基于深度学习的动态检测模型相结合,在2种检测技术优势互补的基础上搭建恶意软件检测系统,以达到高效率、高准确率的效果,在保障计算机网络安全方面发挥作用。
本文基于动静态检测模型设计的恶意软件检测系统,主要由客户端、系统缓存和恶意软件检测系统服务器3部分组成。客户端用于上传文件和展示检测结果;系统缓存用于存储PE原始文件和训练模型;服务器支持静态和动态分析以及文件读取等功能的实现。客户端与服务器之间采用超文本传输协议(HTTP)进行数据传递,服务器与系统缓存之间基于I/O口完成数据交互[1]。该系统具有数据上传、数据处理和结果展示3项基本功能,功能架构如图1所示。
图1 恶意软件检测系统整体架构
1.2.1 数据上传模块
该模块支持用户上传可执行文件。当用户向Web服务器发出上传文件的请求后,服务器首先执行一个判断程序“上传文件是否为空”。如果判断结果为“否”,即用户在没有选中文件的情况下直接点击上传,那么系统报错,在屏幕上提示“请选择有效文件”;如果判断结果为“是”,服务器再执行一个判断程序“文件类型是否合格”。系统默认的文件类型有.exe、.dll、.sys、.drv等几种,若用户上传文件不属于上述类型,系统报错并提示“文件类型错误”;若用户上传文件属于默认类型,服务器接收文件,并将其保存在系统缓存中。数据上传流程如图2所示。
图2 数据上传流程
1.2.2 数据处理模块
恶意软件检测系统的数据处理模块支持静态和动态2种分析模式。当系统需要处理数据时,以用户上传的文件名作为关键词,在系统缓存中输入关键词并匹配相应的文件。如果检测系统缓存文件后未成功匹配,则提示“未找到有效文件”并自动返回系统主界面;如果成功匹配,则进一步判断使用静态分析还是动态分析。判断依据是客户端的请求内容。
若请求内容为静态分析,检测系统对该文件进行静态分析。数据处理模块读取文件的静态分析参数,若参数为0,表示该文件是未选中状态,提示用户选择分析类型;用户选中“静态分析模型”后,参数变为1,此时数据处理模块提取文件的静态特征,并做向量化处理,设计人员将处理结果输入已经训练好的恶意软件静态检测模型,完成对该样本文件的分析和预测。
若请求内容为动态分析,检测系统对该文件进行动态分析。数据处理模块读取文件的动态分析参数,若参数为1,则读取该文件从原始PE文件中提取动态特征。然后将PE文件放入沙箱环境进行处理,得到该文件的行为日志。系统设计人员以行为日志作为处理对象,提取API序列特征,并做向量化处理。将处理结果输入已经训练好的恶意软件动态检测模型,完成对该样本文件的分析和预测[2]。
1.2.3 结果展示模块
服务器在接收到客户端发起的HTTP请求后,读取请求中的数据;在服务器内部完成数据的动静态分析和预测后,将预测结果封装成JSON格式的文件,再利用HTTP协议将文件返回至客户端。服务器如果未找到与该请求对应的处理结果,则发送431错误码并在客户端上显示。结果展示流程如图3所示。
图3 结果展示流程
系统设计人员在设计恶意软件检测系统的前端界面时,除了要用简洁的文字概述本系统的核心功能,还要对该系统允许接收的合格文件作出必要限制,防止用户上传系统无法识别或无法使用的文件。例如,系统对文件的大小做了限制,默认文件不得超过20 MB。当用户在系统前端界面上点击“上传文件”按钮时,系统会自动识别该文件是否超过20 MB,如果超过则弹出对话框进行提示,并重新刷新当前页面。前端界面的下方设计有2个复选按钮,左侧为“静态分析”复选框,右侧为“动态分析”复选框。用户选择任意一个复选框后,从系统主界面跳转至对应的子页面。
静态分析子界面的上部分为文字介绍,即基于LGBMopt模型的静态分析结果;中间部分以表格形式展示上传文件的分析预测结果,即该文件是恶意软件或良性软件的概率;下部分为“返回”选项,可跳转至主界面;动态分析子界面的上部分为文字介绍,即基于T-Bilstm模型的动态分析结果;中间部分以表格形式展示预测结果的排序,分别为最有可能,第二大可能、第三大可能,并给出了软件的判断结果,如worms病毒、trojans病毒、botnets病毒以及每种病毒的预测评分;下部分为“返回”选项,可跳转至主界面[3]。
支持Python编程语言的Web应用开发工具有Django、Flask、Bottle等。从应用效果来看,Flask作为一款轻量级、多功能的免费开发工具,具有支持单元测试、支持安全Cookie、支持功能扩展等多种优点,因此本文选用Flask进行恶意软件检测系统的开发。
系统设计人员使用Virtualenv创建一个虚拟环境,在该环境下用Flask开发工具创建恶意软件检测系统,主要包含Web客户端、服务接口、Jinja2模板引擎、Web服务器等模块。在后端程序中添加一个Flask类的实例,路由装饰器会描述触发自定义函数的URL,从而支持用户自定义返回Web客户端的信息。基于Flask的检测系统能快速响应文件上传请求,服务器在响应请求后会将上传的文件保存在缓存中;同时,设计人员根据请求对象的files属性访问上传的文件,并记录文件名、文件存储路径等信息,为后期查询和调用文件提供了便利[4]。设计人员在构建系统时,调用了render_template()函数来渲染前端页面,达到优化人机交互的效果。本系统的Web页面按照功能的不同共有3种类型,分别是:
(1)用于上传文件的主页面index.html;
(2)用于展示静态预测结果的子页面detectStatic.html;
(3)用于展示动态预测结果的子页面detectDynamic.html。
系统设计人员将建成的Web应用在本地服务器上运行,并尝试利用服务器端口访问该应用,结果显示可以正常访问,在此基础上对恶意软件检测系统的各项功能进行测试。
2.3.1 文件上传功能测试
本文设计的恶意软件检测系统,对用户上传的文件有2个限制条件:其一是文件要控制在20 MB以内;其二是上传文件不得为空。据此,设置T01~T03文件上传测试用例,前置条件和测试结果如表1所示。
表1 文件上传功能测试用例
由表1可知,针对系统文件上传功能,分别进行了“文件为空”“文件大小超过20 MB”和“不超过20 MB的非PE文件”3项测试。测试结果表明,当上传文件为空和文件为非PE文件时,系统自动返回上传文件主页面,并在该页面上以弹窗的形式提示错误信息;当上传文件的大小超过规定的20 MB时,提示错误码431。
2.3.2 静态分析模型预测功能测试
静态分析模型的主要作用是识别用户上传文件的文件名,然后读取文件内容并从中提取静态特征,系统设计人员将静态特征的向量化处理结果作为静态模型的训练样本,经过500次训练后,测试静态分析模型的预测功能[5]。前置条件为成功上传符合要求的文件,测试结果如表2所示。
表2 静态分析模型预测结果
静态分析模型的预测结果符合预期,测试通过。
2.3.3 动态分析模型预测功能测试
动态分析模型的主要作用是识别用户上传文件的文件名,然后将该文件置于沙箱环境中展开动态分析。设计人员在分析期间生成记录日志,从日志中提取API调用序列,依次完成去重、特征向量化等一系列处理后,将最终处理结果作为动态模型的训练样板。经过500次训练后,测试动态分析模型的预测功能。前置条件为成功上传符合要求的文件,测试结果如表3所示。
表3 动态分析模型预测结果
动态分析模型的预测结果符合预期,测试通过。
在信息时代背景下,以机器学习和深度学习为代表的人工智能技术得到了成熟发展,并在计算机视觉和自然语言处理等方面得到了广泛应用。本文将基于机器学习的静态检测技术和基于深度学习的动态检测技术相结合,构建了恶意软件检测系统,该系统能够准确识别用户提交文件是否为恶意软件,并且对恶意软件的具体类型作出预测,从而为恶意软件的处理提供了依据,保障了计算机网络系统的运行安全。