首页 / 专利库 / 电脑安全 / 安全分析 / 一种信息安全漏洞的挖掘分析方法

一种信息安全漏洞的挖掘分析方法

阅读:616发布:2024-01-11

专利汇可以提供一种信息安全漏洞的挖掘分析方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种信息安全漏洞的挖掘分析方法,所述方法步骤包括,为目标程序建立配置文件,配置文件中描述了一系列污点分析策略;通过动态二进制插桩 框架 Pin启动目标程序,并初始化动态插桩分析工具PinTool;通过PinTool分析目标程序的条件转移指令,为目标程序生成 控制流图 与控制依赖信息数据;插桩后的目标程序 访问 PinTool与用户自定义库文件,完成污点信息流的标记、传播和漏洞攻击检测,本发明从数据流和控制流两方面实现污点标记的传播,能检测并阻止外部不可信数据用于非安全数据操作,不需要对目标程序的源代码进行分析,运算量低,适用于不开源的商业 软件 ,能通过提取特征码的方式防御基于相同漏洞的二次攻击,漏报和误报率相对于现有漏洞检测技术更低。,下面是一种信息安全漏洞的挖掘分析方法专利的具体信息内容。

1.一种信息安全漏洞的挖掘分析方法,其特征在于,所述方法包括以下步骤:
S1、为目标程序建立一个配置文件,配置文件中描述了一系列污点分析策略;
S2、通过动态二进制插桩框架Pin启动目标程序,并初始化动态插桩分析工具PinTool;
S3、通过PinTool分析目标程序的条件转移指令,为目标程序生成控制流图以及控制依赖信息数据;
S4、插桩后的目标程序访问PinTool与用户自定义库文件,完成污点信息流的标记、传播和漏洞攻击检测。
2.根据权利要求1所述的一种信息安全漏洞的挖掘分析方法,其特征在于,S1中,配置文件为XML格式,配置文件所描述的污点分析策略包括污点标记策略、污点传播策略以及污点检测策略。
3.根据权利要求2所述的一种信息安全漏洞的挖掘分析方法,其特征在于,S4中,对污点信息流的标记具体为,根据配置文件的污点标记策略,建立外部不可信数据与污点标记的一一对应的映射关系,以用于污点标记的传播。
4.根据权利要求2所述的一种信息安全漏洞的挖掘分析方法,其特征在于,S4中,污点标记的传播采用数据流分析与控制流分析两种方式。
5.根据权利要求4所述的一种信息安全漏洞的挖掘分析方法,其特征在于,所述数据流分析具体为,根据汇编指令语义对条件转移指令进行建模,以进行指令级的细粒度污点数据跟踪以及污点标记传播。
6.根据权利要求4所述的一种信息安全漏洞的挖掘分析方法,其特征在于,所述控制流分析具体为,生成目标程序的控制流图,根据控制流图构建控制依赖信息树,并通过控制流分析算法实现污点数据跟踪和污点标记传播。
7.根据权利要求2所述的一种信息安全漏洞的挖掘分析方法,其特征在于,所述漏洞攻击检测具体为,根据事先设定的污点检测策略,对目标程序的关键指令、数据以及函数调用进行安全检查,对违反安全策略的行为发出警报。
8.根据权利要求7所述的一种信息安全漏洞的挖掘分析方法,其特征在于,所述关键指令、数据以及函数调用包括指令返回地址、函数指针、函数参数、返回值、格式化字符串、函数局部变量、函数参数、类静态字段、类实例字段和数组。
9.根据权利要求1所述的一种信息安全漏洞的挖掘分析方法,其特征在于,在检测到漏洞攻击后,通过提取特征码的方式对基于相同漏洞进行攻击的入侵行为进行防御,具体包括以下步骤:
S1、将当前系统环境保存为快照,所述快照包括当前各寄存器的值、当前进程信息、相关内存的镜像以及近一段时间的网络数据流;
S2、通过LCS最长公共子序列法以及CREST算法对系统环境快照进行处理,产生对应的特征码;
S3、将多次检测到的攻击产生的特征码通过LCS最长公共子序列法进行进一步提取,除去特征码中目标网络IP部分内容,产生通用检测规则提交给IPS入侵防御系统或IDS入侵检测系统以检测并防御基于安全漏洞的入侵行为。

说明书全文

一种信息安全漏洞的挖掘分析方法

技术领域

[0001] 本发明涉及信息安全领域,尤其涉及一种信息安全漏洞的挖掘分析方法。

背景技术

[0002] 随着互联网行业的快速发展,软件系统的规模和复杂度也在不断的提升,但与此同时也不可避免地导致了越来越多安全漏洞的出现,其中较具有代表性的有缓冲区溢出漏洞、格式化字符串漏洞、SQL注入漏洞以及跨站脚本漏洞等,攻击者可以利用这些漏洞改变程序原先的执行流程,执行攻击者自己的恶意代码,破坏用户程序或偷取用户敏感信息。虽然国内外在漏洞攻击检测方面已经进行较为深入的研究,然而这些技术目前仍存在诸多不足之处,例如基于程序编译时期动态跟踪污点信息的检测技术,无法检测针对用非类型安全语言编写的应用程序;基于源代码分析的检测技术,不能检测针对第三方库的漏洞攻击,且缺少运行时信息的支持,误报漏报率较高。

发明内容

[0003] 鉴以此,本发明的目的在于提供一种信息安全漏洞的挖掘分析方法,以至少解决以上问题。
[0004] 一种信息安全漏洞的挖掘分析方法,包括以下步骤:
[0005] S1、为目标程序建立一个配置文件,配置文件中描述了一系列污点分析策略;
[0006] S2、通过动态二进制插桩框架Pin启动目标程序,并初始化动态插桩分析工具PinTool;
[0007] S3、通过PinTool分析目标程序的条件转移指令,为目标程序生成控制流图以及控制依赖信息数据;
[0008] S4、插桩后的目标程序访问PinTool与用户自定义库文件,完成污点信息流的标记、传播和漏洞攻击检测。
[0009] 进一步的,S1中,配置文件为XML格式,配置文件所描述的污点分析策略包括污点标记策略、污点传播策略以及污点检测策略。
[0010] 进一步的,S4中,对污点信息流的标记具体为,根据配置文件的污点标记策略,建立外部不可信数据与污点标记的一一对应的映射关系,以用于污点标记的传播。
[0011] 进一步的,S4中,污点标记的传播采用数据流分析与控制流分析两种方式。
[0012] 进一步的,所述数据流分析具体为,根据汇编指令语义对条件转移指令进行建模,以进行指令级的细粒度污点数据跟踪以及污点标记传播。
[0013] 进一步的,所述控制流分析具体为,生成目标程序的控制流图,根据控制流图构建控制依赖信息树,并通过控制流分析算法实现污点数据跟踪和污点标记传播。
[0014] 进一步的,所述漏洞攻击检测具体为,根据事先设定的污点检测策略,对目标程序的关键指令、数据以及函数调用进行安全检查,对违反安全策略的行为发出警报。
[0015] 进一步的,所述关键指令、数据以及函数调用包括指令返回地址、函数指针、函数参数、返回值、格式化字符串、函数局部变量、函数参数、类静态字段、类实例字段和数组。
[0016] 进一步的,在检测到漏洞攻击后,通过提取特征码的方式对基于相同漏洞进行攻击的入侵行为进行防御,具体包括以下步骤:
[0017] S1、将当前系统环境保存为快照,所述快照包括当前各寄存器的值、当前进程信息、相关内存的镜像以及近一段时间的网络数据流;
[0018] S2、通过LCS最长公共子序列法以及CREST算法对系统环境快照进行处理,产生对应的特征码;
[0019] S3、将多次检测到的攻击产生的特征码通过LCS最长公共子序列法进行进一步提取,除去特征码中目标网络IP部分内容,产生通用检测规则提交给IPS入侵防御系统或IDS入侵检测系统以检测并防御基于安全漏洞的入侵行为。
[0020] 与现有技术相比,本发明的有益效果是:
[0021] 本发明所公开的一种信息安全漏洞的挖掘分析方法,从数据流和控制流两方面分别实现污点标记的传播,能检测并阻止外部不可信数据用于非安全的数据操作,且不需要对目标程序的源代码进行分析,降低运算量,能够适用于不开源的商业软件,并能通过提取特征码的方式防御基于相同漏洞的二次攻击,漏报和误报率相对于现有漏洞检测技术更低。附图说明
[0022] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的优选实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1是本发明的一个实施例的漏洞挖掘分析方法流程示意图。
[0024] 图2是本发明的一个实施例的特征码提取流程示意图。

具体实施方式

[0025] 以下结合附图对本发明的原理和特征进行描述,所列举实施例只用于解释本发明,并非用于限定本发明的范围。
[0026] 一般漏洞的攻击过程通常为:攻击者一旦发现软件系统中存在的安全漏洞,便找准机会将作为溢出程序和蠕虫病毒核心的shellcode代码以及恶意攻击字符串通过网络发送到运行该软件系统的主机,而软件系统会将接收到的外部数据放入内存缓冲区,这些外部数据将导致内存缓冲区溢出,进而覆盖正常函数的返回地址或函数指针,导致软件系统流程发生转变,进而运行攻击者事先设置的shellcode代码对用户的主机进行攻击。通过以上攻击流程可以发现,攻击的发起需要外部数据源,其次是外部数据再内存中的往返传递,造成缓冲区溢出覆盖正常返回地址或函数指针导致程序正常流程改变。
[0027] 因此当软件系统与外部数据进行交互时,必须要质疑外部数据源的安全性,即使大部分数据正常,同时还需要跟踪外部数据在内存中的去向。对于外部不可信数据一律统称为污点数据,对于污点数据需要进行污点标记、污点传播、污点检测的分析过程,即对外部不可信数据进行实时监控,弄清其传播路径,监测其动态,并检测其是否被非法利用,以实现对信息安全漏洞的挖掘与分析,提高软件系统安全性。
[0028] 基于此,本发明公开了一种信息安全漏洞的挖掘分析方法,参照图1,所述方法包括以下步骤:
[0029] S1、为目标程序建立一个配置文件,配置文件中描述了一系列污点分析策略;
[0030] S2、通过动态二进制插桩框架Pin启动目标程序,并初始化动态插桩分析工具PinTool;
[0031] S3、通过PinTool分析目标程序的条件转移指令,为目标程序生成控制流图以及控制依赖信息数据;
[0032] S4、插桩后的目标程序访问PinTool与用户自定义库文件,完成污点信息流的标记、传播和漏洞攻击检测。
[0033] S1中,所述配置文件采用XML格式,因为许多使用较为广泛的开源库都提供了丰富的API接口用于对XML文件进行解析,同时XML格式文件易于修改和维护,该配置文件中由开发人员进行设置,提供污点标记、污点传播和污点检测策略的信息文件。
[0034] 具体的,污点标记是指对来自网络等不可信渠道的数据标记为污点数据,污点标记策略应包括对哪些外部不可信数据进行污点标记以及对不同类型的数据采用何种污点标记。在污点标记后,污点数据所进行的各种运算得出的结果自然也是不可信的,因此同样对其标记为“被污染的”属性,这个过程便是污点传播,对于污点传播需要对污点蔓延的操作及运算给出精确定义,明确哪些操作或运算视为污点传播,哪些操作或运算去除了污点标记,即污点传播策略;污点检测指在软件系统运行的某个状态,通过对内存变量或寄存器进行检查,判断它们是否被污染,以及它们的污染源是哪些数据,这些具体的判断标准即污点检测策略。
[0035] 配置文件中通过sources、propagation和sink三种标签定义污点分析策略。Sources标签用于定义污点标记策略,表示外部输入数据来源类别;propagation标签用于定于污点传播策略;sink标签用于定于污点检测策略,用于制定目标程序的哪个位置、何种函数、何种指令应该执行污点检测以及其后的警报处理操作。
[0036] S2中,采用了动态二进制插桩框架Pin对目标程序进行污点分析,Pin是由Intel公司开发的一款性能稳定,功能强大的插桩工具,支持Windows和Linux两大操作系统的可执行文件的代码分析,可用于程序的行为分析以及目标程序的漏洞挖掘等。Pin由进程级别的虚拟机和提供给用户的插桩检测API组成,Pin虚拟机包括JIT编译器、模拟执行单元和代码调度三个部分,当Pin启动目标程序并获得控制权后,在调度器的协调下,JIT编译器负责对二进制文件中的指令进行插桩,动态编译后的代码包含开发人员定义的插桩代码。
[0037] 目标程序运行时,Pin会拦截可执行代码的第一条指令,并为后续指令序列生成新的代码,新代码的生成即按照开发人员定义的插桩规则在目标程序原始指令的前后加入用户插桩代码,通过这些代码可以抛出运行时的程序信息和其他有用信息,然后将控制权移交给新的指令序列,并在虚拟机中运行,当进入新的程序分支时Pin会重新取得控制权,然后为新分支的指令序列生成新的代码。Pin框架的代码缓存组件负责保存即时生成的指令,使插桩运行的方式与原生运行方式相比不会损失过多的性能。
[0038] 具体的,对二进制文件的插桩包括决定在什么位置插入用户代码和在选定位置要执行的代码,即插桩代码和分析代码,这两个部分共同组成了PinTool。PinTool采用向Pin注册插桩回调函数的方式,Pin对每个被插桩的代码段调用相应粒度的插桩回调函数,所述函数观察需要产生的代码并检查其静态属性,决定是否需要注入以及在何处注入分析函数,分析函数会得到插桩函数传入的寄存器状态、内存读写地址、指令对象、指令类型等参数。由于Pin使用动态二进制插桩,不需要目标程序的源代码以及重编译,使得其可以应用于未开源的商业软件。
[0039] S3中,通过PinTool分析目标程序的条件转移指令,为目标程序生成控制流图以及控制依赖信息数据,此步骤用于生成对目标程序进行控制流分析所需的控制流图以及控制依赖信息数据。
[0040] S4中,插桩后的目标程序访问PinTool与用户自定义库文件,完成污点信息流的标记、传播和漏洞攻击检测。依照配置文件中由开发人员编写的污点分析策略,PinTool负责提供污点标记和污点传播功能,用户自定义库文件负责提供污点检测和污点标记映射功能。
[0041] 具体的,首先根据配置文件的污点标记策略,建立外部不可信数据与污点标记的一一映射关系,以用于后面对污点标记的传播。需要进行污点标记操作的外部数据包括指定函数的特定参数、指定内存地址、网络I/O数据以及文件I/O数据,开发人员也可根据实际情况对其他类型的外部不可信数据进行污点标记操作。随后PinTool根据污点传播策略,分别采用数据流分析以及控制流分析两种方式跟踪污点数据的传播轨迹。
[0042] 数据流分析主要跟踪污点数据再内存中的使用轨迹,并根据污点传播策略传播污点标记。首先汇编代码会由PinTool进行处理,对每个可能的污点内存都在程序执行过程中进行标记,在函数调用前对可能的污点输入,例如参数、全局变量和外部输入进行检查,根据污点传播策略识别每条汇编指令的类型,例如赋值、栈操作、算数运算操作等,将操作数据从每条指令中抽取出来进行污点标记。
[0043] 控制流分析用于根据目标程序的控制流图和控制依赖信息数据实现污点标记的隐式传播。其原理是,目标程序中的每条指令与其控制流图中的每个节点一一对应,程序的一次运行相当于从控制流图的开始节点到结束节点的一条路径,而由于条件分支节点的存在,程序的运行肯定会存在分支路径,根据控制依赖的概念,处于分支路径的节点将控制依赖于其条件分支节点,那么此处一定存在污点数据的传播,即分支路径里的变量受到了条件分支节点中污点数据的影响,因此处于分支路径的所有变量都应进行污点标记。
[0044] 通过数据流分析和控制流分析可以更为精确地定义和描述污点分析,以提高其精确度。
[0045] 在软件系统运行过程中,按照污点检测策略对内存变量或寄存器进行检查,以检测针对漏洞的攻击,其具体实现方式为,首先Pin获取目标程序的一条指令,判断该指令是否为jump类指令,如果是则根据污点检测策略判断目标地址数据是否为污点,是则发出警报,不是则继续检查下一条指令;如果该指令为函数调用指令,则获得该函数的调用信息,判断其是否为污点检测策略所指定要检测的函数,如果是则按照不同函数类型执行不同的参数解析,判断其是否为污点数据,是则发出警报,不是则继续检查下一条指令。
[0046] 参照图2,在本发明的一个实施例中,为了防止针对相同漏洞的二次攻击,采用了特征码提取的方式进行防御,具体包括以下步骤:
[0047] S1、将当前系统环境保存为快照,所述快照包括当前各寄存器的值、当前进程信息、相关内存的镜像以及近一段时间的网络数据流。
[0048] 其中寄存器值直接由虚拟机获得;进程信息的获取通过向当前进程注入并执行一段dump进程和端口信息的shellcode代码实现;内存镜像利用污点跟踪在污点数据侵入目标程序的那一刻触发的特点,直接找出目标程序指向的敏感内存区并获取其镜像;所述网络数据流可以借助TCPDUMP一类的软件专保存一段时间内特定端口的网络数据流。
[0049] S2、通过LCS最长公共子序列法以及CREST算法对系统环境快照进行处理,产生对应的特征码。
[0050] CREST算法的原理是通过匹配在内存镜像中原始EIP指向的数据和网络流中出现篡改后的EIP地址的区域的相同数据段,以其作为特征码。
[0051] S3、将多次检测到的攻击产生的特征码通过LCS最长公共子序列法进行进一步提取,除去特征码中目标网络IP部分内容,产生通用检测规则提交给IPS入侵防御系统或IDS入侵检测系统以检测并防御基于安全漏洞的入侵行为。
[0052] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