使用 Amazon Rekognition PlatoBlockchain 数据智能进行恶意软件检测和分类。 垂直搜索。 人工智能。

使用 Amazon Rekognition 进行恶意软件检测和分类

根据一个 刊文 根据 Cyber​​security Ventures 的数据,勒索软件(一种可以阻止用户访问其数据,除非他们支付赎金的恶意软件)造成的损害在 57 年比 2021 年增加了 2015 倍。此外,预计受害者将损失 265 亿美元(美元)到 2031 年每年。在撰写本文时,勒索软件攻击造成的经济损失略高于 50th 在按国家排名的国家名单中的位置 国内生产总值.

鉴于恶意软件造成的威胁,已经开发了多种技术来检测和遏制恶意软件攻击。 目前最常用的两种技术是基于签名和基于行为的检测。

基于签名的检测建立了关于已知恶意对象的唯一标识符,以便将来可以识别该对象。 它可能是附加到文件的独特代码模式,也可能是已知恶意软件代码的哈希值。 如果在扫描新对象时发现已知模式标识符(签名),则该对象将被标记为恶意对象。 基于签名的检测速度很快,并且需要较低的计算能力。 但是,它与不断改变其形式以逃避检测的多态恶意软件类型作斗争。

基于行为的检测根据行为判断可疑对象。 反恶意软件产品可能考虑的工件是来自对象的进程交互、DNS 查询和网络连接。 与基于签名的技术相比,这种技术在检测多态恶意软件方面表现更好,但它也有一些缺点。 要评估一个对象是否是恶意的,它必须在主机上运行并生成足够的工件以供反恶意软件产品检测到它。 这个盲点可以让恶意软件感染主机并通过网络传播。

现有技术远非完美。 因此,研究继续旨在开发新的替代技术,以提高我们对抗恶意软件的能力。 近年来出现的一项新技术是基于图像的恶意软件检测。 该技术建议使用转换为灰度图像的已知恶意软件二进制文件来训练深度学习网络。 在这篇文章中,我们展示了如何执行基于图像的恶意软件检测 亚马逊重新认识 自定义标签.

解决方案概述

为了训练多分类模型和恶意软件检测模型,我们首先准备训练和测试数据集,其中包含不同的恶意软件类型,如 flooder、广告软件、间谍软件等,以及良性对象。 然后我们将可移植可执行文件 (PE) 对象转换为灰度图像。 接下来,我们使用图像和 Amazon Rekognition 训练模型。

Amazon Rekognition 是一项服务,可让您轻松地对应用程序执行不同类型的可视化分析。 Rekognition Image 可帮助您构建功能强大的应用程序来搜索、验证和组织数百万张图像。

Amazon Rekognition 自定义标签建立在 Rekognition 现有功能的基础上,这些功能已经在多个类别的数千万张图像上进行了训练。

Amazon Rekognition Custom Labels 是一项完全托管的服务,可让用户分析数百万张图像并利用它们解决许多不同的机器学习 (ML) 问题,包括图像分类、人脸检测和内容审核。 在幕后,Amazon Rekognition 基于深度学习技术。 该服务采用卷积神经网络 (CNN),该网络已在大型标记数据集上进行了预训练。 通过接触此类地面实况数据,该算法可以学习识别来自许多不同领域的图像中的模式,并可用于许多行业用例。 由于 AWS 负责构建和维护模型架构并为手头的任务选择合适的训练方法,因此用户无需花时间管理训练任务所需的基础设施。

解决方案架构

以下架构图提供了解决方案的概述。

该解决方案是使用 AWS批处理, AWS 法门亚马逊重新认识. AWS Batch 让您可以在 Fargate 上运行数百个批处理计算作业。 Fargate 与两者兼容 Amazon Elastic Container Service(Amazon ECS)亚马逊弹性 Kubernetes 服务 (Amazon EKS). Amazon Rekognition 自定义标签让您可以使用 AutoML 进行计算机视觉训练自定义模型来检测恶意软件并对各种恶意软件类别进行分类。 AWS Step Functions 用于编排数据预处理。

对于此解决方案,我们通过创建预处理资源 AWS CloudFormation. CloudFormation 堆栈模板和 AWS Batch、Fargate 和 Step 函数的源代码在 GitHub存储库.

数据集

为了在此示例中训练模型,我们使用以下公共数据集来提取恶意和良性 可移植可执行文件 (PE):

我们鼓励您仔细阅读数据集文档(Sophos/Reversing Labs 自述文件, PE 恶意软件机器学习数据集) 来安全地处理恶意软件对象。 根据您的喜好,您还可以使用其他数据集,只要它们以二进制格式提供恶意软件和良性对象即可。

接下来,我们将引导您完成解决方案的以下步骤:

  • 预处理对象并转换为图像
  • 使用 CloudFormation 部署预处理资源
  • 选择型号
  • 训练模型
  • 评估模型
  • 成本和性能

