开源 | 深度安卓恶意软件检测系统:用卷积神经网络保护你的手机

选自GitHub

机器之心编译

参与:Panda

恶意软件可以说是我们现代生活的一大威胁,为了保护我们电子设备中的财产和资料安全,我们往往需要寻求安全软件的帮助。前段时间,来自贝尔法斯特女王大学和亚利桑那州立大学的研究者提出并开源了一种使用神经网络来帮助检测安卓(Android)恶意软件的方法。机器之心在本文中对该项目的介绍文档和论文摘要进行了介绍。

  • 论文地址:http://dl.acm.org/citation.cfm?id=3029823
  • 项目地址:https://github.com/niallmcl/Deep-Android-Malware-Detection

我们使用了一种卷积神经网络(CNN)来进行安卓恶意软件分类。这种恶意软件分类的执行方式是对安卓 APK 进行反汇编,然后对其原始操作码序列(raw opcode sequence)进行静态分析。其中,指示「恶意」的特征是从原始操作码序列中自动学习到,因此无需人工设计恶意特征。该网络运行在 GPU 上,可以快速扫描大量文件。

如果你使用此代码,请引用以下论文:

@inproceedings{mclaughlin2017codaspy,
title = "Deep Android Malware Detection",
author = "Niall McLaughlin and {Martinez del Rincon}, Jesus and BooJoong Kang and Suleiman Yerima and Paul Miller and Sakir Sezer and Yeganeh Safaeisemnani and Erik Trickel and Ziming Zhao and Adam Doupé and {Joon Ahn}, Gail",
year = "2016",
month = "12",
booktitle = "Proceeding of the ACM Conference on Data and Applications Security and Privacy (CODASPY) 2017",
publisher = "Association for Computing Machinery (ACM)",
}

如何运行本代码

给定一个已有的数据集目录(详情见下),其中 run.sh 文件将会执行以下内容:

  1. 将数据集分割为训练集和留存的测试集
  2. 训练神经网络
  3. 在测试集上对训练后的网络进行测试

准备工作

数据集结构

数据集所需目录结构的例子可参看 ./dataset

本神经网络需要格式正确的操作码序列文件,并且数据集目录中需要包含恶意和良性的操作码序列文件的子目录。

在 ./dataset 中提供了一个数据目录示例。该数据集目录必须包含以下结构:

  1. 必须要有一个叫做「Benign」的目录,其中包含了非恶意的操作码序列文件。
  2. 其它目录可以随意命名,其中包含了恶意的操作码序列文件。

操作码序列文件(Opcode Sequence files)

操作码序列文件可以使用操作码序列创建工具从安卓 APK 中创建。该工具放在 ./opcodeseq_creator 下。请参阅该目录下的 README 文件了解更多。

设置

本神经网络的代码是使用 Torch 实现的。推荐使用 GPU 来实现测试和训练加速。有关 Torch 安装的更多详情,请参阅:http://torch.ch/

其中操作码序列创建工具需要 APKTool:https://ibotpeaches.github.io/Apktool/

论文:深度安卓恶意软件检测(Deep Android Malware Detection)

摘要:在这篇论文中,我们提出了一种使用深度卷积神经网络(CNN)的全新安卓恶意软件检测系统。恶意软件分类的执行是基于对反汇编的程序的原始操作码序列进行静态分析。指示恶意软件的特征是从原始操作码序列中自动学习到,因此无需人工设计恶意特征。我们提出的系统的训练流程比已有的基于 n-gram 的恶意软件检测方法要简单得多,因为该网络是端到端地训练来联合学习适当的特征并执行分类,因此无需在训练过程中明确枚举数百万 n-gram。该网络设计还允许使用特征这样的长 n-gram,而已有的方法却无法在计算上做到这一点。训练完成后,该网络可以在一个 GPU 上得到有效的执行,从而可以快速扫描大量文件。

本文为机器之心编译,转载请联系本公众号获得授权。

原文发布于微信公众号 - 机器之心(almosthuman2014)

原文发表时间:2017-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吉浦迅科技

确认过的眼神:这是一份NVIDIA TensorRT 4.0的实战教程

NVIDIA TensorRT是一个高性能的深度学习推理优化器和runtime,为深度学习推理应用程序提供低延迟和高吞吐量。您可以从每个深度学习框架中导入经过训...

5202
来自专栏量化投资与机器学习

深度学习项目

Github上比较受欢迎的深度学习项目(Top Deep Learning Projects),按照获得星星个数的排名,包括一些教程项目等。 ? ? ? ?

2046
来自专栏ATYUN订阅号

C-SATS工程副总裁教你如何用TensorFlow分类图像 part1

最近在深度学习算法和硬件性能方面的最新进展使研究人员和公司在图像识别,语音识别,推荐引擎和机器翻译等领域取得了巨大的进步。六年前,首次机器在视觉模式识别方面的表...

3509
来自专栏ATYUN订阅号

Github项目推荐:新型深度网络体系结构去除图像中的雨水痕迹

雨水痕迹会严重降低图像能见度,导致许多当前的计算机视觉算法无法工作。因此去除图像中的雨水是有必要的。

842
来自专栏ATYUN订阅号

【深度学习】图片风格转换应用程序:使用CoreML创建Prisma

WWDC 2017让我们了解了苹果公司对机器学习的看法以及它在移动设备上的应用。CoreML框架使得将ML模型引入iOS应用程序变得非常容易。 ? 大约一年前,...

4878
来自专栏AI研习社

Github 项目推荐 | ANSI C 的简单神经网络库

Genann是一个经过精心测试的库,用于在 C 中训练和使用前馈人工神经网络(ANN)。它的主要特点是简单、快速、可靠和可魔改(hackable),它只需要提供...

881
来自专栏深度学习之tensorflow实战篇

R包—iGraph

这几天收到师兄的任务,熟悉iGRaph包的使用,通过查资料,外加自己的实践,在此做个简单的学习笔记。 以下例子均是在R 3.0.1版本下测试的。 1.用igr...

3465
来自专栏华章科技

深度学习卷积神经网络的秒懂各种操作

转载文章均来自公开网络,仅供学习使用,不会用于任何商业用途,如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜,联系邮箱:holly0801@163.c...

961
来自专栏AI研习社

谷歌正式开源 Hinton 胶囊理论代码,即刻用 TensorFlow 实现吧

雷锋网(公众号:雷锋网) AI 研习社消息,相信大家对于「深度学习教父」Geoffery Hinton 在去年年底发表的胶囊网络还记忆犹新,在论文 Dynami...

3236
来自专栏ATYUN订阅号

【实践操作】 在iOS11中使用Core ML 和TensorFlow对手势进行智能识别

在计算机科学中,手势识别是通过数学算法来识别人类手势的一个议题。用户可以使用简单的手势来控制或与设备交互,让计算机理解人类的行为。 这篇文章将带领你实现在你自己...

5336

扫码关注云+社区

领取腾讯云代金券