当前位置: 首页 > news >正文

基于深度学习的恶意软件检测

恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。

恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网络系统瘫痪。

 在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

1、为什么检测恶意软件很重要?

恶意软件是当今互联网上最严重的安全威胁之一。 事实上,大多数互联网问题(例如垃圾邮件和拒绝服务攻击)的根本原因都是恶意软件。 也就是说,受到恶意软件攻击的计算机通常会联网形成僵尸网络,并且许多攻击都是使用这些恶意的、攻击者控制的网络发起的。

为了应对新产生的恶意软件,需要采用新技术来检测它们并防止它们造成的任何损害。

2、为什么选择深度学习?

如今深度学习已经主导了各种计算机视觉任务。 这些深度学习技术不仅使本次比赛取得了快速进步,而且在许多比赛中甚至超越了人类的表现。 这些任务之一是图像分类。

与更传统的机器学习技术方法不同,深度学习分类器是通过特征学习而不是特定于任务的算法进行训练的。 这意味着机器将学习所呈现的图像中的模式,而不是要求人类操作员定义机器应在图像中寻找的模式。 简而言之,它可以自动提取特征并将数据分类为各种类别。

早期层学习如何检测边缘等低级特征,后续层将早期层的特征组合成更全面、更完整的表示。

我们可以使用后面描述的方法将恶意软件/良性文件转换为灰度图像。 然后我们可以将这些深度学习技术应用于生成的图像,将它们分类为恶意软件或良性图像。

3、如何将恶意软件变换为图像?

要使用深度学习模型对图像进行分类,我们需要来自良性文件和恶意软件文件的图像。 我们只会进行二元分类(恶意软件和良性类别)。 多类分类也可以使用这种技术来完成,其想法是恶意软件文件的变体将具有与其他文件不同的图像。

准备好数据集后,我们将通过对每个图像执行以下步骤将每个文件转换为 256x256 灰度图像(每个像素的值在 0 到 255 之间):

  1. 从文件中一次读取 8 位。
  2. 将8位视为二进制数,并将其转换为对应的整数。
  3. 输入数字作为像素值。

最大为 64 KB 的文件可以容纳 256 x 256 的图像。 任何大小超过 64 KB 的文件,其剩余内容将被删除。另一方面,如果文件大小小于 64 KB,则剩余图像将用 0 填充。

由于恶意软件检测是实时完成的,我们需要在几秒钟内将图像分类为良性或恶意软件。 因此,保持图像生成过程简单、简短将帮助我们节省宝贵的时间。

4、数据集的准备

这一步非常简单。 生成所有图像后,将它们分成两个文件夹 - 训练和验证。 每个文件夹都将包含两个文件夹,即恶意软件和良性文件夹。

将这两个文件夹存储在另一个名为“dataset.tar”的文件夹中,并压缩生成.tar 文件。

所以最终的目录结构将是→ dataset.tar 包含验证和训练。 验证将包含恶意软件和良性文件夹。 火车将有文件夹 Malware 和 Benign。

将压缩文件夹移动到包含代码的 Jupyter 笔记本所在的目录中。

5、深度模型实现

要从 Google 云端硬盘读取数据集,请添加以下代码行:

!pip install PyDrive #
import os
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
auth.authenticate_user()
gauth=GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

运行上述代码的最后 4 行后,Google SDK 会要求您输入验证码。 它会提到一个链接,点击它后,你将获得安全代码。

link = '1sL4I4xNh657AhrIOOwbr6TX58ahyC'(add the link here )

创建一个变量,其中包含 .tar 文件的链接,该文件包含存储在 Google 云端硬盘中的数据。要获取 URL,请打开驱动器中的 .tar 文件并获取该文件的可共享链接。 你不需要整个 URL,只需要其中的一部分。

获取数据的路径:

downloaded = drive.CreateFile({'id':link}) 
downloaded.GetContentFile('dataset.tar')
import tarfile
tar = tarfile.open("dataset.tar")
path = tar.extractall('DS/')
tar.close()
path = Path.cwd().joinpath("DS/dataset/")
path.ls()
data = ImageDataBunch.from_folder(path, ds_tfms=get_transforms(), size=224)
## To view data in a batch
data.show_batch(rows=3, figsize=(7,6))
## To know the number of classes in a dataset
print(data.c)
## To know the names of the classes in a dataset
print( data.classes)

创建模型:

