CN111753295B - 一种基于漏洞利用程序特征的漏洞利用程序检测方法 - Google Patents

一种基于漏洞利用程序特征的漏洞利用程序检测方法 Download PDF

Info

Publication number
CN111753295B
CN111753295B CN202010459057.3A CN202010459057A CN111753295B CN 111753295 B CN111753295 B CN 111753295B CN 202010459057 A CN202010459057 A CN 202010459057A CN 111753295 B CN111753295 B CN 111753295B
Authority
CN
China
Prior art keywords
program
instruction
exploit
node
call
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
CN202010459057.3A
Other languages
English (en)
Other versions
CN111753295A (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.)
Jiangsu University
Original Assignee
Jiangsu University
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 Jiangsu University filed Critical Jiangsu University
Priority to CN202010459057.3A priority Critical patent/CN111753295B/zh
Publication of CN111753295A publication Critical patent/CN111753295A/zh
Application granted granted Critical
Publication of CN111753295B publication Critical patent/CN111753295B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种基于漏洞利用程序特征的漏洞利用程序检测方法,包括:通过Wireshark在网络流量中获取待检测的漏洞利用程序,之后通过IDA获取程序的汇编代码;通过对漏洞利用程序特征进行分析,得到漏洞利用程序的词法、语法和语义特征;对漏洞利用程序的汇编指令进行信息过滤与信息提取,生成对应的控制流图;对控制流图的节点进行信息提取,通过JCFG(Control Flow Graph based Jump,记为JCFG)生成方法,将控制流图转换成对应的JCFG图;通过对漏洞利用程序进行动态分析,对执行指令生成的节点与静态JCFG图节点进行比对,从而来检测程序是否为漏洞利用程序。

Description

一种基于漏洞利用程序特征的漏洞利用程序检测方法
技术领域
本发明属于网络流量中漏洞利用程序检测领域,涉及一种基于漏洞利用程序特征的漏洞利用程序程序检测方法。
背景技术
随着时代的进步,网络在社会的各个角落生根发芽,充斥在人们的生活当中,无处不在,是现代人生活中必不可少的组成部分。然而,对于存在于网络中的恶意程序,却没有一个十分有效的检测手段,人们在享受着网络技术带来的便利的同时,却并没有很好的制约手段来对潜伏在网络环境中的漏洞利用程序进行防范,这将对网络技术的发展带来十分严重的困扰。
控制流完整性(Control-Flow-Integrity,记做CFI)检测首先对程序进行静态检测,得出控制流图,之后再进行动态运行分析,检测程序中跳转指令的合法性。在近些年来常常被用于对漏洞利用程序的检测,并取得了良好的成效。它主要分为细粒度CFI检测和粗粒度CFI检测两种。
首先被提出的是细粒度CFI检测,它是通过对所有的跳转指令分配唯一的地址ID,在程序的二进制代码中插入ID信息,在每次执行跳转指令时,对跳转指令ID及目的地ID进行比对,判断其跳转是否合法。但是由于细粒度CFI系统开销过大,不能广泛应用于实际中,因此在2013年又有学者提出了一种低精确的CFI,称作CCFIR,它属于粗粒度CFI中的一种。它通过对程序进行静态分析,将所有的合法地址存储在一个独立的安全内存中,所有的跳转指令都需要通过这个独立的安全内存来进行跳转,通过建立这个检查机制来校验跳转的合法性。细粒度CFI检测方法需要对待检测程序进行插桩处理,系统开销过大,粗粒度CFI检测方法的检测精确度不高,不能很好地检测出隐藏的漏洞利用程序,本文通过结合细粒度CFI检测方法和粗粒度CFI检测方法,在没有对待检测程序进行处理的基础上,对漏洞利用程序进行检测,因此,本文提出的基于漏洞利用程序特征的漏洞利用程序检测方法有着重要意义。
发明内容
由于目前的漏洞利用程序检测方法存在着开销过高、精确度不足等问题,因此本发明提出了一种基于漏洞利用程序特征的漏洞利用程序检测方法来解决上述问题。
本发明提供了一种基于漏洞利用程序特征的漏洞利用程序检测方法,包括:
步骤1通过Wireshark对网络流量中的数据进行采集,并对采集的数据包进行还原,获取待检测的漏洞利用程序,之后通过IDA获取待检测程序的汇编代码;
步骤2通过对漏洞利用程序的特征进行分析归纳,从而得到漏洞利用程序的词法、语法和语义特征;
步骤3使用CFG生成算法,对待检测程序的汇编代码进行处理,生成对应的CFG图;
步骤4使用JCFG生成算法,对上一步生成的CFG图中的节点信息进行进一步处理,生成对应的JCFG图;
步骤5使用基于JCFG的漏洞利用程序检测算法,对待检测程序进行动态分析,返回检测结果,实现对漏洞利用程序的检测;
第一方面,上述步骤2具体包括:
通过对网络中的漏洞利用程序的特征进行归纳分析,主要是根据漏洞利用程序中异常跳转的特征进行分析总结,通过对产生异常跳转的漏洞利用程序进行分析,对其中造成危害的特定指令进行归纳总结,得出漏洞利用程序的程序特征μ的定义,μ(Vul)={D,C}。其中Vul表示漏洞利用程序所利用漏洞的漏洞类型,即漏洞利用程序所想要达到的目的。D表示漏洞利用危险节点的集合,对于漏洞利用程序而言,程序Prog中包含漏洞利用危险元素σ的指令,被称作漏洞利用危险节点,D是这些漏洞利用危险节点的集合,D={d1,d2,…,dn}。C表示漏洞利用程序的程序特征所需满足的相关漏洞利用约束,C=c1||c2||…||cj||…||cn,对于一个漏洞利用程序而言,它首先需要满足漏洞利用程序的基本约束Bcj,也要满足漏洞利用程序的附加约束Tcj,即cj=Bcj∧Tcj
第二方面,上述步骤3具体包括:
通过处理待检测程序的汇编代码,对于其中包含关键性指令的语句进行信息提取和节点生成,并存在数据库中。这些关键指令的语法特征可以总结为以下几类:(1)对于函数的调用指令call;(2)地址的跳转指令jmp;(3)判断指令jz,jnz等等;(4)返回指令retn,ret等等。我们将这些漏洞利用程序的语法特征称为漏洞利用危险元素σ,对于漏洞利用程序危险节点而言,必定包含漏洞利用危险元素。
第三方面,上述步骤4具体包括:
对已经生成的CFG节点进行进一步的信息提取,待检测程序中的指令信息已经在生成CFG图的过程中被过滤了极大部分的不关键信息,我们继续对CFG的节点信息中的指令信息属性进行进一步处理,从而获取JCFG节点信息,通过JCFG生成算法,对已经生成的CFG图进行处理,得到对应的JCFG图。
第四方面,上述步骤5具体包括:
通过对待检测程序进行动态分析,提取执行指令生成对应的执行节点,与数据库中的JCFG图中的节点进行比较。其中使用的函数定义如下所示:1.函数名称判定函数CNameJudge(JCFGNode,*q):程序动态执行时,当前执行指令为调用指令Call的时候,将call后面的调用函数名称与当前JCFG的节点指针对指向的节点的函数名称进行比较,相同返回false,不同返回true。2.跳转地址判定函数JAdressJudge(JCFGNode,*q):程序动态执行时,当前执行指令为跳转执行JXX时,将后面对应的跳转地址于当前JCFG的节点指针所指向的后续节点的目的地址JAdress进行比较,相同返回false,不同返回true。3.返回地址判定函数RetnJudge(R,*q):程序动态执行时,当前执行指令为返回指令Retrun的时候,将执行之后所在的地址与返回地址集合中最上层的地址进行比较,相同返回false,不同返回true。4.指令包含关系:用Include(d,instruction)来对当前执行指令节点d中含有已定义指令instruction进行表示,其中instruction包括了前面所提及的调用指令Call,跳转指令JXX和返回指令Retrun。例如这表示程序Prog的当前执行指令节点调用了Call指令。
本发明有益的效果是:
1.CFG生成算法和JCFG生成算法可以对待检测程序的汇编代码进行过滤,直接通过对待检测程序汇编代码进行指令的提取生成JCFG图的效率过低,因此先采用IDA脚本生成对应的CFG图,通过它来过滤一些不重要指令,保留所需要的CALL、JXX、Return等关键指令,之后通过对生成的CFG图中包含的节点信息进行提取,从而得到所需要的JCFG图,便于之后基于JCFG图的漏洞利用程序检测方法来对待检测的漏洞利用程序使用。
2.基于JCFG图的漏洞利用程序检测算法通过对待检测的漏洞利用程序进行动态分析,对执行过程中的关键指令生成对应的指令节点,并与JCFG图中的执行节点进行比较,来判断其是否产生异常跳转。该算法结合了细粒度CFI和粗粒度CFI的特点,减少了系统开销的同时提高了检测准确度,并且不用对待检测程序进行进一步的插桩处理。
3.有效的从网络流量中采集对应的数据流量,完成实时监测;对数据包进行还原,获取待检测的漏洞利用程序;通过对漏洞利用程序的词法、语法和语义三个方面进行分析,从而得到漏洞利用程序的特征,得出漏洞利用程序危险节点的相关定义;CFG算法和JCFG算法用来完成对待检测的漏洞利用程序的图形化处理;基于JCFG的漏洞利用程序检测算法被用来对待检测的漏洞利用程序进行识别;实验结果表明所提的方法对网络流量的漏洞利用程序的检测有一定的效果,可以实现对网络流量中漏洞利用程序的识别,保证了网络安全。
附图说明
图1是本发明的基于漏洞利用程序特征的漏洞利用程序检测方法流程图;
图2控制流图节点属性数据结构设计图;
图3JCFG图节点属性数据结构设计图;
图4执行节点属性数据结构设计图;
图5检测结果图;
具体实施方式
下面将通过附图以及具体步骤对本发明进一步阐述。
本发明的目的是针对网络流量中存在的一些利用漏洞的漏洞利用程序,提供一种基于漏洞利用程序特征的漏洞利用程序检测方法,有效的完成对漏洞利用程序的识别,提供了基于JCFG图的漏洞利用程序检测算法,并进行了充分的实验,这也证明了该方法的可行性和有效性。
如图1所示,本发明的基于漏洞利用程序特征的漏洞利用程序检测方法,包括:
步骤101通过Wireshark对网络流量中的数据进行采集,并对收集到的数据包进行还原,获取待检测的漏洞利用程序,并通过IDA,获取待检测程序的汇编代码;
步骤102通过对漏洞利用程序特征进行分析,得到漏洞利用程序的词法、语法和语义特征;
步骤103根据漏洞利用程序的词法、语法和语义特征,构建控制流图生成算法,并通过该算法,得到待检测程序的控制流图;
步骤104通过对得到的控制流图的节点信息进行提取,并通过JCFG图生成算法,将控制流图转换成对应的JCFG图;
步骤105通过将待检测程序进行动态分析,并通过基于JCFG图的漏洞利用程序检测算法,来对待检测程序进行检测。
上述步骤101,具体的步骤如下所示:
(1)待检测程序提取
首先需要借助Wireshark进行网络流量数据采集,通过对网络中传输的数据包进行收集,对其中可能的漏洞利用程序进行还原,将其还原为exe程序形式。
(2)汇编代码获取
对于还原出来的待检测的漏洞利用程序,通过IDA对待检测的漏洞利用程序进行静态分析,IDA是一款十分实用的静态分析工具,通过它来对漏洞利用程序进行分析。将待检测的漏洞利用程序导入IDA中,从而得到待检测的漏洞利用程序的汇编代码,
对于步骤102,漏洞利用程序特征获取主要步骤如下:
虽然漏洞利用程序的利用方法多式多样,但是从语法、词法和语义的角度来进行归纳,总是可以找到一定的相通之处。在本文中,将漏洞利用程序的程序特征记作μ,漏洞利用程序的漏洞利用约束记作C。下面,对本文所研究的漏洞利用程序的程序特征进行了描述。
漏洞利用程序的程序特征μ:μ(Vul)={D,C}。其中Vul表示漏洞利用程序所利用漏洞的漏洞类型,即漏洞利用程序所想要达到的目的。D表示漏洞利用危险节点的集合,对于漏洞利用程序而言,程序Prog中包含漏洞利用危险元素σ的指令,被称作漏洞利用危险节点,D是这些漏洞利用危险节点的集合,D={d1,d2,…,dn}。C表示漏洞利用程序的程序特征所需满足的相关漏洞利用约束,C=c1||c2||…||cj||…||cn,对于一个漏洞利用程序而言,它首先需要满足漏洞利用程序的基本约束Bcj,也要满足漏洞利用程序的附加约束Tcj,即cj=Bcj∧Tcj
在漏洞利用程序的程序特征μ里,D对漏洞利用程序的予以和语法特征进行了表述,C对漏洞利用程序的语义特征进行了表述。并且对于漏洞利用程序的程序特征μ而言,它还具备以下几种性质:1.对于一个程序来说,它所拥有的节点个数是有限的,因此,它所包含的漏洞利用程序危险节点的个数也是有限的;2.对于漏洞利用危险节点而言,漏洞利用危险节点必定包含漏洞利用危险元素。
对于步骤103,根据漏洞利用程序的词法、语法和语义特征,构建控制流图生成算法,并通过该算法,得到待检测程序的控制流图,具体步骤如下:
首先,根据已经得出的漏洞利用程序特征,对待检测的漏洞利用程序中的汇编指令进行整理,得出以下定义:1.调用指令Call,用Call表示函数调用指令;2.跳转指令JXX,用JXX表示跳转指令,其中包含了有条件跳转指令JCC(其中CC表示测试条件类型的字符序列,其中包含jz,jnz等等)和无条件跳转指令jmp;3.返回指令Return,用Return表示函数调用指令,其中包括RETN和RETF两种返回指令,RETN是用于从段内转移CALL进的子程序中返回,RETF时用于从段间转CALL进的子程序中返回;4.返回地址集合R,每次执行Call指令之时,将跟在call指令之后的地址存入返回地址集合R中;5.相同节点判定,对于程序而言,有可能存在jnz之后两条执行路径又重新合并得可能性,因此需要对其进行判定,避免重复,判定函数记作isSame(jAdress)。
通过得出的定义,对控制流图的节点数据结构进行设计,具体如图2所示,得出CFG图的生成算法,如下所示:
通过CFG生成算法,将待检测的漏洞利用程序的汇编代码输入,获取待检测的漏洞利用程序的控制流图。
对于步骤104,通过对得到的控制流图的节点信息进行提取,并通过JCFG图生成算法,将控制流图转换成对应的JCFG图,具体的步骤如下:
首先,根据漏洞利用程序的特征,对JCFG做出以下定义:JCFG=(D,E,R,Begin,End)。其中D代表的是JCFG中包含的漏洞利用危险节点的集合,对于集合中的漏洞利用危险节点d而言,d={id,attr,next_id),其中id代表的是该节点在JCFG中的编号,attr表示的是该节点的特征属性,next_id表示的是该节点指向的节点,因为有可能存在分叉路径,因此指向的第一个节点记作*first,指向的第二个节点记作*second。对于节点属性来说,attr=(address,attrName,funcName,jAdress),其中address表示的时指令当前所在地址,attrName表示的是指令名称,funcName表示的是调用函数名称,jAdress表示的是跳转目的地址。E表示的是边的结合,用于表达节点间的指向关系。R表示的是返回地址的集合,对于每次调用call指令,都将call指令的后一个地址加入R中。Begin是JCFG入口节点。End是JCFG的结束节点。
并且对JCFG图的节点数据结构进行设计,如图3所示,同时得出JCFG图的生成算法,如下所示:
通过对CFG图的节点进行遍历,对CFG节点信息进行提取,得到待检测的漏洞利用程序的JCFG图。
对于步骤105,通过将待检测程序进行动态分析,并通过基于JCFG图的漏洞利用程序检测算法,来对待检测程序进行检测,具体步骤如下:
通过对待检测程序进行动态分析,提取执行指令生成对应的执行节点,与数据库中的JCFG图中的节点进行比较。其中使用的函数定义如下所示:1.函数名称判定函数CNameJudge(JCFGNode,*q):程序动态执行时,当前执行指令为调用指令Call的时候,将call后面的调用函数名称与当前JCFG的节点指针对指向的节点的函数名称进行比较,相同返回false,不同返回true。2.跳转地址判定函数JAdressJudge(JCFGNode,*q):程序动态执行时,当前执行指令为跳转执行JXX时,将后面对应的跳转地址于当前JCFG的节点指针所指向的节点的目的地址JAdress进行比较,相同返回false,不同返回true。3.返回地址判定函数RetnJudge(R,*q):程序动态执行时,当前执行指令为返回指令Retrun的时候,将执行之后所在的地址与返回地址集合中最上层的地址进行比较,相同返回false,不同返回true。4.指令包含关系:用Include(d,instruction)来对当前执行指令节点d中含有已定义指令instruction进行表示,其中instruction包括了前面所提及的调用指令Call,跳转指令JXX和返回指令Retrun。例如这表示程序Prog的当前执行指令节点调用了Call指令。
异常跳转(Abnormal Jump)是指程序在运行时,被劫持了执行流,使得程序执行了本不应该执行的代码,被称作异常跳转。定义为σ(AJ),并且根据漏洞利用程序特征定义可以得知,σ(AJ)={D,C},下面来对漏洞利用危险节点D和漏洞利用程序的程序特征约束条件C进行形式化描述。
1.漏洞利用危险节点D={DCNameJudge,DJAdressJudge,DRetnJudge},其中
解释说明:DCNameJudge表示程序中调用函数名称判定函数并且返回值为true的节点的集合,DJAdressJudge表示程序中调用跳转地址判定函数并且返回值为true的节点的集合,DRetnJudge表示程序中调用返回地址判定函数并且返回指为true的节点的集合。
2.漏洞利用程序特征相关约束C。
说明:漏洞利用程序特征相关约束C1表示存在漏洞利用程序JCFG节点*p在漏洞利用程序危险节点集D中,存在指令节点*q在在检测得漏洞利用程序中,并且*p所在节点的指令为Call指令,*q所在的指令节点的指令也为Call指令,在这时对其调用函数名称判定函数,判断其是否存在地址异常跳转的情况。
说明:漏洞利用程序特征相关约束C2表示存在漏洞利用程序JCFG节点*p在漏洞利用程序危险节点集D中,存在指令节点*q在在检测得漏洞利用程序中,并且*p所在节点的指令为JXX指令,*q所在的指令节点的指令也为JXX在这时对其调用跳转地址判定函数,判断其是否存在地址异常跳转的情况。
说明:漏洞利用程序特征相关约束C3表示存在漏洞利用程序JCFG节点*p在漏洞利用程序危险节点集D中,存在指令节点*q在在检测得漏洞利用程序中,并且*p所在节点的指令为Return指令,*q所在的指令节点的指令也为Return指令,在这时对其调用返回地址判定函数,判断其是否存在地址异常跳转的情况。
对于待检测程序在动态执行的过程中,对于执行节点的数据结构设计如图4所示,基于JCFG的漏洞利用程序检测算法如下所示:
通过将本发明提出的基于漏洞利用程序特征的漏洞利用程序检测方法在实验主机中进行实验,对于当前存在的漏洞利用程序进行检测,检测结果如图5所示,可以证明本发明是可行的(检测结果部分,用“1”表示该检测方法能检测出漏洞利用程序,“0”表示未能检测出漏洞利用程序)。
综上,本发明的一种基于漏洞利用程序特征的漏洞利用程序检测方法,包括:通过Wireshark在网络流量中获取待检测的漏洞利用程序,之后通过IDA获取程序的汇编代码;通过对漏洞利用程序特征进行分析,得到漏洞利用程序的词法、语法和语义特征;对漏洞利用程序的汇编指令进行信息过滤与信息提取,生成对应的控制流图;对控制流图的节点进行信息提取,通过JCFG(Control Flow Graph based Jump,记为JCFG)生成方法,将控制流图转换成对应的JCFG图;通过对漏洞利用程序进行动态运行,通过对执行指令生成的节点与静态JCFG图节点进行比对,从而来检测程序是否为漏洞利用程序。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

