计算机毕业设计源码网,计算机毕业设计,毕业设计,计算机毕设,毕业设计代做
您现在的位置:计算机毕业设计源码网 > 热门毕业设计 > 基于网络行为分析的恶意代码检测系统
基于网络行为分析的恶意代码检测系统

基于网络行为分析的恶意代码检测系统

  • 所属类别:热门毕业设计
技术支持: 远程指导安装 赠送文档 如有BUG免费修复
评价: 热度: ℃   

查看演示 毕业设计订制

本站郑诺:

凡购买的成品设计免费赠送文档,提供远程调试答疑等服务.
  • 程序描述
程序信息
ID编号:3610
编码:GBK及UTF-8
浏览量:
适用站点:Python毕业设计
最后更新:2026-01-19 09:48
程序架构描述:


恶意代码有被称之为恶意软件,它是对人们电脑造成损害或者破坏存储在用户电脑的数据。近年来,随着计算机技术的发展,它为人们的工作、学习、生活带来便利的同时,其数据安全是人们最为关心的问题,人们通过网络传递文件、接收邮件等过程中,难免会存在一些恶意代码文件,这些恶意代码文件紧靠人工区分是非常困难。基于此,通过机器学习知识,实现一个基于网络行为分析的恶意代码检测系统各有必要。
本文通过UCI等网站收集恶意代码文件和正常软件文件的数据集,通过图像转换将其转换为图形文件分类存储,通过CNN模型中的ResNet算法,构建恶意代码检测模型。通过收集恶意代码及正常代码图像文件数据集训练恶意代码检测模型,作为未知恶意代码文件识别的分类器。通过PyQt5完成UI界面设计,通过Python语言完成基于网络行为分析的恶意代码检测系统功能。通过该系统,用户可快捷的辨别文件是否是恶意代码文件,提高电脑的安全性。
 
 关键词:恶意代码;文件识别;图像文件;CNN;ResNet;PyQt5

研究背景

根据GIR的相关调研报告[1]可知,2022年到现在全球的高级恶意软件保护软件带来的经济效益高大8334.5百万美元,我国的恶意软件的保护软件市场收益也达到几百美元。根据市场调研可知[2],随着计算机技术的逐渐发展,恶意软件的形式也在发展,目前主要病毒、蠕虫、木马、间谍等形式的恶意软件为主流,但是随着技术的发展,恶意软件的形式也逐渐向着多样化发展,如何高效、准确的定位恶意软件成为当前最为关注的问题。恶意软件对电脑的破坏力之强,严重的恶意软件可能泄露个人隐私、企业的商业机密、国家的军事、安全等机密,它们给个人、企业、国家造成的危害之大,甚至影响人民的生命财产和国家安全,可见恶意软件保护软件其重要性不言而喻。近年来,随着机器学习算法的发展,尤其是卷积神经网络技术的发展,为恶意软件的识别提供新的技术,在此背景下,基于网络行为分析的恶意代码检测系统课题便产生了。

研究意义

恶意软件的保护软件核心内容就是如何识别软件是否恶意软件,随着大数据技术的发展,通过挖掘技术从现有的恶意代码数据中挖掘有价值的内容,通过及其学习算法,构建一个未知恶意代码检测模型实现基于网络行为分析的恶意代码检测系统,以为用户提供一个未知恶意代码检测功能,用户通过该系统对不确定的或者陌生的文件进行检测,确保文件是不恶意代码文件,从而保护自身电脑的安全,同时也可帮助企业内部防止恶意软件造成重要机密泄露事件的发生,保护部队、政府等重要部门内部信息的安全。

国内外研究现状

恶意软件的识别研究课题已经成为国内外非常关注的话题,尤其在军事领域,重要军事信息的泄露可能会导致战争的失败,各国对恶意软件的识别技术尤为重视。2022年,赵敏,张雪芹,朱唯一[3]等人依托LSTM-SVM方法,建立手机端静态诶一软件的检测模型,为恶意软件检测功能实现提供提供依据,作者主要从恶意软件在执行时对应的时序性、特征维度等角度进行分析,将这些特征数据作为样本特征来训练LSTM恶意软件检测模型。乔梦晴,李琳[4]等人基于遗传规划算法来实现恶意软件检测功能,其核心内容是解决软件特征处理和构建检测模型分开操作无法解决恶意软件识别准确率和多样性的问题,通过将两个步骤集成来解决该问题。白敬华[5]将图卷积网络技术应用在恶意代码检测上,他就恶意软件特征提取、多标签分类模型构建等进行了研究,最终实现了恶意代码检测模型,重点解决了恶意软件多标签分类问题。2023年,王海宽[6]将深度学习算法应用在恶意软件检测上面,重点解决恶意软件的加密、寡态、打包等问题,他通过Transformer来搭建恶意软件检测框架,最终训练得到恶意软件的检测模型。国外对应的研究著作也不少,2023年,Naeem Hamad,Dong Shi[7]等人通过CNNs等方法构建恶意代码检测和分类模型,其核心将未知恶意代码文件转换为图像,通过深度学习算法完成模型训练。

研究工作内容

本文恶意代码和正常代码文件数据为样本,将文件转换为图像,采用卷积神经网络中的残差神经网络 (ResNet) 来构建恶意代码检测模型,实基于网络行为分析的恶意代码检测系统,本文主要研究内容如下:
(1)通过网络搜集恶意代码和正常代码文件数据信息,本文从UCI等网站下载恶意代码相关文件数据,通过并将其通过图像技术进行转换为图像文件。。
(2)恶意代码和正常代码文件图像数据集进行划分,建立训练数据集、验证数据集、测试数据集样本。
(3)通过恶意代码和正常代码文件图像数据集基于ResNet模型算法构建恶意代码检测模型,并保存训练好的模型文件,通过测试集数据验证模型。
(4)基于训练的到的恶意代码检测模型文件,实现基于网络行为分析的恶意代码检测系统。

论文组织结构

本论文分为五章节的内容,实现基于网络行为分析的恶意代码检测系统进行介绍。
第一章:绪论,对基于网络行为分析的恶意代码检测系统的背景及其目的和意义进行介绍,并阐述国内外恶意代码检测的相关研究情况,确定本文的研究内容以及组织结构。
第二章:相关技术原理,对基于网络行为分析的恶意代码检测系统的Python、卷积神经网络、ResNet算法、PyQt5框架等技术进行介绍。
第三章:基于ResNet的恶意代码检测模型构建,对基于ResNet的恶意代码检测模型构建过程进行介绍。
第四章是基于网络行为分析的恶意代码检测系统设计与实现,对基于网络行为分析的恶意代码检测系统的文件上传、未知恶意代码检测等相关业务功能的程序流程和运行效果进行介绍,对主要功能实现的关键代码进行介绍。
第五章是总结,对基于网络行为分析的恶意代码检测系统的实现过程进行总结,对下步改进方案进行描述。  

卷积神经网络介绍

卷积神经网络概念

卷积神经网络[8]是一种深度学习模型,它被简称为CNN,它主要的作用是进行识别物体的图像处理器,最为常用的功能是分析视觉图像,它是Yann LeCun科学家第一个提出来的概念,它第一次被应用在解决手写数字问题上。目前卷积神经网络在很多的领域被应用,如自动驾驶汽车、石油的勘探工作、医学成像等方面得到了广泛的应用。卷积神经网络经过十多年的发展,在很多AI上面都已经被使用,如最近流行火热的ChatGPT搜索引擎。

卷积神经网络基本原理

卷积神经网络的网络层级结构主要分为是输入层、卷积层、激活层、池化层、全连接FC层这五个层次。要理解该网络的原理,则要从以下点进行理解。
(1)输入层[9],用作接收传递进来的样本,并对其需要去均值、归一化以及PCA/SVD降维等相关的数据处理操作。
(2)卷积层[10]主要功能利用卷积核完成局部感知[33],比如我们定义一个48×48×3的RGB图片,通过一层5x5x3的卷积操作后,会得到一个43x43x1这样一个特征图,通过计算可以得到输入层的神经元数量是6912个。针对第一层隐层来说,对应的神经元数量是1849个,那么就将这1849个神经元则是起到局部连接作用。该层目的是通过各种方式完成参数减少的目标。其中最为关键的方式是权值共享方法,如对于1M的隐层神经元,则针对单个具体的神经元有1010个连接,这样的参数的数量就会有1m10x10个,通过实验发现,同层的位置连接值都是一样的。
(3)激活层,对其上一层得到的卷积结果进行非线性的映射处理,关于本层的相关处理方法较多,如Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Maxout等重要函数,它们都已被封装,使得该层功能实现较为容易,
(4)池化层[11],对得到内容数据做降维压缩以及减参减拟合。本层核心点围绕内容数据的主要处理展开,同时该层对模型容错[34]性能也做了相应改善。
(5)输出层,就是经过上述的一些列处理之后,模型会将得到的各个特征图片进行全连接,对于一些过拟合的情况可以局部归一化以及将数据进行增强等处理来解决过拟合的问题。

卷积神经网络算法分类介绍

在实际应用中,按照卷积神经网络算法达到的目标不同其分类也不同,如在生活中,通过捕捉田地图像找到田间杂草,则其目标是检测杂草,故将与其目标相似的算法归到检测算法,如在通过西瓜特征等验证其是熟还是生,则需要分类算法完成,比如分割东西或者追踪一些目标,与之相关的被定为分割、目标追踪算法。在本文研究的是检测算法,它则分为one-stage和two-stage两种思路类型,其中前者的速度快,但是精度相对低一点,后者恰好与前者相反。其中前者的代表算法主要有YOLOV的各个版本算法以及RetinaNet、SSD、Resnet算法。后者代表算法有Fast-RCNN、Faster-RCNN、FPN等等。本文主要采用的是Resnet模型算法。

ResNet理论介绍

ResNet基本概念介绍

Resnet[12]主要用作图像分类问题的处理,它是一种残差网络,它从VGG进行演变而来,它能够解决传统的网络深度加深过程中出现的损失增加问题,它石CNN的一种变种算法,也是CNN算法中一种。在实际情况中,如果输入X,这是一个多唯的张量,经过其中一层网络后就会有这样的一个输出H(x),而神经网络训练的过程实际就是不断的学习H(x)。残差网络其不同的地方他是学习H(x)-X的过程。

ResNet原理介绍

ResNet基本组成[13]是由residual block/bottleneck模块、BN模块[14]、Relu模块组成,其中残差网络是由多个residual block组成。BN模块在深度网络学习中是常用的部分。它能很好的解决学习率,dropout比率等参数问题,Relu模块主要是0-1激活层。常见的Resnet其层可以划分为18、34、50、101、152几种,其中ResNet50层残差网络的结构图如下所示。


恶意代码文件图像转换

本文采用的是卷积神经网络算法,因此需要对收集的恶意代码和正常代码文件做图像处理,本文只能对二进制文件,读取8位为一个无符号的整形(范围为0-255),固定的行宽为一个向量,整个文件最后生成一个二维数组。将此数组可视化为一个灰阶图像,该二维数组中每个元素的范围为0-255,正好为灰度图像中每个像素的取值范围,即每个数组元素对应图像中的一个像素,通过这种处理方式将恶意代码和正常代码文件转换成图像,其转换后的图像如下图所示。其中二进制文件转换的关键代码如下所示:

f = open(filename,'rb') # 读入文件
ln = os.path.getsize(filename) # 文件长度(byte)
width = 256 # 固定图片宽度为256
rem = ln%width # 计算余出的字节
a = array.array("B") # uint8 数组
a.fromfile(f,ln-rem) # 将文件读入数组a中,舍去余出的字节
f.close()           
g = numpy.reshape(a,(len(a)/width,width)) # 将数组转为二维
g = numpy.uint8(g)
scipy.misc.imsave(graphname,g) # 保存图片

恶意代码检测模型训练

图像文件预处理

在做图像文件预处理的时候,对于训练数据集的transform和验证集的transform进行分别处理,因为训练的图像处理即要做resize和归一化处理外,还需要对训练的图像文件进行增强操作,比如旋转、随机擦除等操作处理,而验证集的图像是不需要做进行图像增强操作。其中图像文件预处理代码如下所示:
# 数据预处理
 transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
])
transform_test = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor(),
    transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])
])

