使用Python中的卷积神经网络进行恶意软件检测 !

使用CNN-XGboost模型进行恶意软件分类 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、介绍二、相关工作三、提出方案1.引入库2.读入数据四、实验评估五、总结 一、介绍 物联网在数字化运动中扮演着基础性角色。现在,物联网已经成为我们生活中一个重要组成部分,网络空间也成了交流和在线金融交易等线上活动平台。物联网和计算机系统的广泛使用吸引了恶意软件开发人员用他们的恶意代码感染当前环境并达到邪恶的意图。 恶意软件就是指恶意目的的开发软件程序,如:未经授权访问个人或组织的敏感信息、扰乱计算机运行、绕过访问控制、显示一些恶 阅读详情
AI摘要

本文探讨了使用深度学习,特别是卷积神经网络(CNN)在恶意软件检测中的应用。介绍了如何将恶意软件转换为图像,并利用CNN进行特征提取和分类。讨论了CNN的基本架构和在恶意软件分析中的具体实现。

导言

 

在这篇文章中,我们将学习人工网络架构以及如何使用其中一个(卷积神经网络)来帮助恶意软件分析师和信息安全专业人员检测和分类恶意代码。

恶意软件是每个现代组织的噩梦。攻击者和网络犯罪分子总是想出新的恶意软件来攻击目标。安全厂商正在尽最大努力防范恶意软件攻击,但遗憾的是,每月发现的数百万恶意软件无法实现这一点。因此,需要诸如深度学习的新方法。

在深入研究DL方法的技术细节和实际实施步骤之前,必须学习和发现人工神经网络的其他不同架构。现在讨论主要的人工神经网络。

本摘录摘自Packt Publishing出版的“ Mastering Machine Learning for Penetration Testing ”一书。本书教您使用Python进行机器学习,从而成为渗透测试大师的丰富技能。

卷积神经网络(CNN)

Python学习交流群:1004391443

卷积神经网络(CNN)是解决图像分类问题或者说是计算机视觉问题的深度学习方法,因为经典计算机程序面临非常多的挑战和困难,包括:光照、变形和分割等。CNN具有宽度、高度和深度三维结构的特征。

想要构建CNN,我们需要三种主要类型的层:

卷积层:卷积运算是指从输入图像中提取特征并将滤波器中的值与原始像素相乘;

池化层:池化操作减少了每个要素图的维度;

全连接层:全连接层是经典的多层感知器,在输出层具有softmax激活功能要使用Python实现CNN,你可以使用以下Python脚本:

1import numpy from keras.datasets import mnist from keras.models import Sequential from keras.layers import Dense from keras.layers import Dropout from keras.layers import Flatten from keras.layers.convolutional import Conv2D from keras.layers.convolutional import MaxPooling2D from keras.utils import np_utils from keras import backend backend.set_image_dim_ordering('th') model = Sequential() model.add(Conv2D(32, (5, 5), input_shape = (1, 28, 28), )) model.add(MaxPooling2D(pool_size = (2, 2))) model.add(Dropout(0.2)) model.add(Flatten()) model.add(Dense(128, )) model.add(Dense(num_classes, )) model.compile(, , metrics = ['accuracy'])

 

递归神经网络(RNN)

 

RNN对序列的每个元素执行相同的任务,输出取决于先前的计算。它广泛应用于语言建模和文本生成(机器翻译、语音识别和许多其他应用程序)。

长短期记忆网络

 

长短期记忆(LSTM)通过构建内存块解决了递归神经网络中短暂内存问题,该块有时成为存储器单元。

Hopfield网络

 

Hopfield网络由John Hopfield于1982年开发。这个网络的主要目标是自动关联和优化,分为两类:离散和连续。

Boltzmann机器网络

 

它使用循环结构,只使用本地可用信息,它是由Geoffrey Hinton和Terry Sejnowski于1985年开发的,它的目标是优化解决方案。

使用CNN进行恶意软件检测

 

对于这个新模型,我们将发现如何使用CNN构建恶意软件分类器。你一定想知道如何在CNN将图像作为输入,其实答案并不难,我们将恶意软件转换为图像。这样可能吗?完全可能!恶意软件可视化是过去几年中众多研究课题之一。所提出的解决方案之一是来自加利福尼亚大学圣巴巴拉分校视觉研究实验室的Lakshmanan Nataraj所谓的恶意软件图像:可视化和自动分类的研究。

下图详细说明了如何将恶意软件转换为图像:

 

 

 

 

以下是Alueron.gen!J 恶意软件的图片:

 

 

 

 

 

 

此技术还是我们能够以详细的方式可视化恶意软件部分:

 

 

 

 

通过解决如何通过图像提供使用CNN的恶意软件机器学习分类器的问题,信息安全专业人员可以使用CNN的功能来训练模型。Malimg数据集是最常用于提供CNN的恶意软件数据集之一。此恶意软件数据集包含来自25个不同恶意软件系列的9339个恶意软件样本。你可以从Kaggle下载。

这些是恶意软件系列:

Allaple.L

Allaple.A

Yuner.A

Lolyda.AA 1

Lolyda.AA 2

Lolyda.AA 3

C2Lop.P

C2Lop.gen!G

Instant access

Swizzor.gen!I

Swizzor.gen!E

VB.AT

Fakerean

Alueron.gen!J

Malex.gen!J

Lolyda.AT

Adialer.C

Wintrim.BX

Dialplatform.B

Dontovo.A

Obfuscator.AD

Agent.FYI

Autorun.K

Rbot!gen

Skintrim.N

将恶意软件转换为灰度图像后,可以获得以下恶意软件表示,以便稍后使用它们来提供机器学习模型:

 

 

 

 

可以使用以下Python脚本将每个恶意软件转换为灰度图像:

 1import os
 2import scipy
 3import array
 4filename = '<Malware_File_Name_Here>';
 5f = open(filename,'rb');
 6ln = os.path.getsize(filename);
 7width = 256;
 8rem = ln%width;
 9a = array.array("B");
10a.fromfile(f,ln-rem);
11f.close();
12g = numpy.reshape(a,(len(a)/width,width));
13g = numpy.uint8(g);
14scipy.misc.imsave('<Malware_File_Name_Here>.png',g);

 

对于特征选择,可以使用不同的技术(如平均值和标准差等)提取或使用任何图像特征,例如纹理图案、图像中的频率、强度或颜色特征,以生成特征向量。在我们的例子中,可以使用诸如颜色布局描述符、同构纹理描述符或全局图像描述符(GIST)之类的算法。我们假设选择了使用GIST, pyleargist是一个非常不错的Python库来计算它。要安装它,像往常一样使用PIP:

1# pip install pyleargist=.0.1

 

计算GIST可以使用以下Python脚本:

1import Image
2Import leargist
3image = Image.open('<Image_Name_Here>.png');
4New_im = image.resize((64,64));
5des = leargist.color_gist(New_im);
6Feature_Vector = des[0:320];

 

这里的320指的是我们使用灰度图像时的前320个值。不要忘记将它们保存为NumPy数组,以便以后使用它们来训练模型。

获得特征向量后,我们可以训练许多不同的模型,包括SVM、K-maeans和人工神经网络。

当完成特征选择和工程设计后,可以构建CNN。例如,对于我们的模型,将构建一个带有两个卷积层的卷积网络,具有32*32个输入。要使用Python库构建模型,可以使用以前安装的TensorFlow和utils库来实现它。

因此,整体CNN架构如下图所示:

 

 

 

 

这个CNN架构并不是构建模型的唯一提议,但目前我们将把它用于实现。

为了建立模型和CNN,推荐Kearas,需要导入如下内容:

 1import keras
 2from keras.models
 3import Sequential, Input, Model
 4from keras.layers
 5import Dense, Dropout, Flatten
 6from keras.layers
 7import Conv2D, MaxPooling2D
 8from keras.layers.normalization
 9import BatchNormalization
10from keras.layers.advanced_activations
11import LeakyReLU

 

如前所述,灰度图像的像素值范围为0到255,因此需要为网络提供32*32*1维的图像:

1train_X = train_X.reshape(-1, 32,32, 1)
2test_X = test_X.reshape(-1, 32,32, 1)

 

将使用以下参数训练网络:

1batch_size = 64
2epochs = 20
3num_classes = 25

 