Claims (4)

1.一种基于漏洞利用程序特征的程序分析方法,其特征在于,包括以下步骤:
步骤1通过Wireshark对网络流量中的数据进行采集,并对采集的数据包进行还原,获取待检测的漏洞利用程序,之后通过IDA获取待检测程序的汇编代码;
步骤2通过对漏洞利用程序的特征进行分析归纳,从而得到漏洞利用程序的词法、语法和语义特征;
步骤3根据得到的词法、语法和语义特征,构建控制流图生成算法,并通过该算法与获得的待检测程序的汇编代码,生成对应的控制流图;
步骤4对控制流图中的节点信息进行提取,通过JCFG图生成算法,将控制流图转换成对应的JCFG图;
步骤5通过将待检测程序进行动态分析,并通过基于JCFG图的漏洞利用程序检测算法,来对待检测程序进行检测,得到检测结果;
所述步骤5的基于JCFG图的漏洞利用程序检测算法包括:
通过对待检测程序进行动态分析,提取执行指令生成对应的执行节点,与数据库中的JCFG图中的节点进行比较;其中使用的函数定义如下所示:
5.1.函数名称判定函数:程序动态执行时,当前执行指令为调用指令Call的时候,将call后面的调用函数名称与当前JCFG的节点指针对指向的节点的函数名称进行比较,相同返回false,不同返回true;
5.2.跳转地址判定函数:程序动态执行时,当前执行指令为跳转执行JXX时,将后面对应的跳转地址于当前JCFG的节点指针所指向的节点的目的地址JAdress进行比较,相同返回false,不同返回true;
5.3.返回地址判定函数:程序动态执行时,当前执行指令为返回指令Retrun的时候,将执行之后所在的地址与返回地址集合中最上层的地址进行比较,相同返回false,不同返回true;
5.4.指令包含关系:用Include(d,instruction)来对当前执行指令节点d中含有已定义指令instruction进行表示,其中instruction包括了前面所提及的调用指令Call,跳转指令JXX和返回指令Retrun。
2.根据权利要求1所述的一种基于漏洞利用程序特征的程序分析方法,其特征在于,所述步骤2具体包括:
通过对网络中的漏洞利用程序的特征进行归纳分析,根据漏洞利用程序中异常跳转的特征进行分析总结,通过对产生异常跳转的漏洞利用程序进行分析,对其中造成危害的指令进行归纳总结,得出漏洞利用程序的程序特征μ的定义,μ(Vul)={D,C};其中Vul表示漏洞利用程序所利用漏洞的漏洞类型,即漏洞利用程序所想要达到的目的,D表示漏洞利用危险节点的集合,对于漏洞利用程序而言,程序Prog中包含漏洞利用危险元素σ的指令,被称作漏洞利用危险节点,D是这些漏洞利用危险节点的集合,D={d1,d2,…,dn};C表示漏洞利用程序的程序特征所需满足的相关漏洞利用约束,C=c1||c2||…||cj||…||cn,对于一个漏洞利用程序而言,它首先需要满足漏洞利用程序的基本约束Bcj,也要满足漏洞利用程序的附加约束Tcj,即cj=Bcj∧Tcj
3.根据权利要求1所述的一种基于漏洞利用程序特征的程序分析方法,其特征在于,所述步骤3具体包括:
根据对漏洞利用程序的词法、语法和语义特征,总结以下定义:
3.1.调用指令Call,用Call表示函数调用指令;
3.2.跳转指令JXX,用JXX表示跳转指令,其中包含了有条件跳转指令JCC和无条件跳转指令jmp,其中CC表示测试条件类型的字符序列,字符序列中包含jz,jnz;
3.3.返回指令Return,用Return表示函数调用指令,其中包括RETN和RETF两种返回指令,RETN是用于从段内转移CALL进的子程序中返回,RETF时用于从段间转CALL进的子程序中返回;
3.4.返回地址集合R,每次执行Call指令之时,将跟在call指令之后的地址存入返回地址集合R中;
3.5.相同节点判定,对于程序而言,有可能存在指令有条件跳转指令之后两条执行路径又重新合并得可能性,因此需要对其进行判定,避免重复,判定函数记作isSame(jAdress);并通过以上定义,得出控制流图的生成算法,用于对待检测的程序进行控制流图的生成,控制流图的生成算法采用的是递归的方式,首先,对待检测程序的汇编代码进行读取,对其中的关键性指令进行处理,对于其中JXX指令或者Return指令改变指令读取的地址,所有的关键指令处理之后,生成对应的指令节点,存储于数据库中。
4.根据权利要求1所述的一种基于漏洞利用程序特征的程序分析方法,其特征在于,所述步骤4的JCFG图生成算法包括:
通过对生成的CFG图的节点进行遍历,提取CFG图的节点信息,将CFG图中的每个节点转换成JCFG图节点,生成对应的JCFG图,JCFG图的节点属性数据结构是对CFG图的节点属性的数据结构进行进一步提取,将其细分为指令名称,函数调用名称和目的地址三个部分;指令名称含有两种,分别为之前提及的Call指令和JXX指令;函数调用名称分为两种,对于Call指令,函数调用名称为call指令后面的函数名称,而JXX指令的函数调用名称,当其后面接的操作数为函数时,函数调用名称为函数名,当其后面接的操作数为地址时,函数调用名称中存储的是JXX指令的跳转地址;通过生成的JCFG图便捷地对程序进行分析,减少安全人员的工作量。
CN202010459057.3A 2020-05-27 2020-05-27 一种基于漏洞利用程序特征的漏洞利用程序检测方法 Active CN111753295B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010459057.3A CN111753295B (zh) 2020-05-27 2020-05-27 一种基于漏洞利用程序特征的漏洞利用程序检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010459057.3A CN111753295B (zh) 2020-05-27 2020-05-27 一种基于漏洞利用程序特征的漏洞利用程序检测方法

