CN105825086A - 一种基于攻击树的rop防护方法 - Google Patents
一种基于攻击树的rop防护方法 Download PDFInfo
- Publication number
- CN105825086A CN105825086A CN201610149871.9A CN201610149871A CN105825086A CN 105825086 A CN105825086 A CN 105825086A CN 201610149871 A CN201610149871 A CN 201610149871A CN 105825086 A CN105825086 A CN 105825086A
- Authority
- CN
- China
- Prior art keywords
- gadgets
- fragment
- function
- attack
- instruction
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000006870 function Effects 0.000 claims abstract description 69
- 239000012634 fragment Substances 0.000 claims description 72
- 230000035945 sensitivity Effects 0.000 claims description 26
- 230000001953 sensory effect Effects 0.000 claims description 19
- 238000004458 analytical method Methods 0.000 claims description 16
- 239000000284 extract Substances 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 101000686909 Homo sapiens Resistin Proteins 0.000 description 2
- 102100024735 Resistin Human genes 0.000 description 2
- 230000001681 protective effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 1
- 230000037213 diet Effects 0.000 description 1
- 235000005911 diet Nutrition 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于攻击树的ROP防护方法,属于计算机软件安全领域,所述发明包括提取待保护程序和系统库文件中的gadgets指令片段,确定提取出的每一个gadgets指令片段的类型,选取多个敏感系统函数,利用提取出来的gadgets指令片段以构造攻击树的方法进行攻击建模,对所有攻击方法进行分析,得到关键的gadgets,最后对这些关键的gadgets进行保护。本发明通过使用攻击建模的方式对程序进行保护,加强了攻击者劫持控制流的难度,提高了保护效率,最终使得程序控制流更加的安全。
Description
技术领域
本发明属于计算机软件安全领域,涉及应对控制流劫持中的Return-OrientedProgram(ROP)攻击技术,尤其涉及一种基于攻击树的ROP防护方法。
背景技术
当今软件已经深入到生活的方方面面,在人们的饮食、出行、交通等领域均扮演着越来越重要的角色。控制流劫持攻击是软件安全面临的一个重要威胁,如何增强软件的防护能力已经成为重要的工作。
在现有技术中,为了应对控制流劫持攻击通常采用了DEP,ASLR。DEP通过对程序内存页属性设置,避免内存页即可写又可执行,从而使得利用可写页进行攻击的方法失败。ASLR目的是对程序地址空间进行随机化,使得攻击者静态分析时获取的地址空间和真正运行时不符,从而使得攻击失败。但是这些保护方法都有自己的缺点。DEP和ASLR已经被当前的研究证明是可以被绕过的。
CFI是当前学术研究的主要方向。CFI通过对程序间接分支跳转指令的地址进行校验,从而避免被攻击者劫持。但是CFI具有两个问题:第一:开销大,不适于实际使用。(因为CFI要求对每个间接分支转移指令进行检查)。第二:当前CFI采用上下文不敏感的方法,仍然可以被攻击者绕过。
发明内容
针对上述现有技术中存在的问题,本发明的目的在于,提供一种基于攻击树的ROP防护方法。
为了实现上述目的,本发明采用如下技术方案:
一种基于攻击树的ROP防护方法,具体包括:
步骤1,选取待保护程序和系统库文件;
步骤2,提取待保护程序和系统库文件中的gadgets指令片段;
步骤3,确定提取出的每一个gadgets指令片段的类型;
步骤4,选取多个敏感系统函数;
步骤5,利用步骤2提取出来的gadgets指令片段以构造攻击树的方法进行攻击建模,即以提取出来的gadgets指令片段为攻击对象,以实现多个敏感系统函数的调用为攻击目的,以实现每个敏感系统函数的调用分别所采用的多种方法为攻击方法进行攻击树的构造;
步骤6,针对每个敏感函数,对实现该敏感函数调用的多种方法中使用到的gadgets指令片段进行分析总结,得到每个敏感函数对应的关键的gadgets指令片段;
步骤7,对步骤6得到的所有关键的gadgets指令片段进行保护。
具体地,所述步骤4中的敏感系统函数为:mprotect函数簇,mmap函数簇,exec函数簇或I/O系统调用函数簇。
具体地,所述步骤6的具体实现方法包括:
针对一个敏感函数,实现该敏感函数调用的方法包含多种,分析每种方法所使用的gadgets指令片段的类型,确定所有方法中使用次数最多的gadgets指令片段的类型,则该类型的gadget指令片段为该敏感函数对应的关键的gadget指令片段;
针对所有敏感函数,均采用所述方法确定所有敏感函数对应的关键的gadget指令片段。
具体地,所述步骤3中确定提取出的每一个gadgets指令片段的类型,所采用的方法为基于语义的分析方法或者模式匹配的方法。
具体地,所述步骤7中对步骤6得到的所有关键的gadgets指令片段进行保护,对于来自于系统库文件中的关键的gadgets指令片段,采用黑名单机制;对于来自于待保护程序中的关键的gadgets指令片段,采用指令替换的方式或者粗粒度控制流完整性的方式。
与现有技术相比,本发明具有以下技术效果:
1、本发明提出的基于攻击建模的ROP保护方法,从攻击者的角度对程序进行分析,寻找到攻击者实现攻击的关键的gadgets指令片段,然后对它们进行保护,使得程序更加具有抵抗性,最终提高程序的保护效果。
2、本发明只针对某一类或两类关键的gadgets指令片段进行保护,造成的开销相对较小,可以大大提高保护效率。
附图说明
图1是本发明的方法流程图;
图2是实现mprotect()函数调用的方法示意图;
图3是构造攻击树的流程图;
图4是gadgets指令片段进行分析的示意图;
图5是Kernel32.dll中gadgets指令片段的分类情况;
下面结合附图和具体实施方式对本发明的方法做进一步详细地解释和说明。
具体实施方式
本发明的基于攻击树的ROP防护方法,参见图1,具体包括以下几个步骤:
步骤1,选取待保护程序和系统库文件
在这里特别提到将系统库文件也作为输入,原因在于,系统库文件是操作系统自带的,其中也存在gadgets指令片段。如果攻击者在系统库文件中找到gadgets指令片段并劫持控制流,这样即使攻击者在不知道源代码的情况下依然可以实施控制流劫持攻击,一些远程攻击就是以系统库文件作为攻击目标。
步骤2,提取待保护程序和系统库文件中的gadgets指令片段
提取待保护程序和库文件中的gadgets指令片段,可以采用已有的工具,比如:mona插件。此处选择mona插件是因为它是由著名的corelanteam出品的,它是很多漏洞分析人员或者攻击者使用的工具。通过mona插件可以快速提取待保护程序和系统库文件中的gadgets指令片段。
比如:下边代码就是通过mona插件提取出来的gadgets指令片段。
步骤3,确定提取出的每一个gadgets指令片段的类型
Gadgets指令片段的类型主要可分为以下几类:
第一类:加载寄存器类型;比如:popeax;XXX;retn;
第二类:内存读写类型;比如:mov[esi],eax;xoreax,eax;XXX;retn;
第三类:算术运算类型;比如:ADDAL,5D;retn;
第四类:空操作类型,不产生任何影响的指令片段。
第五类:分支跳转类型:比如:addesp,1ah;XXX;retn;
第六类:间接函数调用类型:比如:calleax,XXX;retn;
使用基于语义的分析方法来判断gadgtes指令片段的类型,也可以采用模式匹配的方法来确定。假如指令片段中存在calleax/esi/…,通过模式匹配,发现是call指令且后边跟着一个寄存器,这就可以确定它属于间接函数调用类型的gadgets指令片段。基于语义的分析较为复杂,但是分类效果会更好。图5中展示了Kernel32.dll中gadgets指令片段的分类情况。
步骤4,选取多个敏感系统函数
为了简化分析,同时为了尽可能的降低开销,只针对一些敏感系统函数进行分析。敏感系统函数主要选取以下几种:mprotect函数簇,mmap函数簇,exec函数簇或I/O系统调用函数簇。
步骤5,利用步骤2提取出来的gadgets指令片段以构造攻击树的方法进行攻击建模,即以提取出来的gadgets指令片段为攻击对象,以实现多个敏感系统函数的调用为攻击目的,以实现每个敏感系统函数的调用分别所采用的多种方法为攻击方法进行攻击树的构造。
此实施例中,攻击建模采用构造攻击树方法,图2展示了实现mprotect()函数调用的一种方法,图3展示构造攻击树的一个简单例子。软件攻击模型要素分为以下几个:攻击对象,攻击目的和攻击方法(攻击技术)。攻击对象是提取出来的gadgets指令片段;攻击目的是实现多个敏感系统函数的调用,比如实现virtualprotect()敏感系统函数的调用,virtualprotect()敏感系统函数属于mprotect函数簇;攻击方法就是实现每个敏感函数的调用分别所采用的多种方法。如下是一个实现virtualprotect()敏感函数调用的方法,其中每个以RETN结尾的指令片段都是一个gadget指令片段,其他的属于数据信息(参数信息)和垃圾填充信息(比如:Filler)。
攻击树按照攻击方法进行构造:攻击树的根节点是敏感系统函数,子节点就是攻击方法中依次出现的gadget指令片段。比如上述代码中0x7588f969#POPEAX#RETN是一个寄存器加载类型的gadget指令片段,目的是为了获取virtualprotect()的首地址。依次遍历后边出现的gadget指令片段,就可以构造出用于实现敏感系统函数调用的攻击树。
下表列出了上述敏感函数调用的方法中出现的所有gadget指令片段以及其所属类型。
0x7588f969 | 寄存器加载类型的gadget |
0x75813290 | 读取内存类型的gadget |
0x757f9ec7 | 算术逻辑运算类型的gadget |
0x7581d7d7 | 寄存器加载类型的gadget |
0x7588f9a3 | 寄存器加载类型的gadget |
0x7589b58a | 寄存器加载类型的gadget |
0x7589aa2f | 寄存器加载类型的gadget |
0x757f64d1 | 间接分支转移类型的gadget |
0x7587f175 | 寄存器加载类型的gadget |
0x758ab078 | 寄存器加载类型的gadget |
本发明从攻击者的角度,对gadgets指令片段进行攻击建模,更具有针对性。
步骤6,针对每个敏感函数,实现对该敏感函数调用的多种方法中使用到的gadgets指令片段进行分析总结,得到每个敏感函数对应的关键的gadgets指令片段;
实现一个敏感函数的调用方法包含多种,在这里尽可能的对每种调用方法都涉及到,然后寻找这些调用方法对哪种类型的gadgets指令片段依赖度高,即对哪种类型gadgets指令片段使用最为频繁;如果大部分方法都依赖某一种类型的gadget指令片段,我们就说该类型的gadget指令片段是该敏感函数对应的关键的gadget指令片段。
依次类推,对所有的敏感函数,针对实现其调用的方法都进行总结,并找到所有敏感函数对应的关键的gadget指令片段。图4展示了一个简单的分析过程,图中每种形状的图像代表一种类型的gadget指令片段。
步骤7,对步骤6得到的所有关键的gadgets指令片段进行保护
经过分析之后会找到关键的gadgets指令片段,接下来就是对这些关键的gadgets进行保护。保护方法也包含多种,假如关键的gadgets指令片段来自于系统库文件,我们使用黑名单机制,为了安全起见,操作系统是不允许用户对系统库函数修改的;对于来自于待保护程序中的关键的gadgets指令片段,我们可以使用指令替换的方式,也可以采用粗粒度控制流完整性的方式。
这里以mprotect()敏感系统函数为例简要说明(mprotect()函数用于修改程序内存的属性,如果攻击者可以修改内存属性,就可以绕过DEP实现任意想要的功能),要实现mprotect()函数需要加载函数参数,参数加载就需要用到内存加载类型的gadgets。如果我们对内存加载类型的gadgets进行保护,这就使得攻击者达不到自己想要的恶意功能。
另外需要声明一点,基于攻击建模的ROP防御思想既可以单独的用于保护程序,也可以与其他的ROP防护技术相结合。如果能够和粗粒度CFI结合保护,保护效果会更好。
Claims (5)
1.一种基于攻击树的ROP防护方法,其特征在于,具体包括:
步骤1,选取待保护程序和系统库文件;
步骤2,提取待保护程序和系统库文件中的gadgets指令片段;
步骤3,确定提取出的每一个gadgets指令片段的类型;
步骤4,选取多个敏感系统函数;
步骤5,利用步骤2提取出来的gadgets指令片段以构造攻击树的方法进行攻击建模,即以提取出来的gadgets指令片段为攻击对象,以实现多个敏感系统函数的调用为攻击目的,以实现每个敏感系统函数的调用分别所采用的多种方法为攻击方法进行攻击树的构造;
步骤6,针对每个敏感函数,对实现该敏感函数调用的多种方法中使用到的gadgets指令片段进行分析总结,得到每个敏感函数对应的关键的gadgets指令片段;
步骤7,对步骤6得到的所有关键的gadgets指令片段进行保护。
2.如权利要求1所述的基于攻击树的ROP防护方法,其特征在于,所述步骤4中的敏感系统函数为:mprotect函数簇,mmap函数簇,exec函数簇或I/O系统调用函数簇。
3.如权利要求1所述的基于攻击树的ROP防护方法,其特征在于,所述步骤6的具体实现方法包括:
针对一个敏感函数,实现该敏感函数调用的方法包含多种,分析每种方法所使用的gadgets指令片段的类型,确定所有方法中使用次数最多的gadgets指令片段的类型,则该类型的gadget指令片段为该敏感函数对应的关键的gadget指令片段;
针对所有敏感函数,均采用所述方法确定所有敏感函数对应的关键的gadget指令片段。
4.如权利要求1所述的基于攻击树的ROP防护方法,其特征在于,所述步骤3中确定提取出的每一个gadgets指令片段的类型,所采用的方法为基于语义的分析方法或者模式匹配的方法。
5.如权利要求1所述的基于攻击树的ROP防护方法,其特征在于,所述步骤7中对步骤6得到的所有关键的gadgets指令片段进行保护,对于来自于系统库文件中的关键的gadgets指令片段,采用黑名单机制;对于来自于待保护程序中的关键的gadgets指令片段,采用指令替换的方式或者粗粒度控制流完整性的方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610149871.9A CN105825086B (zh) | 2016-03-16 | 2016-03-16 | 一种基于攻击树的rop防护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610149871.9A CN105825086B (zh) | 2016-03-16 | 2016-03-16 | 一种基于攻击树的rop防护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105825086A true CN105825086A (zh) | 2016-08-03 |
CN105825086B CN105825086B (zh) | 2018-07-24 |
Family
ID=56523480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610149871.9A Expired - Fee Related CN105825086B (zh) | 2016-03-16 | 2016-03-16 | 一种基于攻击树的rop防护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105825086B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372501A (zh) * | 2016-08-22 | 2017-02-01 | 南京大学 | 一种针对rop攻击的防御方法 |
CN109446805A (zh) * | 2018-10-19 | 2019-03-08 | 西安电子科技大学 | 一种信息流完整性攻击的度量方法及其计算机装置、可读存储介质 |
CN109617882A (zh) * | 2018-12-20 | 2019-04-12 | 国家计算机网络与信息安全管理中心 | 一种基于攻击树的最小防护措施集生成方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150278516A1 (en) * | 2014-03-28 | 2015-10-01 | Intel Corporation | Return-target restrictive return from procedure instructions, processors, methods, and systems |
CN105138914A (zh) * | 2015-08-03 | 2015-12-09 | 南京大学 | 一种针对代码复用编程的软件安全性检测方法 |
CN105335656A (zh) * | 2015-11-02 | 2016-02-17 | 南京大学 | 基于二进制改写和动态随机化的软件安全增强方法 |
-
2016
- 2016-03-16 CN CN201610149871.9A patent/CN105825086B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150278516A1 (en) * | 2014-03-28 | 2015-10-01 | Intel Corporation | Return-target restrictive return from procedure instructions, processors, methods, and systems |
CN105138914A (zh) * | 2015-08-03 | 2015-12-09 | 南京大学 | 一种针对代码复用编程的软件安全性检测方法 |
CN105335656A (zh) * | 2015-11-02 | 2016-02-17 | 南京大学 | 基于二进制改写和动态随机化的软件安全增强方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106372501A (zh) * | 2016-08-22 | 2017-02-01 | 南京大学 | 一种针对rop攻击的防御方法 |
CN106372501B (zh) * | 2016-08-22 | 2019-03-26 | 南京大学 | 一种针对rop攻击的防御方法 |
CN109446805A (zh) * | 2018-10-19 | 2019-03-08 | 西安电子科技大学 | 一种信息流完整性攻击的度量方法及其计算机装置、可读存储介质 |
CN109446805B (zh) * | 2018-10-19 | 2021-10-29 | 西安电子科技大学 | 信息流完整性攻击度量方法及其计算机装置、可读存储介质 |
CN109617882A (zh) * | 2018-12-20 | 2019-04-12 | 国家计算机网络与信息安全管理中心 | 一种基于攻击树的最小防护措施集生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105825086B (zh) | 2018-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tian et al. | A real-time correlation of host-level events in cyber range service for smart campus | |
CN111935192B (zh) | 网络攻击事件溯源处理方法、装置、设备和存储介质 | |
CN112073411B (zh) | 一种网络安全推演方法、装置、设备及存储介质 | |
Creech et al. | Generation of a new IDS test dataset: Time to retire the KDD collection | |
CN107122221A (zh) | 用于正则表达式的编译器 | |
CN110958257B (zh) | 一种内网渗透过程还原方法和系统 | |
CN106326737A (zh) | 用于检测可在虚拟堆栈机上执行的有害文件的系统和方法 | |
CN110213226A (zh) | 基于风险全要素辨识关联的网络攻击场景重建方法及系统 | |
CN110417768B (zh) | 一种僵尸网络的跟踪方法及装置 | |
CN110351255B (zh) | 一种网络靶场系统中的数据采集方法及数据采集系统 | |
CN104850786A (zh) | 基于环境重构的恶意代码完整性分析方法 | |
Luoshi et al. | A3: automatic analysis of android malware | |
Liu et al. | PSDEM: a feasible de-obfuscation method for malicious PowerShell detection | |
CN105825086A (zh) | 一种基于攻击树的rop防护方法 | |
Chethana et al. | Improved Domain Generation Algorithm To Detect Cyber-Attack With Deep Learning Techniques | |
Bhuiyan et al. | API vulnerabilities: Current status and dependencies | |
Zeng et al. | Modelling Hybrid Cyber Kill Chain. | |
Li et al. | A framework for mimic defense system in cyberspace | |
Lounis | Stochastic-based semantics of attack-defense trees for security assessment | |
Wu et al. | Detection of fake IoT app based on multidimensional similarity | |
Baldin | Best practices for fighting the fileless threat | |
Abusnaina et al. | Burning the adversarial bridges: Robust windows malware detection against binary-level mutations | |
CN106411951A (zh) | 网络攻击行为检测方法及装置 | |
Almarshad et al. | Detecting zero-day polymorphic worms with jaccard similarity algorithm | |
Al-Fedaghi et al. | Computer attacks as machines of things that flow |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180724 Termination date: 20200316 |
|
CF01 | Termination of patent right due to non-payment of annual fee |