learn = create_cnn(data, model.resnet34, metrics = error_rate)
## To know the model architecture
learn.model
## Training the model
learn.fit_one_cycle(4)
learn.fit_one_cycle(10)

这是运行上述代码后得到的输出的屏幕截图:

interp = ClassificationInterpretation.from_learner(learn)
losses,idxs =  interp.top_losses()
interp.plot_top_losses(9,figsize=(9,6))

6、如何找到并设置一个好的学习率?

到目前为止,我们还没有告诉模型在训练模型时使用什么学习率,我们都知道这是训练时最重要的超参数之一。

为了找到良好的学习率,请执行以下操作:

learn.lr_find()
learn.recorder.plot()

learn.fit_one_cycle(5, max_lr=slice(1e-6,1e-4))
## Saving the weights of the model
learn.save('stage-1-malware-detection')

注意:每次调用  fit_one_cycle() 函数时,权重都不会重新初始化。 因此,如果依次调用该函数,则epoch会累加,这意味着如果你先调用 fit_one_cycle(5),然后调用 fit_one_cycle(10),则模型已训练了大约 15 个epoch。

完整的代码可以在我的 GitHub 帐户上找到。


原文链接:恶意软件检测实战 - BimAnt

相关文章:

基于深度学习的恶意软件检测

恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...

环境配置|GitHub——解决Github无法显示图片以及README无法显示图片

一、问题背景 最近在整理之前写过的实验、项目,打算把这些东西写成blog,并把工程文件整理上传到Github上。但在上传README文件的时候,发现github无法显示README中的图片,如下图所示: 在README中该图片路径为&#xff1…...

AIGC(生成式AI)试用 12 -- 年终再总结

上次使用年终总结为题测试了CSDN创作助手和文心一言的表现,随着不断对总结给出更细节的提示。AIGC(生成式AI)试用 11 -- 年终总结-CSDN博客 总结年终总结生活/工作年终总结IT开发/运维年终总结 AIGC都能就新给出的主题修饰给出相应的关点&am…...

Linux下 tar 命令详解

一、tar 命令概述 Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)。 tar 是类 Unix 系统中广泛使用的命令&#x…...

SQL单表复杂查询where、group by、order by、limit

1.1SQL查询代码如下&#xff1a; select job as 工作类别,count(job) as 人数 from tb_emp where entrydate <2015-01-01 group by job having count(job) > 2 order by count(job) limit 1,1where entrydate <‘2015-01-01’ 表示查询日期小于2015-01-01的记录…...

安卓中轻量级数据存储方案分析探讨

轻量级数据存储功能通常用于保存应用的一些常用配置信息&#xff0c;并不适合需要存储大量数据和频繁改变数据的场景。应用的数据保存在文件中&#xff0c;这些文件可以持久化地存储在设备上。需要注意的是&#xff0c;应用访问的实例包含文件所有数据&#xff0c;这些数据会一…...

数据结构【DS】栈的应用

描述一下如何实现括号匹配&#xff1f; 初始时栈为空。 从左往右遍历算术表达式中的每个括号元素&#xff1a; ①当遍历到左括号时&#xff0c;将其压入栈顶。 ②当遍历到右括号时&#xff0c;将栈顶元素出栈&#xff0c;并判断出栈的左括号与当前遍历的右括号是否匹配&…...

大数据数仓建模基础理论【维度表、事实表、数仓分层及示例】

文章目录 什么是数仓仓库建模&#xff1f;ER 模型三范式 维度建模事实表事实表类型 维度表维度表类型 数仓分层ODS 源数据层ODS 层表示例 DWD 明细数据层DWD 层表示例 DIM 公共维度层DIM 层表示例 DWS 数据汇总层DWS 层表数据 ADS 数据应用层ADS 层接口示例 数仓分层的优势 什么…...

FlinkCDC数据实时同步Mysql到ES

考大家一个问题&#xff0c;如果想要把数据库的数据同步到别的地方,比如es,mongodb,大家会采用哪些方案呢&#xff1f; ::: 定时扫描同步&#xff1f; 实时日志同步? 定时同步是一个很好的方案&#xff0c;比较简单&#xff0c;但是如果对实时要求比较高的话&#xff0c;定…...

【Feign】 基于 Feign 远程调用、 自定义配置、性能优化、实现 Feign 最佳实践

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; SpringCloud MybatisPlus JVM 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Feign 一、 基于 Feign 远程调用1.1 RestTemplate方式…...