Publications (2)

Publication Number Publication Date
CN111753295A CN111753295A (zh) 2020-10-09
CN111753295B true CN111753295B (zh) 2024-05-14

Family

ID=72674250

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010459057.3A Active CN111753295B (zh) 2020-05-27 2020-05-27 一种基于漏洞利用程序特征的漏洞利用程序检测方法

Country Status (1)

Country Link
CN (1) CN111753295B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113556336B (zh) * 2021-07-19 2022-02-11 北京丁牛科技有限公司 提权漏洞攻击的检测方法及装置、电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814053A (zh) * 2010-03-29 2010-08-25 中国人民解放军信息工程大学 一种基于功能模型的二进制代码漏洞发现方法
CN107886000A (zh) * 2017-11-13 2018-04-06 华中科技大学 一种软件漏洞检测方法、分级响应方法及软件漏洞检测系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101814053A (zh) * 2010-03-29 2010-08-25 中国人民解放军信息工程大学 一种基于功能模型的二进制代码漏洞发现方法
CN107886000A (zh) * 2017-11-13 2018-04-06 华中科技大学 一种软件漏洞检测方法、分级响应方法及软件漏洞检测系统

Also Published As

Publication number Publication date
CN111753295A (zh) 2020-10-09

Similar Documents

Publication Publication Date Title
CN111695119B (zh) 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法
Cui et al. Tupni: Automatic reverse engineering of input formats
CN101661543B (zh) 软件源代码安全漏洞的检测方法及检测装置
US20040205411A1 (en) Method of detecting malicious scripts using code insertion technique
Liao et al. SmartDagger: a bytecode-based static analysis approach for detecting cross-contract vulnerability
US20110239294A1 (en) System and method for detecting malicious script
CN111400719A (zh) 基于开源组件版本识别的固件脆弱性判别方法及系统
CN111835777B (zh) 一种异常流量检测方法、装置、设备及介质
EA037617B1 (ru) Способ и система для обнаружения несанкционированного вторжения в трафик данных в сети передачи данных
US10296743B2 (en) Method and device for constructing APK virus signature database and APK virus detection system
Davis et al. Using selective memoization to defeat regular expression denial of service (ReDoS)
Liu et al. Revealer: Detecting and exploiting regular expression denial-of-service vulnerabilities
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
CN115270131A (zh) 一种Java反序列化漏洞检测方法及系统
Beaucamps et al. Behavior abstraction in malware analysis
CN115913655B (zh) 一种基于流量分析和语义分析的Shell命令注入检测方法
US9600644B2 (en) Method, a computer program and apparatus for analyzing symbols in a computer
CN113872965A (zh) 一种基于Snort引擎的SQL注入检测方法
CN111753295B (zh) 一种基于漏洞利用程序特征的漏洞利用程序检测方法
Kang et al. Scaling javascript abstract interpretation to detect and exploit node. js taint-style vulnerability
CN103166942B (zh) 一种恶意代码的网络协议解析方法
Wang et al. VulGraB: Graph‐embedding‐based code vulnerability detection with bi‐directional gated graph neural network
Liu et al. Extracting sent message formats from executables using backward slicing
CN116010963A (zh) 一种内核漏洞检测方法、装置、设备及可读存储介质
CN113779589B (zh) 一种安卓智能手机应用误配置检测方法

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