精华内容
下载资源
问答
  • 基于流量分析的安卓恶意软件检测随着智能手机行业的发展,人们在日常的工作学习生活中越来越离不开智能手机。Android系统作为流行度最高的智能手机系统之一,其安全性正受到越来越多恶意攻击者和安全研究者的关注。...

    基于流量分析的安卓恶意软件检测

    随着智能手机行业的发展,人们在日常的工作学习生活中越来越离不开智能手机。Android系统作为流行度最高的智能手机系统之一,其安全性正受到越来越多恶意攻击者和安全研究者的关注。根据Zhou、Sarma和Yerima等人各自的研究,超过93%的Android恶意软件需要访问网络才能完成攻击,使用网络流量特征检测Android恶意软件具有可行性。近年来,该领域已有了较多研究,本文中分析了现有方案的不足,发现了两类较为突出的问题。首先,目前Android恶意软件流量检测研究成果主要基于较早的公开数据集,如2012年的Android Malware Genome。根据Pendlebury等人的研究,Android恶意软件的持续更新会导致检测效率逐渐下降,因此我们需要采集最新的流量数据以验证检测效果。其次,目前的研究方案主要基于机器学习,存在特征选取困难、无法充分利用流量上下文信息以及识别准确率较低等问题。针对第一个问题,本文构造了一种A

    (本文共74页)

    本文目录 |

    阅读全文>>

    随着移动互联网的快速发展,各种移动终端诸如智能手机、平板电脑等的使用不断增加。与此同时,移动操作系统也在迅速普及。其中,安卓系统占据了绝大部分的市场份额。安卓系统的开源特性和宽松的应用发布验证政策是安卓系统普及的重要原因。然而,这也带来了巨大的安全隐患。近些年,安卓恶意软件不断泛滥,严重制约了移动互联网的健康发展。为了保护移动终端用户不受恶意软件的非法侵害,相关研究人员提出了一些恶意软件检测方法。根据检测形式和分析内容,恶意软件检测方法主要分为静态分析和动态分析两种。然而,目前已有的检测方法仍然存在一些缺陷,针对于此,本文提出了有效的解决方案,主要内容如下:(1)针对静态分析中存在的样本表征不合理等问题,本文提出一种基于敏感模式的安卓恶意软件静态检测方法,旨在发现恶意软件和正常软件在敏感权限和API调用频繁组合上的差异,为恶意软件检测提供了一种新的视角。为了提升频繁项集的挖掘效率,并避免冗余信息的生成,对现有的FP-growth...

    (本文共78页)

    本文目录 |

    阅读全文>>

    随着计算机的普及与互联网的高速发展,恶意软件的数量和种类越来越多,给恶意软件检测带来了前所未有的挑战。现有的检测方法可以分为基于统计特征、文本语义和行为图进行检测,虽然这些方法可以检测恶意软件,但都存在着各自的不足。基于统计特征的方法高度依赖专家经验进行特征码提取,很难识别经过混淆和加壳处理的恶意软件;基于文本语义的方法对硬件性能要求过高,无法处理过长的序列数据,导致恶意软件可轻易绕过序列检测窗口;基于行为图的方法依赖于复杂的图匹配算法以及深度学习模型,可解释性不高,无法应对采用高级对抗技术的恶意软件。因此,如何弱化人工特征提取环节,提高恶意软件的检测效果是一个亟待解决的问题。针对恶意软件检测方法的不足,本文研究了恶意软件的相关知识,包括恶意软件定义、发展趋势、检测对抗技术以及恶意软件执行过程中的典型操作行为,并在此基础上结合当前深度学习领域的研究成果,提出了基于图表示学习技术的恶意软件检测方法。该方法将函数调用序列转化为函数调...

    (本文共75页)

    本文目录 |

    阅读全文>>

    随着移动互联网的快速发展,安卓(Android)作为主流移动端系统在2017年便占领了全球83%的市场。然而,安卓系统的开源开放性及碎片化特征,给了攻击者更多漏洞利用的机会,攻击者可通过流氓行为、恶意扣费、隐私窃取、资费消耗等恶意行为,获取用户个人隐私信息,给安卓系统用户带来了极大的困扰与风险,针对安卓恶意软件检测技术的研究成为热点。为此,本文研究基于静态特征的安卓系统恶意软件检测技术,通过提取逆向后的安卓软件中的静态权限和API信息进行检测,以在程序运行前尽早发现恶意软件。本文的主要工作归纳如下:(1)首先,本文提出了一种基于静态权限(Permission)特征的安卓恶意软件检测技术。通过提取大量APK样本的权限特征并进行优化预处理后,分别运用了逻辑回归、SVM以及随机森林三种机器学习算法对大量APK样本中提取的权限特征进行学习,得到APK样本分类器,从而对未知APK样本进行准确快速的分类,检测出恶意软件,并对三种机器学习算法...

    (本文共85页)

    本文目录 |

    阅读全文>>

    随着国内外恶意软件检测技术的发展,恶意软件也在变得更加先进和警觉。由于混淆和失真等对抗检测技术的出现,恶意软件作者可以快速得到恶意软件变种,使得基于固定特征的传统的恶意软件静态检测技术已难以满足当前的大批量恶意软件检测需求,检测效果也非常有限。为了应对大量恶意软件的风险评估和检测需求,本文基于传统的静态检测技术,提出了一种能够应对大量恶意软件的高效检测方法:通过应用信息熵原理解决恶意软件静态特征去冗余依赖人工选取的问题,利用深度学习方法进行特征处理解决了传统方法特征处理成本过高致使检测效率严重受限、难以应对代码混淆等相关对抗技术手段的问题,实现了在保证可靠的检测准确率的同时,依然具有较高的检测效率。本文的主要工作如下:1.针对传统的恶意软件静态检测方法中特征选取依赖人工经验的问题,提出了一种有效的特征选取方法。本文对windows平台上的软件样本进行反汇编,应用信息熵原理对使用N-gram方法提取出的操作码序列特征进行过滤筛选,...

    (本文共75页)

    本文目录 |

    阅读全文>>

    如今,安卓恶意软件已经成为我们日常数字化生活中一个严重的威胁,且恶意软件的数量不断增加,种类也越来越多,使得传统分析手段变得低效甚至失效。因此,迫切需要高效且精确的检测方式来抵御恶意软件,以保护安卓用户的安全。近几年很多研究者提出了基于机器学习的方法,但这些方法通常使用轻量级的语法属性,所得特征对于表征应用程序过于简单,这对安卓恶意软件的检测来说是远远不够的。而语义属性可以很好的表征应用程序的行为,因此本文采用程序的语义属性来对安卓恶意软件展开研究。本文内容主要分为以下两个部分:一、本文提出了基于控制流程图与数据流程图的安卓恶意软件检测方法。首先,本文通过静态程序分析提取安卓应用程序的控制流程图与数据流程图,同时考虑过程内分析与过程间分析两种方式。然后,将所得流程图编码为矩阵,在矩阵化过程中,本文还考虑了图的水平组合和垂直组合两种方式。最后,基于卷积神经网络构建安卓恶意软件检测模型。为了验证方法的有效性,本文在由Marvin、D...

    (本文共71页)

    本文目录 |

    阅读全文>>

    展开全文
  • 安卓恶意软件检测论文内容整理

    千次阅读 2021-10-31 18:59:32
    Transferable Cost-Aware Security Policy Implementation for Malware Detection Using Deep Reinforcement ...SPIREL框架,一种基于强化学习的有效恶意软件检测方法。 具体实现效果:给每个文件分配一组不同的检测

    Transferable Cost-Aware Security Policy Implementation for Malware Detection Using Deep Reinforcement Learning

    一、提出背景

    为了提高准确率,大家常常部署多个检测器来进行检测,虽然有效,但是在计算资源上是昂贵的,每个文件都需要由所有检测器分析,随之文件数量增多,处理时间和成本就更大。

    二、提出方法

    SPIREL框架,一种基于强化学习的有效恶意软件检测方法。

    具体实现效果:给每个文件分配一组不同的检测器和不同的检测阈值集。

    三、 贡献

    • SPIREL框架

    • 框架通用——可用于所有类型的检测器

    四、APK恶意软件检测综述

    1. 基于签名和ml的方法:对于基于ml的技术,这两个领域之间的主要区别源于为模型训练而提取的特征。
    2. 深度学习:LSTM分析APK调用;深度学习静态分析
    3. 基于集合的方法:将随机森林算法和逻辑回归算法结合分析API调用
    4. 基于特征的分类框架:能够分析静态(如权限和隐藏的有效负载)和动态(API调用、安装的服务和网络连接)特性。

    五、 强化学习综述

    论文介绍了两个强化学习框架

    1. 一个基于规则的自适应恶意软件检测框架的概念证明,该框架使用了一个学习分类器和一个基于规则的专家系统 [1]
    2. 一项研究 [2] 建议使用RL对不同类型的恶意软件进行分类,利用一组反病毒软件常用的特征——>Wan等人提出了一种类似的方法 [3]
    • [1] Jonathan J Blount, Daniel R Tauritz, and Samuel A Mulder. 2011. Adaptive Rule- Based Malware Detection Employing Learning Classifier Systems: A Proof of Concept. In 2011 IEEE 35th Annual ComputerSoftware and Applications Conference Workshops. IEEE, 110–115.
    • [2] Sepideh Mohammadkhani and Mansour Esmaeilpour. 2018. A new method for
      behavioural-based malware detection using reinforcement learning. International
      Journal of Data Mining, Modelling and Management 10, 4 (2018), 314–330.
    • [3] Xiaoyue Wan, Geyi Sheng, Yanda Li, Liang Xiao, and Xiaojiang Du. 2017. Rein-
      forcement Learning Based Mobile Offloading for Cloud-Based Malware Detection.
      In GLOBECOM 2017-2017 IEEE Global Communications Conference. IEEE, 1–6.

    六、论文的方法

    综述:提出了SPIREL,一个使用深度强化学习的安全策略实现。方法的目标是自动“学习”(即生成)最适合组织优先级和需求的安全策略。更具体地说,我们训练一个深度神经网络来动态地确定何时存在足够的信息来对给定的文件进行分类,以及何时需要更多的分析。

    具体:策略:由分配给正确和不正确的文件分类的奖励和惩罚,以及使用计算资源的成本决定。

    RL:探索各种检测器组合的有效性,并持续执行成本-效益分析来选择最优的安全策略。

    agent:选择是通过调用恶意软件检测器进一步分析文件,还是为所分析的文件生成一个分类(恶意的或良性的)。

    image-20211031190324486
    强化学习各组成部分介绍:

    State:由K个恶意软件检测器组成环境
    image-20211031190355286
    Action:动作大致分为三种:检测器的激活;判断软件恶意;判断软件良性。一共有K+2个操作数量,后两种操作将终止分析过程。

    Rewards:奖励的设计需要使其反映组织在安全性和可用性方面的优先级,即检测过程中对错误的容错性和计算资源的成本。
    ①检测错误。我们考虑两种类型的错误:假阳性(FP),其中一个良性文件被标记为恶意(即假警报),假阴性(FN),其中一个恶意文件被标记为良性。

    ②计算资源。在这项研究中,我们选择运行探测器所需的时间作为其激活的近似成本。

    七、 论文提出的四个APK检测器

    • manifest:通过分析其AndroidManifest.xml文件来检测恶意APK [1]。作者通过启发式评分机制选择了六个特征:权限、意图过滤器(动作)、意图过滤器(类别)、意图过滤器(优先级)、进程名和重新定义权限的数量。根据统计分析计算恶性程度评分,将文本特征转换为数值。然后利用上述特征训练决策树分类器。
    • mmda:利用了从AndroidManifest.xml文件中提取的122个特性 [2]:40个最常用的权限,40个最常用的硬件特性,40个最常用的操作,以及两个额外的特性——权限的数量和接收者操作的数量。这些特征被用来训练一个有100棵树的随机森林分类器。
    • bytecode:该检测器对Dalvik字节码指令 [3] 进行频率分析。该检测器评估218个字节码指令的频率,并将它们作为特征使用。然后,训练一个包含100棵树的随机森林分类器对文件进行分类。
    • dalvikapi:该检测器使用权限和Dalvik API调用来检测恶意的APK [4]。权限是从AndroidManifest文件中提取的;API调用使用以下过程提取:首先,将APK中的classes.dex文件转换为Java存档(JAR)文件。其次,从解压缩的JAR中提取所有的类文件。第三,类文件被反编译成包含所有API调用的Java文件。

    [1] Ryo Sato, Daiki Chiba, and Shigeki Goto. 2013. Detecting android malware by analyzing manifest files. Proceedings of the Asia-Pacific Advanced Network 36, 23-31 (2013), 17.

    [2] Kun Wang, Tao Song, and Alei Liang. 2016. Mmda: Metadata based malware detection on android. In 2016 12th International Conference on Computational Intelligence and Security (CIS). IEEE, 598–602.

    [3] Byeongho Kang, BooJoong Kang, Jungtae Kim, and Eul Gyu Im. 2013. Android malware classification method: Dalvik bytecode frequency analysis. In Proceed- ings ofthe 2013 research in adaptive and convergent systems. 349–350.

    [4] Patrick PK Chan and Wen-Kai Song. 2014. Static detection of Android malware by using permissions and API calls. In 2014 International Conference on Machine Learning and Cybernetics, Vol. 1. IEEE, 82–87.

    FAMD: A Fast Multifeature Android Malware Detection Framework, Design,and Implementation

    一、框架简述

    基于多种功能组合的Android恶意软件检测框架:FAMD(快速Android恶意软件检测)。首先从样本中提取permissions和Dalvik操作码序列,构建原始特征集;其次,采用N-Gram技术对Dalvik操作码进行预处理,并采用基于对称不确定性的快速相关滤波(FCBF)算法降维。最后,将降维特征输入到CatBoost分类器中进行恶意软件检测和族分类。

    二、贡献

    • 我们提出了一种快速的Android恶意软件检测框架——FAMD,该框架包括三个部分:构建恶意软件检测特征集,对特征进行降维预处理,并对处理后的特征进行恶意软件检测和族分类。目的是提高恶意软件检测的准确性,同时减少特征维度。
    • 在特征预处理方面,由于采用N-Gram方法对Dalvik操作码序列进行分割,特征维数较高。我们使用FCBF算法将特征的维数从2467降至500。
    • 在Android恶意软件检测和族分类中,首次采用CatBoost作为分类器。与其他基于GBDT的方法相比,CatBoost可以解决梯度偏差和预测偏移的问题,从而减少过拟合的发生,提高模型的分类精度和泛化能力。

    三、 FAMD图形框架

    image-20210127134705009

    四、 具体框架设计方法

    • APP数据集收集
    • 特征提取和预处理:使用反编译工具从AndroidManifest.XML文件和classes.dex文件中提取权限和原始操作码序列。基于N-Gram方法,从原始操作码序列中提取特定长度的操作码序列,并结合权限特征构造每个样本的特征向量。最后,构造特征矩阵,将每个应用程序作为一行,每个提取的特征作为一列。
    • 特征选择:采用FCBF算法对特征进行加权,构造特征子集。通过实验确定参数和子集特征数。(此处我们应该是使用强化学习
    • 恶意软件分类方法:使用基于梯度增强决策树的机器学习算法CatBoost作为分类器来检测恶意样本并对恶意软件族进行分类。

    五、 特征提取方法具体说明

    • DALVIK操作码的处理:在本文中,我们通过删除不相关的指令,只保留7个核心指令集,并删除操作数来简化操作码。(如表一)根据上述映射,我们使用N-Gram来分割从应用程序中提取的操作码序列。例子如下:
      原始操作码序列:move-object/from16, iget-object, invoke-virtual, goto, move-object/from16

      “move-object/from16”序列对应“M”指令,“iget-object”对应“T”指令,“invoke-virtual”对应“V"指令," goto “对应” G "指令。因此,该序列被简化为“MTVGM”。

      那么序列的3-Gram特征为{MTV},{TVG},{VGM}, 4-Gram特征为{MTVG}, {TVGM}, 5-Gram特征为{MTVGM}。
      image-20210127135440909

    • 权限提取


    新增内容:

    Feature Selection for Malware Detection on the Android Platform Based on Differences of IDF Values

    一、提出背景

    Android是智能手机生态系统中最常被恶意软件攻击的移动操作系统,它的市场份额远远高于其竞争对手,应用程序的总数也要大得多。在正式或非官方的应用市场上发布之前检测恶意软件是非常重要的,因为典型的终端用户普遍存在安全不足。

    二、主要内容

    提出方法:

    **一种新的特征选择方法:**利用权限、API调用和字符串作为特征。设计并实现了一种基于文档频率的特征选择方法Delta_IDF。

    检测过程:

    image-20210204102345764

    特征提取:

    使用工具:androguard

    1. Permissions:用androguard提取APK文件使用权限
    2. API Calls:计算每个API调用在每个样本的源代码中出现的次数,并计算与每个不同的API调用对应的术语频率(TF)和IDF值。
    3. Strings:利用androguard从APK文件中获取字符串

    特征选择方法具体算法:

    1. 预备介绍
      1.1. TF公式
      T F = f i ∑ j = 1 n f j T F=\frac{f_{i}}{\sum_{j=1}^{n} f_{j}} TF=j=1nfjfi
      fi : 某特征出现的次数 分母:特征总数
      1.2 IDF公式
      I D F = log ⁡ 10 T C I D F=\log _{10} \frac{T}{C} IDF=log10CT
      T是APK文件的总数,C是包含给定字符串的APK文件的数量。
    2. 数学公式:
      D e l t a − I D F ⁡ = I D F benign  − I D F malware  \operatorname{Delta_{-}IDF}=I D F_{\text {benign }}-I D F_{\text {malware }} DeltaIDF=IDFbenign IDFmalware 
      I D F benign  = log ⁡ 10 N n b I D F_{\text {benign }}=\log _{10} \frac{N}{n_{\mathrm{b}}} IDFbenign =log10nbN
      I D F malware  = log ⁡ 10 N n m I D F_{\text {malware }}=\log _{10} \frac{N}{n_{\mathrm{m}}} IDFmalware =log10nmN
      D e l t a I D F = log ⁡ 10 N n b − log ⁡ 10 N n m = log ⁡ 10 n m n b Delta_IDF =\log _{10} \frac{N}{n_{\mathrm{b}}}-\log _{10} \frac{N}{n_{\mathrm{m}}}=\log _{10} \frac{n_{\mathrm{m}}}{n_{\mathrm{b}}} DeltaIDF=log10nbNlog10nmN=log10nbnm
    3. 选择方法:
      利用Delta_IDF的计算结果,取最大值进行学习,根据恶意程度进行分类。
      根据其Delta_IDF值进行排序后,可以选择高于第90百分位(前10%段)或第95百分位(前5%段)的特征。

    Machine Learning for Android Malware Detection using Permission and API Calls

    将permission和API(应用程序接口)调用相结合,并使用机器学习方法来检测恶意Android应用程序。

    Opcode sequence analysis of Android malware by a convolutional neural network

    提出了一种新型的Android手机恶意软件检测系统,该系统利用优化的深度卷积神经网络从操作码序列中学习。从反编译的Android文件中提取原始操作码序列,对优化后的卷积神经网络进行多次训练,从而有效学习特征信息,更准确地检测恶意程序。

    Efficient Android Malware Detection Using API Rank and Machine Learning

    从APK文件中提取API调用信息,然后分别生成两个被良性应用程序和恶意应用程序经常使用的API排序列表。在过滤掉两个列表的公共api之后,将两个列表合并为一个列表,最后通过机器学习方法训练模型。

    展开全文
  • Android恶意软件检测

    2021-07-23 00:55:36
    应用提出的解释性技术,下表中给出了SVM(顶行)和 RF(底行) (i) 良性样本(第一列),(ii)SM SWA TCHER 家族的恶意软件样本(第二列),以及 (iii) PL ANKTON家族的恶意软件样本(第三列)的最能影响判决结果...

    原创稿件征集

    邮箱:edu@antvsion.com

    QQ:3200599554

    黑客与极客相关,互联网安全领域里

    的热点话题

    漏洞、技术相关的调查或分析

    稿件通过并发布还能收获

    200-800元不等的稿酬

    前言

    本文将介绍如何利用机器学习技术检测安卓恶意软件,在前文会介绍相关基础知识,在后文则以实战为导向,介绍如何使用支持向量机检测安卓恶意软件,以及通过可解释性技术解释模型的决策结果,最后介绍如果对该模型发动对抗样本攻击。

    支持向量机

    在机器学习中,支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。

    给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

    相关实验,复制链接PC端体验更佳

    <支持向量机检测dga< span="">>:

    https://www.hetianlab.com/expc.do?ec=ECIDd5fb-5379-4f4b-862e-db7ab18b3a19&pk_campaign=weixin-wemedia#stu

    了解支持向量机的原理,学习SVM是怎么应用于检测DGA的。

    可解释性技术

    接着介绍本文用到的可解释性技术,来自于[2][3]两篇论文。

    我们使用的数据集是Drebin,该数据集包含来自 179 个不同恶意软件家族的 5,560 个应用程序,样本是在2010年8月至 2012年10月期间收集的,由MobileSandbox 项目提供。

    其主页为:

    https://www.sec.cs.tu-bs.de/~danarp/drebin/

    数据集的每个特征都是一个布尔变量,0表示不存在该特征,1表示存在该特征。如下所示:

    安卓样本(apk文件)在特征空间中表示为向量,然后用一组带有标签的数据集进行训练,来区分良性样本和恶意样本。在测试时,则用训练得到的分类器判别样本文件。如果其输出f(x)>0,则将其归类为恶意样本,否则归类为良性样本。我们希望利用可解释性技术解释模型做出对应决策的理由。

    以前的可解释性技术关注梯度,更一般的说法就是围绕输入点x的线性近似值给解释技术提供了有用的信息。设f是与预测类别相关的置信度,其认为与局部梯度 ∇f(x) 的最大绝对值相关的那些特征识别是最能影响决策结果的特征。然而,对于稀疏数据(比如安卓恶意软件)来说,那些方法给出的最有影响力的特征往往不在给定的样本中,从而难以解释相应的预测结果。

    因此,我们采用不同的方法。我们将梯度 ∇f (x) 投影到 x 上以获得特征相关(feature-relevance)向量 ν = ∇f(x) · x ∈ Rd,其中 · 表示元素乘积。然后我们将 ν 归一化为一元 l1 范数,即 r =v/||v|,以确保只有 x 中的非空特征被识别为与决策结果相关。最后,可以将 r 的绝对值按降序排列以识别对决策结果最具影响的特征。

    应用提出的解释性技术,下表中给出了SVM(顶行)和 RF(底行) (i) 良性样本(第一列),(ii)SM SWA TCHER 家族的恶意软件样本(第二列),以及 (iii) PL ANKTON家族的恶意软件样本(第三列)的最能影响判决结果的前10个特征,并给出了每个特征在 BENING (pB ) 和恶意软件 (pM ) 中存在的可能性。

    对抗样本技术

    然后介绍本文用到的对抗样本技术,来自于[4][5]两篇论文。

    我们可以将生成的对抗样本形式化为:

    其中,x’是与生成的对抗样本z’相关的特征空间,wˆ 是攻击者估计的权重向量。

    这个式子本质上告诉攻击者应该修改哪些特征以最大程度地降低分类函数的值,即最大化逃避检测的概率。注意,根据操作约束 Ω(z)(例如如果特征值是有界的),要操作的特征集对于每个恶意样本通常是不同的。

    攻击者的目标是最小化上面的式子,但是对于每个特征独立地估计 wˆ 的每个分量为:

    这相当于鼓励攻击者添加(删除)在良性样本中更频繁出现(不存在)的重要特征,使恶意样本的概率分布更接近良性数据的概率分布。

    在本部分最后,再捎带介绍后文会提到的两个概念。

    F1分数:

    F1分数(F1 Score)是统计学中用来衡量二分类模型精确度的一种指标。它同时兼顾了分类模型的精确率和召回率。F1分数可以看作是模型精确率和召回率的一种调和平均,它的最大值是1,最小值是0。

    ROC曲线:

    ROC 曲线(接收者操作特征曲线)是一种显示分类模型在所有分类阈值下的效果的图表。该曲线绘制了以下两个参数:真正例率TPR(在我们下面的实战中,就是恶意样本的检出率),假正例率FPR。

    实战

    我们下载该数据集并解压:

    简单查看一下数据:

    可以看到共下载了12550个样本,其中良性样本数量为12000,恶意样本数量为550。

    我们使用支持向量机对其进行检测,首先用一半的数据集作为训练集,在其上进行训练:

    其中,CClassifierSVM类的定义如下:

    训练完成后打印其F1分数:

    绘出ROC曲线:

    接着我们来尝试使用XAI技术(可解释性AI)来解释训练得到的模型是以什么为依据将样本判定为良性或恶意。

    我们使用基于梯度的解释方法:

    CExplainerGradientInput类定义如下,我们在下面会用到其explain方法:

    我们尝试对于一个良性样本和一个恶意样本,给出解释并分别列出对决策结果最大的前10个特征。

    先来看对良性样本的解释:

    这里的true class:0,是说该样本为良性样本。对应地,下图中true class:1则说明其为恶意样本。

    我们来看看返回的结果,负号说明这些特征是与决策结果负相关,或者换句话说,如果出现这些特征,那么样本是良性的可能性大。

    从上图可以看到与之前相反的结果,大多数特征具有正相关的值,这意味着,出现了这些正相关的特征,则样本极有可能是恶意的。

    前面我们在检查数据的时候已经知道,这批样本共有1227080个特征。而从此处的结果可以看到,打印出的前10个特征已经占据了50%左右的相关性了,说明该机器学习模型倾向于将大部分权重分配给一组小的特征。

    如果攻击者发现了这一点,这时候只需稍微改动恶意样本中正相关性较大的特征,就能欺骗模型将其分类为良性样本。当然实际中不需要手动去修改,我们还有对抗样本的技术,可以自动修改特征来欺骗分类器。

    我们这里使用带线性搜索的投影梯度下降技术来创建可以对抗检测安卓恶意软件的SVM分类器的对抗样本。这里需要注意,和图片不同,在生成图片的对抗样本时,基本是不受约束的,图片不论怎么修改,还是一张图片。但是对于程序来说,添加或者删除某些特征,可能程序就不可用了。比如我们在一个恶意程序上做对抗样本,如果改动幅度过大,可能生成的对抗 样本确实被分类器认为是良性的,但是该对抗样本可能已经失效的,即无法执行恶意行为,那么就失去了对抗样本的意义。

    我们的经验就是一般不要轻易删除某些特征,尤其是不要删除manifest组件,因为容易破坏程序的功能。相对地,添加特征更安全一些,比如添加权限就不会影响任何现有功能。

    我们来设置攻击参数:

    这里主要关注distance和y_target。

    distance我们设为l1,因为每个特征是一个布尔变量(0或1),我们希望在一次迭代时只改变一个特征(从0到1,或者从1到0)。

    y_target设为0,是希望生成的对抗样本被归类为良性。(这里我们指定了攻击目标,在对抗样本中称为定向攻击)

    接着发动攻击:

    该类定义如下:

    画出攻击后的情况:

    从图中可以看到,在改变了不到10个特征之后,恶意样本的检出率就低于50%了,证实了对抗样本攻击的有效性。

    相关课程,复制链接PC端即可体验

    《基于机器学习的网络安全应用实践》:

    https://www.hetianlab.com/cour.do?w=1&c=CCIDaa5a-85bb-4c6d-90fa-d61c89e7a81c&pk_campaign=weixin-wemedia#stu

    学习如何将机器学习与网络安全结合起来,使用机器学习来辅助网络安全问题的解决。

    参考链接

    1.https://zh.wikipedia.org/wiki/%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA
    2.Not just a blackbox: Learning important features through propagating      activation differences
    3.Explaining Black-box Android Malware Detection
    4.Is Deep Learning Safe for Robot Vision?Adversarial Examples against the iCub Humanoid
    5.Yes, Machine Learning Can Be More Secure!A Case Study on Android Malware Detection
    6.《机器学习》、《深度学习》
    

    “阅读原文”

    体验免费靶场!
    展开全文
  • 基于程序流程图的Android恶意软件检测方法【专利摘要】本发明公开了一种基于程序流程图的Android恶意软件检测方法。对于一个待检测的APK应用程序,首先根据反编译后生成的smali文件,分析程序的基本块并得到其流程图...

    基于程序流程图的Android恶意软件检测方法

    【专利摘要】本发明公开了一种基于程序流程图的Android恶意软件检测方法。对于一个待检测的APK应用程序,首先根据反编译后生成的smali文件,分析程序的基本块并得到其流程图,将API全路径哈希编码值与其连接关系组成的图指纹作为恶意行为特征,然后利用子图同构理论进行恶意软件的行为匹配。相对于传统的利用文件签名方案进行恶意软件检测的系统,本方法可以有效识别出恶意软件的变种,并能有效抵抗恶意代码篡改等签名方案无法检测的病毒类型。

    【专利说明】基于程序流程图的Android恶意软件检测方法

    【技术领域】

    [0001]本发明涉及一种基于程序流程图的Android恶意软件检测方法,属于移动平台恶意软件检测等【技术领域】。

    【背景技术】

    [0002]随着移动互联网的快速发展,智能移动终端已经成为人们生活和工作中必不可少的工具。目前,Android已经成为移动终端的主流操作系统。移动互联网规模的发展与Android市场份额的增长相互促进,共同改变着人们的移动生活。但是伴随着移动互联网和Android的高速发展,各种各样的恶意软件也层出不穷,这严重损害了移动终端用户的切身利益以及Android应用市场的良性发展。因此,对于Android平台恶意软件的研究与检测具有重要的理论价值和现实意义。在恶意软件静态检测领域,传统的利用文件签名方案实现恶意软件检测的技术,可以有效地检测出已知的恶意样本。但是这种方案很难防范恶意软件的变种以及具有同种恶意行为的不同样本程序。例如,对恶意程序修改部分代码之后,基于文件签名的方案就很难生效。针对这种情况,一种新的基于程序流程图的恶意软件检测方法可以很好地解决这个问题。

    【发明内容】

    [0003]发明目的:针对目前Android市场的恶意软件和现有的基于文件签名的方案存在的不足,本发明提出了一种基于程序流程图的Android恶意软件检测方法。本发明首先需要从恶意样本中提炼出代表其恶意行为的特征图,然后对于待检测的样本程序,需要生成Android应用程序中每个类的流程图,并通过子图同构的理论来实现恶意软件的检测。

    [0004]技术方案:一种基于程序流程图的Android恶意软件检测方法,包括如下步骤:

    [0005]I)建立恶意行为特征库;

    [0006]2)检测APK应用程序,包括:

    [0007]a,对于待检测的APK应用程序提取其dex代码文件并对其反编译生成smali文件;

    [0008]b,利用深度优先遍历算法遍历每个smali文件,对于每一个smali文件根据词法特征得到代码的基本块,并生成每个smali文件的程序流程图;

    [0009]c,在步骤b中生成的流程图中,删除不含invoke指令的结点,并连接剩余的结点,得到新的只包含API调用关系的程序流程图;

    [0010]d,对于步骤c中生成的新的只包含API调用关系的程序流程图,利用子图同构理论与步骤I)中建立的恶意行为特征库中的每条恶意行为记录进行匹配,若匹配成功,则检测为恶意样本。

    [0011]所述步骤I)中恶意行为特征库包含每种恶意行为的一条记录,每条记录由Android(Java)的API函数的全路径哈希编码以及其连接关系组成;

    [0012]所述步骤c还包括,在步骤b得到的程序流程图中标记不同的不包含invoke指令的结点组成的环,最后删除不同的不包含invoke指令的结点组成的环,并重新连接程序流程图。

    [0013]有益效果:基于程序流程图的Android恶意软件检测方法建立了一种新的病毒特征库中恶意行为记录的定义方式。随着恶意软件变种的流行,以及一些新的恶意软件的出现,采用签名方案需要生成每个样本的恶意代码签名,并将其存入特征库中,这必然会导致特征库的急剧增大。对于恶意软件的变种以及有相同恶意行为的样本,本发明只需要定义一条记录描述这种恶意行为即可。因此,相对于传统的签名方案,本发明提出的行为特征库可以大大减小特征库的大小。相对于传统的利用文件签名方案进行恶意软件检测的系统,本发明可以有效识别出恶意软件的变种,并能有效抵抗恶意代码篡改等签名方案无法检测的病毒类型。

    【专利附图】

    【附图说明】

    [0014]图1为本发明的流程图;

    [0015]图2为本发明中控制流程图的生成规则;

    [0016]图3为本发明删除流程图中不同的不包含invoke结点的环;

    [0017]图4为本发明提取的zsone的恶意行为特征;

    [0018]图5为本发明提取的恶意子图的邻接矩阵表示。

    【具体实施方式】

    [0019]下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。

    [0020]一种基于程序流程图的Android恶意软件检测方法,其具体实施流程图如图1所示。下面结合zsone恶意软件介绍本发明的实施步骤:

    [0021]I)恶意行为特征库的建立

    [0022]步骤1、提取该 APK(SHAl:9458cfb51c90130938abcef7173c3f6d44a02720)应用程序的dex代码文件;

    [0023]步骤2、对于步骤I提取的dex文件利用反编译工具dex2 jar生成dex的jar文件,并用jd-gui打开。人工分析其恶意行为并确定恶意代码所在的类文件为com\mj\utils\MJReceiver.class ;

    [0024]步骤3、利用baksmali反编译dex生成smali格式的文件。对于反编译出的smali格式的恶意类MJReceiver.smali,根据其词法特征得到代码的基本块,并生成MJReceiver.smali的流程图,其中每个基本块是流程图中的一个结点;

    [0025]步骤4、在步骤3中生成的流程图中,根据以下三条规则删除流程图中不含invoke指令的结点,并连接剩余结点得到新的流程图,具体过程如图2所示;

    [0026](I)若某基本块包含invoke指令,且invoke的API全路径是Android (Java)里的路径,则此基本块中只保留该invoke的API全路径;

    [0027](2)若某基本块中invoke的API全路径不是Android (Java)里的路径,贝U检查此类的的父类,得到Android(Java)里的全路径。最后连接剩余的结点,得到新的流程图。[0028](3)若某基本块中不包含invoke指令,则删除此基本块,此过程中需要标记并删除不同的不包含invoke的结点组成的环,如图3所示;

    [0029]步骤5、对于步骤4生成的流程图中,提取产生恶意行为的关键Android(Java)的API组成的子图,并对这些API进行全路径哈希编码。其中API的编码算法采用FNV-1哈希算法。例如Android里取消广播消息abortBroadcast的全路径为android/content/BroadcastReceiver ;->abortBroadcast (),米用 FNV-1 编码,则其编码值为 8B19210F。对于zsone恶意软件,本发明提取的恶意软子图如图4所示,其中的API全路径进行编码如表I所示。

    [0030]表I

    [0031]

    APi全路径Ifnv-1

    android/telephony/gsm/SmsMessage >createFromPdu()CBC6E174

    android/telephony/gsm/SmsMessage >getDisplayOriginatingAddress()94642FEE

    java/lang/String >equals()D1562846

    android/content/BroadcastReceiver >abortBroadcast()8B19210F

    [0032]步骤6、对于步骤5得到的每个API的编码值,其连接关系采用有向图的邻接矩阵表示,进一步,我们可以将矩阵的每一行连接起来构成一个字符串,称为图指纹,如图5所示。将API全路径哈希编码值与其连接关系组成的图指纹作为一条恶意行为特征存入恶意行为特征库中。

    [0033]例如得到的zsone恶意行为特征为:

    [0034]CBC6E17494642FEED15628468B19210F:0100001011011100

    [0035]2)应用程序的检测过程

    [0036]步骤7、采用步骤I提取dex文件,采用步骤2反编译dex文件得到所有的smali类文件;

    [0037]步骤8、利用深度优先遍历算法遍历每个smali文件,并采用步骤3、4的过程生成每个smali文件的流程图;

    [0038]步骤9、对于步骤8中生成的流程图,利用子图同构理论与建立的行为特征库中的每条记录进行匹配,若匹配成功,则检测出恶意样本。

    【权利要求】

    1.一种基于程序流程图的Android恶意软件检测方法,其特征在于,包括如下步骤: 1)建立恶意行为特征库; 2)检测APK应用程序,包括: a,对于待检测的APK应用程序提取其dex代码文件并对其反编译生成smali文件; b,利用深度优先遍历算法遍历每个smali文件,对于每一个smali文件根据词法特征得到代码的基本块,并生成每个smali文件的程序流程图; c,在步骤b中生成的流程图中,删除不含invoke指令的结点,并连接剩余的结点,得到新的只包含API调用关系的程序流程图; d,对于步骤c中生成的新的只包含API调用关系的程序流程图,利用子图同构理论与步骤I)中建立的恶意行为特征库中的每条恶意行为记录进行匹配,若匹配成功,则检测为恶意样本。

    2.如权利要求1所述的基于程序流程图的Android恶意软件检测方法,其特征在于:所述步骤I)中恶意行为特征库包含每种恶意行为的一条记录,每条记录由Android(Java)的API函数的全路径哈希编码以及其连接关系组成。

    3.如权利要求1所述的基于程序流程图的Android恶意软件检测方法,其特征在于:所述步骤c还包括,在步骤b得到的程序流程图中标记不同的不包含invoke指令的结点组成的环,最后删除不同 的不包含invoke指令的结点组成的环,并重新连接程序流程图。

    【文档编号】G06F21/56GK104021346SQ201410250514

    【公开日】2014年9月3日 申请日期:2014年6月6日 优先权日:2014年6月6日

    【发明者】秦中元, 杨中云, 王志远, 吴伏宝, 徐倩怡, 游雁天, 吴颖真 申请人:东南大学

    展开全文
  • )投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿目的这个练习涵盖了技术分析Android恶意软件通过使用一个定制的恶意软件样本在Android设备上运行时,将会reverse shell给一个攻击者。我们将通过使用静态和...
  • 1.恶意软件的两个组成部分 传播机制(propagation mechanism) 有效载荷(payload) 传播机制指的是恶意软件如何从一个系统传播到另外一个系统中。有效载荷则指的是恶意软件具体的恶意动作,不同的恶意软件对象可以...
  • 静态分析可以帮助我们更好地理解恶意软件二进制文件在攻击目标后为攻击者提供的好处,以及攻击者可以隐藏并继续攻击受感染计算机的方式。 一、数据集 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据...
  • 恶意软件检测的国内外研究现状文献综述恶意软件检测方法基于行为Analysis of Machine Learning Techniques Used in Behavior-Based Malware Detection表明随着恶意软件的高速增长,传统的静态分析已经不能够满足检测...
  • 这5种恶意软件要当心,教你如何识别它! 你曾经被恶意软件攻击过吗? 恶意软件恶意软件或数据文件,危害计算机系统及其信息。 常见的恶意软件有:FileRepMalware、特洛伊木马、间谍软件、蠕虫和勒索软件。由于...
  • 摘要:近年来,智能手机快速普及,逐渐成为人们...然而,混杂在正常应用软件中的恶意软件数量也以惊人的速度不断增长,Android平台的安全问题变得越来越严重。因此,如何应对Android恶意软件的飞速发展,以较小的开销准...
  • vt上一搜发现鉴别为恶意软件。 拖到PEID内一查,加了一个壳PEncrypt 3.1 Final -> jnukcode。 我好气,脱了我一个多小时没脱下来。想想算了,题目要求也就是分析它的行为。 打开Promon检测一下。发现了大量...
  • 当Rob Pike老爷子被问及多年来他看到过最奇怪、最有创意或有趣的Go用法或最让他惊讶的是什么时,老爷子是这么回答的: Rob:最大的惊喜是当我们得知Go被用于编写恶意软件时。您无法控制谁将使用您的作品或他们将如何...
  • 原标题:Linux系统对付恶意软件的三款应用软件 即使你使用Tripwire,也应该意识到恶意攻击者仍会在你不知情的情况下在系统上植入恶意软件。在本文中,你将学习如何安装和运行三款不同的反恶意软件应用软件:...
  • 核心提示:电脑里的恶意软件是不是非常令人讨厌?要怎么才能去除它们呢?在这里我就来为大家推荐一款软件吧——Norton Power Eraser!电脑里的恶意软件是不是非常令人讨厌?要怎么才能去除它们呢?在这里我就来为...
  • 可能有些小伙伴发现,哎?为什么我的电脑弹窗广告这么多?...今天我们一方面带领大家学会使用这个系统自带的工具,另一方面,谈一谈作为一个程序员对于恶意软件和杀毒软件的一些看法,希望能帮助大家纠正一些误区。
  • Malware被称为恶意软件,它可以是任何脚本、应用程序或任何对我们的系统和数据有害的东西。Linux Malware detect (LMD)是一种针对Linux的恶意软件扫描程序,是根据GNU GPLV2许可证发布的,旨在解决托管环境中面临的...
  • 比如,以往传统认为linux系统没有恶意软件不需要安全软件,在产业互联网普及的今天,这一错误认知已彻底被打破。云端,已经成为硝烟弥漫的网络安全新战场。 恶意木马事件明显上升,27%已发现木马未被及时处理 报告...
  • yara是一款用于帮助软件研究人员检测恶意软件和代码的开源工具,可以分析各种文件以及正在运行的进程。Yara支持的系统平台Yara工具自带了一个小型的搜索引擎,可以在window、linux、MacOS系统上运行,而且支持python...
  • 病毒是一种很强大的恶性木马程序,它可以依附在所有的网络数据上,特别是恶意软件,很多都含有不止一种的病毒,一旦用户下载了其中一种恶意软件,很有可能会导致电脑受损,或者电脑出现死机等状况,那么,恶意软件上...
  • 本文内容是记录之前在做360的DataFountain恶意软件方向比赛时第一次分析和提交采用的分析思路。整体倾向按照以往分析经验构建有价值特征单模型分类,没有采用“广泛提取特征然后交给深度学习模型进行学习,最后通过...
  • 第四章利用恶意软件网络识别攻击活动《基于数据科学的恶意软件分析》 《基于数据科学的恶意软件分析》 Malware Data Science Attack Detection and Attribution Joshua Saxe Hillary Sanders著 何能强 严寒冰 译 与...
  • 网络犯罪分子正在向网站联系表格和论坛发送垃圾邮件,以分发下载和安装 RedLine 密码和信息窃取恶意软件的 Excel XLL 文件。 RedLine 是一种信息窃取特洛伊木马程序,它会窃取存储在 Web 浏览器中的 cookie、用户名...
  • 原标题:Linux恶意软件SkidMap分析挖掘加密货币恶意软件仍然是一个普遍的威胁。网络罪犯也越来越多地探索新的平台和方法来进一步利用挖矿恶意软件——从移动设备、Unix和类Unix系统到服务器和云环境。攻击者不断提升...
  • A dynamic malware detection mothod based on Transformer and LSTMGUAN Yichen1管怡晨(1996-),女,硕士研究生在读,主要研究方向:恶意软件检测YANG Tan1杨谈(1982-),女,副教授、硕导,主要研究方向:网络测量...
  • Windos系统中有很多的服务及工具,我们在使用电脑时,久而久之的电脑中就会多一些莫名其妙的恶意软件、工具甚至视频软件之类的,为了确保电脑系统的正常使用及系统安全,Windos系统就自带着一款确保安全的一款检测...
  • 恶意软件隐藏技术 恶意软件检测与分析系统 通用恶意软件检测系统由四个主要模块组成:特征提取、特征选择、分类/聚类和决策。 A软件分析 恶意软件分析可通过以下三种方式进行: 静态分析 [5]提出了一种基于调用码图...
  • 恶意软件具有多种破坏功能。有些只是在您的设备上放置了一个静音键盘记录程序,而有些则对您的硬盘进行了加密。恶意软件可以传播到用于数据共享的所有介质中。这些媒体是物理存储媒体,网络存储设备,网络设备和其他...
  • BazarLoader是基于Windows的恶意软件,主要通过电子邮件等方式传播。犯罪分子通过恶意软件后门访问受感染的主机,并对目标域网络环境进行探测,部署Cobalt Strike,绘制网络拓扑图。如果为高价值目标,犯罪分子就会...
  • mac提示“打不开xxx,因为Apple无法检查其是否包含恶意软件...”时,一般是由于你下载了非App Store且不受苹果信任的开发者的软件,怎么解决呢? 解决方案 在设置-安全性与隐私-通用-允许从以下位置下载的应用-...
  • 恶意软件分析与检测》 王俊峰 第一章:二进制可执行文件 第二章:检测基础 集成学习:产生多个独立决策的分类器,按照某种策略组合这些分类器来解决同一个问题。 第三章:加壳技术 加壳:可...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 128,908
精华内容 51,563
关键字:

恶意软件