要构建体系结构,请考虑一下它的格式,使用以下命令:

 1Malware_Model = Sequential()
 2Malware_Model.add(Conv2D(32, kernel_size=(3,3),,input_shape=(32,32,1),))
 3Malware_Model.add(LeakyReLU(.1))
 4Malware_model.add(MaxPooling2D(pool_size=(2, 2),))
 5Malware_Model.add(Conv2D(64, (3, 3), ,))
 6Malware_Model.add(LeakyReLU(.1))
 7Malware_Model.add(Dense(1024, ))
 8Malware_Model.add(LeakyReLU(.1))
 9Malware_Model.add(Dropout(0.4))
10Malware_Model.add(Dense(num_classes, ))

 

编译模型,使用以下命令:

1Malware_Model.compile(.losses.categorical_crossentropy, .optimizers.Adam(),metrics=['accuracy'])

 

适合并训练模型:

1Malware_Model.fit(train_X, train_label, ,,,validation_data=(valid_X, valid_label))

 

评估模型,可以使用以下代码:

1Malware_Model.evaluate(test_X, test_Y_one_hot, )
2print('The accuracy of the Test is:', test_eval[1])

将深度学习应用于恶意软件检测的承诺与挑战

 

机器学习从业者和恶意软件分析师提出可许多不同的深层网络架构来检测已知和未知的恶意软件。

但是在使用深度学习网络检测恶意软件时,恶意软件分析师面临许多挑战,特别是在分析PE文件时,因为分析PE文件,我们将每个字节作为输入单元,因此除了处理数百万个分类序列步骤之外,还需要由于函数调用和跳转命令而在函数之间保持复杂的空间相关性。

5、基于辅助分类器生成对抗网络的恶意软件图像分析 本文基于辅助分类器生成对抗网络(AC-GAN)对恶意软件图像进行分析,使用MalImg和MalExe两个数据集,在不同图像尺寸下训练生成器与判别器模型。通过CNN和ELM模型评估生成图像的质量,实验结果表明,尽管AC-GAN判别器在真实与伪造图像分类中表现优异,但其他深度学习模型难以有效区分特定家族的真实与伪造样本,尤其在128×128高分辨率下伪造图像质量显著提升。然而混淆矩阵分析显示,真实与伪造样本间仍存在可辨差异,说明当前生成图像尚未达到‘深度伪造’水平。研究还探讨了数据预处理、模型结构及类别不平衡问 阅读详情

相关推荐

基于Python CNN的恶意软件检测:从二进制灰度图到模型验证的完整实战

卷积神经网络(CNN)凭借平移不变性和参数共享,在图像分类任务中具有天然优势。将恶意软件二进制文件映射为灰度图像,可保留代码段布局与节区结构等空间特征,再通过CNN自动提取局部纹理与全局模式,实现高效分类。这一方法避免了传统特征工程在加壳、混淆场景下的脆弱性,适用于毕业设计、课程项目及安全研究中的恶意软件检测。本文围绕Python实现,详解数据增强、模型搭建、训练调参及交叉验证等关键环节,助你跑通并讲透CNN恶意软件检测全流程。

weixin_32377497的博客 140

paper—Image-based malware classification hybrid framework based on space-filling curves

基于空间填充曲线的图像恶意软件分类混合框架 目录 摘要 一、引言 二、相关工作 2.1 二进制文件可视化 2.2 byteplot恶意软件可视化 2.3空间填充曲线恶意软件可视化 2.4 总结 三、空间填充曲线 3.1二进制数据表示中空间填充曲线的适用性 3.2 使用空间填充曲线映射二进制文件 四、混合框架 4.1 数据采集和预处理 4.2虚拟机自检Virtual MachineIntrospection 4.2.1进程转储文件分析 4.3恶意软件转换 4....

weixin_43872455的博客 1150

Python卷积神经网络恶意软件检测:从字节灰度图到CNN实战

卷积神经网络(CNN)擅长从图像中提取局部特征,其核心原理是通过卷积层和汇聚层自动学习空间层次模式。在安全领域,将恶意软件二进制字节序列转换为灰度图,即可利用CNN进行纹理分类,实现高效检测。这种方法无需解析PE结构,对加壳混淆鲁棒性强,泛化能力优于传统特征码匹配。典型应用包括恶意软件家族分类、变种识别和入侵检测。以LeNet-5等轻量级CNN模型为基础,结合PyTorch框架,可快速构建检测系统。本文围绕Python实现,详解字节灰度图生成、CNN模型搭建、训练评估及可解释性验证,提供完整源码和文档说明,

weixin_29056101的博客 179

安卓恶意代码数据集(Android Malware and Benign apps)整理

