CN114880665B - 一种针对面向返回编程攻击的智能化检测方法及装置 - Google Patents

一种针对面向返回编程攻击的智能化检测方法及装置 Download PDF

Info

Publication number
CN114880665B
CN114880665B CN202210525580.0A CN202210525580A CN114880665B CN 114880665 B CN114880665 B CN 114880665B CN 202210525580 A CN202210525580 A CN 202210525580A CN 114880665 B CN114880665 B CN 114880665B
Authority
CN
China
Prior art keywords
program
instruction
rop
suspicious
execution flow
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210525580.0A
Other languages
English (en)
Other versions
CN114880665A (zh
Inventor
牛伟纳
李�杰
张小松
薛志行
李梓慕
严然
朱宇坤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CN202210525580.0A priority Critical patent/CN114880665B/zh
Publication of CN114880665A publication Critical patent/CN114880665A/zh
Application granted granted Critical
Publication of CN114880665B publication Critical patent/CN114880665B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本文发明涉及安全检测领域,公开了一种针对面向返回编程攻击的智能化检测方法及装置,属于系统底层安全检测领域,主旨在于实现能够针对程序的二进制可执行文件进行检测,不需要被测软件程序的源码便可处理商用软件。主要方案包括对被测程序进行插桩,利用反汇编技术将被测程序的执行过程以汇编代码的形式输出,即得到程序执行流;利用执行流进行实时监测,筛选出可疑程序执行流;对可疑程序执行流进行二次筛选,利用人工智能模型对疑似ROP攻击做到精准判断,并根据判断结果决定是否启动ROP防御,对判断为ROP攻击的程序采用限时警报和主动crash的策略,防止被测程序遭受更大的损失。

Description

一种针对面向返回编程攻击的智能化检测方法及装置
技术领域
本发明属于系统底层安全检测领域,具体一种针对面向返回编程攻击的智能化检测方法,其被测的程序为可运行的目标文件,可通过人工智能模型自动学习检测程序是否遭受攻击。
背景技术
如今,云计算和移动互联网技术成为新的潮流,一方面推动了信息化发展,另一方面也给传统的系统安全模型和保护技术带来了新的挑战。软件安全漏洞的利用是常用且关键的技术,攻击者通过漏洞入侵网络和系统,然后进行窃取数据、运行恶意软件等进一步攻击,程序安全对于计算机的发展和应用起着至关重要的作用。随着安全防护技术的发展,攻击者不停地尝试利用各种漏洞,对程序进行攻击。起初攻击者尝试攻击程序的控制流,通过向栈中注入恶意代码,劫持正常的程序流程控制流程,转入攻击者预先设置的控制流,并执行恶意代码,进而实施攻击。
于是出现多种诸如StackGuard等具有针对性的防护技术,即通过修改可执行程序的内存布局来使程序运行栈不可执行,防止注入攻击;再者是更为复杂的W+X技术,即通过硬件或软件的支持,来保证进程映像中的内存区域不能同时可执行或可写入。
在此基础上,新的攻击技术Returntolibc继而出现,通过利用已有代码,如libc库中的代码,实施攻击。攻击者通过栈溢出,覆盖正常函数栈中的返回地址,使恶意调用的函数的参数覆盖栈中返回地址邻近区域的内存空间,然后函数调用返回时,会去执行libc中的攻击者指定的函数,如使用systerm(),执行shell,达到恶意企图。值得强调的是,不但libc中的代码可以被使用,任何可执行的代码都有可能被攻击者恶意调用和攻击。
Returntolibc技术虽然使得攻击者绕过了基于W+X等技术的防护,但是与代码注入攻击相比,还是受到了很大限制。其一,在Returntolibc中,被恶意调用的函数的执行顺序只能是线性的,不能使用分支后者跳转,而恶意注入代码并无此限制;其二,恶意调用的函数只能是程序的代码段或者加载的库中可用的函数,如果去掉某些危险的库函数,将很大程度上限制攻击者的攻击能力。因而W+X技术某种程度上也限制了攻击者的能力。
在此基础上,为了克服上述Returntolibc技术的限制,提高对库或应用程序中代码段的利用率,细化代码使用粒度,HovavShacham提出了基于代码片段ReturnOrientedProgramming(ROP)的方法,通过使用程序库,包括libc、驱动程序等可执行的代码片段,构建图灵完备的程序,达到攻击程序的正常控制流程、提升攻击者操作权限甚至完全获取计算机控制权的目的。该方法由于构造奇妙、充分利用了当前计算机体系结构和指令集系统的完备的表述能力,因而能够绕过当前很多杀毒软件的扫描和病毒特征比对,完全绕过当前主流操作系统防范缓冲区溢出攻击的保护机制DEP。
自2007年提出ROP以来,其相关攻击技术发展迅速。ROP攻击最初是在Linux的32为平台上实现,后来在多种软硬件平台上也实现了ROP攻击[8]。ROP攻击的核心思想是构造gadget链,也就是将具有特殊功能的gadget链接在一起。利用返回指令ret链接gadget的方法(即面向返回编程,Return-Oriented Programming)最先被提出,并广泛的得到应用。因此专门检测ret指令的防御机制被提出,于是攻击者只好另寻他法,不再使用ret链接gadget,于是各种ROP攻击变种被提出。
Checkoway等人发现可以通过搜寻尾随有间接跳转的pop指令(例如pop edx;jmp[edx])来进行返回导向编程。这种指令序列的行为类似于返回指令,亦可用于将gadget链接在一起。
跳转导向编程(Jump-Oriented Programming,JOP)是ROP攻击的另一种变种,它使用寄存器间接跳转代替了返回指令。JOP使用调度程序表来保存每个gadget的地址。每个gadget对应一个调度程序。调度程序是一段可以控制程序控制流的指令序列。调度程序用作虚拟程序计数器(PC),将程序控制流转换为调度表中存储的地址条目,其中这些地址是特殊的、具有跳转导向功能的gadget的地址。在这些gadget的结尾,攻击者通过间接跳使程序控制流回归至调度程序。随后,调度程序将指针指向下一个gadget。
调用导向编程(Call Oriented Programming,COP)由Nicholas Carlini和DavidWagner于2014年提出。攻击者用以间接调用指令为结尾的gadget代替以返回指令为结尾的gadget。COP攻击不需要调度程序,它通过依次将内存间接位置指向下一个gadget的方法,来将gadget链接在一起。
虽然最近几年的针对ROP本身的防御手段不断被提出,并对ASLR的不足提出了多种细粒度的随机化方案,但是这些类似于像DEP、Canary等防护手段并不能直接有效地解决变种ROP攻击。更有后来出现的即时面向返回编程(Just-In-Time Return-Oriented-Programming,JIT-ROP)攻击技术,即在系统运行时,结合多个内存信息泄露漏洞动态的获得内存中的代码地址信息,并同时利用跳转指令的目标地址迭代搜索内存页查找可用于攻击的gadget,完全绕过任何的随机化防御方法。
发明内容
针对上述现有技术问题,本发明的目的在于实现能够针对程序的二进制可执行文件进行检测,不需要被测软件程序的源码便可处理商用软件。
本发明种针对面向返回编程攻击的智能化检测方法,该方法能够自动学习ROP攻击时所表现的特征,能最大程度地降低阈值检测主观性对检测结果的影响,因此准确率高;该方法还能够获得真实的软件运行情况、避免误报,并且不需要被测软件的源代码,因而能方便地测试商用程序软件。
为了达到上述目的,本发明采用如下技术方案:
一种针对面向返回编程攻击的智能化检测装置,包括以下模块:
动态二进制插桩模块:对被测程序进行插桩,利用反汇编技术将被测程序的执行过程以汇编代码的形式输出,即得到程序执行流;
可疑程序执行流筛选模块:利用动态二进制插桩模块的输出对程序的执行流进行实时监测,筛选出可疑程序执行流;
智能检测模块:对可疑程序执行流进行二次筛选,利用人工智能模型对疑似ROP攻击做到精准判断,并根据判断结果决定是否启动ROP防御模块;
ROP防御模块:对判断为ROP攻击的程序采用限时警报和主动crash的策略,防止被测程序遭受更大的损失。
上述技术方案中,可疑程序执行流筛选模块包括以下几个部分:
指令统计模块:利用动态二进制插桩模块所输出的程序执行流,对程序执行流中每一条指令出现的次数分别进行统计计数,得到每条指令出现的次数;
ROP运行特征监控模块:定义具有ROP攻击特征的指令集为gadgets,根据ROP攻击原理,提取出gadgets指令集的特征,根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令;
多阈值统计模块:综合指令统计模块与ROP运行特征监控模块的结果,筛选出ROP攻击特征的指令出现的次数满足阈值设置指令,即为可疑程序执行流,以供可疑行为监测模块使用;上述技术方案中,ROP运行特征监控模块具体包括以下步骤:
步骤1:定义具有ROP攻击特征的指令集为gadgets,故ROP运行特征等同于gadgets的特征,根据ROP攻击原理,提取gadgets指令集的特征,包括指令集数量、连续gadgets数量、gadgets指令集间距;
步骤2:根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令。
上述技术方案中,智能检测模块包括:数据清洗:对判定为可疑的程序执行流进行数据清洗,具体来说,获取到的程序执行流中涉及程序整个执行指令流,于是数据清洗阶段就是只关注异常/可疑指令流,并利用滑动窗口机制,对异常/可疑指令流进行Size大小的切分;数据编码:将异常/可疑指令流的汇编代码编码成one-hot编码作为人工智能模型的输入;智能模型检测:基于大量训练样本集的同时利用人工智能模型对当前被测程序进行精准检测,并作出二分类结果。
本发明还提供了一种针对面向返回编程攻击的智能化检测方法,包括以下步骤:
动态二进制插桩步骤:对被测程序进行插桩,利用反汇编技术将被测程序的执行过程以汇编代码的形式输出,即得到程序执行流;
可疑程序执行流筛选步骤:利用动态二进制插桩步骤的输出对程序的执行流进行实时监测,筛选出可疑程序执行流;
智能检测步骤:对可疑程序执行流进行二次筛选,利用人工智能模型对疑似ROP攻击做到精准判断,并根据判断结果决定是否启动ROP防御步骤;
ROP防御步骤:对判断为ROP攻击的程序采用限时警报和主动crash的策略,防止被测程序遭受更大的损失。
上述技术方案中,可疑程序执行流筛选步骤包括:
指令统计模步骤:利用动态二进制插桩步骤所输出的程序执行流,对程序执行流中每一条指令出现的次数分别进行统计计数,得到每条指令出现的次数;
ROP运行特征监控步骤:定义具有ROP攻击特征的指令集为gadgets,根据ROP攻击原理,提取出gadgets指令集的特征,根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令;
多阈值统计步骤:综合指令统计步骤与ROP运行特征监控步骤的结果,筛选出ROP攻击特征的指令出现的次数满足阈值设置指令,即为可疑程序执行流,以供可疑行为监测模块使用;上述技术方案中,ROP运行特征监控步骤具体包括:
步骤1:定义具有ROP攻击特征的指令集为gadgets,故ROP运行特征等同于gadgets的特征,根据ROP攻击原理,提取gadgets指令集的特征,包括指令集数量、连续gadgets数量、gadgets指令集间距;
步骤2:根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令。
上述技术方案中,智能检测步骤包括:数据清洗:对判定为可疑的程序执行流进行数据清洗,具体来说,获取到的程序执行流中涉及程序整个执行指令流,于是数据清洗阶段就是只关注异常/可疑指令流,并利用滑动窗口机制,对异常/可疑指令流进行Size大小的切分;数据编码:将异常/可疑指令流的汇编代码编码成one-hot编码作为人工智能模型的输入;智能模型检测:基于大量训练样本集的同时利用人工智能模型对当前被测程序进行精准检测,并作出二分类结果。
上述技术方案中,智能检测步骤具体流程如下:
a、将具有可疑行为的程序执行流进行数据清洗操作,具体表现为:关注程序执行流中异常/可疑的指令流,并利用滑动窗口机制,取固定长度大小Size的指令流进行数据编码操作;
b、在进行数据编码操作之前,我们利用Intel汇编代码种类将程序执行流以汇编代码到数字的映射方式,对程序所具有的编码代码进行唯一的one-hot编码,每一条汇编指令都会被编码为仅由0、1字符串所组成的1*128维的向量,得到one-hot向量,从而形成一张编码表;
c、然后将滑动窗口内的单条指令代码按照编码表对应翻译成1*128维的向量,然后再将滑动窗口内的所有指令代码按如上方式翻译,得到每条指令所对应的one-hot向量,从而得到ne-hot向量构成的序列;
d、定义神经网络模型,分别为embedding层、lstm层、fc1层以及fc2层,在embedding层将one-hot向量构成的序列转换为特定长度的向量,对一个滑动窗口内的指令代码序列,将它转换成了一个Size*128维的矩阵向量,暂记为向量矩阵embedding_output,其中Size为长度的滑动窗口内的指令数,接着,将向量矩阵embedding_output的每列向量依次输入到lstm层重复迭代,最终产生一个长度为128维的向量作为输出,暂记为向量lstm_output,然后将此向量lstm_output先通过fc1层,同样输出一个128维的向量记为fc1_output,并通过dropout遍历神经网络每一层的节点,然后通过对该层的神经网络设置一个节点保留概率keep_prob即该层的节点有keep_prob的概率被保留,通过设置神经网络该层节点的保留概率,使得神经网络不会去偏向于某一个节点,从而使得每一个节点的权重不会过大,来减轻神经网络的过拟合,最终在fc2层通过全连接输出2个值作为整个网络的输出,即对可疑程序执行流的判断结果;
f、针对输出的二分类判断结果来决定是否采取ROP防御手段,如果分类结果为0,表明该程序未遭受ROP攻击,此时可以简单记录日志,方便后期回查。如果分类结果为1,则表明该程序正遭受ROP攻击,此时就要启动相应的防御措施避免程序软件遭受更严重的损失,并同时记录好日志结果。
因为本发明采用上述技术方案,因此具备以下有益效果:
一、实现能够针对程序的二进制可执行文件进行检测,不需要被测软件程序的源码便可处理商用软件。
二、通过动态二进制插桩技术和反汇编技术能实时的获取到程序执行流,并以汇编代码的形式展示出来。
三、通过多条件阈值设定,将判断ROP攻击的范围扩大,从而可以检测出软件程序中的ROP攻击和高级ROP攻击,比如延迟ROP等。
四、利用人工智能神经网络模型LSTM,训练学习ROP攻击特征的网络模型,从而能够检测出变种ROP攻击,比如JOP、COP等。
附图说明
图1是本发明的总体架构图。
具体实施方式
下面将结合附图及具体实施方式对本发明作进一步的描述。
一种针对面向返回编程攻击的智能化检测装置,包括以下模块:
动态二进制插桩模块:对被测程序进行插桩,利用反汇编技术将被测程序的执行过程以汇编代码的形式输出,即得到程序执行流;
可疑程序执行流筛选模块:利用动态二进制插桩模块的输出对程序的执行流进行实时监测,筛选出可疑程序执行流;
智能检测模块:对可疑程序执行流进行二次筛选,利用人工智能模型对疑似ROP攻击做到精准判断,并根据判断结果决定是否启动ROP防御模块;
ROP防御模块:对判断为ROP攻击的程序采用限时警报和主动crash的策略,防止被测程序遭受更大的损失。
上述技术方案中,可疑程序执行流筛选模块包括以下几个部分:
指令统计模块:利用动态二进制插桩模块所输出的程序执行流,对程序执行流中每一条指令出现的次数分别进行统计计数,得到每条指令出现的次数;
ROP运行特征监控模块:定义具有ROP攻击特征的指令集为gadgets,根据ROP攻击原理,提取出gadgets指令集的特征,根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令;
多阈值统计模块:综合指令统计模块与ROP运行特征监控模块的结果,筛选出ROP攻击特征的指令出现的次数满足阈值设置指令,即为可疑程序执行流,以供可疑行为监测模块使用;上述技术方案中,ROP运行特征监控模块具体包括以下步骤:
步骤1:定义具有ROP攻击特征的指令集为gadgets,故ROP运行特征等同于gadgets的特征,根据ROP攻击原理,提取gadgets指令集的特征,包括指令集数量、连续gadgets数量、gadgets指令集间距;
步骤2:根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令。
上述技术方案中,智能检测模块包括:数据清洗:对判定为可疑的程序执行流进行数据清洗,具体来说,获取到的程序执行流中涉及程序整个执行指令流,于是数据清洗阶段就是只关注异常/可疑指令流,并利用滑动窗口机制,对异常/可疑指令流进行Size大小的切分;数据编码:将异常/可疑指令流的汇编代码编码成one-hot编码作为人工智能模型的输入;智能模型检测:基于大量训练样本集的同时利用人工智能模型对当前被测程序进行精准检测,并作出二分类结果。
本发明还提供了一种针对面向返回编程攻击的智能化检测方法,包括以下步骤:
动态二进制插桩步骤:对被测程序进行插桩,利用反汇编技术将被测程序的执行过程以汇编代码的形式输出,即得到程序执行流;
可疑程序执行流筛选步骤:利用动态二进制插桩步骤的输出对程序的执行流进行实时监测,筛选出可疑程序执行流;
智能检测步骤:对可疑程序执行流进行二次筛选,利用人工智能模型对疑似ROP攻击做到精准判断,并根据判断结果决定是否启动ROP防御步骤;
ROP防御步骤:对判断为ROP攻击的程序采用限时警报和主动crash的策略,防止被测程序遭受更大的损失。
上述技术方案中,可疑程序执行流筛选步骤包括:
指令统计模步骤:利用动态二进制插桩步骤所输出的程序执行流,对程序执行流中每一条指令出现的次数分别进行统计计数,得到每条指令出现的次数;
ROP运行特征监控步骤:定义具有ROP攻击特征的指令集为gadgets,根据ROP攻击原理,提取出gadgets指令集的特征,根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令;
多阈值统计步骤:综合指令统计步骤与ROP运行特征监控步骤的结果,筛选出ROP攻击特征的指令出现的次数满足阈值设置指令,即为可疑程序执行流,以供可疑行为监测模块使用;上述技术方案中,ROP运行特征监控步骤具体包括:
步骤1:定义具有ROP攻击特征的指令集为gadgets,故ROP运行特征等同于gadgets的特征,根据ROP攻击原理,提取gadgets指令集的特征,包括指令集数量、连续gadgets数量、gadgets指令集间距;
步骤2:根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令。
上述技术方案中,智能检测步骤包括:数据清洗:对判定为可疑的程序执行流进行数据清洗,具体来说,获取到的程序执行流中涉及程序整个执行指令流,于是数据清洗阶段就是只关注异常/可疑指令流,并利用滑动窗口机制,对异常/可疑指令流进行Size大小的切分;数据编码:将异常/可疑指令流的汇编代码编码成one-hot编码作为人工智能模型的输入;智能模型检测:基于大量训练样本集的同时利用人工智能模型对当前被测程序进行精准检测,并作出二分类结果。
上述技术方案中,智能检测步骤具体流程如下:
a、将具有可疑行为的程序执行流进行数据清洗操作,具体表现为:关注程序执行流中异常/可疑的指令流,并利用滑动窗口机制,取固定长度大小Size的指令流进行数据编码操作;
b、在进行数据编码操作之前,我们利用Intel汇编代码种类将程序执行流以汇编代码到数字的映射方式,对程序所具有的编码代码进行唯一的one-hot编码,每一条汇编指令都会被编码为仅由0、1字符串所组成的1*128维的向量,得到one-hot向量,从而形成一张编码表;
c、然后将滑动窗口内的单条指令代码按照编码表对应翻译成1*128维的向量,然后再将滑动窗口内的所有指令代码按如上方式翻译,得到每条指令所对应的one-hot向量,从而得到ne-hot向量构成的序列;
d、定义神经网络模型,分别为embedding层、lstm层、fc1层以及fc2层,在embedding层将one-hot向量构成的序列转换为特定长度的向量,对一个滑动窗口内的指令代码序列,将它转换成了一个Size*128维的矩阵向量,暂记为向量矩阵embedding_output,其中Size为长度的滑动窗口内的指令数,接着,将向量矩阵embedding_output的每列向量依次输入到lstm层重复迭代,最终产生一个长度为128维的向量作为输出,暂记为向量lstm_output,然后将此向量lstm_output先通过fc1层,同样输出一个128维的向量记为fc1_output,并通过dropout遍历神经网络每一层的节点,然后通过对该层的神经网络设置一个节点保留概率keep_prob即该层的节点有keep_prob的概率被保留,通过设置神经网络该层节点的保留概率,使得神经网络不会去偏向于某一个节点,从而使得每一个节点的权重不会过大,来减轻神经网络的过拟合,最终在fc2层通过全连接输出2个值作为整个网络的输出,即对可疑程序执行流的判断结果;
f、针对输出的二分类判断结果来决定是否采取ROP防御手段,如果分类结果为0,表明该程序未遭受ROP攻击,此时可以简单记录目志,方便后期回查。如果分类结果为1,则表明该程序正遭受ROP攻击,此时就要启动相应的防御措施避免程序软件遭受更严重的损失,并同时记录好日志结果。
实施例
本发明结合实际情况,对本发明公开的技术方案中的部分关键内容做如下简要的举例:
针对存在缓冲区溢出漏洞的程序可执行文件,在操作系统为Ubuntu 18.04版本的Linux操作系统上。
针对待测程序的插桩,采用动态二进制插桩框架Intel PIN,PIN利用埋点探测技术,对程序执行过程的某些指令进行埋点,可以方便的进行指令识别于指令统计,并且PIN提供了丰富的API接口供使用者调用,可以方便地将程序执行时的动态执行流程通过反汇编以汇编代码的形式展示出来,所用到的API均为Intel PIN提供。
一、系统初始化:获取到待测程序软件的可执行文件,利用PIN对其进行二进制插桩,直接调用PIN提供的相关API,同时要提前编写好pintools文件,pintools文件包含可疑程序执行流筛选功能的逻辑代码,具体表现为:
①初始化全局指令统计变量;
②对ROP攻击特征的特殊指令进行埋点统计;
③使用多阈值综合判断可疑程序流;
④注册事件函数dected_suspicious_behave()和intelligen_detection()。dected_suspicious_behave()综合多个ROP攻击时的动态指令特征对当前监测程序进行可疑检测。intelligen_detection()保证检测到可疑程序执行流时,启动智能检测模块进行二次检测;
⑤将编写好的pintools进行链接从而形成以so为后缀的库文件;
⑥将链接好的pintools.so库文件链接到待测程序软件的可执行文件中;
⑦运行编译好的新的可执行文件。
二、事件处理流程:对两个事件进行特殊处理,分别是dected_suspicious_behave()和intelligen_detection()。当dected_suspicious_behave()触发时,处理步骤如下:
a、利用PIN对当前待测程序进行埋点探测,对程序执行过程中每一条指令进行统计计数;
b、对当前待测程序执行过程中满足ROP攻击特征的指令单独统计阈值,并利用多阈值综合判断当前执行时刻程序软件是否具有可疑行为;
c、对每一条指令都调用PIN的API进行反汇编操作,输出汇编指令代码;
d、针对多阈值检测,首先判断当前指令是否是在一个routine内,如果不是则说明发生了异常跳转逻辑,接着对call、jmp、ret等ROP特征的指令进行统计,判断是否满足可疑程序的阈值条件,如果满足则立刻启动intelligen_detection()事件处理函数;
当intelligen_detection()触发时,处理步骤如下:
e、获取当前时刻程序的可疑执行流片段并以汇编代码的形式输出到一个缓冲区中;
f、初始化一个滑动窗口对可疑程序流进行片段截取,同时启动智能检测模块对当前窗口内可疑片段进行智能检测;
三、智能检测模块:对于智能检测逻辑,本发明采用长短期神经网络模型,并基于大量数据样本的情况下对可疑程序执行流进行精准判断,具体流程如下:
a、将具有可疑行为的程序执行流进行数据清洗操作,具体表现为:利用滑动窗口机制,取固定长度大小Size的执行流程进行数据编码操作;
b、在进行数据编码操作之前,我们利用Intel汇编代码种类将程序执行流程以汇编代码到数字的映射方式,对程序软件所具有的编码代码进行唯一的one-hot编码,每一条汇编指令都会被编码为仅由0、1字符串所组成的1*128维的向量,从而形成一张编码表;
c、然后将窗口内的单条指令代码按照编码表对应翻译成一维向量,然后再将窗口内的所有指令代码按如上方式翻译;
d、接下来定义神经网络模型,分别为embedding层、lstm层、fc1层以及fc2层。在embedding层将one-hot向量构成的序列转换为特定长度的向量,对一个滑动窗口内的指令代码序列,我们就将它转换成了一个Size*128的矩阵向量。接着,我们将矩阵每列向量依次输入到lstm层重复迭代,最终产生一个长度为128维的向量作为输出,然后将此向量先通过FC1层,全连接层同样输出一个128维的向量,并通过dropout随机去掉一些节点,最终在FC2层通过全连接输出2个值作为整个网络的输出,即对可疑程序执行流的判断结果;
f、针对输出的二分类判断结果来决定是否采取ROP防御手段,如果分类结果为0,表明该程序未遭受ROP攻击,此时可以简单记录日志,方便后期回查。如果分类结果为1,则表明该程序正遭受ROP攻击,此时就要启动相应的防御措施避免程序软件遭受更严重的损失,并同时记录好日志结果。
本实施方式提出的检测方法有效且性能消耗小,在基于企业级真实样本数据的基础上做出的检测效率最高达到99%,平均为98%,且性能开销大多来自于Intel PIN的动态插桩开销。相比于传统的基于阈值检测的方式提升了其检测效率降低了人为阈值设定值对检测结果的影响,并且能够检测出传统方式所发现不了的ROP变种攻击。
以上仅是本发明众多具体应用范围中的代表性实施例,对本发明的保护范围不构成任何限制。凡采用变换或是等效替换而形成的技术方案,均落在本发明权利保护范围之内。

Claims (8)

1.一种针对面向返回编程攻击的智能化检测装置,其特征在于,包括以下模块:
动态二进制插桩模块:对被测程序进行插桩,利用反汇编技术将被测程序的执行过程以汇编代码的形式输出,即得到程序执行流;
可疑程序执行流筛选模块:利用动态二进制插桩模块的输出对程序的执行流进行实时监测,筛选出可疑程序执行流;
智能检测模块:对可疑程序执行流进行二次筛选,利用人工智能模型对疑似ROP攻击做到精准判断,并根据判断结果决定是否启动ROP防御模块;
ROP防御模块:对判断为ROP攻击的程序采用限时警报和主动crash的策略,防止被测程序遭受更大的损失;
智能检测模块实现步骤具体流程如下:
a、将具有可疑行为的程序执行流进行数据清洗操作,具体表现为:关注程序执行流中异常/可疑的指令流,并利用滑动窗口机制,取固定长度大小Size的指令流进行数据编码操作;
b、在进行数据编码操作之前,我们利用Intel汇编代码种类将程序执行流以汇编代码到数字的映射方式,对程序所具有的编码代码进行唯一的one-hot编码,每一条汇编指令都会被编码为仅由0、1字符串所组成的1*128维的向量,得到one-hot向量,从而形成一张编码表;
c、然后将滑动窗口内的单条指令代码按照编码表对应翻译成1*128维的向量,然后再将滑动窗口内的所有指令代码按如上方式翻译,得到每条指令所对应的one-hot向量,从而得到ne-hot向量构成的序列;
d、定义神经网络模型,分别为embedding层、lstm层、fc1层以及fc2层,在embedding层将one-hot向量构成的序列转换为特定长度的向量,对一个滑动窗口内的指令代码序列,将它转换成了一个Size*128维的矩阵向量,暂记为向量矩阵embedding_output,其中Size为长度的滑动窗口内的指令数,接着,将向量矩阵embedding_output的每列向量依次输入到lstm层重复迭代,最终产生一个长度为128维的向量作为输出,暂记为向量lstm_output,然后将此向量lstm_output先通过fc1层,同样输出一个128维的向量记为fc1_output,并通过dropout遍历神经网络每一层的节点,然后通过对该层的神经网络设置一个节点保留概率keep_prob即该层的节点有keep_prob的概率被保留,通过设置神经网络该层节点的保留概率,使得神经网络不会去偏向于某一个节点,从而使得每一个节点的权重不会过大,来减轻神经网络的过拟合,最终在fc2层通过全连接输出2个值作为整个网络的输出,即对可疑程序执行流的判断结果;
f、针对输出的二分类判断结果来决定是否采取ROP防御手段,如果分类结果为0,表明该程序未遭受ROP攻击,此时可以简单记录日志,方便后期回查;
如果分类结果为1,则表明该程序正遭受ROP攻击,此时就要启动相应的防御措施避免程序软件遭受更严重的损失,并同时记录好日志结果。
2.根据权利要求1所述的一种针对面向返回编程攻击的智能化检测装置,其特征在于,可疑程序执行流筛选模块包括以下几个部分:
指令统计模块:利用动态二进制插桩模块所输出的程序执行流,对程序执行流中每一条指令出现的次数分别进行统计计数,得到每条指令出现的次数;
ROP运行特征监控模块:定义具有ROP攻击特征的指令集为gadgets,根据ROP攻击原理,提取出gadgets指令集的特征,根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令;
多阈值统计模块:综合指令统计模块与ROP运行特征监控模块的结果,筛选出ROP攻击特征的指令出现的次数满足阈值设置指令,即为可疑程序执行流,以供可疑行为监测模块使用。
3.根据权利要求2所述的一种针对面向返回编程攻击的智能化检测装置,其特征在于,ROP运行特征监控模块具体包括以下步骤:
步骤1:定义具有ROP攻击特征的指令集为gadgets,故ROP运行特征等同于gadgets的特征,根据ROP攻击原理,提取gadgets指令集的特征,包括指令集数量、连续gadgets数量、gadgets指令集间距;
步骤2:根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令。
4.根据权利要求1所述的一种针对面向返回编程攻击的智能化检测装置,其特征在于,智能检测模块包括:数据清洗:对判定为可疑的程序执行流进行数据清洗,具体来说,获取到的程序执行流中涉及程序整个执行指令流,于是数据清洗阶段就是只关注异常/可疑指令流,并利用滑动窗口机制,对异常/可疑指令流进行Size大小的切分;数据编码:将异常/可疑指令流的汇编代码编码成one-hot编码作为人工智能模型的输入;智能模型检测:基于大量训练样本集的同时利用人工智能模型对当前被测程序进行精准检测,并作出二分类结果。
5.一种针对面向返回编程攻击的智能化检测方法,其特征在于,包括以下步骤:
动态二进制插桩步骤:对被测程序进行插桩,利用反汇编技术将被测程序的执行过程以汇编代码的形式输出,即得到程序执行流;
可疑程序执行流筛选步骤:利用动态二进制插桩步骤的输出对程序的执行流进行实时监测,筛选出可疑程序执行流;
智能检测步骤:对可疑程序执行流进行二次筛选,利用人工智能模型对疑似ROP攻击做到精准判断,并根据判断结果决定是否启动ROP防御步骤;
ROP防御步骤:对判断为ROP攻击的程序采用限时警报和主动crash的策略,防止被测程序遭受更大的损失;
智能检测步骤具体流程如下:
a、将具有可疑行为的程序执行流进行数据清洗操作,具体表现为:关注程序执行流中异常/可疑的指令流,并利用滑动窗口机制,取固定长度大小Size的指令流进行数据编码操作;
b、在进行数据编码操作之前,我们利用Intel汇编代码种类将程序执行流以汇编代码到数字的映射方式,对程序所具有的编码代码进行唯一的one-hot编码,每一条汇编指令都会被编码为仅由0、1字符串所组成的1*128维的向量,得到one-hot向量,从而形成一张编码表;
c、然后将滑动窗口内的单条指令代码按照编码表对应翻译成1*128维的向量,然后再将滑动窗口内的所有指令代码按如上方式翻译,得到每条指令所对应的one-hot向量,从而得到ne-hot向量构成的序列;
d、定义神经网络模型,分别为embedding层、lstm层、fc1层以及fc2层,在embedding层将one-hot向量构成的序列转换为特定长度的向量,对一个滑动窗口内的指令代码序列,将它转换成了一个Size*128维的矩阵向量,暂记为向量矩阵embedding_output,其中Size为长度的滑动窗口内的指令数,接着,将向量矩阵embedding_output的每列向量依次输入到lstm层重复迭代,最终产生一个长度为128维的向量作为输出,暂记为向量lstm_output,然后将此向量lstm_output先通过fc1层,同样输出一个128维的向量记为fc1_output,并通过dropout遍历神经网络每一层的节点,然后通过对该层的神经网络设置一个节点保留概率keep_prob即该层的节点有keep_prob的概率被保留,通过设置神经网络该层节点的保留概率,使得神经网络不会去偏向于某一个节点,从而使得每一个节点的权重不会过大,来减轻神经网络的过拟合,最终在fc2层通过全连接输出2个值作为整个网络的输出,即对可疑程序执行流的判断结果;
f、针对输出的二分类判断结果来决定是否采取ROP防御手段,如果分类结果为0,表明该程序未遭受ROP攻击,此时可以简单记录日志,方便后期回查;
如果分类结果为1,则表明该程序正遭受ROP攻击,此时就要启动相应的防御措施避免程序软件遭受更严重的损失,并同时记录好日志结果。
6.根据权利要求5所述的一种针对面向返回编程攻击的智能化检测方法,其特征在于,可疑程序执行流筛选步骤包括:
指令统计模步骤:利用动态二进制插桩步骤所输出的程序执行流,对程序执行流中每一条指令出现的次数分别进行统计计数,得到每条指令出现的次数;
ROP运行特征监控步骤:定义具有ROP攻击特征的指令集为gadgets,根据ROP攻击原理,提取出gadgets指令集的特征,根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令;
多阈值统计步骤:综合指令统计步骤与ROP运行特征监控步骤的结果,筛选出ROP攻击特征的指令出现的次数满足阈值设置指令,即为可疑程序执行流,以供可疑行为监测模块使用。
7.根据权利要求6所述的一种针对面向返回编程攻击的智能化检测方法,其特征在于,ROP运行特征监控步骤具体包括:
步骤1:定义具有ROP攻击特征的指令集为gadgets,故ROP运行特征等同于gadgets的特征,根据ROP攻击原理,提取gadgets指令集的特征,包括指令集数量、连续gadgets数量、gadgets指令集间距;
步骤2:根据gadgets指令集的特征筛选出程序执行流中满足ROP攻击特征的指令。
8.根据权利要求5所述的一种针对面向返回编程攻击的智能化检测方法,其特征在于,智能检测步骤包括:数据清洗:对判定为可疑的程序执行流进行数据清洗,具体来说,获取到的程序执行流中涉及程序整个执行指令流,于是数据清洗阶段就是只关注异常/可疑指令流,并利用滑动窗口机制,对异常/可疑指令流进行Size大小的切分;数据编码:将异常/可疑指令流的汇编代码编码成one-hot编码作为人工智能模型的输入;智能模型检测:基于大量训练样本集的同时利用人工智能模型对当前被测程序进行精准检测,并作出二分类结果。
CN202210525580.0A 2022-05-12 2022-05-12 一种针对面向返回编程攻击的智能化检测方法及装置 Active CN114880665B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210525580.0A CN114880665B (zh) 2022-05-12 2022-05-12 一种针对面向返回编程攻击的智能化检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210525580.0A CN114880665B (zh) 2022-05-12 2022-05-12 一种针对面向返回编程攻击的智能化检测方法及装置

Publications (2)

Publication Number Publication Date
CN114880665A CN114880665A (zh) 2022-08-09
CN114880665B true CN114880665B (zh) 2023-06-16

Family

ID=82676032

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210525580.0A Active CN114880665B (zh) 2022-05-12 2022-05-12 一种针对面向返回编程攻击的智能化检测方法及装置

Country Status (1)

Country Link
CN (1) CN114880665B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115795486B (zh) * 2023-02-07 2023-04-18 山东大学 基于二进制重写的故障注入防护方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105787368A (zh) * 2016-02-26 2016-07-20 武汉大学 一种基于函数置乱的rop防御方法与装置
CN107229862A (zh) * 2017-06-06 2017-10-03 电子科技大学 基于模拟栈和线程注入的一种rop攻击栈溢出防护方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662830A (zh) * 2012-03-20 2012-09-12 湖南大学 一种基于动态二进制翻译框架的代码复用攻击检测系统
US9904780B2 (en) * 2014-07-31 2018-02-27 Nec Corporation Transparent detection and extraction of return-oriented-programming attacks
CN105138903B (zh) * 2015-08-14 2018-07-10 电子科技大学 一种基于ret指令与jmp指令的rop攻击检测方法
CN105184169A (zh) * 2015-09-14 2015-12-23 电子科技大学 Windows操作环境下基于插桩工具的漏洞检测方法
US10476899B2 (en) * 2015-09-25 2019-11-12 Mcafee, Llc Application phenotyping
US10437998B2 (en) * 2015-10-26 2019-10-08 Mcafee, Llc Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection
CN105488397B (zh) * 2015-12-02 2018-01-12 国网智能电网研究院 一种基于情境的rop攻击检测系统及方法
CN106529224A (zh) * 2016-10-27 2017-03-22 南京大学 基于rop攻击特点的二进制混淆方法
US11004003B2 (en) * 2017-06-14 2021-05-11 Intel Corporation Machine learning based exploit detection
CN107330323B (zh) * 2017-07-10 2020-05-19 电子科技大学 一种基于Pin工具的ROP及其变种攻击的动态检测方法
CN109558726B (zh) * 2018-09-29 2022-02-11 四川大学 一种基于动态分析的控制流劫持攻击检测方法与系统
CN109766690B (zh) * 2019-01-19 2021-01-08 北京工业大学 一种基于多策略指令检测的rop及变种攻击动态检测方法
CN111274580A (zh) * 2020-01-19 2020-06-12 湖南第一师范学院 基于深度学习的控制流完整性检测方法
CN114297630A (zh) * 2021-12-09 2022-04-08 山石网科通信技术股份有限公司 恶意数据的检测方法、装置、存储介质及处理器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105787368A (zh) * 2016-02-26 2016-07-20 武汉大学 一种基于函数置乱的rop防御方法与装置
CN107229862A (zh) * 2017-06-06 2017-10-03 电子科技大学 基于模拟栈和线程注入的一种rop攻击栈溢出防护方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"IDROP: Intelligently detecting Return-Oriented Programming using real-time execution flow and LSTM";Jie Li等;2022 IEEE International Conference on Trust,Security and Privacy in Computing and Communications;第167-174页 *

Also Published As

Publication number Publication date
CN114880665A (zh) 2022-08-09

Similar Documents

Publication Publication Date Title
KR102306568B1 (ko) 컴퓨터 시스템의 제어 흐름 무결성의 프로세서 트레이스 기반 집행
Ling et al. Adversarial attacks against Windows PE malware detection: A survey of the state-of-the-art
Zolkipli et al. A framework for malware detection using combination technique and signature generation
US8117660B2 (en) Secure control flows by monitoring control transfers
CN111552971B (zh) 基于深度强化学习的恶意软件家族分类规避方法
CN102043915B (zh) 一种非可执行文件中包含恶意代码的检测方法及其装置
Alsmadi et al. A survey on malware detection techniques
CN107330323B (zh) 一种基于Pin工具的ROP及其变种攻击的动态检测方法
Aslan et al. Using a subtractive center behavioral model to detect malware
Xu et al. SoProtector: Safeguard privacy for native SO files in evolving mobile IoT applications
CN114880665B (zh) 一种针对面向返回编程攻击的智能化检测方法及装置
Yuste et al. Optimization of code caves in malware binaries to evade machine learning detectors
Yagemann et al. Barnum: Detecting document malware via control flow anomalies in hardware traces
CN115659330A (zh) 一种基于内存取证和图神经网络的恶意代码检测方法
Zhan et al. AMGmal: Adaptive mask-guided adversarial attack against malware detection with minimal perturbation
Li et al. ROPNN: Detection of ROP payloads using deep neural networks
Duby et al. Detecting and classifying self-deleting windows malware using prefetch files
CN111274580A (zh) 基于深度学习的控制流完整性检测方法
Youssef et al. Use of Ensemble Learning to Detect Buffer Overflow Exploitation
Yu et al. Minergate: A novel generic and accurate defense solution against web based cryptocurrency mining attacks
Wang et al. MrKIP: Rootkit Recognition with Kernel Function Invocation Pattern.
CN116738427B (zh) 终端安全防护方法、装置、设备及存储介质
Wang et al. APT attribution for malware based on time series shapelets
Visaggio The state of the malware: What can we defend against?
Vijay et al. Android-based smartphone malware exploit prevention using a machine learning-based runtime detection system

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant