CN110647457B - 数据挖掘方法、数据处理方法和系统 - Google Patents

数据挖掘方法、数据处理方法和系统 Download PDF

Info

Publication number
CN110647457B
CN110647457B CN201810671898.3A CN201810671898A CN110647457B CN 110647457 B CN110647457 B CN 110647457B CN 201810671898 A CN201810671898 A CN 201810671898A CN 110647457 B CN110647457 B CN 110647457B
Authority
CN
China
Prior art keywords
analyzed
character string
infection
assembly instruction
instruction character
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
CN201810671898.3A
Other languages
English (en)
Other versions
CN110647457A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810671898.3A priority Critical patent/CN110647457B/zh
Publication of CN110647457A publication Critical patent/CN110647457A/zh
Application granted granted Critical
Publication of CN110647457B publication Critical patent/CN110647457B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • 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/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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

Abstract

本发明公开了一种数据挖掘方法、数据处理方法和系统。其中,该方法包括:从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串;获取汇编指令字符串中的感染记录;依据感染记录生成漏洞报告。本发明解决了使用程序外部可控的输入参数,表达程序的任意执行流中任何时刻或任何阶段的任何变量,并以此为基础准确发现堆栈溢出类漏洞的技术问题。

Description

数据挖掘方法、数据处理方法和系统
技术领域
本发明涉及互联网技术应用领域,具体而言,涉及一种数据挖掘方法、数据处理方法和系统。
背景技术
在进行程序黑盒漏洞挖掘的过程中,多数情况下无法获取到待挖掘程序的源代码,只能获取到程序的可执行二进制文件;某些少数情况下,由于执行环境等原因,甚至无法运行程序以进行动态分析和测试。需要对程序的二进制文件进行反汇编,即,把目标代码转为汇编代码的过程,也可以说是把机器语言转换为汇编语言代码、低级转高级的过程,静态分析程序执行过程,但由于汇编代码量大、可读性极差,导致静态分析效率低下。此时需要一个工具,能够使用程序外部可控的输入参数表达程序的任意执行流中任何时刻或任何阶段的任何变量,用于分析和漏洞挖掘等工作。
相关技术中首先为整个程序代码构建函数调用图(Call Graph,简称CG),在函数调用图中,节点表示函数,边表示函数间的调用关系。根据预设的全局分析调度策略,对CG中的每个节点(对应一个函数)进行过程内分析,最终给出CG每种可行的调用序列的分析结果。然后,对待分析的单个过程代码对象构建控制流图(Control Flow Graph,简称CFG)。在CFG上从入口节点开始模拟执行,在遇到分支节点时,使用约束求解器判定哪条分支可行,并根据预先设计的路径调度策略实现对该过程所有路径的遍历分析,最后输出每条可执行路径的分析结果。
但是相关技术中由于对每一个分支条件语句都可能会使当前的路径再分支出一条新的路径,而这是“指数级”增长的,将会导致路径状态空间的爆炸问题;由于符号执行是路径敏感的分析方法,因此一般为每条路径都会创建一个专属的虚拟机模型,以保证路径之间的相互独立性。该模型的准确程度将直接影响静态分析结果的精度。由于编程语言中使用的复杂数据结构和复杂操作语句具有较高的灵活性,使得它们的建模变得十分困难,这会直接导致最终对结果的判断的准确性。
针对上述由于现有技术中无法解决使用程序外部可控的输入参数,表达程序的任意执行流中任何时刻或任何阶段的任何变量,并以此为基础准确发现堆栈溢出类漏洞的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据挖掘方法、数据处理方法和系统,以至少解决使用程序外部可控的输入参数,表达程序的任意执行流中任何时刻或任何阶段的任何变量,并以此为基础准确发现堆栈溢出类漏洞的技术问题。
根据本发明实施例的一个方面,提供了一种数据挖掘系统,包括:待分析文件译码器、模拟器、判断模块、指令译码器、存储管理器和感染管理器,其中,待分析文件译码器,用于解析待分析文件,得到待分析文件中的内容;指令译码器,用于根据得到待分析文件中内容和预先获取的待分析函数名称和参数列表,并在对待分析函数名称和参数列表进行初始化感染源的情况下,从待分析函数名称和参数列表中获取的偏移中提取汇编指令字符串;模拟器,用于调用指令译码器解析汇编指令字符串,并对汇编指令字符串进行模拟,判断汇编指令字符串是否涉及内存操作,在判断结果为是的情况下,调用存储管理器进行内存操作,并记录感染内存和寄存器,生成感染记录;感染管理器,用于解析感染记录,得到内存中的变量,并通过判断模块判断变量是否存在堆栈溢出类漏洞,在判断结果为是的情况下,生成漏洞报告。
可选的,数据挖掘系统还包括:漏洞管理器,其中,漏洞管理器,用于在生成漏洞报告之前,在判断结果为是的情况下,根据漏洞信息对漏洞进行评级,得到评级结果。
进一步地,可选的,模拟器,还用于在得到评级结果之后,检查程序是否运行结束,在检查结果为是的情况下,由主线程记录评级结果,并生成漏洞报告;在检查结果为否的情况下,继续根据待分析函数名称和参数列表中提取的汇编指令字符串进行模拟判断。
根据本发明实施例的另一方面,还提供了一种数据挖掘方法,包括:从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串;依据汇编指令字符串生成感染记录;依据感染记录生成漏洞报告。
可选的,从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串包括:解析待分析文件,得到待分析文件中的内容;根据得到待分析文件中内容和预先获取的待分析函数名称和参数列表,并在对待分析函数名称和参数列表进行初始化感染源的情况下,从待分析函数名称和参数列表中获取偏移;从偏移中提取汇编指令字符串。
可选的,依据汇编指令字符串生成感染记录包括:解析汇编指令字符串,并对汇编指令字符串进行模拟,判断汇编指令字符串是否涉及内存操作;在判断结果为是的情况下,调用存储管理器进行内存操作,并记录感染内存和寄存器,生成感染记录。
可选的,依据感染记录生成漏洞报告包括:解析感染记录,得到内存中的变量;判断变量是否存在堆栈溢出类漏洞;在判断结果为是的情况下,生成漏洞报告。
进一步地,可选的,在生成漏洞报告之前,该方法还包括:根据漏洞信息对漏洞进行评级,得到评级结果。
可选的,在得到评级结果之后,该方法还包括:检查程序是否运行结束;在检查结果为是的情况下,记录评级结果,并生成漏洞报告;在检查结果为否的情况下,继续根据待分析函数名称和参数列表中提取的汇编指令字符串进行模拟判断。
根据本发明实施例的又一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行:从待分析文件中提取经过初始化感染源后的待挖掘的汇编指令字符串;依据汇编指令字符串生成感染记录;依据感染记录生成漏洞报告。
根据本发明实施例的再一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行:从待分析文件中提取经过初始化感染源后的待挖掘的汇编指令字符串;依据汇编指令字符串生成感染记录;依据感染记录生成漏洞报告。
根据本发明另一实施例的一方面,还提供了一种数据挖掘方法,包括:获取待分析数据,包括:待分析文件、待分析函数名称和参数列表;从待分析数据中提取汇编指令字符串;依据汇编指令字符串生成运算记录;依据运算记录,判断是否存在预设类型数据。
可选的,运算记录包括:通过将初始化数据与待分析文件、待分析函数名称和参数列表执行运算,将运算过程中调用的内存地址、寄存器以及调用路径和最终计算结果进行记录得到。
在本发明实施例中,采用深度优先的遍历方式,通过从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串;依据汇编指令字符串生成感染记录;依据感染记录生成漏洞报告,达到了不需要生成程序整体CG和CFG的目的,从而实现了提升对结果判断的准确性的技术效果,进而解决了使用程序外部可控的输入参数,表达程序的任意执行流中任何时刻或任何阶段的任何变量,并以此为基础准确发现堆栈溢出类漏洞的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例一的一种数据挖掘系统的执行流程图;
图2是根据本发明实施例一的另一种数据挖掘系统的执行流程图;
图3是本发明实施例的一种数据挖掘方法的计算机终端的硬件结构框图;
图4是根据本发明实施例二的数据挖掘方法的流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请涉及的技术名词:
反汇编(Disassembly):把目标代码转为汇编代码的过程,也可以说是把机器语言转换为汇编语言代码、低级转高级的意思,常用于软件破解(例如找到它是如何注册的,从而解出它的注册码或者编写注册机)、外挂技术、病毒分析、逆向工程、软件汉化等领域。
符号执行(Symbolic Execution)是一种程序分析技术。其可以通过分析程序来得到让特定代码区域执行的输入。使用符号执行分析一个程序时,该程序会使用符号值作为输入,而非一般执行程序时使用的具体值。在达到目标代码时,分析器可以得到相应的路径约束,然后通过约束求解器来得到可以触发目标代码的具体值。
CFG(全称:Controlflowgraph,中文:控制流图)是用在编译器中的一个抽象数据结构。它是一个过程或程序的抽象表现,由编译器在内部维护。
堆栈溢出是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,覆盖了老的堆栈数据。或者解释为在长字符串中嵌入一段代码,并将过程的返回地址覆盖为这段代码的地址,这样当过程返回时,程序就转而开始执行这段自动编译这段代码了;
ELF:Executable and Linkable Format,可执行与可链接格式。
感染记录包括:内存地址、涉及的寄存器、感染后的值和感染路径,其中,该感染记录是通过将初始化感染源与待分析文件中的待分析函数名称和参数列表执行运算,将运算过程中调用的内存地址、寄存器以及调用路径和最终计算结果进行记录得到。
实施例1
根据本发明实施例的一个方面,提供了一种数据挖掘系统,图1是根据本发明实施例一的一种数据挖掘系统的执行流程图。包括:待分析文件译码器11、模拟器12、判断模块13、指令译码器14、存储管理器15和感染管理器16。
其中,待分析文件译码器11,用于解析待分析文件,得到待分析文件中的内容;指令译码器14,用于根据得到待分析文件中内容和预先获取的待分析函数名称和参数列表,并在对待分析函数名称和参数列表进行初始化感染源的情况下,从待分析函数名称和参数列表中获取的偏移中提取汇编指令字符串;模拟器12,用于调用指令译码器14解析汇编指令字符串,并对汇编指令字符串进行模拟,判断汇编指令字符串是否涉及内存操作,在判断结果为是的情况下,调用存储管理器15进行内存操作,并记录感染内存和寄存器,生成感染记录;感染管理器16,用于解析感染记录,得到内存中的变量,并通过判断模块13判断变量是否存在堆栈溢出类漏洞,在判断结果为是的情况下,生成漏洞报告。
具体的,本申请提供的数据挖掘系统中如图1所示,待分析文件译码器11可以为ELF Decoder、模拟器12可以为Simulator、判断模块13可以为Judge、指令译码器14可以为Instruction Decoder、存储管理器15可以为Memory Manager和感染管理器16可以为Infection Manager。
如图1所示,ELF Decoder用于ELF文件格式解析;Simulator用于模拟执行工作;Judge用于裁判是否存在漏洞;Instruction Decoder用于指令解析工作;Memory Manager用于内存管理工作;Infection Manager用于感染流控制工作。
可选的,本申请提供的数据挖掘系统还包括:漏洞管理器,其中,漏洞管理器,用于在生成漏洞报告之前,在判断结果为是的情况下,根据漏洞信息对漏洞进行评级,得到评级结果。
进一步地,可选的,模拟器12,还用于在得到评级结果之后,检查程序是否运行结束,在检查结果为是的情况下,由主线程记录评级结果,并生成漏洞报告;在检查结果为否的情况下,继续根据待分析函数名称和参数列表中提取的汇编指令字符串进行模拟判断。
在本发明实施例中,采用深度优先的遍历方式,通过待分析文件译码器,用于解析待分析文件,得到待分析文件中的内容;指令译码器,用于根据得到待分析文件中内容和预先获取的待分析函数名称和参数列表,并在对待分析函数名称和参数列表进行初始化感染源的情况下,从待分析函数名称和参数列表中获取的偏移中提取汇编指令字符串;模拟器,用于调用指令译码器解析汇编指令字符串,并对汇编指令字符串进行模拟,判断汇编指令字符串是否涉及内存操作,在判断结果为是的情况下,调用存储管理器进行内存操作,并记录感染内存和寄存器,生成感染记录;感染管理器,用于解析感染记录,得到内存中的变量,并通过判断模块判断变量是否存在堆栈溢出类漏洞,在判断结果为是的情况下,生成漏洞报告,达到了不需要生成程序整体CG和CFG的目的,从而实现了提升对结果判断的准确性的技术效果,进而解决了使用程序外部可控的输入参数,表达程序的任意执行流中任何时刻或任何阶段的任何变量,并以此为基础准确发现堆栈溢出类漏洞的技术问题。
综上,图2是根据本发明实施例一的另一种数据挖掘系统的执行流程图;如图2所示,其中,1标记为待分析文件,记作elf file;2标记为指令译码器,记作InstructionDecoder;3标记为判断模块,记作Judge;4标记为漏洞管理器,记作Vulnerability;5标记为汇编指令字符串,记作String;6标记为主线程,记作Main Thread;7、8标记为操作码,记作Opcode;9标记为指令译码器,记作Instruction Decoder;10标记为模拟器,记作Simulator;11标记为存储管理器,记作Memory Manager;12标记为感染管理器,记作Infection Manager。本申请提供的数据挖掘系统在实现过程中具体如下:
Step1,安全测试人员指定待分析文件1,并指定待分析函数名称N及参数列表L;
Step2,程序启动,主线程Main Thread 6根据待分析函数名称N及参数列表L初始化感染源,并将感染源交给感染管理器12管理;
Step3,指令译码器2读取文件1,根据elf文件格式解析1的内容,并根据待分析函数名称N及参数列表L从待分析文件1中找到对应偏移X;
Step4,指令译码器2获取一个偏移X,并从1偏移X的位置提取一条汇编指令字符串5,并交给10;
Step5,10调用9对5进行解析,并尝试对5进行模拟执行,如果5不涉及内存操作,则跳到步骤9);否则,进行步骤6);
Step6,10调用11进行内存操作,并记录感染内存和寄存器,交给12管理;
Step7,12解析感染记录,并用L表达此时内存中的变量Y,并将Y交给3进行裁判,判断是否存在堆栈溢出类漏洞,若存在,则调用4进行记录漏洞信息;
Step8,4根据根据漏洞信息对漏洞进行评级;
Step9,10检查程序是否运行结束,若是,继续步骤10);否则,则调用9计算新的偏移X,跳到步骤4);
Step10,6根据4记录的内容,生成漏洞报告,供安全人员查看;
Step11,结束。
本申请提供的数据挖掘系统通过解析ELF文件,快速获取指定偏移处的汇编指令,并模拟执行,达到了准确、高效的模拟内存操作,并且在执行流任意时刻,以入口参数表达内存中的变量。
区别于现有技术,本申请提供的数据挖掘系统只会针对单个程序入口进行分析,不需要生成程序整体CG和CFG,节约大量的时间成本和空间成本。
本申请提供的数据挖掘系统采用深度优先的遍历方式,解析汇编代码为每个变量生成符号表达式,同时判断程序是否有堆栈溢出类问题,对结果判断的准确性有明显提高。本发明在发现漏洞后会生成整条执行链路,能帮助安全人员迅速定位漏洞原因。解决了如何使用程序外部可控的输入参数,表达程序的任意执行流中任何时刻或任何阶段的任何变量,并以此为基础准确发现堆栈溢出类漏洞的问题。
实施例2
根据本发明实施例,还提供了一种数据挖掘方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图3是本发明实施例的一种数据挖掘方法的计算机终端的硬件结构框图。如图3所示,计算机终端30可以包括一个或多个(图中仅示出一个)处理器302(处理器302可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器304、以及用于通信功能的传输模块306。本领域普通技术人员可以理解,图3所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端30还可包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的配置。
存储器304可用于存储应用软件的软件程序以及模块,如本发明实施例中的数据挖掘方法对应的程序指令/模块,处理器302通过运行存储在存储器304内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的数据挖掘方法。存储器304可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器304可进一步包括相对于处理器302远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端30。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置306用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端30的通信供应商提供的无线网络。在一个实例中,传输装置306包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置306可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
在上述运行环境下,本申请提供了如图4所示的数据挖掘方法。图4是根据本发明实施例二的数据挖掘方法的流程图。
步骤S402,从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串;
本申请上述步骤S402中,对应实施例一中的数据挖掘系统,对应数据挖掘系统中的ELF解码器ELF Decoder的功能,从待分析文件中提取经过初始化感染源后的待挖掘的汇编指令字符串。其中,在得到汇编指令字符串之前,根据待分析文件和指导的待分析函数名称和参数列表,得到偏移,并根据该偏移得到汇编指令字符串。
步骤S404,依据汇编指令字符串生成感染记录;
本申请上述步骤S404中,基于步骤S402中获取的汇编指令字符串,对应实施例一中的指令解码器、模拟器、感染管理器和判断模块,依据汇编指令字符串,获取该汇编指令字符串中的感染记录。
步骤S406,依据感染记录生成漏洞报告。
本申请上述步骤S406中,基于步骤S404中得到的感染记录,对应实施例一中的主线程和漏洞管理器,依据感染记录生成漏洞报告。
在本发明实施例中,采用深度优先的遍历方式,通过从待分析文件中提取经过初始化感染源后的待挖掘的汇编指令字符串;获取汇编指令字符串中的感染记录;依据感染记录生成漏洞报告,达到了不需要生成程序整体CG和CFG的目的,从而实现了提升对结果判断的准确性的技术效果,进而解决了使用程序外部可控的输入参数,表达程序的任意执行流中任何时刻或任何阶段的任何变量,并以此为基础准确发现堆栈溢出类漏洞的技术问题。
可选的,步骤S402中从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串包括:
步骤S4021,解析待分析文件,得到待分析文件中的内容;
步骤S4022,根据得到待分析文件中内容和预先获取的待分析函数名称和参数列表,并在对待分析函数名称和参数列表进行初始化感染源的情况下,从待分析函数名称和参数列表中获取偏移;
步骤S4023,从偏移中提取汇编指令字符串。
具体的,结合步骤S4021至步骤S4023,通过将初始化感染源与待分析文件、待分析函数名称和参数列表进行预算,得到经初始化感染源参与运算后的待挖掘的汇编指令字符串,其中,该初始化感染源相对于对待分析文件、待分析函数名称和参数列表在后续解析挖掘流程中对参与运算的数据进行标记。
其中,由于初始化感染源参与了对待分析函数名称和参数列表的运算,因此获取的偏移将携带初始感染源的运算“标记”,以便在对得到的汇编指令字符串中进行判断的过程中,在发现漏洞后会生成整条执行链路,能帮助安全人员迅速定位漏洞原因。
需要说明的是本申请采用汇编指令仅为最优示例进行说明,由于汇编指令的可读性强,故在本申请提供的数据挖掘方法中仅以示例进行说明,以实现本申请提供的数据挖掘方法为准,具体不做限定。
可选的,步骤S404中依据汇编指令字符串生成感染记录包括:
步骤S4041,解析汇编指令字符串,并对汇编指令字符串进行模拟,判断汇编指令字符串是否涉及内存操作;
步骤S4042,在判断结果为是的情况下,调用存储管理器进行内存操作,并记录感染内存和寄存器,生成感染记录。
具体的,结合步骤S4041和步骤S4042,基于实施例1和实施例1中的图2,指令译码器获取一个偏移X,并从待分析文件偏移X的位置提取一条汇编指令字符串,并交给模拟器;模拟器调用指令译码器对汇编指令字符串进行解析,并尝试对汇编指令字符串进行模拟执行,如果汇编指令字符串涉及内存操作,则通过模拟器调用存储管理器进行内存操作,并记录感染内存和寄存器,生成感染记录,交给感染管理器管理。
可选的,步骤S406中依据感染记录生成漏洞报告包括:
步骤S4061,解析感染记录,得到内存中的变量;
步骤S4062,判断变量是否存在堆栈溢出类漏洞;
步骤S4063,在判断结果为是的情况下,生成漏洞报告。
具体的,结合步骤S4061和步骤S4062,基于实施例1和实施例1中的图2,感染管理器解析感染记录,并用L表达此时内存中的变量Y,并将Y交给判断模块进行裁判,判断是否存在堆栈溢出类漏洞,若存在,则调用漏洞管理器进行记录漏洞信息,生成漏洞报告。
进一步地,可选的,在步骤S4063中生成漏洞报告之前,本申请提供的数据挖掘方法还包括:
步骤S1,根据漏洞信息对漏洞进行评级,得到评级结果。
可选的,在步骤S1中得到评级结果之后,本申请提供的数据挖掘方法还包括:
步骤S2,检查程序是否运行结束;
步骤S3,在检查结果为是的情况下,记录评级结果,并生成漏洞报告;
步骤S4,在检查结果为否的情况下,继续根据待分析函数名称和参数列表中提取的汇编指令字符串进行模拟判断。
具体的,结合S1至S4,基于实施例1和实施例1中的图2,漏洞管理器根据漏洞信息对漏洞进行评级;模拟器检查程序是否运行结束,若是,主线程根据漏洞管理器记录的内容,生成漏洞报告,供安全人员查看;否则,则调用指令译码器计算新的偏移X,跳到步骤S402重新执行数据挖掘流程,具体参照实施例1图2中的流程。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的数据挖掘方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
实施例3
根据本发明另一实施例的一方面,还提供了一种数据挖掘方法,包括:
步骤S502,获取待分析数据,包括:待分析文件、待分析函数名称和参数列表;
步骤S504,从待分析数据中提取汇编指令字符串;
步骤S506,依据汇编指令字符串生成运算记录;
步骤S508,依据运算记录,判断是否存在预设类型数据。
可选的,运算记录包括:通过将初始化数据与待分析文件、待分析函数名称和参数列表执行运算,将运算过程中调用的内存地址、寄存器以及调用路径和最终计算结果进行记录得到。
具体的,结合步骤S502至步骤S508,基于实施例1中的数据挖掘系统,对应数据挖掘系统中的ELF解码器ELF Decoder的功能,从待分析文件中提取经过初始化参数参与的运算后的待挖掘的汇编指令字符串。其中,在得到汇编指令字符串之前,根据待分析文件和指导的待分析函数名称和参数列表,得到偏移,并根据该偏移得到汇编指令字符串;基于获取的汇编指令字符串,对应实施例一中的指令解码器、模拟器、感染管理器和判断模块,依据汇编指令字符串,获取该汇编指令字符串中的感染记录。在得到的感染记录之后,对应实施例一中的主线程和漏洞管理器,依据感染记录生成漏洞报告。
实施例4
根据本发明实施例的又一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行:从待分析文件中提取经过初始化感染源后的待挖掘的汇编指令字符串;获取汇编指令字符串中的感染记录;依据感染记录生成漏洞报告。
实施例5
根据本发明实施例的再一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行:从待分析文件中提取经过初始化感染源后的待挖掘的汇编指令字符串;获取汇编指令字符串中的感染记录;依据感染记录生成漏洞报告。
实施例6
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的数据挖掘方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串;依据汇编指令字符串生成感染记录;依据感染记录生成漏洞报告。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串包括:解析待分析文件,得到待分析文件中的内容;根据得到待分析文件中内容和预先获取的待分析函数名称和参数列表,并在对待分析函数名称和参数列表进行初始化感染源的情况下,从待分析函数名称和参数列表中获取偏移;从偏移中提取汇编指令字符串。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:依据汇编指令字符串生成感染记录包括:解析汇编指令字符串,并对汇编指令字符串进行模拟,判断汇编指令字符串是否涉及内存操作;在判断结果为是的情况下,调用存储管理器进行内存操作,并记录感染内存和寄存器,生成感染记录。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:依据感染记录生成漏洞报告包括:解析感染记录,得到内存中的变量;判断变量是否存在堆栈溢出类漏洞;在判断结果为是的情况下,生成漏洞报告。
进一步地,可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在生成漏洞报告之前,根据漏洞信息对漏洞进行评级,得到评级结果。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:在得到评级结果之后,检查程序是否运行结束;在检查结果为是的情况下,记录评级结果,并生成漏洞报告;在检查结果为否的情况下,继续根据待分析函数名称和参数列表中提取的汇编指令字符串进行模拟判断。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种数据挖掘系统,其特征在于,包括:待分析文件译码器、模拟器、判断模块、指令译码器、存储管理器和感染管理器,其中,
所述待分析文件译码器,用于解析待分析文件,得到所述待分析文件中的内容;
所述指令译码器,用于根据得到所述待分析文件中内容和预先获取的待分析函数名称和参数列表,并在对所述待分析函数名称和所述参数列表进行初始化感染源的情况下,从所述待分析函数名称和所述参数列表中获取的偏移中提取汇编指令字符串;
所述模拟器,用于调用所述指令译码器解析所述汇编指令字符串,并对所述汇编指令字符串进行模拟,判断所述汇编指令字符串是否涉及内存操作,在判断结果为是的情况下,调用所述存储管理器进行内存操作,并记录感染内存和寄存器,生成感染记录;
所述感染管理器,用于解析所述感染记录,得到内存中的变量,并通过所述判断模块判断所述变量是否存在堆栈溢出类漏洞,在判断结果为是的情况下,生成漏洞报告。
2.根据权利要求1所述的数据挖掘系统,其特征在于,所述数据挖掘系统还包括:漏洞管理器,其中,
所述漏洞管理器,用于在生成所述漏洞报告之前,在判断结果为是的情况下,根据漏洞信息对漏洞进行评级,得到评级结果。
3.根据权利要求2所述的数据挖掘系统,其特征在于,所述模拟器,还用于在得到所述评级结果之后,检查程序是否运行结束,在检查结果为是的情况下,由主线程记录所述评级结果,并生成所述漏洞报告;在检查结果为否的情况下,继续根据所述待分析函数名称和所述参数列表中提取的汇编指令字符串进行模拟判断。
4.一种数据挖掘方法,其特征在于,包括:
从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串;
依据所述汇编指令字符串生成感染记录;
依据所述感染记录生成漏洞报告;
其中,所述依据所述汇编指令字符串生成感染记录包括:
解析所述汇编指令字符串,并对所述汇编指令字符串进行模拟,判断所述汇编指令字符串是否涉及内存操作;
在判断结果为是的情况下,调用存储管理器进行内存操作,并记录感染内存和寄存器,生成所述感染记录。
5.根据权利要求4所述的数据挖掘方法,其特征在于,所述从预先获取的待分析文件、待分析函数名称和参数列表中提取经过初始化感染源后的待挖掘的汇编指令字符串包括:
解析所述待分析文件,得到所述待分析文件中的内容;
根据得到所述待分析文件中内容和预先获取的待分析函数名称和参数列表,并在对所述待分析函数名称和所述参数列表进行初始化感染源的情况下,从所述待分析函数名称和所述参数列表中获取偏移;
从所述偏移中提取所述汇编指令字符串。
6.根据权利要求4所述的数据挖掘方法,其特征在于,所述依据所述感染记录生成漏洞报告包括:
解析所述感染记录,得到内存中的变量;
判断所述变量是否存在堆栈溢出类漏洞;
在判断结果为是的情况下,生成所述漏洞报告。
7.根据权利要求6所述的数据挖掘方法,其特征在于,在所述生成所述漏洞报告之前,所述方法还包括:
根据漏洞信息对漏洞进行评级,得到评级结果。
8.根据权利要求7所述的数据挖掘方法,其特征在于,在得到所述评级结果之后,所述方法还包括:
检查程序是否运行结束;
在检查结果为是的情况下,记录所述评级结果,并生成所述漏洞报告;
在检查结果为否的情况下,继续根据所述待分析函数名称和所述参数列表中提取的汇编指令字符串进行模拟判断。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行:从待分析文件中提取经过初始化感染源后的待挖掘的汇编指令字符串;依据所述汇编指令字符串生成感染记录;依据所述感染记录生成漏洞报告,其中,所述依据所述汇编指令字符串生成感染记录包括:解析所述汇编指令字符串,并对所述汇编指令字符串进行模拟,判断所述汇编指令字符串是否涉及内存操作;在判断结果为是的情况下,调用存储管理器进行内存操作,并记录感染内存和寄存器,生成所述感染记录。
10.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行:从待分析文件中提取经过初始化感染源后的待挖掘的汇编指令字符串;依据所述汇编指令字符串生成感染记录;依据所述感染记录生成漏洞报告,其中,所述依据所述汇编指令字符串生成感染记录包括:解析所述汇编指令字符串,并对所述汇编指令字符串进行模拟,判断所述汇编指令字符串是否涉及内存操作;在判断结果为是的情况下,调用存储管理器进行内存操作,并记录感染内存和寄存器,生成所述感染记录。
11.一种数据处理方法,其特征在于,包括:
获取待分析数据,包括:待分析文件、待分析函数名称和参数列表;
从所述待分析数据中提取汇编指令字符串;
依据所述汇编指令字符串生成感染记录;
依据所述感染记录,判断是否存在预设类型数据;
其中,依据所述汇编指令字符串生成感染记录包括:解析所述汇编指令字符串,并对所述汇编指令字符串进行模拟,判断所述汇编指令字符串是否涉及内存操作;在判断结果为是的情况下,调用存储管理器进行内存操作,并记录感染内存和寄存器,生成所述感染记录;依据所述感染记录生成漏洞报告。
12.根据权利要求11所述的数据处理方法,其特征在于,所述感染记录包括:通过将初始化数据与所述待分析文件、所述待分析函数名称和所述参数列表执行运算,将运算过程中调用的内存地址、寄存器以及调用路径和最终计算结果进行记录得到。
CN201810671898.3A 2018-06-26 2018-06-26 数据挖掘方法、数据处理方法和系统 Active CN110647457B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810671898.3A CN110647457B (zh) 2018-06-26 2018-06-26 数据挖掘方法、数据处理方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810671898.3A CN110647457B (zh) 2018-06-26 2018-06-26 数据挖掘方法、数据处理方法和系统

Publications (2)

Publication Number Publication Date
CN110647457A CN110647457A (zh) 2020-01-03
CN110647457B true CN110647457B (zh) 2023-03-28

Family

ID=69008811

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810671898.3A Active CN110647457B (zh) 2018-06-26 2018-06-26 数据挖掘方法、数据处理方法和系统

Country Status (1)

Country Link
CN (1) CN110647457B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112906004A (zh) * 2021-01-26 2021-06-04 北京顶象技术有限公司 基于汇编代码的漏洞检测方法、装置和电子设备
CN113592034B (zh) * 2021-08-23 2022-07-22 江苏鼎跃腾信息技术有限公司 基于大数据可视化挖掘处理的内容推送方法及ai管控系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102034045A (zh) * 2010-12-15 2011-04-27 上海交通大学 低计算机系统资源开销的软件漏洞检测系统
CN104778413A (zh) * 2015-04-15 2015-07-15 南京大学 一种基于模拟攻击的软件漏洞检测方法
CN105678169A (zh) * 2015-12-30 2016-06-15 西安胡门网络技术有限公司 一种二进制程序漏洞挖掘方法和系统
US9454659B1 (en) * 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102034045A (zh) * 2010-12-15 2011-04-27 上海交通大学 低计算机系统资源开销的软件漏洞检测系统
US9454659B1 (en) * 2014-08-15 2016-09-27 Securisea, Inc. Software vulnerabilities detection system and methods
CN104778413A (zh) * 2015-04-15 2015-07-15 南京大学 一种基于模拟攻击的软件漏洞检测方法
CN105678169A (zh) * 2015-12-30 2016-06-15 西安胡门网络技术有限公司 一种二进制程序漏洞挖掘方法和系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于静、动态分析相结合的漏洞挖掘分析方法;傅涛等;《软件》;20160815(第08期);全文 *

Also Published As

Publication number Publication date
CN110647457A (zh) 2020-01-03

Similar Documents

Publication Publication Date Title
EP3906488B1 (en) Method and contract rewriting framework system for supporting smart contracts in a blockchain network
CN108427646B (zh) 基于Appium的安卓App自动化测试框架构建方法和装置
Zhang et al. Precise and accurate patch presence test for binaries
US8448146B2 (en) Generation of functional tests for re-hosted applications
Galindo et al. Testing variability-intensive systems using automated analysis: an application to android
CN102200911B (zh) 变量闭包
US9063672B2 (en) Systems and methods for verifying model equivalence
Alam et al. MAIL: Malware Analysis Intermediate Language: a step towards automating and optimizing malware detection
JP2022505340A (ja) データ引数を動的に識別し、ソースコードを計装するためのシステムと方法
CN109634869B (zh) 二进制翻译中间表示正确性测试方法及装置
US9304893B1 (en) Integrated software development and test case management system
CN109101237A (zh) 代码的加密编译方法及装置
CN106295346B (zh) 一种应用漏洞检测方法、装置及计算设备
WO2015130675A2 (en) Apparatus and method for testing computer program implementation against a design model
CN110647457B (zh) 数据挖掘方法、数据处理方法和系统
CN110825386A (zh) 代码的编译方法和装置、存储介质
US10830818B2 (en) Ensuring completeness of interface signal checking in functional verification
CN106933642B (zh) 应用程序的处理方法及处理装置
CN110287700B (zh) 一种iOS应用安全分析方法及装置
US20160239407A1 (en) Small scale integration test generation
US7996798B2 (en) Representing binary code as a circuit
US10606569B2 (en) Declarative configuration elements
CN115657981A (zh) 验证环境中的打印信息的打印等级的设置方法及验证方法
US8819645B2 (en) Application analysis device
Reimann et al. Quality-aware refactoring for early detection and resolution of energy deficiencies

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