因为最近想做一些简单的实验,而自己之前收集的数据找不着了,所以又看了看别人的推荐,发现ResearchGate上这个讨论里有些回答还是总结得很好的: https://www.researchgate.net/post/Where_can_I_get_Android_Malware_Samples 例如有一位朋友总结到: Nowadays, we can find other projects...

qysh123的专栏 7819

基于Python卷积神经网络的恶意软件检测实战:从字节序列到一维CNN模型

卷积神经网络(CNN)是一类能自动从原始数据中学习局部模式的深度学习模型,其核心原理是通过卷积核在数据上滑动提取特征,避免了人工特征工程。在网络安全领域,将恶意软件二进制文件转化为字节序列或灰度图,利用CNN学习纹理与局部模式,能有效应对传统特征库更新滞后的问题。这种技术价值在于不依赖人工提取特征,让网络自己从原始字节中找规律,适用于安全工程师快速搭建可解释检测原型,以及Python开发者练手非图像场景。本文围绕数据管线、一维CNN结构、训练参数与避坑展开,提供一套能落地的恶意软件检测方案。

weixin_29035147的博客 181

基于深度学习的恶意软件检测实战:从CNN模型构建到系统部署

恶意软件检测是网络安全领域的核心挑战,传统基于特征码的方法难以应对代码混淆、加壳等高级规避技术。其原理在于通过分析软件静态特征(如字节序列)或动态行为(如API调用链)来识别恶意意图。深度学习技术,特别是卷积神经网络(CNN)和循环神经网络(RNN),能够自动从海量样本中学习深层、抽象的特征模式,极大提升了检测的自动化水平和泛化能力,有效应对未知威胁。这项技术的价值在于为构建下一代智能安全防护体系提供了关键支撑,广泛应用于端点防护、沙箱分析、威胁情报等场景。本文将以实战项目形式,详细解析如何利用CNN处理二

weixin_34345753的博客 465

使用Python中的卷积神经网络进行恶意软件检测

导言在这篇文章中,我们将学习人工网络架构以及如何使用其中一个(卷积神经网络)来帮助恶意软件分析师和信息安全专业人员检测和分类恶意代码。恶意软件是每个现代组织的噩梦。攻击者...

架构师小秘圈 3383

Python卷积神经网络恶意软件检测:从字节到灰度图的毕设实战

卷积神经网络(CNN)能够自动从原始数据中学习局部模式,其核心在于将非结构化的字节序列映射为二维灰度图像,利用卷积核提取纹理特征。在恶意软件检测中,这种技术避免了人工特征工程的繁琐,通过数据增强和轻量级网络设计,有效提升了检测的泛化能力。典型应用场景包括毕业设计、课程大作业以及安全分析中的恶意代码分类。本文围绕Python实现,详细解析了从样本可视化、数据增强到模型训练与评估的完整流程,并提供了避坑指南和Grad-CAM可视化技巧,帮助读者快速构建一个高准确率的恶意软件检测系统。

weixin_29047919的博客 189

Python基于TensorFlow实现深度学习CNN的恶意软件检测项目实战

Python基于TensorFlow实现深度学习CNN的恶意软件检测项目实战

张陈亚的博客 2886

构建恶意软件检测系统的神经网络实战

人工神经网络(ANN)是一种由大量简单计算单元相互连接而成的复杂网络系统,模仿人类大脑神经元的工作方式。ANN的基本组成单位是神经元,或称节点,每个神经元接收多个输入,并产生单一输出,输出又可能成为其他神经元的输入。工作原理体现在以下几方面:信号传递:每个连接的强度由权重来表示,数据通过网络传递时,信号的强度会受到权重的影响。激活函数:当信号传递到神经元后,会通过激活函数进行处理,激活函数的作用是引入非线性因素,使得ANN可以学习和模拟复杂的非线性关系。前向传播。

weixin_29443363的博客 748

基于机器学习的恶意请求识别(Python代码及数据集)

这是作者恶意代码分析、网络安全、系统安全等系列教程,主要是通过机器学习、人工智能和深度学习来分析恶意代码的在线笔记。希望对您有所帮助,学无止境,一起加油。参考作者的博客和github资源,由于github速度限制,故上传免费资源供大家学习。 [网络安全自学篇] 二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例 https://blog.youkuaiyun.com/Eastmount/article/details/102852458 https://github.com/eastmountyxz/AI-for-Malware-Analysis-