图像文件数据读取

已经做完图像文件的预处理之后,则需要通过程序加载读取图像文件数据,本文通过datasets中的ImageFolder()方法分别读取data/train目录下的训练集图像文件数据以及data/val目录下的验证集图像文件数据。其关键代码如下所示:
# 读取数据
dataset_train = datasets.ImageFolder('data/train', transform)
print(dataset_train.imgs)
# 对应文件夹的label
print(dataset_train.class_to_idx)
dataset_test = datasets.ImageFolder('data/val', transform_test)
# 对应文件夹的label
print(dataset_test.class_to_idx)
# 导入数据
train_loader = torch.utils.data.DataLoader(dataset_train, batch_size=BATCH_SIZE, shuffle=True)
test_loader = torch.utils.data.DataLoader(dataset_test, batch_size=BATCH_SIZE, shuffle=False)

设置恶意代码检测模型

设置恶意代码检测模型的时候,其中采用交叉熵作为损失函数,本文模型采用的是resnet18模型,这里采用的是预训练模型,通过resnet18的预训练模型其优点是能够快速的收敛一个较好的模型,其中设置预训练模型的时候,需要设置resnet18模型中的pretrained为True,并修改最后一层的全连接,将其对应的类别设置为2,然后将模型放到DEVICE,通过Adam优化器进行学习率调低。设置恶意代码检测模型的关键代码如下:

# 实例化模型并且移动到GPU
criterion = nn.CrossEntropyLoss()
model = torchvision.models.resnet18(pretrained=False)
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 2)
model.to(DEVICE)
# 选择简单暴力的Adam优化器,学习率调低
optimizer = optim.Adam(model.parameters(), lr=modellr)
def adjust_learning_rate(optimizer, epoch):
    """Sets the learning rate to the initial LR decayed by 10 every 30 epochs"""
    modellrnew = modellr * (0.1 ** (epoch // 50))
    print("lr:", modellrnew)
    for param_group in optimizer.param_groups:
        param_group['lr'] = modellrnew

系统功能需求分析

通过调研,该基于网络行为分析的恶意代码检测系统要求用户能够选择未知恶意代码文件病转换,能够验证未知恶意代码文件是否是恶意代码,能够查看未知恶意代码检测结果,下面通过用例图对基于网络行为分析的恶意代码检测系统中的用户功能进行详细说明。通过上述用户需求可知,该系统终用户参与的用例主要有未知恶意代码文件选择、未知恶意代码文件检测、未知恶意代码文件检测结果查看。下面绘制基于网络行为分析的恶意代码检测系统用户用例图如下所示。

系统功能总体设计

通过上面对基于网络行为分析的恶意代码检测系统用户需求了解,本系统功能模块分未知恶意代码文件选择、未知恶意代码文件检测、未知恶意代码文件检测结果查看功能。其系统的结构图如下

(1)未知恶意代码文件选择及转换,为用户提供选择需要检测未知恶意代码文件地方,并将上传的未知恶意代码文件进行图像转换。
(2)未知恶意代码文件检测,通过上述训练得到的恶意文件检测模型,对上传的未知恶意代码文件进行检测。
(3)对未知恶意代码文件检测的结果进行查看。

未知恶意代码文件选择及转换功能实现

未知恶意代码文件选择及转换功能界面如下图所示,该界面通过Lable标签显示请选择未知恶意代码文件标签,通过QLineEdit控件显示未知恶意代码文件路径,通过按钮控件分别作为选择文档和确认恶意代码检测按钮。其中恶意代码文件读取的关键代码如下:
Def  WSavedivufile(self):
    # 读取界面数据
    divfwz = self.txtdivfwz.text()

    if divfwz == "":
        QMessageBox.warning(self, "警告", "请选择要检测的文件")
        return
    divfnm, divftype = os.path.splitext(divfwz)  # 获取文件名、文件扩展名
    divfnmindex=divfnm.rfind('/')
    divfnm=divfnm[divfnmindex+1:]


本站由为毕设源码站提供计算与安全服务.
备案号:鲁ICP备2022033926号-2