小迪安全笔记(3)——基础入门3、基础入门4

文章目录 一、抓包&封包&协议&APP&小程序&PC应用&web应用二、30余种加密编码进制&web&数据库&系统&代理 一、抓包&封包&协议&APP&小程序&PC应用&web应用 APP&小程序&PC抓包HTTP/S数据——Charles、F…...

SOME/IP 协议介绍(六)接口设计的兼容性规则

接口设计的兼容性规则&#xff08;信息性&#xff09; 对于所有序列化格式而言&#xff0c;向较新的服务接口的迁移有一定的限制。使用一组兼容性规则&#xff0c;SOME / IP允许服务接口的演进。可以以非破坏性的方式进行以下添加和增强&#xff1a; • 向服务中添加新方法 …...

吴恩达《机器学习》8-5->8-6:特征与直观理解I、样本与值观理解II

8.5、特征与直观理解I 一、神经网络的学习特性 神经网络通过学习可以得出自身的一系列特征。相对于普通的逻辑回归&#xff0c;在使用原始特征 x1​,x2​,...,xn​ 时受到一定的限制。虽然可以使用一些二项式项来组合这些特征&#xff0c;但仍然受到原始特征的限制。在神经网…...

『亚马逊云科技产品测评』活动征文|借助AWS EC2搭建服务器群组运维系统Zabbix+spug

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 本文基于以下软硬件工具&#xff1a; aws ec2 frp-0.52.3 zabbix 6…...

文件转换,简简单单,pdf转word,不要去找收费的了,自己学了之后免费转,之后就复制粘贴就ok了

先上一个链接pdf转word文件转换 接口层 PostMapping("pdfToWord")public String pdfToWord(RequestParam("file") MultipartFile file) throws IOException {String fileName FileExchangeUtil.pdfToWord(file.getInputStream(),file.getName());return…...

Jmeter——循环控制器中实现Counter计数器的次数重置

近期在使用Jmeter编写个辅助测试的脚本&#xff0c;用到了多个Loop Controller和Counter。 当时想的思路就是三个可变的数量值&#xff0c;使用循环实现&#xff1b;但第三个可变值的数量次数&#xff0c;是基于第二次循环中得到的结果才能确认最终次数&#xff0c;每次的结果…...

[创业之路-85]:IT创业成功老板的品质、创业失败老板的特征、成功领导者的品质、失败管理者的特征

目录 前言&#xff1a; 一、创业成功老板的品质 二、创业失败老板的特征 三、成功领导者的品质 四、失败管理者的特征 前言&#xff1a; 大多数创业或职场共事&#xff0c;都是基于某种人际关系或所谓的感情&#xff0c;这是大数的职场众生相&#xff0c;也是人情社会的中…...

警惕.360勒索病毒,您需要知道的预防和恢复方法。

引言&#xff1a; 网络威胁的演变无常&#xff0c;.360勒索病毒作为一种新兴的勒索软件&#xff0c;以其狡猾性备受关注。本文将深入介绍.360勒索病毒的特点&#xff0c;提供解决方案以恢复被其加密的数据&#xff0c;并分享一系列强化网络安全的预防措施。如果您在面对被勒索…...

人力资源小程序

人力资源管理对于企业的运营至关重要&#xff0c;而如今随着科技的发展&#xff0c;制作一个人力资源小程序已经变得非常简单和便捷。在本文中&#xff0c;我们将为您介绍如何通过乔拓云网制作一个人力资源小程序&#xff0c;只需五个简单的步骤。 第一步&#xff1a;注册登录乔…...

【多线程 - 10、线程同步3 ThreadLocal】

一、ThreadLocal 1、介绍 可以实现资源对象的线程隔离&#xff1b;可以实现了线程内的资源共享 如果使用 ThreadLocal 管理变量&#xff0c;则每一个使用该变量的线程都获得该变量的副本&#xff0c; 副本之间相互独立&#xff0c;这样每一个线程都可以随意修改自己的变量副本…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

Java入门学习详细版(一)

大家好&#xff0c;Java 学习是一个系统学习的过程&#xff0c;核心原则就是“理论 实践 坚持”&#xff0c;并且需循序渐进&#xff0c;不可过于着急&#xff0c;本篇文章推出的这份详细入门学习资料将带大家从零基础开始&#xff0c;逐步掌握 Java 的核心概念和编程技能。 …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...