hopfield神经网络_使用Python中的卷积神经网络进行恶意软件检测

导言在这篇文章中,我们将学习人工网络架构以及如何使用其中一个(卷积神经网络)来帮助恶意软件分析师和信息安全专业人员检测和分类恶意代码。恶意软件是每个现代组织的噩梦。攻击者和网络犯罪分子总是想出新的恶意软件来攻击目标。安全厂商正在尽最大努力防范恶意软件攻击,但遗憾的是,每月发现的数百万恶意软件无法实现这一点。因此,需要诸如深度学习的新方法。在深入研究DL方法的技术细节和实际实施步骤之前,必须学习和发...

weixin_39855796的博客 611

数据集malimg下载

数据集malimg下载

基于卷积神经的Android恶意软件检测

摘要:本研究针对Android系统恶意软件泛滥的问题,提出了一种基于卷积神经网络(CNN)的检测方法。通过将Android恶意软件和正常软件文件转换为灰度图像,利用ResNet算法构建检测模型,并开发了基于PyQt5的检测系统。研究从UCI等网站收集数据集,经过图像转换和预处理后,使用CNN模型进行训练和验证。实验结果表明,该方法能有效识别Android恶意软件,准确率较高。系统采用Python开发,具有文件上传、检测和结果展示功能,为Android设备安全防护提供了新思路。关键词:Android恶意软件;

qiufangtaowvnyyidtf的博客 774

malware-classification:构建智能反恶意软件系统

构建智能反恶意软件系统:使用支持向量机进行恶意软件分类的深度学习方法 全文可在阅读。 抽象的 有效和高效地缓解恶意软件是信息安全社区的一项长期努力。 开发可以抵制以前未知的恶意软件的反恶意软件系统是一项可能使多个行业受益的多产活动。 我们设想了一个利用深度学习 (DL) 模型强大功能的智能反恶意软件系统。 使用此类模型可以通过数学概括来检测新发布的恶意软件。 也就是说,找到给定恶意软件x与其对应的恶意软件家族y 、 f : x → y 之间的关系。 为了实现这一壮举,我们使用了 Malimg 数据集 [ ],其中包含从恶意软件二进制文件中处理的恶意软件图像,然后我们训练以下 DL 模型 1 来对每个恶意软件系列进行分类:CNN-SVM[ ]、GRU-SVM [ ]和MLP-SVM。 经验证据表明,GRU-SVM在DL模型中脱颖而出,其预测准确度约为84.92%。 这是有道理的,因为

恶意软件:一系列在线恶意软件

恶意软件 大家好,该恶意软件存储库仍在开发中。 现在它还不是完美的,但是如果有人要求的话,我仍然可以添加更多:) 您必须使用虚拟机进行测试。 面对现实,恶意软件不是一件好事,只是为了安全起见,请使用虚拟机 :grinning_face_with_big_eyes: 然后,我的频道上没有对其中存在的某些恶意软件进行审查,为什么? 我不能只审查所有这些,只是有些累! 这就是存储库的全部内容,我将在下载时添加更多内容。 请注意,其中一个恶意软件大于我无法上传的25mb,因此该恶意软件不可用:(因此,您可能会问,如何下载这些恶意软件样本?很容易!我使用malshare下载了其中一些,有些在youtube视频上,有些在any.run上,是否有任何问题?只要在存储库的“问题”标签中告诉我,就可以在以后找到更多示例。 如果您想对存储库进行某些操作,请提供支持,只需对其进行分叉,以便它将克隆存储库,您就可以做一些事情!

MalConv-keras:基于Keras的恶意软件检测工具

MalConv-keras:基于Keras的恶意软件检测工具 项目介绍 MalConv-keras 是一个基于Keras框架实现的恶意软件检测工具,灵感来源于论文 Malware Detection by Eating a Whole EXE。该项目不仅实现了MalConv模型,还提供了对抗样本生成功能,适用于任何长序列分类任务。通过简单的命令行操作,用户可以轻松训练模型、生成对抗样本,并进行预测...

gitblog_00747的博客 1344

恶意代码分类检测数据集

恶意代码分类检测数据集

上一篇: Python带你薅羊毛:手把手教你揪出最优惠航班信息 !
下一篇: 代码详解:Python虚拟环境的原理及使用!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值