预处理对象并转换为图像

我们使用 Step Functions 来编排对象预处理工作流程,其中包括以下步骤:

  1. 就拿 元数据库 sqllite数据库来自 索雷尔-20m S3 存储桶并将其转换为 .csv 文件。 这有助于我们在 Fargate 容器中加载 .csv 文件,并在处理恶意软件对象时引用元数据。
  2. 从 sorel-20m S3 存储桶中取出对象并创建一个 csv 格式的对象列表。 通过执行此步骤,我们创建了一系列可以并行处理的 .csv 文件,从而减少了预处理所需的时间。
  3. 将 sorel-20m S3 存储桶中的对象转换为包含作业数组的图像。 AWS Batch 数组作业共享用于将恶意软件对象转换为图像的通用参数。 它们作为图像转换作业的集合运行,这些作业分布在多个主机上并同时运行。
  4. 选择预定数量的图像用于模型训练,并使用与恶意软件类别相对应的一系列作业。
  5. 与步骤 2 类似,我们从良性 160k S3 存储桶中取出良性对象,并创建一个 csv 格式的对象列表。
  6. 与第 3 步类似,我们将来自良性 160k S3 存储桶的对象转换为包含作业数组的图像。
  7. 由于自定义标签训练的 Amazon Rekognition 默认配额(250K 图像),请为模型训练选择预定数量的良性图像。
  8. 如下图所示,图像存储在 S3 存储桶中,该存储桶首先按恶意软件和良性文件夹分区,然后恶意软件按恶意软件类型分区。
    训练 S3 桶
    训练数据集

使用 CloudFormation 部署预处理资源

先决条件

在继续之前需要满足以下先决条件:

资源部署

CloudFormation 堆栈将创建以下资源:

参数

  • 堆栈名称 – CloudFormation 堆栈名称
  • AWS_REGION – 将部署解决方案的 AWS 区域
  • AWS_PROFILE – 将应用于 AWS CLI 命令的命名配置文件
  • ARTEFACT_S3_BUCKET – 将存储基础架构代码的 S3 存储桶。 (存储桶必须在解决方案所在的同一区域中创建)。
  • AWS_帐户 – AWS 账户 ID。

使用以下命令部署资源

确保 docker 代理正在机器上运行。 部署是使用 bash 脚本完成的,在本例中我们使用以下命令:

bash malware_detection_deployment_scripts/deploy.sh -s '' -b 'malware-
detection--artifacts' -p  -r "" -a

这会构建和部署 CloudFormation 模板(例如,cloudformation.yaml)引用的本地工件。

训练模型

由于 Amazon Rekognition 会为您进行模型训练,因此不需要计算机视觉或高度专业化的 ML 知识。 但是,您需要向 Amazon Rekognition 提供一个装满适当标记的输入图像的存储桶。

在本文中,我们将通过自定义标签功能训练两个独立的图像分类模型:

  1. 恶意软件检测模型(二进制分类)——识别给定对象是恶意的还是良性的
  2. 恶意软件分类模型(多类分类)——识别给定恶意对象的恶意软件家族

模型训练演练

