塔防诸将听令攻略(诸将听令那几个英雄好)
点击上面的,全在AI中国
作者:苏甘达拉霍蒂
在本文中,我们将了解人工网络架构,以及如何使用其中一种(卷积神经网络)来帮助恶意软件分析师和信息安全专业人员检测和分类恶意代码。
恶意软件是每个现代组织/公司的噩梦。黑客和网络罪犯总是想出新的恶意软件来攻击目标。安全厂商也在尽力防范恶意软件的攻击,但遗憾的是,因为每个月都有数百万的恶意软件被发现,他们无法做到这一点。因此,我们需要深度学习等新方法来打破这一困境。
在深入研究DL方法的技术细节和实际实现步骤之前,有必要学习和发现人工神经网络的其他不同架构。现在讨论主要的人工神经网络。
本文节选自Packt Publishing出版的《掌握机器学习渗透测试》一书。这本书教你如何使用Python机器学习成为渗透测试大师。(https://www . packtpub.com/networking-and-servers/mastering-machine-learning-through-testing?UTM _ source=Dzoneutm _ medium=referral UTM _ campaign=外联)
卷积神经网络
卷积神经网络是解决图像分类或我们称之为计算机视觉的问题的一种深度学习方法,因为经典的计算机程序在识别物体时由于光照、视点、变形和分割而面临许多挑战和困难。
这项技术的灵感来源于眼睛的工作方式,尤其是动物视觉皮层功能的算法。CNN的特点是具有宽度、高度和深度的三维结构。在图像的情况下,高度是图像高度,宽度是图像宽度,深度是RGB通道。
要建立CNN,我们需要三种主要类型的层:
卷积层:卷积是指从输入图像中提取特征,并将滤波器中的值与原始像素值相乘。
汇集层:汇集操作减少了每个要素图的维度。
全连接层:全连接层是经典的多层感知器,输出层有softmax激活功能。
要用Python实现CNN,可以使用以下Python脚本:
递归神经网络(RNN)
递归神经网络(RNN)是一种人工神经网络,可以利用序列信息。换句话说,RNN对序列的每个元素执行相同的任务,输出取决于之前的计算。RNN被广泛用于语言建模和文本生成(机器翻译、语音识别和许多其他应用)。
长短期记忆网络
长短期记忆网络(LSTM)通过构建记忆块来解决递归神经网络中的短期记忆问题。这个块有时被称为存储单元。
霍普菲尔德网络
霍普菲尔德网络是由约翰霍普菲尔德于1982年开发的。Hopfield网络的主要目标是自动关联和优化。我们有两种类型的霍普菲尔德网络:离散的和连续的。
玻尔兹曼机器网络
玻尔兹曼网络使用循环结构,它们只使用本地可用的信息。它们是在1985年由受惊的小蝴蝶杰弗里辛顿和fnddx(特里塞吉诺夫斯基)开发的。此外,玻尔兹曼机的目标是优化解。
利用美国有线电视新闻网进行恶意软件检测
对于这个新模型,我们将了解如何使用CNN来构建恶意软件分类器。但是我打赌你想知道当美国有线电视新闻网把图像作为输入时,我们如何做到这一点。答案很简单。这里的诀窍是将恶意软件转化为图像。这可能吗?是的,恶意软件可视化是过去几年的许多研究课题之一。提出的解决方案之一来自一项名为“恶意软件图像:可视化和自动分类”的研究,该研究由加州大学圣巴巴拉分校视觉研究实验室的拉克什马南纳塔拉杰完成。
下图详细说明了如何将恶意软件转换为图像:
以下是Alueron.gen!j .恶意软件图片:
这项技术还使我们能够以详细的方式可视化恶意软件部分:
toutiaoimg.com/origin/pgc-image/1537438566744b7f41078c8?from=pc">通过解决如何通过图像提供使用CNN的恶意软件机器学习分类器的问题,信息安全专业人员可以使用CNN的功能来训练模型。 Malimg数据集是最常用于提供CNN的恶意软件数据集之一。此恶意软件数据库包含来自25个不同恶意软件系列的9,339个恶意软件样本。你可以从Kaggle下载它。(https://www.kaggle.com/afagarap/malimg-dataset)
这些是恶意软件系列:
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脚本将每个恶意软件转换为灰度图像:
对于特征选择,你可以使用不同的技术(例如欧几里德距离或平均值和标准偏差)提取或使用任何图像特征,例如纹理图案,图像中的频率,强度或颜色特征,以生成后期的特征向量。在我们的例子中,我们可以使用一些算法,诸如颜色布局描述符,同构纹理描述符或全局图像描述符(GIST)。我们假设我们选择了GIST; 其中pyleargist是一个很棒的Python库,可以用来计算它。使用PIP来安装它:
#pip install pyleargist = .0.1
作为用例,要计算GIST,你可以使用以下Python脚本:
这里,320指的是我们使用灰度图像时的前320个值。不要忘记将它们保存为NumPy数组,以便稍后使用它们来训练模型。
获得特征向量后,我们可以训练许多不同的模型,包括支持向量机,k-means和人工神经网络。有用的算法之一是CNN的算法。
完成特征选择和工程设计后,我们可以构建CNN。例如,对于我们的模型,我们将构建一个具有两个卷积层的卷积网络,具有32 * 32个输入。要使用Python库构建模型,我们可以使用以前安装的TensorFlow和utils库来实现它。
因此,整体CNN架构如下图所示:
这个CNN架构并不是构建模型的唯一提议,但目前我们将用它来实现。
为了建立模型和CNN,我强烈推荐Keras。所需的导入如下:
如前所述,灰度图像的像素值范围为0到255,因此我们需要为网络提供32 * 32 * 1维图像:
我们将使用以下参数训练我们的网络:
要构建体系结构,请考虑其格式,请使用以下命令:
要编译模型,请使用以下命令:
Malware_Model.compile(.losses.categorical_crossentropy,.optimizers.Adam(),metrics = ['accuracy'])
拟合并训练模型:
Malware_Model.fit(train_X,train_label ,, ,,, validation_data =(valid_X,valid_label))
正如你所注意到的,我们尊重前面章节中讨论过的神经网络训练流程。要评估模型,请使用以下代码:
将深度学习应用于恶意软件检测的承诺与挑战
机器学习从业者和恶意软件分析师提出了许多不同的深层网络架构来检测已知和未知的恶意软件; 一些提议的架构包括受限制的玻尔兹曼机和混合方法。
检测恶意软件和恶意软件的新方法显示出许多有希望的结果。但是,在使用深度学习网络检测恶意软件时,恶意软件分析师面临许多挑战,特别是在分析PE文件时,因为分析PE文件,我们将把每个字节作为输入单元,因此我们除了处理数百万个分类序列步骤之外,还需要保持在复杂的空间相关性的函数调用和跳转命令。
你刚刚阅读了由Chiheb Chebbi编写并由Packt Publishing出版的《掌握机器学习渗透测试》一书的摘录。(https://www.packtpub.com/networking-and-servers/mastering-machine-learning-penetration-testing?utm_source=DZone&utm_medium=referral&utm_campaign=outreach)
我们发现了如何使用不同的机器学习算法来构建恶意软件检测器,尤其是使用像深度学习这样强大的技术。