精华内容
下载资源
问答
  • 恶意代码检测

    千次阅读 2019-12-15 14:08:32
    恶意代码定义 恶意代码也称为恶意软件,是对各种敌对和入侵软件的概括性术语。包括各种形式的计算机病毒、蠕虫、特洛伊木马、勒索软件、间谍软件、广告软件以及其他的恶意软件。 恶意代码的种类 计算机病毒:指...

    恶意代码定义

    恶意代码也称为恶意软件,是对各种敌对和入侵软件的概括性术语。包括各种形式的计算机病毒、蠕虫、特洛伊木马、勒索软件、间谍软件、广告软件以及其他的恶意软件。

    恶意代码的种类

    计算机病毒:指寄居在计算机系统中,在一定条件下被执行会破坏系统、程序的功能和数据,影响系统其他程序和自我复制。

    蠕虫:也算是一种病毒,它具有自我复制能力并通过计算和网络的负载,消耗有限资源。

    特洛伊木马:也可以简称为木马,最初来源于古希腊传说。计算机木马是一种潜伏在计算机中为了达到某种特殊目的的程序,比如窃取用户私密信息和控制用户系统等。它与病毒最大的不同点在于,病毒能进行自我复制,而木马不具有复制功能,不会感染其他程序。

    Rootkit:最初是指一组能帮助使用者获取系统权限的工具包,这里的是一种恶意程序,用于获取目标主机权限之后隐藏攻击者访问痕迹,使得攻击者不被发现从而能够长期拥有管理员权限。它具有很好的隐蔽性和潜伏性,难以检测。

    恶意代码特征(区分程序恶意特征的特征信息)

    • 系统调用特征
    • 规范化代码特征
    • N-gram特征
    • 控制流(CFG特征)
    • 指令序列特征
    • 文件格式等特征

    恶意代码特征提取

    Byte n-gram Features:从文件的二进制代码中提取Byte n-gram特征,其中选择训练集中每个类的L个最常出现的n克来表示类的配置文件。

    Opcode n-gram Features:首先拆卸所有数据集的可执行文件和操作码提取。一个操作码的汇编语言指令描述要执行的操作。它是短形式的操作码。一条指令包含一个操作码和操作数,选择应该采取的操作。一些操作的操作数操作码可能操作,根据CPU体系结构,寄存器,值存储在内存和堆栈等等。一个操作码的作用在算术、逻辑运算和数据处理操作。操作码能够统计得出之间的可变性恶意和正版软件。

    Portable Executables:这些特征是从EXE文件的某些部分提取出来的。利用可执行文件的结构信息,通过静态分析提取可执行文件的特征。这些有意义的特性表明文件被操纵或感染以执行恶意活动。

    String Features:这些特征是基于纯文本编码在可执行文件,如windows, getversion, getstartupinfo, getmodulefilename, messagebox,库等。这些字符串是用PE和非PE可执行文件编码的连续可打印字符。

    Function Based Features:在程序文件的运行时行为上提取基于函数的特征。基于函数的特性函数驻留在要执行的文件中,并利用它们生成表示文件的各种属性。

    Hybrid Analysis Features:静态分析和动态分析的结合。

    恶意代码检测

    • 基于静态特征的恶意代码检测技术
    分类特征 参考文献
    The byte code Kolter J Z, Maloof M A. Learning to detect malicious executables in the wild. [C]. Proceedings of the tenth ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2004: 470-478.
    Santos I, Penya Y K, Devesa J, et al. N-grams-based File Signatures for Malware Detection. Proceedings of the 2009 International Conference on Enterprise Information Systems (ICEIS), 2009, 9: 317-320
    n-grams

     

    File format

    Shafiq M Z, Tabish S M, Mirza F, et al. Pe-miner: Mining structural information to detect malicious executables in realtime. Recent advances in intrusion detection, Springer Berlin Heidelberg, 2009: 121-141.

    Bai J, Wang J, Zou G. A Malware Detection Scheme Based on Mining Format Information. The Scientific World Journal, 2014.

    Gray image Nataraj L, Karthikeyan S, Jacob G, et al. Malware images: visualization and automatic classification[C] . Proceedings of the 8th international symposium on visualization for cyber security. ACM, 2011: 4.
    HAN Xiao-guang, QU Wu, YAO Xuan-xia, et al. Research on malicious code variants detection based on texture fingerprint. Journal on Communications, 2014, 35(8):125-135.
    Function call graph Kong D, Yan G. Discriminant malware distance learning on structural information for automated malware classification[C]. Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining. ACM, 2013: 1357-1365.
    • 基于动态特征的恶意代码检测技术
    分类特征 参考文献
    Variable length

    Nair V P, Jain H, Golecha Y K, et al. MEDUSA: MEtamorphic malware dynamic analysis
    usingsignature from API[C]. Proceedings of the 3rd International Conference on Security of Information and Networks. ACM, 2010: 263-269.
    Chen F, Fu Y. Dynamic detection of unknown malicious executables base on api interception[C]. Database Technology and Applications, 2009 First International Workshop on. IEEE, 2009: 329-332.

    Firdausi I, Lim C, Erwin A, et al. Analysis of machine learning techniques used in behavior-based malware detection[C]. Advances in Computing, Control and Telecommunication Technologies (ACT), 2010 Second International Conference on. IEEE, 2010: 201-203.

    API Nair V P, Jain H, Golecha Y K, et al. MEDUSA: MEtamorphic malware dynamic analysis
    usingsignature from API[C]. Proceedings of the 3rd International Conference on Security of Information and Networks. ACM, 2010: 263-269.
    subsequences  
    Operation code Shabtai A, Moskovitch R, Feher C, et al. Detecting unknown malicious code by applying classification techniques on opcode patterns. Security Informatics, 2012, 1(1): 1-22.
    [17] Pai S, Di Troia F, Visaggio C A, et al. Clustering for malware classification. Journal of Computer Virology and Hacking Techniques, 2016: 1-13.
    n-grams  
    Graph Bonfante G, Kaczmarek M, Marion J Y. Architecture of a morphological malware detector. Journal in Computer Virology, 2009, 5(3): 263-270.
    Cesare S, Xiang Y, Zhou W. Control flow-based malware variant detection. IEEE Transactions on Dependable and Secure Computing, 2014, 11(4): 307–317.
    • 基于融合特征的恶意代码检测技术(各种集成特征类型的检测方法)
    分类特征(动态特征/静态特征) 参考文献
    Dynamic API
    operation code
    SantosI, DevesaJ, Brezo F, et al. Opem: A static-dynamic approach for
    machine learning based malware detection[C]. International Joint Conference CISIS’12-ICEUTE´ 12-SOCO´ 12 Special Sessions. Springer Berlin Heidelberg, 2013: 271-280

    Program behavior

    Static DLL、API

    Lu Y B, Din S C, Zheng C F, et al. Using multi-feature and classifier ensembles to improve malware detection. Journal of CCIT, 2010, 39(2): 57-72.

    API call sequence

    PE format

    Guo S, Yuan Q, Lin F, et al. A malware detection algorithm based on multi-view fusion. Neural Information Processing, Models and Applications, Springer Berlin Heidelberg, 2010: 259-266.

    Krawczyk B, Woźniak M. Evolutionary Cost-Sensitive Ensemble for Malware
    Detection. International Joint Conference SOCO’14-CISIS’14-ICEUTE’14, Springer International Publishing, 2014: 433-442.

    Dynamic API
    Static API
    Ozdemir M, Sogukpinar I. An Android Malware Detection Architecture based on Ensemble Learning. Transactions on Machine Learning and Artificial Intelligence, 2014, 2(3): 90-106.
    operation code
    byte code
    Bai, Jinrong, and Junfeng Wang. Improving malware detection using multiview ensemble learning. Security and Communication Networks 9.17 (2016): 4227-4241.

    参考文献:

    [1] Bo Yun Zhang.Survey on Malicious Code Intelligent Detection Techniques

    [2]Smita Ranveer,Swapnaja Hiray.Comparative Analysis of Feature Extraction Methods of Malware Detection

    展开全文
  • 前文从总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。这篇文章将介绍基于机器学习的恶意代码检测技术,主要参考郑师兄的...

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。换专业确实挺难的,逆向分析也是块硬骨头,但我也试试,看看自己未来四年究竟能将它学到什么程度,漫漫长征路,偏向虎山行。享受过程,一起加油~

    前文从总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。这篇文章将介绍基于机器学习的恶意代码检测技术,主要参考郑师兄的视频总结,包括机器学习概述与算法举例、基于机器学习方法的恶意代码检测、机器学习算法在工业界的应用。同时,我再结合自己的经验进行扩充,详细分享了基于机器学习的恶意代码检测技术,基础性文章,希望对您有所帮助~

    作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔!

    作者的github资源:

    从2019年7月开始,我来到了一个陌生的专业——网络空间安全。初入安全领域,是非常痛苦和难受的,要学的东西太多、涉及面太广,但好在自己通过分享100篇“网络安全自学”系列文章,艰难前行着。感恩这一年相识、相知、相趣的安全大佬和朋友们,如果写得不好或不足之处,还请大家海涵!

    接下来我将开启新的安全系列,叫“系统安全”,也是免费的100篇文章,作者将更加深入的去研究恶意样本分析、逆向分析、内网渗透、网络攻防实战等,也将通过在线笔记和实践操作的形式分享与博友们学习,希望能与您一起进步,加油~

    前文分析:

    声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。该样本不会分享给大家,分析工具会分享。(参考文献见后)


    随着互联网的繁荣,现阶段的恶意代码也呈现出快速发展的趋势,主要表现为变种数量多、传播速度快、影响范围广。在这样的形势下,传统的恶意代码检测方法已经无法满足人们对恶意代码检测的要求。比如基于签名特征码的恶意代码检测,这种方法收集已知的恶意代码,以一种固定的方式生成特定的签名,维护这样的签名库,当有新的检测任务时,通过在签名库中检索匹配的方法进行检测。暂且不说更新、维护签名库的过程需要耗费大量的人力物力,恶意代码编写者仅仅通过混淆、压缩、加壳等简单的变种方式便可绕过这样的检测机制。

    为了应对上面的问题,基于机器学习的恶意代码检测方法一直是学界研究的热点。由于机器学习算法可以挖掘输入特征之间更深层次的联系,更加充分地利用恶意代码的信息,因此基于机器学习的恶意代码检测往往表现出较高的准确率,并且一定程度上可以对未知的恶意代码实现自动化的分析。下面让我们开始进行系统的介绍吧~


    一.机器学习概述与算法举例

    1.机器学习概念

    首先介绍下机器学习的基本概念,如下图所示,往分类模型中输入某个样本特征,分类模型输出一个分类结果。这就是一个标准的机器学习检测流程。机器学习技术主要研究的就是如何构建中间的分类模型,如何构造一组参数、构建一个分类方法,通过训练得到模型与参数,让它在部署后能够预测一个正确的结果。

    在这里插入图片描述

    训练是迭代样本与标签对的过程,如数学表达式 y=f(x) ,x表示输入的样本特征向量,y表示标签结果,使用(x,y)对f进行一个拟合的操作,不断迭代减小 y’ 和 y 的误差,使得在下次遇到待测样本x时输出一致的结果。该过程也称为学习的过程。


    构造分类方法
    构造分类方法是机器学习中比较重要的知识,如何设计一种分类模型将f(x)表达出来。比如:

    • 超平面(SVM)
      在二维坐标轴中,可以设计一条直线将空间内分布的散点区分开来,如下图所示。
    • softmax
      另外一种方法是构造类别概率输出(softmax),比如归一化处理得到A+B=1,最后看A和B的概率,谁的概率大就属于哪一类,该方法广泛使用于神经网络的最后结果计算中。

    在这里插入图片描述



    2.机器学习算法举例

    作者之前Python系列分享过非常多的机器学习算法知识,也推荐大家去学习:机器学习系列文章(共48篇)

    (1) 支持向量机(SVM)
    首先存在很多训练数据点,包括直线上方和下方两个簇,支持向量机的方法是寻找这两个簇分类的超平面。如何寻找这个超平面呢?支持向量机先求解每个簇离对面最近的点,然后通过拟合方法计算出两边簇的边界,最终计算出中间的平面,其基本思路就是这样,而这些点就是支持向量。支持向量机往往用来处理超高维的问题,也不一定是类似直线的平面,也可能是圆形的分类边界。

    在这里插入图片描述

    (2) 神经网络(Neural Network)
    神经网络基本网络结构如下图所示,包括三个常用层:输入层、隐藏层、输出层。在神经网络中,最基本的单位是人工神经元,其基本原理是将输入乘以一个权重,然后将结果相加进行激活,最后得到一个概率的输出,其输出结果谁大就预测为对应的结果。推荐作者的文章:神经网络和机器学习基础入门分享

    在这里插入图片描述

    (3) 深度卷积神经网络
    普通的神经网络通常只包括一个隐藏层,当超出之后可以称为深度神经网络。现在比较流行的包括CNN、RNN、RCNN、GRU、LSTM、BiLSTM、Attention等等。其中,卷积神经网络常用于处理图片,应用了卷积技术、池化技术,降低图片维度得到很好的结果。

    在这里插入图片描述

    如上图所示,将手写数字“3”(32x32个像素)预测为最终的数字0-9的结果。模型首先使用了6个卷积核,对原始图片进行固定的计算,如下5x5的图像卷积操作后变成了 3x3 的图像。其原理是将特征提取的过程放至神经网络中训练,从而得到比较好的分类结果。卷积之后进行了一个2x2的下采样过程,将图片进一步变小(14x14),接着降维处理,一般采用平均池化或最大池化实现,选定一个固定区域,求取该区域的平均值或最大值,然后将向量进行组合,得到一个全连接网络,最终完成分类任务。
    参考作者前文:[Python人工智能] 四.神经网络和深度学习入门知识

    在这里插入图片描述

    深度神经网络是深度学习中模型,它主要的一个特点是将特征提取的过程放入到真个训练中,之前对于图片问题是采用手工特征,而CNN让在训练中得到最优的特征提取。

    在这里插入图片描述



    3.特征工程-特征选取与设计

    上面介绍了机器学习和深度学习方法,但是这些方法往往是该研究领域的学者所提出,而在恶意代码检测中,往往我们的主要工作量是一些特征的提取和特征的设计,这里面涉及一个特征工程的概念。

    特征工程:选取特征,设计特征的过程。
    例如,在路边预测一个人是否是学生,假设我们不能去询问,只能通过外表去预测他是否是一个学生,包括:年龄(低于15岁就是学生)、性别(不影响学生)、衣着(穿着活泼年轻的可能是学生,如果穿着西装可能性就小)等等,然后根据这些特征输入机器学习模型,从而判断是否是学生。

    在这些特征中,显然有些特征是非常重要的,比如年龄和衣着。数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限,所以如何选取特征是机器学习的一个关键性因素。再比如淘宝的推荐系统,购买电脑推荐鼠标、键盘等。

    当然,上面仅仅是一个比较简单的问题,当我们推广到恶意代码检测等复杂问题时,如果不了解这个领域,可能就会导致模型的结果不理想。

    在这里插入图片描述


    特征设计——人脸识别
    局部二值特征(Local Binary Pattern),再举一个人脸识别例子,深度学习出来之前,图片分类都是使用一些特征算子提取特征的。比如存在一个3x3的窗口,我们取阈值5,比5小的窗口置为0,其他的置为1,然后顺时针转换为一个8位的二进制数字,对应的十进制就是19。显然,LBP特征进行了一个降维的操作,左边的图片显示了人脸识别不应该受光照影响,不同光照的图片进行LBP特征提取后,显示结果都一样。

    在这里插入图片描述

    该部分的最后,作者也推荐一些书籍供大家学习。

    • 《统计学习方法》李航,数学理论较多
    • 《机器学习》周志华,西瓜书,较通俗透彻
    • 《Deep Learning》Ian Goodfellow,花书,深度学习内容全面
    • 《精通特征工程》结合恶意代码特征学习,包括如何向量化

    再看看我的桌面,这些都是作者最近看的一些安全、AI类书籍,希望也您喜欢~

    在这里插入图片描述



    二.基于机器学习方法的恶意代码检测

    1.恶意代码的静态动态检测

    (1) 特征种类

    首先,特征种类如果按照恶意代码是否在用户环境或仿真环境中运行,可以划分为静态特征和动态特征。

    • 静态特征: 没有真实运行的特征
      字节码:二进制代码转换成了字节码,比较原始的一种特征,没有进行任何处理
      IAT表:PE结构中比较重要的部分,声明了一些函数及所在位置,便于程序执行时导入,表和功能比较相关
      Android权限表:如果你的APP声明了一些功能用不到的权限,可能存在恶意目的,如手机信息
      可打印字符:将二进制代码转换为ASCII码,进行相关统计
      IDA反汇编跳转块:IDA工具调试时的跳转块,对其进行处理作为序列数据或图数据

    在这里插入图片描述

    • 动态特征: 相当于静态特征更耗时,它要真正去执行代码
      API调用关系:比较明显的特征,调用了哪些API,表述对应的功能
      控制流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类
      数据流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类

    举一个简单的控制流图(Control Flow Graph, CFG)示例。

    if (x < y)
    {
       y = 0;
       x = x + 1;
    }
    else
    {
       x = y;
    }
    

    在这里插入图片描述


    (2) 常见算法

    普通机器学习方法和深度学习方法的区别是,普通机器学习方法的参数比较少,相对计算量较小。

    • 普通机器学习方法(SVM支持向量机、RF随机森林、NB朴素贝叶斯)
    • 深度神经网络(Deep Neural Network)
    • 卷积神经网络(Convolution Neural Network)
    • 长短时记忆网络(Long Short-Term Memory Network)
      针对序列模型进行建模,包含上下文依赖关系,比如“我 是 一名 大学生”中的“我”和“是”前后出现的条件概率更高。广泛应用于文本分类、语音识别中,同样适用于恶意代码检测。
    • 图卷积网络 (Graph Convolution Network)
      比较新兴的方法,将卷积应用到图领域,图这种数据类型比较通用,非图数据比较容易转换成图数据,CCF论文中也已经应用到恶意代码检测中。。


    2.静态特征设计举例

    首先分享一个静态特征的例子,该篇文章发表在2015年,是一篇CCF C类会议文章。

    • Saxe J,Berlin K. Deep neural network based malware detection using two dimensional binary program features[C] // 2015 10th International Conference on Malicious and Unwanted Software(MALWARE). IEEE, 2015: 11-20

    在这里插入图片描述

    文章的主要方法流程如下所示:

    在这里插入图片描述

    该模型包含三个步骤:

    • 特征抽取
      使用了四种特征
    • 特征抽取输入到深度神经网络
      包含两层隐含层的深度神经网络
    • 分数校正

    特征抽取
    特征提取包括以下四种特征:

    在这里插入图片描述

    • 字节-熵对统计特征:统计滑动窗口的(字节,熵)对个数
      在下图中,假设白框是一个二进制文件,其中红色框W是滑动窗口,二进制文件如果有100KB大小,每个滑动窗口是1024字节,那么滑动100次可以将整个二进制文件扫描完。如果对窗口内的数值进行计算,首先计算它的熵值,熵是信息论的概念(下图中的E),它描述了一个数组的随机性,熵越大其随机性越大。在图中,每一个滑动窗口都有固定的熵值,包含了1024字节,标记为(Bi,Ewi),最后滑动得到100x1024的字节熵对。

      在这里插入图片描述
      统计最后滑动得到100x1024的字节熵对个数,得到如下图所示的二维直方图结果,横坐标是熵值最小值到最大值的范围,纵坐标是一个字节转换成10进制的范围0-256,最终得到字节熵对分布的范围,再将16x16维的二维数组转换成1x256维的特征向量。

      在这里插入图片描述

    • PE头IAT特征:hashDLL文件名与函数名为[0-255)范围
      第二种特征是PE头IAT特征。它的计算工程是将PE头的IAT表里面的文件名和函数名hash到0到255范围,如果某个文件出现某个函数,就将该位置为1,当然每位对应表示的函数是固定的,最终得到256数组。

    • 可打印字符:统计ASCII码的个数特征
      可打印字符和字节熵对比较相似,这里推荐大家阅读原文。

    • PE元信息:将PE信息抽取出来组成256维数组,例如编译时间戳
      PE元信息是将PE信息的数值型信息抽取出来,组成256维数组,每一个数组的位置表示了一个固定的信息种类,再信息种类将对应的信息填入到元素的位置,比如编译时间戳。

    总共有上述四种特征,然后进行拼接得到4*256=1024维的数组,这个数组就代表一个样本的特征向量。假设有10000个样本,就有对应10000个特征向量。

    在这里插入图片描述

    得到特征向量之后,就开始进行模型的训练和测试,一般机器学习任务事先都有一个数据集,并且会分为训练数据集和测试数据集,按照4比1或9比1的比例进行随机划分。训练会将数据集和标签对输入得到恶意和非恶意的结果,再输入测试集得到最终结果。

    在这里插入图片描述

    下面是衡量机器学习模型的性能指标,首先是一幅混淆矩阵的图表,真实类别中1代表恶意样本,0代表非恶意样本,预测类别也包括1和0,然后结果分为:

    • TP:本身是恶意样本,并且预测识别为恶意样本
    • FP:本身是恶意样本,然而预测识别为非恶意样本,这是误分类的情况
    • FN:本身是非恶意样本,然而预测识别为恶意样本,这是误分类的情况
    • TN:本身是非恶意样本,并且预测识别为非恶意样本

    然后是Accuracy(准确率)、Precision(查准率)、Recall(查全率)、F1等评价指标。

    在这里插入图片描述

    通常Accuracy是一个评价恶意代码分类的重要指标,但本文选择的是AUC指标,为什么呢?
    假设我们模型的效果非常差,它会将所有本测试样本标记为恶意样本,这样我有两个数据集,一个样本包括100个数据(99个恶意样本、1个非恶意样本),另一个样本包括50个数据(50个恶意样本、50个非恶意样本),如果我单纯的计算ACC,第一个样本的结构是0.99,显然不符合客观的描述,不能用来评价性能高低的,并且这种情况是很容易产生的。所以论文中广泛采用AUC指标。

    在这里插入图片描述

    AUC指标包括TPRate和FPRate,然后得到一个点,并计算曲线以下所包围的面积即为AUC指标。其中,TPRate表示分类器识别出正样本数量占所有正样本数量的比值,FPRate表示负样本数量站所有负样本数量的比值。举个例子,我们撒网打鱼,一网下去,网中好鱼的数量占池子中所有好鱼的数量就是TPRate,而FPRate表示一网下去,坏鱼的数量占整个池子中所有坏鱼的数量比例,当然FPRate越小越好。最好的结果就是TPRate为1,而FPRate为0,此时全部分类预测正确。

    在这里插入图片描述

    该论文测试了六种特征集合,其计算的TPR和AUC值如下所示。

    在这里插入图片描述



    3.经典的图片特征举例

    下面介绍另一种比较新兴经典的方法,就是图片特征。但一些安全界的人士会认为这种特征不太好,但其方法还是比较新颖的。

    它的基本方法是按照每8位一个像素点将恶意软件的二进制文件转换为灰度图片,图片通常分为R、G、B通道,每个8位像素点表示2^8,最终每隔8位生成一个像素点从而转换为如下图所示的灰度图片。图片分别为Obfuscator_ACY家族、Lolipop家族、ramnit家族恶意软件样例,这些样例由微软kaggle比赛公布的数据生成。

    这是因为对于某些恶意样本作者来说,他只是使用方法简单的修改特征码,从而每个家族的图片比较相似,最终得到了较好的结果。

    在这里插入图片描述



    4.动态特征设计举例

    接下来分享一个动态特征的例子,该篇文章发表在2016年,文章的会议一般,但比较有代表性。

    • Kolosnjaji B,Zarras A,Webster G,et al. Deep learning for classification of malware system call sequences[C] // Australasian Joint Conference on Artificial Intelligence. Springer,Cham,2016:137-149.

    下图展示了该方法的整体流程图。PE文件进入后,直接进入Cuckoo沙箱中,它是一个开源沙箱,在学术论文中提取动态特征比较通用;接着进行进行预处理操作,将文本转换成向量表示的形式,比如提取了200个动态特征,可以使用200维向量表示,每个数组的位置表示对应API,再将所得到的序列输入卷积神经网络LSTM进行分类,最终得到家族分类的结构。

    • Cuckoo沙箱
    • LSTM

    在这里插入图片描述

    在这里插入图片描述

    下图展示了实验的结构,其指标是高于单纯的神经网络和卷积网络的效果更好,这是一篇比较基础的文章。

    在这里插入图片描述



    5.深度学习静态检测举例

    下面再看一个深度学习静态检测的文章。

    • Coull S E,Gardner C. Activation Analysis of Byte-Based Deep Neural Network for Malware Classification[C] // 2019 IEEE Security and Privacy Workshops(SPW). IEEE,2019:21-27.

    这篇文章是火眼公司的两名员工发布的,所使用的也是静态检测特征,其流程如下所示。

    • 首先,原始的字节码特征直接输入一个Byte Embedding层(词嵌入),对单个元素进行向量化处理,将字节码中的每个字节表示成一个固定长度的向量,从而更好地将字节标记在一个空间维度中。词嵌入技术广泛应用于自然语言处理领域,比如“女人”和“女王”关系比较紧密,这篇文章的目的也是想要在恶意代码中达到类似的效果。
    • 然后将矩阵输入到卷积和池化层中,比如存在一个100K字节的二进制文件,得到100102410矩阵输入卷积神经网络中,最后通过全连接层完成恶意和非恶意的分类任务。

    在这里插入图片描述

    Fireeye使用了三个数据集进行训练和测试,其训练的模型分类效果结果如下表所示,博客Small、Baseline、Baseline+Dropout模型,其网络结构是一样的,其中Small表示使用小的数据集,Baseline表示使用大的数据集,Dropout表示对训练好的神经网络中随机丢弃一些神经元,从而抑制过拟合现象,也是比较常用的深度学习技术。

    在这里插入图片描述

    这篇文章的重点是对深度学习的解释性,就是解释深度学习是否能学习到恶意软件的本质特性。下图展示了不同特征对于分类结果的影响,横坐标是Offset偏移,通常用Offset记录字节,从0到右边也对应文件大小,前面可能就是PE头,中间有各种段。

    它的横纵坐标分别表示了某些特征对于恶意性分类比较重要,还是非恶意性比较重要。如果它的校验和(CheckSum)是0,就对恶意性分类比较重要,这表示深度学习并没有学习到恶意软件为什么是恶意的,只是通过统计学去发现恶意软件和非恶意软件差别最大部分,以此进行数据建模。

    深度学习进行恶意软件检测的问题:没有学习到恶意和非恶意特征,而是学习到区别的统计差异,而这种差异如果被黑客利用是可以被规避的。

    在这里插入图片描述



    6.优缺点

    静态特征

    • 优点
      特征提取速度快
      特征种类丰富,可以组合多种特征向量
    • 缺点
      易受加壳、加密、混淆干扰
      无法防范无文件攻击,难以反映恶意软件行为的恶意性

    动态特征

    • 优点
      提供恶意软件的动作,调用API
      规避一些静态的混淆对抗方法
    • 缺点
      反虚拟化,延时触发等技术的对抗
      测试时间较长,单个样本2-3分钟(Cuckoo)

    最后给出推荐资料:



    7.静态分析和动态分析对比

    下面简单总结静态分析和动态分析与深度学习结合的知识,该部分内容源自文章:深度学习在恶意代码检测 - mbgxbz,在此感谢作者,觉得非常棒,故引用至此!谢谢~

    恶意代码的检测本质上是一个分类问题,即把待检测样本区分成恶意或合法的程序。基于机器学习算法的恶意代码检测技术步骤大致可归结为如下范式:

    • 采集大量的恶意代码样本以及正常的程序样本作为训练样本;
    • 对训练样本进行预处理,提取特征;
    • 进一步选取用于训练的数据特征;
    • 选择合适的机器学习算法训练分类模型;
    • 通过训练后的分类模型对未知样本进行检测。

    深度学习作为机器学习的一个分支,由于其可以实现自动化的特征提取,近些年来在处理较大数据量的应用场景,如计算机视觉、语音识别、自然语言处理时可以取得优于传统机器学习算法的效果。随着深度学习在图像处理等领域取得巨大的成功,许多人将深度学习的方法应用到恶意软件检测上来并取得了很好的成果。实际上就是用深度神经网络代替上面步骤中的人为的进一步特征提取和传统机器学习算法。根据步骤中对训练样本进行预处理的方式,可以将检测分为静态分析与动态分析:

    • 静态分析不运行待检测代码,而是通过直接对程序(如反汇编后的代码)进行统计分析得到数据特征
    • 动态分析则在虚拟机或沙箱中执行程序,获取程序执行过程中所产生的数据(如行为特征、网络特征),进行检测和判断。

    (1) 静态分析
    一般来说,在绝大部分情形下我们无法得到恶意程序的源代码。因此,常用的静态特征包括程序的二进制文件、从使用IDA Pro等工具进行反汇编得到的汇编代码中提取的汇编指令、函数调用等信息,另外基于字符串和基于API调用序列的特征也是比较常见的。文献[i]提出一种对PE文件的恶意程序检测方法,提取PE文件四个类型的特征:字节频率、二元字符频率、PE Import Table以及PE元数据特征,采用包含两个隐藏层的DNN作为分类模型,但是为了提取长度固定的输入数据,他们丢弃了PE文件中的大部分信息。文献[ii]使用CNN作为分类器,通过API调用序列来检测恶意软件,其准确率达到99.4%,远高于传统的机器学习算法。然而,当恶意代码存在混淆或加壳等情形时,对所选取的静态特征具有较大的影响,因此静态分析技术本身具有一定的局限性。

    (2) 动态分析
    利用虚拟机或沙箱执行待测程序,监控并收集程序运行时显现的行为特征,并根据这些较为高级的特征数据实现恶意代码的分类。一般来讲,行为特征主要包括以下几个方面:文件的操作行为;注册表键值的操作行为;动态链接库的加载行为;进程访问的操作行为;系统服务行为;网络访问请求;API调用。文献[iii]通过API调用序列记录进程行为,使用RNN提取特征向量,随后将其转化为特征图像使用CNN进行进一步的特征提取,提取其可能包含的局部特征并进行分类。文献[iv]提出了一个基于动态分析的2层架构的恶意软件检测系统:第1层是RNN,用于学习API事件的特征表示;第2层是逻辑回归分类器,对RNN学习的特征进行分类,然而这种方法的误报率较高。文献[v]提出了用LSTM和GRU代替传统RNN进行特征的提取,并提出了使用CNN的字符级别的检测方案。文献[vi]提出在恶意软件运行的初期对其进行恶意行为的预测,他们使用RNN进行PE文件检测,根据恶意代码前4秒的运行行为,RNN对恶意软件的预测准确率是91%,随着观察的运行时间的增长,RNN的预测准确率也随之提高。可以看到,相对于静态分析,动态分析的过程更加复杂耗时,相对而言采用了较高层次的特征,因此可解释性也较差。


    在网络攻击趋于精细化、恶意代码日新月异的今天,基于深度学习算法的恶意代码检测中越来越受到学术界和众多安全厂商的关注。但这种检测技术在现实应用中还有很多尚未解决的问题。例如上面提到的静态分析与动态分析存在的不足,现在发展的主流方向是将静态、动态分析技术进行结合,使用相同样本的不同层面的特征相对独立地训练多个分类器,然后进行集成,以弥补彼此的不足之处。

    除此之外,深度学习算法的可解释性也是制约其发展的一个问题,当前的分类模型一般情况下作为黑盒被加以使用,其结果无法为安全人员进一步分析溯源提供指导。我们常说攻防是息息相关的,螺旋上升的状态。既然存在基于深度学习的恶意代码检测技术,那么自然也有基于深度学习的或者是针对深度学习的恶意代码检测绕过技术,这也是近年来研究的热点问题,那么如何提高模型的稳健性,防止这些定制化的干扰项对我们的深度学习算法产生不利的影响,对抗生成网络的提出或许可以给出答案。



    三.机器学习算法在工业界的应用

    首先普及一个概念——NGAV。NGAV(Next-Gen AntiVirus)是下一代反病毒软件简称,它是一些厂商提出来的新的病毒检测概念,旨在用新技术弥补传统恶意软件检测的短板。

    • 多家杀毒引擎厂商将机器学习视作NGAV的重要技术,包括McAfee[11], Vmware[9], CrowdStrike[10], Avast[6]
    • 越来越多的厂商开始关注机器学习技术,并发表相关的研究(卡巴斯基[7],火眼[8]),火眼还是用机器学习技术对APT进行分析(组织相似度溯源)

    越来越多的安全厂商将机器学习视为反病毒软件的一个关键技术,但需要注意,NGAV并不是一个清晰的定义,你没法去界定一个反病毒软件是上一代产品还是下一代产品。衡量反病毒软件的性能只有对恶意软件的检测率、计算消耗、误报率等,我们只是从现状分析得到越来越多安全领域结合了机器学习。

    作为安全从业人员或科研人员,机器学习技术也是我们必须要关注的一个技术。

    在这里插入图片描述

    机器学习算法需要解决的问题如下:

    • 算力问题
      机器学习和深度学习算法需要大量的算力,如果我们在本地部署还需要GPU的支持,这样就带来了一个硬件配置问题,所以如何减小模型的size及提升模型的检测能力是一个关键性的问题。

    • 大规模的特征数据
      特征对于分类训练非常关键,如何抽取这些数据特征呢?

    • 训练的模型是可解释的
      这个问题可以说是机器学习算法和深度学习算法在反病毒软件应用中最关键的一个问题,病毒的对抗是黑客与安全从业人员的对抗的前线,如果我们训练的模型是不可解释的,那么一旦被黑客发现某些规则存在的弱点,他们就可以针对这些弱点设计免杀方法,从而绕过造成重大安全隐患。另一方面,如果机器学习算法是不可解释黑盒的,用户他也是不可接受的,难以起到保护重要。

    • 误报需要维持极度的低水平
      误报是反病毒软件用户体验的一个重要指标,传统的特征码技术、主动防御技术都具有误报低的特性,而机器学习是一个预测技术,会存在一些误报,如何避免这些误报并且提高检测的查全率也是重要的问题。

    • 算法需要根据恶意软件作者的变化快速适应新的检测特征
      这也是关键性问题,在机器学习模型应用中,恶意软件是不断变化的,而机器学习算法部署到本地中,它的参数是不变的,所以在长时间的恶意演化中其模型或参数不再适用,其检测结果会有影响。目前,云沙箱、在线更新病毒库特征是一些解决方法。

    最后作者总结下机器学习算法的优势,具体如下:
    (1) 传统方法

    • 优点:速度快,消耗计算资源少
      只需要将特征码提取出来,上传至云端进行检测;相对于机器学习大量的矩阵计算,其计算资源消耗少。
    • 缺点:容易绕过,对于未知恶意软件检出率低
      使用加壳、加密、混淆容易绕过,对于未知软件不知道其特征码,只能通过启发式方法、主动防御济宁检测,相对于机器学习检测率要低。

    (2) 机器学习方法

    • 优点:能够建立专家难以发现的规则与特征
      发现的规则和特征很可能是统计学特征,而不是恶意和非恶意的特征,所以这些特征很容易被黑客进行规避,这既是优点也是缺点,虽然有缺陷,但也能发现恶意样本的关联和行为。
    • 缺点:资源消耗大,面临漂移问题,需要不断更新参数


    四.总结

    写到这里,这篇文章就介绍完毕,希望对您有所帮助,最后进行简单的总结:

    • 机器学习方法与传统方法不是取代与被取代的关系,而是相互补充,好的防御系统往往是多种技术方法的组合。
    • 机器学习的检测方法研究还不充分,安全领域的专有瓶颈与人工智能研究的共有瓶颈均存在、
    • 机器学习算法本身也面对一些攻击方法的威胁,比如对应抗本。

    对抗样本指的是一个经过微小调整就可以让机器学习算法输出错误结果的输入样本。在图像识别中,可以理解为原来被一个卷积神经网络(CNN)分类为一个类(比如“熊猫”)的图片,经过非常细微甚至人眼无法察觉的改动后,突然被误分成另一个类(比如“长臂猿”)。再比如无人驾驶的模型如果被攻击,Stop标志可能被汽车识别为直行、转弯。

    在这里插入图片描述
    在这里插入图片描述

    学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅、师兄师弟、师姐师妹们的教导,深知自己很菜,得努力前行。

    在这里插入图片描述

    《珈国情》
    明月千里两相思,
    清风缕缕寄离愁。
    燕归珞珈花已谢,
    情满景逸映深秋。
    最感恩的永远是家人的支持,知道为啥而来,知道要做啥,知道努力才能回去。
    夜已深,虽然笨,但还得奋斗。

    欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。

    (By:Eastmount 2020-07-24 星期六 夜于东西湖 http://blog.csdn.net/eastmount/ )



    参考文献:

    • [1] Saxe J, Berlin K. Deep neural network based malware detection using two dimensional binary program features[C]//2015 10th International Conference on Malicious and Unwanted Software (MALWARE). IEEE, 2015: 11-20.

    • [2] https://www.kaggle.com/c/malware-classification

    • [3] https://www.fireeye.com/blog/threat-research/2018/12/what-are-deep-neural-networks-learning-about-malware.html

    • [4]Kolosnjaji B, Zarras A, Webster G, et al. Deep learning for classification of malware system call sequences[C]//Australasian Joint Conference on Artificial Intelligence. Springer, Cham, 2016: 137-149.

    • [5] Wüchner T, Cisłak A, Ochoa M, et al. Leveraging compression-based graph mining for behavior-based malware detection[J]. IEEE Transactions on Dependable and Secure Computing, 2017, 16(1): 99-112.

    • [6]https://www.avast.com/technology/malware-detection-and-blocking

    • [7] https://media.kaspersky.com/en/enterprise-security/Kaspersky-Lab-Whitepaper-Machine-Learning.pdf

    • [8] https://www.fireeye.com/blog/threat-research/2019/03/clustering-and-associating-attacker-activity-at-scale.html

    • [9] https://www.carbonblack.com/resources/definitions/what-is-next-generation-antivirus/

    • [10] https://www.crowdstrike.com/epp-101/next-generation-antivirus-ngav/

    • [11] https://www.mcafee.com/enterprise/en-us/security-awareness/endpoint/what-is-next-gen-endpoint-protection.html

    • [i] Saxe, J., & Berlin, K. (2015, October). Deep neural network-based malware detection using two-dimensional binary program features. In 2015 10th International Conference on Malicious and Unwanted Software (MALWARE) (pp. 11-20). IEEE.

    • [ii] Nix, R., & Zhang, J. (2017, May). Classification of Android apps and malware using deep neural networks. In 2017 International joint conference on neural networks (IJCNN) (pp. 1871-1878). IEEE.

    • [iii] Tobiyama, S., Yamaguchi, Y., Shimada, H., Ikuse, T., & Yagi, T. (2016, June). Malware detection with deep neural network using process behavior. In 2016 IEEE 40th Annual Computer Software and Applications Conference (COMPSAC) (Vol. 2, pp. 577-582). IEEE.

    • [iv] Pascanu, R., Stokes, J. W., Sanossian, H., Marinescu, M., & Thomas, A. (2015, April). Malware classification with recurrent networks. In 2015 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 1916-1920). IEEE.

    • [v] Athiwaratkun, B., & Stokes, J. W. (2017, March). Malware classification with LSTM and GRU language models and a character-level CNN. In 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 2482-2486). IEEE.

    • [vi] Athiwaratkun, B., & Stokes, J. W. (2017, March). Malware classification with LSTM and GRU language models and a character-level CNN. In 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 2482-2486). IEEE.

    展开全文
  • 这是作者网络安全自学教程...这篇文章将详细总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。基础性文章,希望对您有所帮助~

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了威胁情报分析,通过Python抓取FreeBuf网站“APT”主题的相关文章。这篇文章将详细总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。基础性文章,希望对您有所帮助~

    自全球第一个计算机病毒出现后,人们通过与病毒长期的斗争,积累了大量反病毒经验,掌握了大量实用的反病毒技术,并研制出一系列优秀的反病毒产品,主要用于病毒的防护、检测及其清除等。病毒的检测技术主要包括特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术、主动防御技术,以及新兴的云查杀技术等。个人用户也可以通过经验、安全检测工具和反病毒软件来检查计算机是否感染病毒,或是采用沙箱及相关静、动态分析手段来对病毒进行深入分析。

    作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~


    作者的github资源:
    软件安全:https://github.com/eastmountyxz/Software-Security-Course
    其他工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
    Windows-Hacker:https://github.com/eastmountyxz/Windows-Hacker-Exp


    声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。

    前文学习:
    [网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
    [网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
    [网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
    [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
    [网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
    [网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
    [网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
    [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
    [网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
    [网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
    [网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
    [网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
    [网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
    [网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
    [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
    [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
    [网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
    [网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
    [网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
    [网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
    [网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
    [网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
    [网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
    [网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
    [网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
    [网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
    [网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
    [网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
    [网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
    [网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
    [网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
    [网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
    [网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
    [网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
    [网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
    [网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
    [网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识(一)
    [网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
    [网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
    [网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
    [网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
    [网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
    [网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
    [网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
    [网络安全自学篇] 四十五.病毒详解及批处理病毒制作(自启动、修改密码、定时关机、蓝屏、进程关闭)
    [网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
    [网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
    [网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客常用DOS命令
    [网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
    [网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
    [网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
    [网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
    [网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
    [网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
    [网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell
    [网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
    [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
    [网络安全自学篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反弹shell
    [网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权
    [网络安全自学篇] 六十.Cracer第八期——(2)五万字总结Linux基础知识和常用渗透命令
    [网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
    [网络安全自学篇] 六十二.PE文件逆向之PE文件解析、PE编辑工具使用和PE结构修改(三)
    [网络安全自学篇] 六十三.hack the box渗透之OpenAdmin题目及蚁剑管理员提权(四)
    [网络安全自学篇] 六十四.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现及详解
    [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)
    [网络安全自学篇] 六十六.Vulnhub靶机渗透之DC-1提权和Drupal漏洞利用(二)
    [网络安全自学篇] 六十七.WannaCry勒索病毒复现及分析(一)Python利用永恒之蓝及Win7勒索加密
    [网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析
    [网络安全自学篇] 六十九.宏病毒之入门基础、防御措施、自发邮件及APT28样本分析
    [网络安全自学篇] 七十.WannaCry勒索病毒复现及分析(三)蠕虫传播机制分析及IDA和OD逆向
    [网络安全自学篇] 七十一.深信服分享之外部威胁防护和勒索病毒对抗
    [网络安全自学篇] 七十二.逆向分析之OllyDbg动态调试工具(一)基础入门及TraceMe案例分析
    [网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制全网源码详细解读
    [网络安全自学篇] 七十四.APT攻击检测溯源与常见APT组织的攻击案例
    [网络安全自学篇] 七十五.Vulnhub靶机渗透之bulldog信息收集和nc反弹shell(三)
    [网络安全自学篇] 七十六.逆向分析之OllyDbg动态调试工具(二)INT3断点、反调试、硬件断点与内存断点
    [网络安全自学篇] 七十七.恶意代码与APT攻击中的武器(强推Seak老师)
    [网络安全自学篇] 七十八.XSS跨站脚本攻击案例分享及总结(二)
    [网络安全自学篇] 七十九.Windows PE病毒原理、分类及感染方式详解
    [网络安全自学篇] 八十.WHUCTF之WEB类解题思路WP(代码审计、文件包含、过滤绕过、SQL注入)
    [网络安全自学篇] 八十一.WHUCTF之WEB类解题思路WP(文件上传漏洞、冰蝎蚁剑、反序列化phar)
    [网络安全自学篇] 八十二.WHUCTF之隐写和逆向类解题思路WP(文字解密、图片解密、佛语解码、冰蝎流量分析、逆向分析)
    [网络安全自学篇] 八十三.WHUCTF之CSS注入、越权、csrf-token窃取及XSS总结
    [网络安全自学篇] 八十四.《Windows黑客编程技术详解》之VS环境配置、基础知识及DLL延迟加载详解
    [网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
    [网络安全自学篇] 八十六.威胁情报分析之Python抓取FreeBuf网站APT文章(上)


    前文欣赏:
    [渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
    [渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
    [渗透&攻防] 三.数据库之差异备份及Caidao利器
    [渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包



    一.恶意代码检测的对象和策略

    恶意代码的检测是将检测对象与恶意代码特征(检测标准)进行对比分析,定位病毒程序或代码,或检测恶意行为。

    首先,我们介绍恶意代码检测对象。检测对象主要包括:

    • 引导扇区
    • 文件系统中可能带毒的文件:安全公司的产品主要针对文件进行病毒检测
    • 内存空间
    • 主板BIOS:系统启动时涉及的代码
    • 网络流量:网络交互也是检测对象,如VPS、VDS
    • 系统行为

    在这里插入图片描述

    接着我们主要介绍三类检测对象。

    (1) 检测对象——引导扇区
    引导扇区之所以成为检测对象,是因为部分引导扇区是具有控制权的,它在系统启动、执行过程中会执行相应代码,并且这些代码可能会被恶意软件所篡改。主要包括:

    • 硬盘主引导扇区
    • 硬盘操作系统引导扇区
    • 可移动磁盘引导扇区

    检测目标:

    • 引导区病毒、MBR木马等

    (2) 检测对象——可能带毒的文件
    有些文件是正常被感染所致,有些文件是独立存在系统中的。

    • 可执行程序
      .exe;.dll;.com;.scr… (最普遍的检测对象)
    • 数据文件
      .doc;.xls;.ppt;.pdf; .mp3;.avi… (比如宏病毒、Office文档都是检测对象)
    • 脚本文件
      .js;.vbs;.php;.pl… (比如脚本病毒)
    • 网页文件
      .html;.htm;.asp… (比如网页挂马)

    (3) 检测对象——内存空间
    恶意代码在传染或执行时,必然要占有一定的内存空间,部分功能代码驻留在内存中。

    • 部分恶意代码仅存在于内存之中
      – 无文件存在,或已自行删除
      – 或被外部动态按需注入
    • 部分恶意代码仅在内存中被还原

    比如,部分恶意代码仅存在内存之中,它们是没有文件的,通过文件检测无法找到它们。另外,还有部分恶意代码最开始是有文件的,执行完毕之后会将自身进行删除,此时再去检测文件是检测不到的。也有一些木马程序,最开始执行时只是一个简单的主体程序,它所有的功能代码可能是通过Shellcode的方式进行远程注入,在文件中是找不到这些恶意代码的,此时就驻留在内存中,所以对内存中的代码进行检测是必要的。

    同时,还有一些木马程序会启动IE进程,它启动之后会将IE进程掏空,然后将自己的恶意代码植入其中,这种情况的恶意代码也是驻留在内存之中。除此之外,还有一些恶意代码本身在文件中,它是一种加密或压缩状态,只要到内存之后才会进行还原。参考作者前文:

    在这里插入图片描述


    介绍完检测对象之后,我们分享病毒的检测策略。

    (1) 专用检查技术:针对某个或某些特定已知恶意代码,比如反病毒软件所采用的文件特征值检测技术,发现病毒之后,对病毒的特征进行提取构建相关特征库。

    • 反病毒软件必须随着新病毒的不断出现而频繁更新病毒库版本。
    • 如文件特征值检测技术。

    (2) 通用检测技术:针对已知和未知恶意代码,根据恶意软件广义的特征进行检测,但这里面涉及了很多人为经验,如启发式扫描技术,对目标程序的特性和行为进行判断,给出判断结果或用户提示。

    • 广义特性描述或一般行为特征作为判定依据。
    • 如启发式扫描技术、主动防御技术等。


    二.特征值检测技术

    1.特征值检测技术概念

    病毒特征值:是反病毒软件鉴别特定计算机病毒的一种标志。通常是从病毒样本中提取的一段或多段字符串或二进制串。

    如下图所示,特征值检测技术和古代通J令类似,通J令中包含了这个人的特征,对于特征值检测技术也是一样,它首先需要对目标恶意程序进行特征及标志提取。另外,通J令可以通过相关机构或群众发现,而特征值检测技术依靠反病毒引擎来进行比对。

    在这里插入图片描述

    特征值检测技术的具体思路:

    • 获取样本 -> 提取样本特征 -> 更新病毒库 - > 查杀病毒

    早期样本比较少,可以通过人工提取特征,但随着样本增多之后,就不再通过单纯的人工方式提取,会将样本特征更新至病毒库,再下发到客户端的病毒检测设备中。最早的时候,整体病毒数量不多,比如KV300,当时就是拿着软盘每个月去到指定的地方进行病毒库的更新,后来逐渐通过网络的方式更新反病毒软件,每天都可以更新很多次,反病毒软件再根据反病毒引擎进行病毒的查杀。

    在这里插入图片描述


    2.特征值的提取选择及方法

    特征值的提取选择具体如下:

    • (1) 特定字串:从计算机病毒体内提取、为病毒所特有的特征串。如特定提示信息,特定签名信息等。
      例如大麻病毒的提示为:“Your PC is now stoned”等。

    • (2) 感染标记:病毒为避免重复感染而使用的感染标记。
      如黑色星期五的“suMs DOS”。

    • (3) 从病毒代码的特定地方开始取出连续的、不大于64且不含空格(ASCII值为32)的字节串。

    同时,所提取的特征需要避免和正常的软件雷同,否则会形成误报。具体的提取方法如下:

    • 人工提取
      反病毒工程师对病毒样本进行分析后,人工确定病毒特征。
    • 自动提取
      – 通过软件系统自动提取特定范围内特定长度具有一定特征的数据。
      – 处理不利则可能被别有用心者利用,形成误杀。比如杀毒软件会对Windows核心文件进行查杀,但样本提取时可能会有相应的失误,通过制造对抗样本使得正常程序或文件被误杀。

    特征值的提取还有一些自动提取的方法,下面三篇文章是之前作者分享的。

    参考作者前文:

    在这里插入图片描述


    3.优缺点

    关于特征值检测技术,它有优缺点。具体如下:

    • 优点: 检测速度快、误报率低等优点,为广大反病毒厂商所采用,技术也比较成熟。
      因为是对已有病毒进行分析后拿到的特征,所以误报率低,也是各大安全厂商采用的技术。
    • 缺点: 只能检测已知恶意代码。容易被免杀绕过。

    最后,针对特征值检测技术,恶意软件如何对抗?

    • 手工修改自身特征
      首先,利用反病毒软件定位(如CCL软件进行定位)
      然后,进行针对性修改
    • 自动修改自身特征
      加密、多态、变形等


    三.校验和检测技术

    1.什么是校验和检测技术

    校验和检测技术是在文件使用/系统启动过程中,检查检测对象的实际校验和与预期是否一致,因而可以发现文件/引导区是否感染。

    首先,我们需要弄清楚什么是预期?

    • 预期:正常文件内容和正常引导扇区数据。

    它会通过校验和算法对原始的数据进行预算,从而得到校验值,如果对象被修改,其校验值会变化,从而判断其是否被感染。这里提到一个可信计算,它其实也使用了校验和技术。

    • 静态可信:可信计算机对主引导扇区和一些系统关键程序进行了校验,从而保障系统启动之后的初始安全。

    运用校验和检测技术查病毒主要采用以下三种方式:

    • 系统自动监测
      该技术在反病毒软件中用得比较多。它会将校验和检查程序常驻内存,每当应用程序开始运行时,自动核验当前与预先保存的校验和是否一致。如果不一致说明这段数据被篡改,会有相应的提示。
    • 专用检测工具
      对被查的对象文件计算其正常状态的校验和,将校验和值写入被查文件中或检测工具中,而后进行比较。如MD5Checker。
    • 自我检测
      有些应用程序会进行自我校验,比如QQ,如果修改其数据会有相应提示QQ被篡改。在应用程序中,放入校验和检测技术自我检查功能,将文件正常状态的校验和写入文件自身,应用程序启动比较现行校验和与原校验和值,实现应用程序的自检测。

    2.校验和检测对象

    校验和检测对象通常包括文件头部、文件属性、文件内容和系统数据等。

    (1) 文件头部
    目前大部分的寄生病毒,它要去感染其它程序,它通常都要改变目标程序头部的数据,比如PE病毒感染。一般比较整个文件效率较低,有的检测仅比较文件的头部。现有大多数寄生病毒需要改变宿主程序的头部。

    (2) 文件基本属性
    文件的基本属性在整个生命周期中相对固定,如果发生改变可能发生了病毒攻击。文件基本属性通常包括文件长度、文件创建日期和时间、文件属性(一般属性、只读属性、隐含属性、系统属性)。下图展示了Tripwire软件能够对UNIX和Windows中的文件属性进行监控,如果文件中任何一个属性发生了异常变化,则说明该文件极有可能被病毒攻击或感染、损坏了。

    在这里插入图片描述

    (3) 文件内容校验和
    对文件内容(可含文件的属性)的全部字节进行某种函数运算,这种运算所产生的适当字节长度的结果就叫做校验和。这种校验和在很大程度上代表了原文件的特征,一般文件的任何变化都可以反映在校验和中。比如对于散列函数来说,原始特征哪怕改变一位,它的散列值都会发生很大变化。

    • 可以采用一些散列函数,如MD5…
    • CRC校验…

    (4) 系统数据
    有些病毒可能修改、且相对固定的重要系统数据。

    • 如硬盘主引导扇区、分区引导扇区
    • 内存中断向量表、SSDT、设备驱动程序处理例程等

    3.优缺点

    校验和检测技术优缺点如下:

    优点:

    • 方法简单、
    • 能发现未知病毒,因为只要病毒对目标修改,它就能发现
    • 目标文件的细微变化也能发现。

    缺点:

    • 必须预先记录正常文件的校验和[预期]
    • 误报率高
    • 不能识别病毒名称
    • 效率低


    四.启发式扫描技术

    主要依赖病毒检测的经验和知识,如专业反病毒技术人员使用反汇编、调试或沙箱工具稍加分析,就可能判定出某程序是否染毒,主要通过的就是反病毒技术人员的经验。启发式代码扫描技术(Heuristic Scanning)实际上就是恶意代码检测经验和知识的软件实现。

    经验主要是判断可疑的程序代码指令序列,常见的如下:

    • 格式化磁盘类操作:它究竟是什么样的代码
    • 搜索和定位各种可执行程序的操作
    • 实现驻留内存的操作
    • 发现非常用的或未公开的系统功能调用的操作、子程序调用中只执行入栈操作、远距离(超过文件长度的三分之二)跳转指令等
    • 敏感系统行为:如调用驱动进行远程注入
    • 敏感API函数(序列)调用功能:虽然正常程序也会出现,但当它们集中出现时可能是启发式扫描判断的依据

    启发式扫描步骤如下:

    1. 定义通用可疑特征(指令序列或行为);
    2. 对上述功能操作将被按照安全和可疑的等级进行排序,授以不同的权值(甚至用机器学习);
    3. 鉴别特征,如果程序的权值总和超过一个事先定义的阈值,则认为 “发现病毒”。

    下图展示反病毒软件的启发式分析过程,包括轻度扫描、中毒扫描、深度扫描。

    在这里插入图片描述

    为了方便用户或研究人员直观地检测被测试程序中可疑功能调用的存在情况,病毒检测程序可以显示地为不同的可疑功能调用设置标志。例如,早期TbScan这款病毒检测软件就为每一项可以病毒功能调用定义一个标志,如F、R、A等,从而直观地判断被检测程序是否感染病毒。

    在这里插入图片描述

    在这里插入图片描述

    下图展示了TBScan不同病毒触发的标志。

    在这里插入图片描述

    启发式扫描优缺点如下:
    优点:

    • 能够发现未知病毒

    缺点:

    • 误报率高

    解决方案:

    • 启发式扫描技术+传统扫描技术
    • 可提高病毒检测软件的检测率,同时有效降低了总的误报率。

    下面展示了相应的安全软件进行“启发式扫描+特征值扫描”的检测率。比如,卡巴斯基能达到99.57%,

    在这里插入图片描述

    2015年AVC测试结果,即启发式/行为检测能力的结果如下图所示。

    在这里插入图片描述

    在这里插入图片描述

    2011年/2012年测试结果如下,针对未知病毒静态检测能力,其中奇虎对未知病毒检测率最高,然后是GDATA。

    在这里插入图片描述

    当时的结果报告中也给出了另一个结果——误报率,详见下图。如果你期待获得一个更严格的安全,误报率高一点也是可以承受的,希望不要有漏掉的,不同的安全软件存在不同的策略,当然同时提高检测率,降低误报率也非常考验安全公司的实力。

    在这里插入图片描述

    针对启发式扫描技术,病毒如何博弈?病毒又能采取什么措施呢?

    • 直接对抗
      – Disable启发式机制
      – Disable反病毒软件
    • 绕行
      – 哪些是启发式检测的特征项?
      – 是否有其他替代实现方式?


    五.虚拟机检测技术

    为什么需要虚拟机检测技术?主要是因为:

    • 加密、多态、变形病毒的出现:导致传统的特征值检测更加困难。
    • 加壳技术:对病毒体进行包裹,使得病毒代码没有直接反应在二进制中。

    其中,加密病毒是指真实代码被压缩或加密,但最终需要在内存中还原。多态性病毒是指对自身二进制文件进行加密,在运行时再自解密,它在每次感染时都会改变其密钥和解密代码,以对抗反病毒软件,这类病毒的代表有 “幽灵病毒”。普通特征值检测技术对其基本失效,因为其对代码实施加密变换,而且每次感染使用不同密钥和解密代码。

    在这里插入图片描述

    在电脑病毒中有一个特殊群体,它们生活在比Windows系统更早启动的“异度空间”,拥有对整个系统和软件的生杀大权;同时它们又极隐蔽,检测难度远远高于普通病毒,我们将其统称为“幽灵病毒”。
    一台电脑的启动顺序:BIOS(基本输入输出系统)-> MBR(磁盘主引导记录)-> VBR(卷引导记录)-> 系统加载程序(C盘根目录)-> Windows系统。BIOS、MBR和VBR就是幽灵病毒活跃的空间。360全球率先发现了BMW、谍影等BIOS病毒和VBR病毒,以及魅影、鬼影2、暗云Ⅱ、暗云Ⅲ等MBR病毒,并第一时间进行防御查杀。

    早在2016年12月份,360安全卫士查杀团队首次发现了暗云的新一个变种,这就是今年兴起的暗云Ⅲ木马。此版本跟以往版本最大的不同之处,在于暗云Ⅲ加入了对360急救箱查杀对抗,占位了急救箱的驱动所有设备名。下图展示了占坑急救箱设备名,正常为 Device设备,而暗云为Event设备。

    并且暗云Ⅲ能通过挂钩磁盘StartIO保护自身,去掉了上一个版本Object钩子,保留了DPC保护,在2016年12月,360安全卫士就已经专门为查杀此顽固木马下发了新驱动,一旦发现自身设备名被占用,即判定为暗云Ⅲ设备并开启查杀修复。

    在这里插入图片描述

    虚拟机检测技术如下:

    • 在反病毒系统中设置的一种程序机制,它能在内存中模拟一个小的封闭程序执行环境,所有待查文件都以解释方式在其中被虚拟执行。通常虚拟执行一小部分代码即可。

    最后介绍虚拟机检测技术的优点,具有如下:

    • 有效处理加密类病毒。
    • 虚拟机技术+特征值扫描,准确率更高。
    • 虚拟机技术+启发式扫描,有利于检测未知变形病毒。


    六.主动防御技术

    1.主动防御技术概念

    主动防御检测技术有时也被称为行为监控等技术。

    • 动态监视所运行程序调用各种应用编程接口(API)的动作,自动分析程序动作之间的逻辑关系,自动判定程序行为的合法性。
    • 监控应用程序的敏感行为,并向用户发出提示, 供用户选择

    东方微点公司创始人刘老师最早在国内提出了主动防御技术。下图展示了主动防御的过程,但该技术对于用户本身而言比较困难,因为用户缺乏专业知识。所以反病毒公司会根据实际情况制定自身的反病毒软件策略,结合用户需求可能会放松策略。

    在这里插入图片描述

    常见可疑行为包括:

    • 对可执行文件进行写操作
    • 写磁盘引导区
    • 病毒程序与宿主程序的切换
    • 写注册表启动键值
    • 远程线程插入
    • 安装、加载驱动
    • 键盘钩子
    • 自我隐藏
    • 下载并执行等

    下图是卡巴斯基的主动防御过程。

    在这里插入图片描述


    2.主动防御实现机理

    恶意软件包括几个主要的功能,

    • 敏感信息获取
      屏幕、文件、录像、键盘击键、账号和密码、游戏装备等

    • 远控
      流量转发和流量代理等

    这些功能又细分为文件管理、进程管理、服务管理、注册表管理、屏幕监控、屏幕截取、语音视频截获、键盘记录、窗口管理、远程Shell等。

    在这里插入图片描述

    那么这些功能怎么实现的呢?主要是通过关键API实现。

    • 键盘按键记录的API
      SetWindowsHookExA
    • 文件遍历的API
      FindFirstFileA
      FindNextFileA
    • 进程遍历的API
      CreateToolhelp32Snapshot
      Process32First
      Process32Next
    • 文件操作的API
      fopen、fread、fwrite、fclose
    • 截屏的API
      GetDC、SelectObject、GetDIBits
    • 录像的API
      capCreateCaptureWindow
      capGetDriverDescription
      capGetVideoFormat

    在这里插入图片描述

    下图展示了录音API从设备准备、缓冲区准备到开始录音的过程。

    在这里插入图片描述

    对这些关键API或API序列监控,希望获取其逻辑关系,自动判断其合法性,判断行为的可行性。常见检测思路特征包括:

    • 静态文件特征
    • 网络流量特征
    • 系统行为特征
    • 功能行为特征
    • 攻击意图

    其中,功能行为特征主要是动态监视所运行程序调用各种应用编程接口(API)的动作,自动分析程序动作之间的逻辑关系,自动判定程序行为的合法性。

    这里涉及到一个行为监控技术,它用于捕获拦截关键的API信息,具体包括:

    • API调用的实参
    • API调用的返回值
    • API调用的上下文(栈)

    具体的技术实现包括:

    • Hooking:修改函数指针,如IAT表
    • InlineHooking:修改函数代码,如函数头的几个字节

    (1) Hooking
    Hooking包括IAT钩子、IDT钩子、SSDT钩子、过滤驱动程序、驱动程序钩子等,通过下图所示的工具可以查看SSDT表是否被挂了钩子,它会比较当前函数和原始函数的地址。

    在这里插入图片描述

    IAT Hooking显示如下图所示,其中MyMessageBox的地址为00002598位置,如果修改其Data后,它就会跳转到自身设置的位置。

    在这里插入图片描述

    (2) InlineHooking
    InlineHooking技术更为复杂一些。如下图所示,左边是部分描述了InlineHooking前的MessageBox,右边是MyMessageBox在内存中的定义体。

    在这里插入图片描述

    首先将MessageBox头部的5个字节Move到准备好的位置,其次把MessageBox的头部5个字节给一个jmp,跳转到自定义的MessageBox上(00401280)。

    在这里插入图片描述

    第三步,在定义好的MyMessageBox区域内给个jmp,跳转到原来的函数位置,即7566FD23处。

    在这里插入图片描述

    最后在MyMessageBox函数体中调用原始的MessageBoxA函数地址,即004012D7地址。

    在这里插入图片描述

    行为监控可以从用户态到核心态文件处理,再到核心态磁盘处理,有一系列的函数进行Hooking和InlineHooking进行整体的行为监控

    在这里插入图片描述


    3.优缺点

    主动防御技术的优缺点如下:

    • 优点:可发现未知恶意软件、可准确地发现未知恶意软件的恶意行为。
    • 缺点:可能误报警、不能识别恶意软件名称,以及在实现时有一定难度。

    同时给出两个小的思考问题:

    • 对关键API进行监控,正常软件和恶意软件都会调用这些API。当捕获到一个或一组关键API调用时,如何判断这些调用实例的可信性呢?
    • 攻击者了解Hooking技术,会有什么对抗防范呢?反之防御者又有哪些反制技术?


    七.总结

    写到这里,这篇文章就介绍完毕,希望对您有所帮助,下一篇文章作者将继续分析机器学习与恶意代码结合的知识,再下一篇会介绍恶意代码检测技术对应的安全软件评测,包括:

    • 如此多的反病毒软件,哪款更适合你?
    • 各个反病毒软件采用了哪些关键技术?
    • 各自有什么特色?

    学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅、师兄师弟、师姐师妹们的教导,深知自己很菜,得努力前行。

    《珈国情》
    明月千里两相思,
    清风缕缕寄离愁。
    燕归珞珈花已谢,
    情满景逸映深秋。
    最感恩的永远是家人的支持,知道为啥而来,知道要做啥,知道努力才能回去。
    夜已深,虽然笨,但还得奋斗。

    欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。

    (By:Eastmount 2020-07-16 下午13点写于武汉 http://blog.csdn.net/eastmount/ )


    参考资料:
    [1] https://mooc.study.163.com/learn/1000003014?share=2&shareId=1000001005
    [2] 《软件安全之恶意代码机理与防护》WHU
    [3] 作者学习和实践经验

    展开全文
  • 前文分享了传统的恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。这篇文章将介绍基于机器学习的恶意代码检测技术,主要参考郑...

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文分享了传统的恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。这篇文章将介绍基于机器学习的恶意代码检测技术,主要参考郑师兄的视频总结,包括机器学习概述与算法举例、基于机器学习方法的恶意代码检测、机器学习算法在工业界的应用。同时,我再结合自己的经验进行扩充,详细分享了基于机器学习的恶意代码检测技术,基础性文章,希望对您有所帮助~

    作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔~

    推荐作者之前介绍的四篇机器学习宇恶意代码检测相关的文章,如下:


    作者的github资源:
    软件安全:https://github.com/eastmountyxz/Software-Security-Course
    其他工具:https://github.com/eastmountyxz/NetworkSecuritySelf-study
    Windows-Hacker:https://github.com/eastmountyxz/Windows-Hacker-Exp


    声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。

    参考推荐:
    [1] https://mooc.study.163.com/learn/1000003014?share=2&shareId=1000001005
    [2] 《软件安全之恶意代码机理与防护》WHU
    [3] 师兄的分享及作者学习和实践经验

    前文学习:
    [网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例
    [网络安全自学篇] 二.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记
    [网络安全自学篇] 三.Burp Suite工具安装配置、Proxy基础用法及暴库示例
    [网络安全自学篇] 四.实验吧CTF实战之WEB渗透和隐写术解密
    [网络安全自学篇] 五.IDA Pro反汇编工具初识及逆向工程解密实战
    [网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向
    [网络安全自学篇] 七.快手视频下载之Chrome浏览器Network分析及Python爬虫探讨
    [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster工具
    [网络安全自学篇] 九.社会工程学之基础概念、IP获取、IP物理定位、文件属性
    [网络安全自学篇] 十.论文之基于机器学习算法的主机恶意代码
    [网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap基本用法
    [网络安全自学篇] 十二.Wireshark安装入门及抓取网站用户名密码(一)
    [网络安全自学篇] 十三.Wireshark抓包原理(ARP劫持、MAC泛洪)及数据流追踪和图像抓取(二)
    [网络安全自学篇] 十四.Python攻防之基础常识、正则表达式、Web编程和套接字通信(一)
    [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)
    [网络安全自学篇] 十六.Python攻防之弱口令、自定义字典生成及网站暴库防护
    [网络安全自学篇] 十七.Python攻防之构建Web目录扫描器及ip代理池(四)
    [网络安全自学篇] 十八.XSS跨站脚本攻击原理及代码攻防演示(一)
    [网络安全自学篇] 十九.Powershell基础入门及常见用法(一)
    [网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
    [网络安全自学篇] 二十一.GeekPwn极客大赛之安全攻防技术总结及ShowTime
    [网络安全自学篇] 二十二.Web渗透之网站信息、域名信息、端口信息、敏感信息及指纹信息收集
    [网络安全自学篇] 二十三.基于机器学习的恶意请求识别及安全领域中的机器学习
    [网络安全自学篇] 二十四.基于机器学习的恶意代码识别及人工智能中的恶意代码检测
    [网络安全自学篇] 二十五.Web安全学习路线及木马、病毒和防御初探
    [网络安全自学篇] 二十六.Shodan搜索引擎详解及Python命令行调用
    [网络安全自学篇] 二十七.Sqlmap基础用法、CTF实战及请求参数设置(一)
    [网络安全自学篇] 二十八.文件上传漏洞和Caidao入门及防御原理(一)
    [网络安全自学篇] 二十九.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)
    [网络安全自学篇] 三十.文件上传漏洞、编辑器漏洞和IIS高版本漏洞及防御(三)
    [网络安全自学篇] 三十一.文件上传漏洞之Upload-labs靶场及CTF题目01-10(四)
    [网络安全自学篇] 三十二.文件上传漏洞之Upload-labs靶场及CTF题目11-20(五)
    [网络安全自学篇] 三十三.文件上传漏洞之绕狗一句话原理和绕过安全狗(六)
    [网络安全自学篇] 三十四.Windows系统漏洞之5次Shift漏洞启动计算机
    [网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析
    [网络安全自学篇] 三十六.WinRAR漏洞复现(CVE-2018-20250)及恶意软件自启动劫持
    [网络安全自学篇] 三十七.Web渗透提高班之hack the box在线靶场注册及入门知识(一)
    [网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)
    [网络安全自学篇] 三十九.hack the box渗透之DirBuster扫描路径及Sqlmap高级注入用法(三)
    [网络安全自学篇] 四十.phpMyAdmin 4.8.1后台文件包含漏洞复现及详解(CVE-2018-12613)
    [网络安全自学篇] 四十一.中间人攻击和ARP欺骗原理详解及漏洞还原
    [网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及漏洞还原
    [网络安全自学篇] 四十三.木马原理详解、远程服务器IPC$漏洞及木马植入实验
    [网络安全自学篇] 四十四.Windows远程桌面服务漏洞(CVE-2019-0708)复现及详解
    [网络安全自学篇] 四十五.病毒详解及批处理病毒制作(自启动、修改密码、定时关机、蓝屏、进程关闭)
    [网络安全自学篇] 四十六.微软证书漏洞CVE-2020-0601 (上)Windows验证机制及可执行文件签名复现
    [网络安全自学篇] 四十七.微软证书漏洞CVE-2020-0601 (下)Windows证书签名及HTTPS网站劫持
    [网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客常用DOS命令
    [网络安全自学篇] 四十九.Procmon软件基本用法及文件进程、注册表查看
    [网络安全自学篇] 五十.虚拟机基础之安装XP系统、文件共享、网络快照设置及Wireshark抓取BBS密码
    [网络安全自学篇] 五十一.恶意样本分析及HGZ木马控制目标服务器
    [网络安全自学篇] 五十二.Windows漏洞利用之栈溢出原理和栈保护GS机制
    [网络安全自学篇] 五十三.Windows漏洞利用之Metasploit实现栈溢出攻击及反弹shell
    [网络安全自学篇] 五十四.Windows漏洞利用之基于SEH异常处理机制的栈溢出攻击及shell提取
    [网络安全自学篇] 五十五.Windows漏洞利用之构建ROP链绕过DEP并获取Shell
    [网络安全自学篇] 五十六.i春秋老师分享小白渗透之路及Web渗透技术总结
    [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)
    [网络安全自学篇] 五十八.Windows漏洞利用之再看CVE-2019-0708及Metasploit反弹shell
    [网络安全自学篇] 五十九.Windows漏洞利用之MS08-067远程代码执行漏洞复现及shell深度提权
    [网络安全自学篇] 六十.Cracer第八期——(2)五万字总结Linux基础知识和常用渗透命令
    [网络安全自学篇] 六十一.PE文件逆向之数字签名详细解析及Signcode、PEView、010Editor、Asn1View等工具用法(二)
    [网络安全自学篇] 六十二.PE文件逆向之PE文件解析、PE编辑工具使用和PE结构修改(三)
    [网络安全自学篇] 六十三.hack the box渗透之OpenAdmin题目及蚁剑管理员提权(四)
    [网络安全自学篇] 六十四.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)复现及详解
    [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)
    [网络安全自学篇] 六十六.Vulnhub靶机渗透之DC-1提权和Drupal漏洞利用(二)
    [网络安全自学篇] 六十七.WannaCry勒索病毒复现及分析(一)Python利用永恒之蓝及Win7勒索加密
    [网络安全自学篇] 六十八.WannaCry勒索病毒复现及分析(二)MS17-010利用及病毒解析
    [网络安全自学篇] 六十九.宏病毒之入门基础、防御措施、自发邮件及APT28样本分析
    [网络安全自学篇] 七十.WannaCry勒索病毒复现及分析(三)蠕虫传播机制分析及IDA和OD逆向
    [网络安全自学篇] 七十一.深信服分享之外部威胁防护和勒索病毒对抗
    [网络安全自学篇] 七十二.逆向分析之OllyDbg动态调试工具(一)基础入门及TraceMe案例分析
    [网络安全自学篇] 七十三.WannaCry勒索病毒复现及分析(四)蠕虫传播机制全网源码详细解读
    [网络安全自学篇] 七十四.APT攻击检测溯源与常见APT组织的攻击案例
    [网络安全自学篇] 七十五.Vulnhub靶机渗透之bulldog信息收集和nc反弹shell(三)
    [网络安全自学篇] 七十六.逆向分析之OllyDbg动态调试工具(二)INT3断点、反调试、硬件断点与内存断点
    [网络安全自学篇] 七十七.恶意代码与APT攻击中的武器(强推Seak老师)
    [网络安全自学篇] 七十八.XSS跨站脚本攻击案例分享及总结(二)
    [网络安全自学篇] 七十九.Windows PE病毒原理、分类及感染方式详解
    [网络安全自学篇] 八十.WHUCTF之WEB类解题思路WP(代码审计、文件包含、过滤绕过、SQL注入)
    [网络安全自学篇] 八十一.WHUCTF之WEB类解题思路WP(文件上传漏洞、冰蝎蚁剑、反序列化phar)
    [网络安全自学篇] 八十二.WHUCTF之隐写和逆向类解题思路WP(文字解密、图片解密、佛语解码、冰蝎流量分析、逆向分析)
    [网络安全自学篇] 八十三.WHUCTF之CSS注入、越权、csrf-token窃取及XSS总结
    [网络安全自学篇] 八十四.《Windows黑客编程技术详解》之VS环境配置、基础知识及DLL延迟加载详解
    [网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
    [网络安全自学篇] 八十六.威胁情报分析之Python抓取FreeBuf网站APT文章(上)
    [网络安全自学篇] 八十七.恶意代码检测技术详解及总结


    前文欣赏:
    [渗透&攻防] 一.从数据库原理学习网络攻防及防止SQL注入
    [渗透&攻防] 二.SQL MAP工具从零解读数据库及基础用法
    [渗透&攻防] 三.数据库之差异备份及Caidao利器
    [渗透&攻防] 四.详解MySQL数据库攻防及Fiddler神器分析数据包



    随着互联网的繁荣,现阶段的恶意代码也呈现出快速发展的趋势,主要表现为变种数量多、传播速度快、影响范围广。在这样的形势下,传统的恶意代码检测方法已经无法满足人们对恶意代码检测的要求。比如基于签名特征码的恶意代码检测,这种方法收集已知的恶意代码,以一种固定的方式生成特定的签名,维护这样的签名库,当有新的检测任务时,通过在签名库中检索匹配的方法进行检测。暂且不说更新、维护签名库的过程需要耗费大量的人力物力,恶意代码编写者仅仅通过混淆、压缩、加壳等简单的变种方式便可绕过这样的检测机制。

    为了应对上面的问题,基于机器学习的恶意代码检测方法一直是学界研究的热点。由于机器学习算法可以挖掘输入特征之间更深层次的联系,更加充分地利用恶意代码的信息,因此基于机器学习的恶意代码检测往往表现出较高的准确率,并且一定程度上可以对未知的恶意代码实现自动化的分析。下面让我们开始进行系统的介绍吧~


    一.机器学习概述与算法举例

    1.机器学习概念

    首先介绍下机器学习的基本概念,如下图所示,往分类模型中输入某个样本特征,分类模型输出一个分类结果。这就是一个标准的机器学习检测流程。机器学习技术主要研究的就是如何构建中间的分类模型,如何构造一组参数、构建一个分类方法,通过训练得到模型与参数,让它在部署后能够预测一个正确的结果。

    在这里插入图片描述

    训练是迭代样本与标签对的过程,如数学表达式 y=f(x) ,x表示输入的样本特征向量,y表示标签结果,使用(x,y)对f进行一个拟合的操作,不断迭代减小 y’ 和 y 的误差,使得在下次遇到待测样本x时输出一致的结果。该过程也称为学习的过程。


    构造分类方法
    构造分类方法是机器学习中比较重要的知识,如何设计一种分类模型将f(x)表达出来。比如:

    • 超平面(SVM)
      在二维坐标轴中,可以设计一条直线将空间内分布的散点区分开来,如下图所示。
    • softmax
      另外一种方法是构造类别概率输出(softmax),比如归一化处理得到A+B=1,最后看A和B的概率,谁的概率大就属于哪一类,该方法广泛使用于神经网络的最后结果计算中。

    在这里插入图片描述



    2.机器学习算法举例

    作者之前Python系列分享过非常多的机器学习算法知识,也推荐大家去学习:机器学习系列文章(共48篇)

    (1) 支持向量机(SVM)
    首先存在很多训练数据点,包括直线上方和下方两个簇,支持向量机的方法是寻找这两个簇分类的超平面。如何寻找这个超平面呢?支持向量机先求解每个簇离对面最近的点,然后通过拟合方法计算出两边簇的边界,最终计算出中间的平面,其基本思路就是这样,而这些点就是支持向量。支持向量机往往用来处理超高维的问题,也不一定是类似直线的平面,也可能是圆形的分类边界。

    在这里插入图片描述

    (2) 神经网络(Neural Network)
    神经网络基本网络结构如下图所示,包括三个常用层:输入层、隐藏层、输出层。在神经网络中,最基本的单位是人工神经元,其基本原理是将输入乘以一个权重,然后将结果相加进行激活,最后得到一个概率的输出,其输出结果谁大就预测为对应的结果。推荐作者的文章:神经网络和机器学习基础入门分享

    在这里插入图片描述

    (3) 深度卷积神经网络
    普通的神经网络通常只包括一个隐藏层,当超出之后可以称为深度神经网络。现在比较流行的包括CNN、RNN、RCNN、GRU、LSTM、BiLSTM、Attention等等。其中,卷积神经网络常用于处理图片,应用了卷积技术、池化技术,降低图片维度得到很好的结果。

    在这里插入图片描述

    如上图所示,将手写数字“3”(32x32个像素)预测为最终的数字0-9的结果。模型首先使用了6个卷积核,对原始图片进行固定的计算,如下5x5的图像卷积操作后变成了 3x3 的图像。其原理是将特征提取的过程放至神经网络中训练,从而得到比较好的分类结果。卷积之后进行了一个2x2的下采样过程,将图片进一步变小(14x14),接着降维处理,一般采用平均池化或最大池化实现,选定一个固定区域,求取该区域的平均值或最大值,然后将向量进行组合,得到一个全连接网络,最终完成分类任务。
    参考作者前文:[Python人工智能] 四.神经网络和深度学习入门知识

    在这里插入图片描述

    深度神经网络是深度学习中模型,它主要的一个特点是将特征提取的过程放入到真个训练中,之前对于图片问题是采用手工特征,而CNN让在训练中得到最优的特征提取。

    在这里插入图片描述



    3.特征工程-特征选取与设计

    上面介绍了机器学习和深度学习方法,但是这些方法往往是该研究领域的学者所提出,而在恶意代码检测中,往往我们的主要工作量是一些特征的提取和特征的设计,这里面涉及一个特征工程的概念。

    特征工程:选取特征,设计特征的过程。
    例如,在路边预测一个人是否是学生,假设我们不能去询问,只能通过外表去预测他是否是一个学生,包括:年龄(低于15岁就是学生)、性别(不影响学生)、衣着(穿着活泼年轻的可能是学生,如果穿着西装可能性就小)等等,然后根据这些特征输入机器学习模型,从而判断是否是学生。

    在这些特征中,显然有些特征是非常重要的,比如年龄和衣着。数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限,所以如何选取特征是机器学习的一个关键性因素。再比如淘宝的推荐系统,购买电脑推荐鼠标、键盘等。

    当然,上面仅仅是一个比较简单的问题,当我们推广到恶意代码检测等复杂问题时,如果不了解这个领域,可能就会导致模型的结果不理想。

    在这里插入图片描述


    特征设计——人脸识别
    局部二值特征(Local Binary Pattern),再举一个人脸识别例子,深度学习出来之前,图片分类都是使用一些特征算子提取特征的。比如存在一个3x3的窗口,我们取阈值5,比5小的窗口置为0,其他的置为1,然后顺时针转换为一个8位的二进制数字,对应的十进制就是19。显然,LBP特征进行了一个降维的操作,左边的图片显示了人脸识别不应该受光照影响,不同光照的图片进行LBP特征提取后,显示结果都一样。

    在这里插入图片描述

    该部分的最后,作者也推荐一些书籍供大家学习。

    • 《统计学习方法》李航,数学理论较多
    • 《机器学习》周志华,西瓜书,较通俗透彻
    • 《Deep Learning》Ian Goodfellow,花书,深度学习内容全面
    • 《精通特征工程》结合恶意代码特征学习,包括如何向量化

    再看看我的桌面,这些都是作者最近看的一些安全、AI类书籍,希望也您喜欢~

    在这里插入图片描述



    二.基于机器学习方法的恶意代码检测

    1.恶意代码的静态动态检测

    (1) 特征种类

    首先,特征种类如果按照恶意代码是否在用户环境或仿真环境中运行,可以划分为静态特征和动态特征。

    • 静态特征: 没有真实运行的特征
      字节码:二进制代码转换成了字节码,比较原始的一种特征,没有进行任何处理
      IAT表:PE结构中比较重要的部分,声明了一些函数及所在位置,便于程序执行时导入,表和功能比较相关
      Android权限表:如果你的APP声明了一些功能用不到的权限,可能存在恶意目的,如手机信息
      可打印字符:将二进制代码转换为ASCII码,进行相关统计
      IDA反汇编跳转块:IDA工具调试时的跳转块,对其进行处理作为序列数据或图数据

    在这里插入图片描述

    • 动态特征: 相当于静态特征更耗时,它要真正去执行代码
      API调用关系:比较明显的特征,调用了哪些API,表述对应的功能
      控制流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类
      数据流图:软件工程中比较常用,机器学习将其表示成向量,从而进行分类

    举一个简单的控制流图(Control Flow Graph, CFG)示例。

    if (x < y)
    {
       y = 0;
       x = x + 1;
    }
    else
    {
       x = y;
    }
    

    在这里插入图片描述


    (2) 常见算法

    普通机器学习方法和深度学习方法的区别是,普通机器学习方法的参数比较少,相对计算量较小。

    • 普通机器学习方法(SVM支持向量机、RF随机森林、NB朴素贝叶斯)
    • 深度神经网络(Deep Neural Network)
    • 卷积神经网络(Convolution Neural Network)
    • 长短时记忆网络(Long Short-Term Memory Network)
      针对序列模型进行建模,包含上下文依赖关系,比如“我 是 一名 大学生”中的“我”和“是”前后出现的条件概率更高。广泛应用于文本分类、语音识别中,同样适用于恶意代码检测。
    • 图卷积网络 (Graph Convolution Network)
      比较新兴的方法,将卷积应用到图领域,图这种数据类型比较通用,非图数据比较容易转换成图数据,CCF论文中也已经应用到恶意代码检测中。。


    2.静态特征设计举例

    首先分享一个静态特征的例子,该篇文章发表在2015年,是一篇CCF C类会议文章。

    • Saxe J,Berlin K. Deep neural network based malware detection using two dimensional binary program features[C] // 2015 10th International Conference on Malicious and Unwanted Software(MALWARE). IEEE, 2015: 11-20

    在这里插入图片描述

    文章的主要方法流程如下所示:

    在这里插入图片描述

    该模型包含三个步骤:

    • 特征抽取
      使用了四种特征
    • 特征抽取输入到深度神经网络
      包含两层隐含层的深度神经网络
    • 分数校正

    特征抽取
    特征提取包括以下四种特征:

    在这里插入图片描述

    • 字节-熵对统计特征:统计滑动窗口的(字节,熵)对个数
      在下图中,假设白框是一个二进制文件,其中红色框W是滑动窗口,二进制文件如果有100KB大小,每个滑动窗口是1024字节,那么滑动100次可以将整个二进制文件扫描完。如果对窗口内的数值进行计算,首先计算它的熵值,熵是信息论的概念(下图中的E),它描述了一个数组的随机性,熵越大其随机性越大。在图中,每一个滑动窗口都有固定的熵值,包含了1024字节,标记为(Bi,Ewi),最后滑动得到100x1024的字节熵对。

      在这里插入图片描述
      统计最后滑动得到100x1024的字节熵对个数,得到如下图所示的二维直方图结果,横坐标是熵值最小值到最大值的范围,纵坐标是一个字节转换成10进制的范围0-256,最终得到字节熵对分布的范围,再将16x16维的二维数组转换成1x256维的特征向量。

      在这里插入图片描述

    • PE头IAT特征:hashDLL文件名与函数名为[0-255)范围
      第二种特征是PE头IAT特征。它的计算工程是将PE头的IAT表里面的文件名和函数名hash到0到255范围,如果某个文件出现某个函数,就将该位置为1,当然每位对应表示的函数是固定的,最终得到256数组。

    • 可打印字符:统计ASCII码的个数特征
      可打印字符和字节熵对比较相似,这里推荐大家阅读原文。

    • PE元信息:将PE信息抽取出来组成256维数组,例如编译时间戳
      PE元信息是将PE信息的数值型信息抽取出来,组成256维数组,每一个数组的位置表示了一个固定的信息种类,再信息种类将对应的信息填入到元素的位置,比如编译时间戳。

    总共有上述四种特征,然后进行拼接得到4*256=1024维的数组,这个数组就代表一个样本的特征向量。假设有10000个样本,就有对应10000个特征向量。

    在这里插入图片描述

    得到特征向量之后,就开始进行模型的训练和测试,一般机器学习任务事先都有一个数据集,并且会分为训练数据集和测试数据集,按照4比1或9比1的比例进行随机划分。训练会将数据集和标签对输入得到恶意和非恶意的结果,再输入测试集得到最终结果。

    在这里插入图片描述

    下面是衡量机器学习模型的性能指标,首先是一幅混淆矩阵的图表,真实类别中1代表恶意样本,0代表非恶意样本,预测类别也包括1和0,然后结果分为:

    • TP:本身是恶意样本,并且预测识别为恶意样本
    • FP:本身是恶意样本,然而预测识别为非恶意样本,这是误分类的情况
    • FN:本身是非恶意样本,然而预测识别为恶意样本,这是误分类的情况
    • TN:本身是非恶意样本,并且预测识别为非恶意样本

    然后是Accuracy(准确率)、Precision(查准率)、Recall(查全率)、F1等评价指标。

    在这里插入图片描述

    通常Accuracy是一个评价恶意代码分类的重要指标,但本文选择的是AUC指标,为什么呢?
    假设我们模型的效果非常差,它会将所有本测试样本标记为恶意样本,这样我有两个数据集,一个样本包括100个数据(99个恶意样本、1个非恶意样本),另一个样本包括50个数据(50个恶意样本、50个非恶意样本),如果我单纯的计算ACC,第一个样本的结构是0.99,显然不符合客观的描述,不能用来评价性能高低的,并且这种情况是很容易产生的。所以论文中广泛采用AUC指标。

    在这里插入图片描述

    AUC指标包括TPRate和FPRate,然后得到一个点,并计算曲线以下所包围的面积即为AUC指标。其中,TPRate表示分类器识别出正样本数量占所有正样本数量的比值,FPRate表示负样本数量站所有负样本数量的比值。举个例子,我们撒网打鱼,一网下去,网中好鱼的数量占池子中所有好鱼的数量就是TPRate,而FPRate表示一网下去,坏鱼的数量占整个池子中所有坏鱼的数量比例,当然FPRate越小越好。最好的结果就是TPRate为1,而FPRate为0,此时全部分类预测正确。

    在这里插入图片描述

    该论文测试了六种特征集合,其计算的TPR和AUC值如下所示。

    在这里插入图片描述



    3.经典的图片特征举例

    下面介绍另一种比较新兴经典的方法,就是图片特征。但一些安全界的人士会认为这种特征不太好,但其方法还是比较新颖的。

    它的基本方法是按照每8位一个像素点将恶意软件的二进制文件转换为灰度图片,图片通常分为R、G、B通道,每个8位像素点表示2^8,最终每隔8位生成一个像素点从而转换为如下图所示的灰度图片。图片分别为Obfuscator_ACY家族、Lolipop家族、ramnit家族恶意软件样例,这些样例由微软kaggle比赛公布的数据生成。

    这是因为对于某些恶意样本作者来说,他只是使用方法简单的修改特征码,从而每个家族的图片比较相似,最终得到了较好的结果。

    在这里插入图片描述



    4.动态特征设计举例

    接下来分享一个动态特征的例子,该篇文章发表在2016年,文章的会议一般,但比较有代表性。

    • Kolosnjaji B,Zarras A,Webster G,et al. Deep learning for classification of malware system call sequences[C] // Australasian Joint Conference on Artificial Intelligence. Springer,Cham,2016:137-149.

    下图展示了该方法的整体流程图。PE文件进入后,直接进入Cuckoo沙箱中,它是一个开源沙箱,在学术论文中提取动态特征比较通用;接着进行进行预处理操作,将文本转换成向量表示的形式,比如提取了200个动态特征,可以使用200维向量表示,每个数组的位置表示对应API,再将所得到的序列输入卷积神经网络LSTM进行分类,最终得到家族分类的结构。

    • Cuckoo沙箱
    • LSTM

    在这里插入图片描述

    在这里插入图片描述

    下图展示了实验的结构,其指标是高于单纯的神经网络和卷积网络的效果更好,这是一篇比较基础的文章。

    在这里插入图片描述



    5.深度学习静态检测举例

    下面再看一个深度学习静态检测的文章。

    • Coull S E,Gardner C. Activation Analysis of Byte-Based Deep Neural Network for Malware Classification[C] // 2019 IEEE Security and Privacy Workshops(SPW). IEEE,2019:21-27.

    这篇文章是火眼公司的两名员工发布的,所使用的也是静态检测特征,其流程如下所示。

    • 首先,原始的字节码特征直接输入一个Byte Embedding层(词嵌入),对单个元素进行向量化处理,将字节码中的每个字节表示成一个固定长度的向量,从而更好地将字节标记在一个空间维度中。词嵌入技术广泛应用于自然语言处理领域,比如“女人”和“女王”关系比较紧密,这篇文章的目的也是想要在恶意代码中达到类似的效果。
    • 然后将矩阵输入到卷积和池化层中,比如存在一个100K字节的二进制文件,得到100102410矩阵输入卷积神经网络中,最后通过全连接层完成恶意和非恶意的分类任务。

    在这里插入图片描述

    Fireeye使用了三个数据集进行训练和测试,其训练的模型分类效果结果如下表所示,博客Small、Baseline、Baseline+Dropout模型,其网络结构是一样的,其中Small表示使用小的数据集,Baseline表示使用大的数据集,Dropout表示对训练好的神经网络中随机丢弃一些神经元,从而抑制过拟合现象,也是比较常用的深度学习技术。

    在这里插入图片描述

    这篇文章的重点是对深度学习的解释性,就是解释深度学习是否能学习到恶意软件的本质特性。下图展示了不同特征对于分类结果的影响,横坐标是Offset偏移,通常用Offset记录字节,从0到右边也对应文件大小,前面可能就是PE头,中间有各种段。

    它的横纵坐标分别表示了某些特征对于恶意性分类比较重要,还是非恶意性比较重要。如果它的校验和(CheckSum)是0,就对恶意性分类比较重要,这表示深度学习并没有学习到恶意软件为什么是恶意的,只是通过统计学去发现恶意软件和非恶意软件差别最大部分,以此进行数据建模。

    深度学习进行恶意软件检测的问题:没有学习到恶意和非恶意特征,而是学习到区别的统计差异,而这种差异如果被黑客利用是可以被规避的。

    在这里插入图片描述



    6.优缺点

    静态特征

    • 优点
      特征提取速度快
      特征种类丰富,可以组合多种特征向量
    • 缺点
      易受加壳、加密、混淆干扰
      无法防范无文件攻击,难以反映恶意软件行为的恶意性

    动态特征

    • 优点
      提供恶意软件的动作,调用API
      规避一些静态的混淆对抗方法
    • 缺点
      反虚拟化,延时触发等技术的对抗
      测试时间较长,单个样本2-3分钟(Cuckoo)

    最后给出推荐资料:



    7.静态分析和动态分析对比

    下面简单总结静态分析和动态分析与深度学习结合的知识,该部分内容源自文章:深度学习在恶意代码检测 - mbgxbz,在此感谢作者,觉得非常棒,故引用至此!谢谢~

    恶意代码的检测本质上是一个分类问题,即把待检测样本区分成恶意或合法的程序。基于机器学习算法的恶意代码检测技术步骤大致可归结为如下范式:

    • 采集大量的恶意代码样本以及正常的程序样本作为训练样本;
    • 对训练样本进行预处理,提取特征;
    • 进一步选取用于训练的数据特征;
    • 选择合适的机器学习算法训练分类模型;
    • 通过训练后的分类模型对未知样本进行检测。

    深度学习作为机器学习的一个分支,由于其可以实现自动化的特征提取,近些年来在处理较大数据量的应用场景,如计算机视觉、语音识别、自然语言处理时可以取得优于传统机器学习算法的效果。随着深度学习在图像处理等领域取得巨大的成功,许多人将深度学习的方法应用到恶意软件检测上来并取得了很好的成果。实际上就是用深度神经网络代替上面步骤中的人为的进一步特征提取和传统机器学习算法。根据步骤中对训练样本进行预处理的方式,可以将检测分为静态分析与动态分析:

    • 静态分析不运行待检测代码,而是通过直接对程序(如反汇编后的代码)进行统计分析得到数据特征
    • 动态分析则在虚拟机或沙箱中执行程序,获取程序执行过程中所产生的数据(如行为特征、网络特征),进行检测和判断。

    (1) 静态分析
    一般来说,在绝大部分情形下我们无法得到恶意程序的源代码。因此,常用的静态特征包括程序的二进制文件、从使用IDA Pro等工具进行反汇编得到的汇编代码中提取的汇编指令、函数调用等信息,另外基于字符串和基于API调用序列的特征也是比较常见的。文献[i]提出一种对PE文件的恶意程序检测方法,提取PE文件四个类型的特征:字节频率、二元字符频率、PE Import Table以及PE元数据特征,采用包含两个隐藏层的DNN作为分类模型,但是为了提取长度固定的输入数据,他们丢弃了PE文件中的大部分信息。文献[ii]使用CNN作为分类器,通过API调用序列来检测恶意软件,其准确率达到99.4%,远高于传统的机器学习算法。然而,当恶意代码存在混淆或加壳等情形时,对所选取的静态特征具有较大的影响,因此静态分析技术本身具有一定的局限性。

    (2) 动态分析
    利用虚拟机或沙箱执行待测程序,监控并收集程序运行时显现的行为特征,并根据这些较为高级的特征数据实现恶意代码的分类。一般来讲,行为特征主要包括以下几个方面:文件的操作行为;注册表键值的操作行为;动态链接库的加载行为;进程访问的操作行为;系统服务行为;网络访问请求;API调用。文献[iii]通过API调用序列记录进程行为,使用RNN提取特征向量,随后将其转化为特征图像使用CNN进行进一步的特征提取,提取其可能包含的局部特征并进行分类。文献[iv]提出了一个基于动态分析的2层架构的恶意软件检测系统:第1层是RNN,用于学习API事件的特征表示;第2层是逻辑回归分类器,对RNN学习的特征进行分类,然而这种方法的误报率较高。文献[v]提出了用LSTM和GRU代替传统RNN进行特征的提取,并提出了使用CNN的字符级别的检测方案。文献[vi]提出在恶意软件运行的初期对其进行恶意行为的预测,他们使用RNN进行PE文件检测,根据恶意代码前4秒的运行行为,RNN对恶意软件的预测准确率是91%,随着观察的运行时间的增长,RNN的预测准确率也随之提高。可以看到,相对于静态分析,动态分析的过程更加复杂耗时,相对而言采用了较高层次的特征,因此可解释性也较差。


    在网络攻击趋于精细化、恶意代码日新月异的今天,基于深度学习算法的恶意代码检测中越来越受到学术界和众多安全厂商的关注。但这种检测技术在现实应用中还有很多尚未解决的问题。例如上面提到的静态分析与动态分析存在的不足,现在发展的主流方向是将静态、动态分析技术进行结合,使用相同样本的不同层面的特征相对独立地训练多个分类器,然后进行集成,以弥补彼此的不足之处。

    除此之外,深度学习算法的可解释性也是制约其发展的一个问题,当前的分类模型一般情况下作为黑盒被加以使用,其结果无法为安全人员进一步分析溯源提供指导。我们常说攻防是息息相关的,螺旋上升的状态。既然存在基于深度学习的恶意代码检测技术,那么自然也有基于深度学习的或者是针对深度学习的恶意代码检测绕过技术,这也是近年来研究的热点问题,那么如何提高模型的稳健性,防止这些定制化的干扰项对我们的深度学习算法产生不利的影响,对抗生成网络的提出或许可以给出答案。



    三.机器学习算法在工业界的应用

    首先普及一个概念——NGAV。NGAV(Next-Gen AntiVirus)是下一代反病毒软件简称,它是一些厂商提出来的新的病毒检测概念,旨在用新技术弥补传统恶意软件检测的短板。

    • 多家杀毒引擎厂商将机器学习视作NGAV的重要技术,包括McAfee[11], Vmware[9], CrowdStrike[10], Avast[6]
    • 越来越多的厂商开始关注机器学习技术,并发表相关的研究(卡巴斯基[7],火眼[8]),火眼还是用机器学习技术对APT进行分析(组织相似度溯源)

    越来越多的安全厂商将机器学习视为反病毒软件的一个关键技术,但需要注意,NGAV并不是一个清晰的定义,你没法去界定一个反病毒软件是上一代产品还是下一代产品。衡量反病毒软件的性能只有对恶意软件的检测率、计算消耗、误报率等,我们只是从现状分析得到越来越多安全领域结合了机器学习。

    作为安全从业人员或科研人员,机器学习技术也是我们必须要关注的一个技术。

    在这里插入图片描述

    机器学习算法需要解决的问题如下:

    • 算力问题
      机器学习和深度学习算法需要大量的算力,如果我们在本地部署还需要GPU的支持,这样就带来了一个硬件配置问题,所以如何减小模型的size及提升模型的检测能力是一个关键性的问题。

    • 大规模的特征数据
      特征对于分类训练非常关键,如何抽取这些数据特征呢?

    • 训练的模型是可解释的
      这个问题可以说是机器学习算法和深度学习算法在反病毒软件应用中最关键的一个问题,病毒的对抗是黑客与安全从业人员的对抗的前线,如果我们训练的模型是不可解释的,那么一旦被黑客发现某些规则存在的弱点,他们就可以针对这些弱点设计免杀方法,从而绕过造成重大安全隐患。另一方面,如果机器学习算法是不可解释黑盒的,用户他也是不可接受的,难以起到保护重要。

    • 误报需要维持极度的低水平
      误报是反病毒软件用户体验的一个重要指标,传统的特征码技术、主动防御技术都具有误报低的特性,而机器学习是一个预测技术,会存在一些误报,如何避免这些误报并且提高检测的查全率也是重要的问题。

    • 算法需要根据恶意软件作者的变化快速适应新的检测特征
      这也是关键性问题,在机器学习模型应用中,恶意软件是不断变化的,而机器学习算法部署到本地中,它的参数是不变的,所以在长时间的恶意演化中其模型或参数不再适用,其检测结果会有影响。目前,云沙箱、在线更新病毒库特征是一些解决方法。

    最后作者总结下机器学习算法的优势,具体如下:
    (1) 传统方法

    • 优点:速度快,消耗计算资源少
      只需要将特征码提取出来,上传至云端进行检测;相对于机器学习大量的矩阵计算,其计算资源消耗少。
    • 缺点:容易绕过,对于未知恶意软件检出率低
      使用加壳、加密、混淆容易绕过,对于未知软件不知道其特征码,只能通过启发式方法、主动防御济宁检测,相对于机器学习检测率要低。

    (2) 机器学习方法

    • 优点:能够建立专家难以发现的规则与特征
      发现的规则和特征很可能是统计学特征,而不是恶意和非恶意的特征,所以这些特征很容易被黑客进行规避,这既是优点也是缺点,虽然有缺陷,但也能发现恶意样本的关联和行为。
    • 缺点:资源消耗大,面临漂移问题,需要不断更新参数


    四.总结

    写到这里,这篇文章就介绍完毕,希望对您有所帮助,最后进行简单的总结:

    • 机器学习方法与传统方法不是取代与被取代的关系,而是相互补充,好的防御系统往往是多种技术方法的组合。
    • 机器学习的检测方法研究还不充分,安全领域的专有瓶颈与人工智能研究的共有瓶颈均存在、
    • 机器学习算法本身也面对一些攻击方法的威胁,比如对应抗本。

    对抗样本指的是一个经过微小调整就可以让机器学习算法输出错误结果的输入样本。在图像识别中,可以理解为原来被一个卷积神经网络(CNN)分类为一个类(比如“熊猫”)的图片,经过非常细微甚至人眼无法察觉的改动后,突然被误分成另一个类(比如“长臂猿”)。再比如无人驾驶的模型如果被攻击,Stop标志可能被汽车识别为直行、转弯。

    在这里插入图片描述
    在这里插入图片描述

    学安全一年,认识了很多安全大佬和朋友,希望大家一起进步。这篇文章中如果存在一些不足,还请海涵。作者作为网络安全初学者的慢慢成长路吧!希望未来能更透彻撰写相关文章。同时非常感谢参考文献中的安全大佬们的文章分享,感谢师傅、师兄师弟、师姐师妹们的教导,深知自己很菜,得努力前行。


    《珈国情》
    明月千里两相思,
    清风缕缕寄离愁。
    燕归珞珈花已谢,
    情满景逸映深秋。
    最感恩的永远是家人的支持,知道为啥而来,知道要做啥,知道努力才能回去。
    夜已深,虽然笨,但还得奋斗。

    欢迎大家讨论,是否觉得这系列文章帮助到您!任何建议都可以评论告知读者,共勉。

    (By:Eastmount 2020-07-19 星期日 下午13点写于武汉 http://blog.csdn.net/eastmount/ )



    参考文献:
    [1] Saxe J, Berlin K. Deep neural network based malware detection using two dimensional binary program features[C]//2015 10th International Conference on Malicious and Unwanted Software (MALWARE). IEEE, 2015: 11-20.
    [2] https://www.kaggle.com/c/malware-classification
    [3] https://www.fireeye.com/blog/threat-research/2018/12/what-are-deep-neural-networks-learning-about-malware.html
    [4]Kolosnjaji B, Zarras A, Webster G, et al. Deep learning for classification of malware system call sequences[C]//Australasian Joint Conference on Artificial Intelligence. Springer, Cham, 2016: 137-149.
    [5] Wüchner T, Cisłak A, Ochoa M, et al. Leveraging compression-based graph mining for behavior-based malware detection[J]. IEEE Transactions on Dependable and Secure Computing, 2017, 16(1): 99-112.
    [6]https://www.avast.com/technology/malware-detection-and-blocking
    [7] https://media.kaspersky.com/en/enterprise-security/Kaspersky-Lab-Whitepaper-Machine-Learning.pdf
    [8] https://www.fireeye.com/blog/threat-research/2019/03/clustering-and-associating-attacker-activity-at-scale.html
    [9] https://www.carbonblack.com/resources/definitions/what-is-next-generation-antivirus/
    [10] https://www.crowdstrike.com/epp-101/next-generation-antivirus-ngav/
    [11] https://www.mcafee.com/enterprise/en-us/security-awareness/endpoint/what-is-next-gen-endpoint-protection.html

    [i] Saxe, J., & Berlin, K. (2015, October). Deep neural network-based malware detection using two-dimensional binary program features. In 2015 10th International Conference on Malicious and Unwanted Software (MALWARE) (pp. 11-20). IEEE.
    [ii] Nix, R., & Zhang, J. (2017, May). Classification of Android apps and malware using deep neural networks. In 2017 International joint conference on neural networks (IJCNN) (pp. 1871-1878). IEEE.
    [iii] Tobiyama, S., Yamaguchi, Y., Shimada, H., Ikuse, T., & Yagi, T. (2016, June). Malware detection with deep neural network using process behavior. In 2016 IEEE 40th Annual Computer Software and Applications Conference (COMPSAC) (Vol. 2, pp. 577-582). IEEE.
    [iv] Pascanu, R., Stokes, J. W., Sanossian, H., Marinescu, M., & Thomas, A. (2015, April). Malware classification with recurrent networks. In 2015 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 1916-1920). IEEE.
    [v] Athiwaratkun, B., & Stokes, J. W. (2017, March). Malware classification with LSTM and GRU language models and a character-level CNN. In 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 2482-2486). IEEE.
    [vi] Athiwaratkun, B., & Stokes, J. W. (2017, March). Malware classification with LSTM and GRU language models and a character-level CNN. In 2017 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP) (pp. 2482-2486). IEEE.

    展开全文
  • 恶意代码检测技术

    万次阅读 热门讨论 2014-02-14 19:39:38
    随着恶意代码成为信息安全的重要威胁,恶意代码检测技术成为信息安全领域的重要研究方向。目前已经有基于签名、启发式、行为式等几种检测恶意代码的方法,应用最广泛也是最成熟的当属基于签名的检测技术,当前研究的...
  • 在这样的形势下,传统的恶意代码检测方法已经无法满足人们对恶意代码检测的要求。比如基于签名特征码的恶意代码检测,这种方法收集已知的恶意代码,以一种固定的方式生成特定的签名,维护这样的签名库,当有新的检测...
  • 这篇文章将详细总结恶意代码检测技术,包括恶意代码检测的对象和策略、特征值检测技术、校验和检测技术、启发式扫描技术、虚拟机检测技术和主动防御技术。希望这篇文章对您有所帮助,如果文章中存在错误、理解不到位...
  • 随着恶意代码成为信息安全的重要威胁,恶意代码检测技术成为信息安全领域的重要研究方向。目前已经有基于签名、启发式、行为式等几种检测恶意代码的方法,应用最广泛也是最成熟的当属基于签名的检测技术,当前研究的...
  • 基于沙箱的恶意代码检测实验

    千次阅读 2019-12-04 09:39:51
    基于沙箱的恶意代码检测实验 实验工具及环境 1.win XP虚拟机一台(win 7也可) 2.sandboxie 沙盒计算机程序 Sandboxie是一个沙盒计算机程序,由Ronen Tzur开发,可以在32位及64位的、基于Windows NT的系统上运行(如...
  • 这篇文章将结合作者的《系统安全前沿》作业,论文及绿盟李东宏老师的博客及宋老师的论文,从产业界和学术界分别详细讲解恶意代码攻击溯源的相关知识。在学术界方面,用类似于综述来介绍攻击追踪溯源的不同方法;在...
  • 网页恶意代码检测

    万次阅读 2011-12-15 10:28:42
    摘要 随着Internet技术的广泛应用,越来越多的信息资源通过Web服务...网页恶意代码检测方式包括:传统方法有人工检测、基于特征码的检测、启发式检测、基于行为的检测等,这些方法都有一些局限性,无法应对新技术下
  • 什么是恶意代码 恶意代码(malicious code)又称为恶意软件(malicious software,Malware),是能够在计算机系统中进行非授权操作的代码。 恶意代码类型 1、蠕虫或计算机病毒:可以自我复制和感染其他计算机的恶意代码...
  • Web恶意代码检测方法

    万次阅读 2016-07-28 18:23:41
     所谓网页挂马,就是把一段恶意代码程序植入网页中,当用户打开网页或相应点击时,恶意代码会在后台自动下载到用户计算机,或者通过转移连接,连接到黑客控 制的木马网站上,最终实现恶意代码植入用户计算机。...
  • 什么是恶意代码?其特性是什么?...恶意代码分析过程实际上是了解恶意代码运行过程、传播机制和功能用途的过程,通过静态查看恶意代码相关的代码或数据文件,可以帮助分析人员对恶意代码有基本的了解,而需要..
  • 看的论文:Abou-Assaleh T , Cercone N , Keselj V , et al. N-gram-based detection of new malicious code[C].Proceedings of the 28th Annual ...目录摘要介绍检测恶意代码的CNG 分类方法 摘要 先前的恶意检测
  • 恶意代码检测技术的演化

    千次阅读 2011-12-29 22:27:09
    在本文中我们讨论了识别恶意代码的各种方法,它们彼此间在功能上(以及时间上)的联系,它们的技术以及特点。从一个方面讲,这里写到的许多技术和原理实际上并不仅仅可以用在反病毒方面,还可以用在计算机安全系统里...
  • 大学过得真的快,最近也要开始毕业设计了,这次选题是机器学习,对自己也是一种挑战(之前没有接触过机器学习)。本来打算是学习Java后端技术,找份实习工作,然后等二月份考研成绩出来了,在看看要不要准备复试。...
  • 作者 | 杨秀璋来源 | CSDN博客头图 |视觉中国出品 | CSDN(ID:CSDNnews)这篇文章将介绍基于机器学习的恶意代码检测技术,主要参考郑师兄的视频总结,包括机器学习概...
  • 本程序也可做为改变程序行为的上佳工具,例如在恶意代码中有对某些注册表或文件是否存在的判断,则通过本程序可以添加自定义Hook来修改函数返回值等。为您对程序的分析节省更多时间。 特色 通过配置文件...
  • 基于深度学习的恶意代码分类(一)

    千次阅读 多人点赞 2021-03-15 20:01:01
    恶意代码分类主要有两种应用:恶意代码检测和恶意代码家族聚类。 恶意代码检测的目的是判断未知代码是否是恶意代码,即将未知代码分为良性代码和恶意代码两类。 恶意代码家族聚类是以恶意代码为数据集,依据特征相似...
  • 普通恶意代码技术分析与检测

    千次阅读 2008-04-03 22:42:00
    1 引言 近些年来,恶意代码依赖一些特殊的Native API函数和内核系统函数进行感染、传播、隐藏的这种趋势愈加明显代码,并大量的使用了多重加密壳、驱动关联壳、变形壳等代码保护机制和多态和变形等新的技术。...
  • 用机器学习检测Android恶意代码

    千次阅读 热门讨论 2018-08-05 19:39:22
    参考资料  本代码是参考乌云上的一篇文章实现的,链接如下:...代码的github地址(其实这篇博文就是该仓库中的README): https://github.com/DQinYuan/AndroidMalwa...
  • 恶意代码防护

    2019-04-10 10:36:05
    什么是恶意代码恶意代码是一种程序,它通过把代码在不被察觉的情况下镶嵌到另一段程序中,从而达到破坏被感染电脑数据、运行具有入侵性或破坏性的程序、破坏被感染电脑数据的安全性和完整性的目的。按传播方式,...
  • 1 引言  近些年来,恶意代码依赖一些特殊的Native API函数和内核... 恶意代码开发者想尽了各种办法,对进程、文件、注册表、系统服务、网络服务等各方面信息进行了控制,内核级的恶意代码做得更加巧妙和隐蔽。 ...
  • DOME(Detection of Maliciious Executables)它是一种检测宿主可执行文件中的恶意代码的技术。DOME通过表态分析确定软件中产生系统调用的位置(虚拟地址),然后再监视软件运行并难所有观察到的系统调用都是从静态...
  • WordPress是人们使用的最受欢迎的内容管理系统(CMS)之一,... 他们可能充满恶意代码,可以轻松地入侵您的博客。 有时,到其站点的反向链接也被添加到这些主题中,而普通用户不知道如何应对这些反向链接。 在本文中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 49,625
精华内容 19,850
关键字:

恶意代码检测