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

恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/148683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sqli-labs关卡18(基于http头部报错盲注)通关思路

文章目录 前言一、靶场通关需要了解的知识点1、什么是http请求头2、为什么http头部可以进行注入 二、靶场第十八关通关思路1、判断注入点2、爆数据库名3、爆数据库表4、爆数据库列5、爆数据库关键信息 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做…

LV.12 D18 中断处理 学习笔记

一、ARM的异常处理机制及工程代码结构 1.1异常概念 处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生 这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件 异常事件处理完成之后再返回到被异常打断的点继续执行程序。 1.2异常处理机制 不同的处…

【Python】解析CPP类定义代码,获取UML类图信息

参考 & 鸣谢 CppHeaderParser - 官方文档Python解析C头文件win10直接获得文件绝对路径的方法总结 目的 解析CPP头文件中的类定义,获取UML中的属性。用于画UML类图。如下所示格式,图片来源-链接 即获取,类名,成员函数&#x…

H110主板搭配魔改QNCW升级小记

最近搬家完毕,翻出来一块闲置已久的qncw,隐约记得是买的主板套装,现在主板早已不知踪影,剩下孤零零一个CPU,一起翻出来一个G3900T亮机CPU,应该是同时代的产物。 qncw百度上一搜,发现参数还行&am…

【ES6标准入门】JavaScript中的模块Module语法的使用细节:export命令和imprt命令详细使用,超级详细!!!

😁 作者简介:一名大四的学生,致力学习前端开发技术 ⭐️个人主页:夜宵饽饽的主页 ❔ 系列专栏:JavaScript进阶指南 👐学习格言:成功不是终点,失败也并非末日,最重要的是继…

如何将vscode和Linux远程链接:

如何将vscode和Linux远程链接: Remote - SSH - 远程登录Linux 安装Remote - SSH 我们下载完后,就会出现这些图标 这里点一下号 查看一下我们的主机名,并复制 输入ssh 用户名主机名 这里是要将ssh这个文件要放在主机下的哪个路径下&#xff…

Android 10.0 系统修改usb连接电脑mtp和PTP的显示名称

1.前言 在10.0的产品定制化开发中,在usb模块otg连接电脑,调整为mtp文件传输模式的时候,这时可以在电脑看到手机的内部存储 显示在电脑的盘符中,会有一个mtp名称做盘符,所以为了统一这个名称,就需要修改这个名称,接下来分析下处理的 方法来解决这个问题 2.系统修改usb连…

gRPC 四模式之 双向流RPC模式

双向流RPC模式 在双向流 RPC 模式中,客户端以消息流的形式发送请求到服务器端,服务器端也以消息流的形式进行响应。调用必须由客户端发起,但在此之后,通信完全基于 gRPC 客户端和服务器端的应用程序逻辑。 为什么有了双向流模式…

网页视频下载工具 iTubeGo mac中文版软件特色

iTubeGo YouTube Downloader mac是一款功能强大的YouTube视频下载工具。 iTubeGo YouTube Downloader mac软件特色 多种格式支持:iTubeGo YouTube Downloader可以将YouTube视频下载为多种常见的视频和音频格式,包括MP4、MP3、AVI、FLV、MOV、WMV等&…

我又开始贩卖焦虑了,机器视觉兄弟们,打工这生意盘不活了?让人逃离北上广深,是毒鸡汤吗?

我想大多数人和我想的一样,不要质疑自己的出身,也不必用一生去改变出身而获得融入感,思想富足这是我们留给自己一生最珍贵的礼物。也许一线城市容不下肉身,二三线城市容不下灵魂。那我回到生我养我的十八线小县城,这不…

centos7安装mongodb

1、下载mongodb https://www.mongodb.com/try/download/community 2、解压 3、重命名 4、创建mongodb的data、logs目录 5、启动mongodb, bin/mongod --port27017 --dbpath/data/program/mongodb/data --logpath/data/program/mongodb/logs/mongodb.log --bind_ip0.0.0.0 --f…

WSL 2 更改默认安装的 Linux 发行版

目录 什么是 WSL 2?更改默认安装的 Linux 发行版更改发行版的 WSL 版本 什么是 WSL 2? WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的…

斯坦福机器学习 Lecture1 (机器学习,监督学习、回归问题、分类问题定义)

https://www.bilibili.com/video/BV1JE411w7Ub?p1&vd_source7a1a0bc74158c6993c7355c5490fc600 笔记如下 机器学习的定义:不需要明确编程就能让计算机去学习做某件事情 另一个定义 什么是监督学习? 给定一组 (x,y) 样本,学习一个 x-&g…

CentOS 7 安装CMake指定版本3.21.2

背景:今天在CentOS 7 电脑上安装C 日志框架SpdLog-1.12.0,提示如下错误信息: [rootlocalhost build]# cmake .. && make -j CMake Error at CMakeLists.txt:3 (cmake_minimum_required):CMake 3.10...3.21 or higher is required. …

本地Git项目同时推送至GitHub和Gitee

分别在gitee和github新建一个仓库 github: gitee: 添加远程仓库 git remote add origin1 [你的GitHub仓库URL] git remote add origin2 [你的Gitee仓库URL] 在本地中初始化创建一个git本地分支 git init 进入.git目录下修改config文件 [remote "origin"] url g…

VUE(一)

1.vue简介 英文官网: Vue.js - The Progressive JavaScript Framework | Vue.js 中文官网: Vue.js - 渐进式 JavaScript 框架 | Vue.js 2.Vue的特点 3.初识VUE 在官网下载VUE.js,有两个版本&#xff0c;一个开发一个生产 <!DOCTYPE html> <html lang"en"…

重磅 | 进一步夯实生态建设,朗思科技与阿里龙蜥完成兼容性认证

近日&#xff0c;北京朗思智能科技有限公司&#xff08;以下简称“朗思科技”&#xff09;自主研发的数字员工产品与OpenAnolis龙蜥社区龙蜥操作系统&#xff08;Anolis OS&#xff09;8完成兼容性认证。测试结果显示&#xff0c;双方产品相互兼容&#xff0c;功能正常&#xf…

电子学会C/C++编程等级考试2022年03月(一级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…

Codeforces Round 910 (Div. 2)(D~F)

1898D - Absolute Beauty 题意&#xff1a;给定长度为n的数组a和b&#xff0c;定义b数组的价值为&#xff0c;现可以交换一次b数组中的任意两个元素&#xff0c;求b数组的价值最大值。 思路&#xff1a;绝对值问题可以放在数轴上去解决。绝对值即为区间长度 观察上述三种情况&…

计算机毕业设计选题推荐-点餐微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…