以下演练中列出的步骤适用于这两种模型。 因此,您需要执行两次这些步骤才能训练这两个模型。

  1. 登录 AWS管理控制台 并打开 Amazon Rekognition 领事.
  2. 在左侧窗格中,选择 使用自定义标签. 显示 Amazon Rekognition 自定义标签登陆页面。
  3. 在 Amazon Rekognition 自定义标签登录页面中,选择 前往在线商城.
  4. 在左窗格中,选择 项目.
  5. 创建项目.
  6. In 项目名,为您的项目输入一个名称。
  7. 创建项目 创建您的项目。
  8. 项目 页面,选择要添加数据集的项目。 将显示您的项目的详细信息页面。
  9. 创建数据集。 该 创建数据集 页面显示。
  10. In 启动配置,选择 从单个数据集开始 让 Amazon Rekognition 将数据集拆分为训练和测试。 请注意,您可能会在每次模型训练迭代中得到不同的测试样本,从而导致结果和评估指标略有不同。
  11. 从Amazon S3存储桶导入图像.
  12. In S3 URI,输入 S3 存储桶位置和文件夹路径。 预处理步骤提供的同一个 S3 存储桶用于创建两个数据集:恶意软件检测和恶意软件分类。 恶意软件检测数据集指向根(即 s3://malware-detection-training-{account-id}-{region}/) 的 S3 存储桶,而恶意软件分类数据集指向恶意软件文件夹(即, s3://malware-detection-training-{account-id}-{region}/malware) 的 S3 存储桶。 训练数据
  13. 根据文件夹自动为图像附加标签.
  14. 创建数据集. 您的项目的数据集页面打开。
  15. 点击 火车模型 页面,选择 火车模型. 您的项目的 Amazon 资源名称 (ARN) 应位于 选择项目 编辑框。 如果不是,则输入项目的 ARN。
  16. 你想训练你的模型吗? 对话框,选择 火车模型.
  17. 训练完成后,选择模型的名称。 当模型状态为 训练_完成.
  18. 型号 部分,选择 使用型号 选项卡开始使用模型。

有关更多详细信息,请查看 Amazon Rekognition 自定义标签 入门 指南。

评估模型

训练模型完成后,您可以通过选择访问评估指标 检查指标 在模型页面上。 Amazon Rekognition 为您提供以下指标:F1 分数、平均精度和总体召回率,这些指标通常用于评估分类模型的性能。 后者是标签数量的平均指标。

每标签性能 部分,您可以找到每个标签的这些指标的值。 此外,要获取真阳性、假阳性和假阴性的值,请选择 查看测试结果.

恶意软件检测模型指标

在具有两个标签(良性和恶意软件)的 199,750 张图像的平衡数据集上,我们收到以下结果:

  • F1 分数 – 0.980
  • 平均精度 – 0.980
  • 整体召回率 – 0.980

恶意软件检测模型指标

恶意软件分类模型指标

在具有 130,609 个标签(11 个恶意软件家族)的 11 张图像的平衡数据集上,我们收到以下结果:

  • F1 分数 – 0.921
  • 平均精度 – 0.938
  • 整体召回率 – 0.906

恶意软件分类模型指标

为了评估模型是否表现良好,我们建议将其性能与在相同(或至少相似)数据集上训练的其他行业基准进行比较。 不幸的是,在撰写本文时,还没有比较研究机构使用相同的技术和相同的数据集来解决这个问题。 然而,在数据科学界,F1 分数高于 0.9 的模型被认为表现非常好。

成本和性能

由于资源的无服务器性质,总成本受每项服务使用时间的影响。 另一方面,性能受到正在处理的数据量和提供给 Amazon Rekognition 的训练数据集大小的影响。 对于我们的成本和性能估算练习,我们考虑以下场景:

  • 从 sorel 数据集中对 20 万个对象进行了编目和处理。
  • PE 恶意软件机器学习数据集对 160,000 个对象进行了编目和处理。
  • 大约 240,000 个对象被写入训练 S3 存储桶:160,000 个恶意对象和 80,000 个良性对象。

基于这种情况,预处理和部署模型的平均成本为 510.99 美元。 使用该模型每小时需额外支付 4 美元/小时。 您可以在 评估 通过生成 AWS 定价计算器.

在性能方面,这些是我们测量的结果:

  • ~2 小时完成预处理流程
  • 约 40 小时完成恶意软件检测模型训练
  • 约 40 小时完成恶意软件分类模型训练

清理

为避免产生未来的费用, 停止删除 Amazon Rekognition 模型,并通过删除预处理资源 销毁.sh 脚本。 成功运行脚本需要以下参数:

  • 堆栈名称 – CloudFormation 堆栈名称
  • AWS_REGION – 部署解决方案的区域
  • AWS_PROFILE – 适用于 AWS CLI 命令的命名配置文件

使用以下命令运行 ./malware_detection_deployment_scripts/destroy.sh 脚本:

bash malware_detection_deployment_scripts/destroy.sh -s  -p
 -r 

结论

在本文中,我们演示了如何使用 Amazon Rekognition 执行恶意软件检测和分类。 这些解决方案遵循无服务器模式,利用托管服务进行数据预处理、编排和模型部署。 我们希望这篇文章能帮助您不断努力打击恶意软件。

在以后的帖子中,我们将通过使用本文中部署的模型来展示恶意软件检测的实际用例。


关于作者

埃德文·哈尔瓦修埃德文·哈尔瓦修 是 AWS 专业服务的高级全球安全架构师,对网络安全和自动化充满热情。 他帮助客户在云中构建安全且合规的解决方案。 工作之余,他喜欢旅游和运动。

拉胡尔·肖里亚拉胡尔·肖里亚 是 AWS 专业服务的首席数据架构师。 他帮助客户在 AWS 上构建数据平台和分析应用程序,并与他们密切合作。 工作之余,Rahul 喜欢和他的狗 Barney 一起散步。

布鲁诺·德夫托布鲁诺·德夫托 是 AWS 专业服务的全球安全架构师。 他专注于帮助客户在 AWS 中构建安全可靠的架构。 工作之余,他对最新的技术更新和旅行很感兴趣。

纳迪姆马吉德纳迪姆马吉德 是 AWS 专业服务部门的数据架构师。 他与客户并肩工作,在 AWS 上构建他们的数据平台。 工作之余,Nadim 打乒乓球,喜欢看足球。

时间戳记:

更多来自 AWS机器学习