CN114826793B - 一种rop链的检测方法、装置及介质 - Google Patents
一种rop链的检测方法、装置及介质 Download PDFInfo
- Publication number
- CN114826793B CN114826793B CN202210776302.2A CN202210776302A CN114826793B CN 114826793 B CN114826793 B CN 114826793B CN 202210776302 A CN202210776302 A CN 202210776302A CN 114826793 B CN114826793 B CN 114826793B
- Authority
- CN
- China
- Prior art keywords
- data
- current
- byte
- sliding
- generated data
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1425—Traffic logging, e.g. anomaly detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供的一种ROP链的检测方法、装置及介质,适用于流量检测领域。基于ROP链的组成规则,优化现有研究中需要对数据包待测流量数据的多次检测判定的问题,仅需要根据具体操作系统位数设定检测判定的次数,将待测流量数据简化得到第一生成数据,从而根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据;根据滑动窗口将多个第二生成数据判定得到对应的滑动数据。当滑动数据满足预设条件时输出目标序列首次出现的位置对应第一生成数据的位置以实现定位ROP链位置,进一步节省时间成本,简化检测过程,可根据所定位的ROP链位置为后续流量分析工作提供便利。
Description
技术领域
本发明涉及流量检测领域,特别是涉及一种ROP链的检测方法、装置及介质。
背景技术
针对操作系统缓解机制,出现了一种利用程序中的代码片段实现程序执行流程控制的技术,称为返回导向式编程(Return Oriented Programming,ROP)。攻击者通过多次调用程序内存空间中的代码去实施ROP攻击,从而成功绕过保护机制,实现任意指令执行。利用以ret指令结尾的指令片段(Gadget)构建一条ROP链,是ROP攻击中Gadget的一个重要特点。Gadget是构建ROP链的基本单元,根据代码片段的不同,可被组合起来完成各种不同的任务,如加载值到寄存器、存储、算术与逻辑运算等。
由于ROP代码中包含大量Gadget在内存中的地址,现有研究中通常考虑初始化目标进程,识别代码段内存地址范围,然后扫描输入数据,检查输入数据中是否存在特殊的Gadget内存地址,从而实现对ROP链的检测。现有的ROP链检测过程中需要对数据包进行多次检测,待检测数据较长整个检测过程中较为繁琐,其占用的检测时间成本较长。同时,对于ROP链的检测仅能知道数据包中存在该ROP链,无法定位至数据包的何种位置,使之检测工作停留在检测ROP攻击发生无法为后续工作提供保障。
因此,寻求一种ROP链检测定位的方法是本领域技术人员亟需要解决的。
发明内容
本发明的目的是提供一种ROP链的检测方法、装置及介质,节省时间成本,简化检测过程,可根据所定位的ROP链位置为后续流量分析工作提供便利。
为解决上述技术问题,本发明提供一种ROP链的检测方法,包括:
获取待测流量数据包并将待测流量数据包预处理得到第一数据;
根据操作系统位数将第一数据复制处理为多个第二数据并依据字节位置依次对多个第二数据划分处理对应得到多个第一生成数据;
根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据;
根据滑动窗口将多个第二生成数据判定得到对应的滑动数据;
当检测到多个滑动数据对应的任意一个序列满足预设条件时,则输出目标序列中首次出现的位置对应的第一生成数据的位置以作为ROP链的位置。
优选地,预设条件为滑动数据对应的序列存在连续为1且连续为1的数据长度大于预设值的目标序列。
优选地,将待测流量数据包预处理得到第一数据,包括:
将所述待测流量数据包去除协议头部信息得到所述第一数据。优选地,根据操作系统位数将第一数据复制处理为多个第二数据并依据字节位置依次对多个第二数据划分处理对应得到多个第一生成数据,包括:
根据操作系统位数得到分组个数和字节数据;
根据分组个数将第一数据复制得到多个第二数据,其中多个第二数据对应的数据值相同;
获取当前第二数据;
根据字节数据以及当前字节位置将当前第二数据进行划分处理,其中首次处理时对应的当前字节位置为1;
根据字节数据判断当前第二数据是否处理完毕;
若是,则根据字节数据对当前第二数据划分处理得到当前第一生成数据,且在当前字节位置的基础上增加1得到下一个当前字节位置以处理下一个当前第二数据并返回至获取当前第二数据的步骤;
若否,则将当前第二数据不满足字节数据对应的数据进行丢弃以得到当前第一生成数据,且在当前字节位置的基础上增加1得到下一个当前字节位置以处理下一个当前第二数据并返回至获取当前第二数据的步骤。
优选地,Gadget地址空间的确定通过以下步骤:
获取Gadget代码段和共享库的内存映射区域对应的虚拟地址信息;
在虚拟地址信息中搜索目标代码段内存映射的第一地址区域,其中目标代码段为.text代码段;
在虚拟地址信息中搜索包含的动态链接库文件对应的内存映射区域以确定第二地址区域;
将第一地址区域与第二地址区域组成Gadget地址空间。
优选地,根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据,包括:
获取当前第一生成数据;
根据字节地址划分原则将当前第一生成数据划分为多个子生成数据,其中字节地址划分原则为字节数据划分第一生成数据的原则;
判断子生成数据对应的字节地址是否位于Gadget地址空间;
若是,则将子生成数据设置为1;
若否,则将子生成数据设置为0;
将设置的各子生成数据合并得到当前第二生成数据。
优选地,根据滑动窗口将多个第二生成数据判定得到对应的滑动数据,包括:
获取滑动窗口的窗口长度和步长以及当前第二生成数据;
自当前第二生成数据的首字节开始,根据窗口长度和步长对当前第二生成数据依次滑动处理得到当前初始滑动数据;
根据窗口长度对当前初始滑动数据窗内取或得到当前滑动数据。
为解决上述技术问题,本发明还提供一种ROP链的检测装置,包括:
预处理模块,用于获取待测流量数据包并将待测流量数据包预处理得到第一数据;
复制处理模块,用于根据操作系统位数将第一数据复制处理为多个第二数据并依据字节位置依次对多个第二数据划分处理对应得到多个第一生成数据;
划分模块,用于根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据;
滑动处理模块,用于根据滑动窗口将多个第二生成数据判定得到对应的滑动数据;
输出模块,用于当检测到多个滑动数据对应的任意一个序列满足预设条件时,则输出目标序列中首次出现的位置对应的第一生成数据的位置以作为ROP链的位置。
为解决上述技术问题,本发明还提供一种ROP链的检测装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行计算机程序时实现如上述ROP链的检测方法的步骤。
为解决上述技术问题,本发明还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述ROP链的检测方法的步骤。
本发明提供的一种ROP链的检测方法,包括获取待测流量数据包并将待测流量数据包预处理得到第一数据;根据操作系统位数将第一数据处理为多个第二数据并依据字节位置依次对多个第二数据处理对应得到多个第一生成数据;根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据;根据滑动窗口将多个第二生成数据判定得到对应的滑动数据;当检测到多个滑动数据对应的任意一个序列满足预设条件时,则输出目标序列中首次出现对应的第一生成数据的位置以作为ROP链的位置。该方法基于ROP链的组成规则,优化现有研究中需要对数据包待测流量数据的多次检测判定的问题,仅需要根据具体操作系统位数设定检测判定的次数,将待测流量数据简化得到第一生成数据,从而根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据;根据滑动窗口将多个第二生成数据判定得到对应的滑动数据。当滑动数据满足预设条件时输出目标序列首次出现的位置对应第一生成数据的位置以实现定位ROP链位置,进一步节省时间成本,简化检测过程,可根据所定位的ROP链位置为后续流量分析工作提供便利。
另外,本发明还提供了一种ROP链的检测装置及介质,具有如上述ROP链的检测方法相同的有益效果。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种ROP链的检测方法的流程图;
图2为本发明实施例提供的内存地址空间分布示意图;
图3为本发明实施例提供的一种ROP链的检测装置的结构图;
图4为本发明实施例提供的另一种ROP链的检测装置的结构图;
图5为本发明实施例提供的一种ROP链的检测方法的应用示意图;
图6为本发明实施例提供的另一种ROP链的检测方法的应用示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
本发明的核心是提供一种ROP链的检测方法、装置及介质,节省时间成本,简化检测过程,根据定位ROP链的位置保障后续流量数据正常工作。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
图1为本发明实施例提供的一种ROP链的检测方法的流程图,如图1所示,该方法包括:
S11:获取待测流量数据包并将待测流量数据包预处理得到第一数据。
具体地,待测流量数据包通常仅能检测ROP攻击,仅知道存在ROP链,无法得知具体在流量数据包的何处位置,需要获取待测流量数据包后进行预处理以得到第一数据。
对于预处理的过程本发明不做具体限定,可以将协议队列信息去除,保留数据包的有效信息,以保证后续处理待测流量数据包简短提高处理效率。
S12:根据操作系统位数将第一数据复制处理为多个第二数据并依据字节位置依次对多个第二数据划分处理对应得到多个第一生成数据。
可以理解的是,程序运行在32位操作系统环境中,Gadget均为四字节数据,在ROP流量数据中,在数据的偏移量处n找到一个指向类似Gadget的指令序列的地址,其后面相隔4位的数据,即n+4,n+8,n+12,也必有指向指令序列的地址字节数据。
基于上述的ROP链的数据结果特点,根据操作系统位数将第一数据复制处理得到多个第二数据,例如,操作系统为32位,其将第一数据复制处理得到4个第二数据;操作系统为64位,其将第一数据复制处理得到8个第二数据;第二数据的数据值与第一数据的数据值相同。
将多个第二数据划分处理以对应得到多个第一生成数据,以当前第二数据为例,由于Gadget为四字节数据,其根据四字节为一组进行划分处理,得到划分后的第二数据。将多个第二数据排列,第i行的数据选取第i个数据进行四字节划分,直到将第二数据划分完成。若第二数据的长度无法被4整除,也就是在最后的数据中小于4个数据,则需要进行舍弃,依次整理得到多个第一生成数据。需要说明的是,多个第一生成数据其数据长度和数据值均不相同,本实施例进行第一生成数据的命名是由于后续的处理数据方式相同。
S13:根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据。
具体地,Gadget地址空间选自于代码段和共享库的内存映射区域,图2为本发明实施例提供的内存地址空间分布示意图,如图2所示,第一行为栈,第二行为共享库的存储器映射区域(*.dll,*.so),第三行为堆,第四行为读/写段(.bss),第五行为读/写段(.data),第六行为只读段(.init,.text,.rodata),第七行为预留空间,不可读写。不同的进程,代码段所在的虚拟地址空间不同,同时代码段地址空间范围对检测工作极为重要,在本发明中通过在目标系统中运行大量真实软件,搜索出系统的代码段集中地址区域。通过对目标系统包含的动态链接库文件进行搜索,确定出虚拟地址空间共享库的地址集中区域,将两者组合为系统代码段内存地址范围以作为Gadget地址空间。
根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据,以当前第一生成数据为例,根据当前操作系统中的组内地址字节作为字节地址划分原则,32位操作系统,每4个字节地址划分为一组,在当前组内根据Gadget地址空间进一步简化数据,判断组内的字节地址是否位于Gadget地址空间,如果是,则将当前组设置为1,如果否,则将当前组设置为0以划分为当前第二生成数据,以实现寻求有效地址。
S14:根据滑动窗口将多个第二生成数据判定得到对应的滑动数据。
对于滑动窗口的窗口大小本发明不做具体限定,窗口长度可以根据实际情况进行设置,作为优选地实施例,滑动窗口的窗口大小可以根据Gadget指令长度为依据设置。
将第二生成数据的首字节开始利用滑动窗口逐字节的检测处理,ROP攻击代码是Gadget地址、函数参数与填充数据构成。函数参数是ROP需要调用的系统函数的参数,通过寄存器赋值。填充数据是调用特殊Gadget(如retn4等)时为保持栈指针位置的正确性使用。
为了防止字节序列中断,可以在滑动窗口处理后进一步进行逻辑处理使其避免填充字节带来的影响。
S15:当检测到多个滑动数据对应的任意一个序列满足预设条件时,则输出目标序列中首次出现的位置对应的第一生成数据的位置以作为ROP链的位置。
在上述步骤S14中得到多个滑动数据,检测当前滑动数据是否满足预设条件,在多个滑动数据中仅存在对应的一个序列满足预设条件时,则对应输出该序列,该序列中存在目标序列,对于目标序列中首字节出现的位置追踪至第一生成数据对应的位置,其作为ROP链的位置。
可以理解的是,预设条件是针对序列展开,对应步骤S14中滑动处理避免填充字节,保证序列不中断,故预设条件为滑动数据对应的序列存在连续为1且数据长度大于预设值的目标序列。
本发明提供的一种ROP链的检测方法,包括获取待测流量数据包并将待测流量数据包预处理得到第一数据;根据操作系统位数将第一数据处理为多个第二数据并依据字节位置依次对多个第二数据处理对应得到多个第一生成数据;根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据;根据滑动窗口将多个第二生成数据判定得到对应的滑动数据;当检测到多个滑动数据对应的任意一个序列满足预设条件时,则输出目标序列中首次出现对应的第一生成数据的位置以作为ROP链的位置。该方法基于ROP链的组成规则,优化现有研究中需要对数据包待测流量数据的多次检测判定的问题,仅需要根据具体操作系统位数设定检测判定的次数,将待测流量数据简化得到第一生成数据,从而根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据;根据滑动窗口将多个第二生成数据判定得到对应的滑动数据。当滑动数据满足预设条件时输出目标序列首次出现的位置对应第一生成数据的位置以实现定位ROP链位置,进一步节省时间成本,简化检测过程,可根据所定位的ROP链位置为后续流量分析工作提供便利。
在上述实施例的基础上,作为一种优选地实施例,步骤S15中的预设条件为滑动数据对应的序列存在连续为1且连续为1的数据长度大于预设值的目标序列。
具体地,对于序列中存在连续为1,是根据上述实施例中位于Gadget地址空间的标记为准,上述实施例中将组内的字节地址位于Gadget地址空间时将当前组设置为1,若组内的字节地址位于Gadget地址空间时设置为0,则预设条件为滑动数据对应的序列存在连续为0且连续为0的数据长度大于预设值的目标序列,其根据实际情况进行设定。对于预设值为经验值,可通过大量ROP链分析得到的值。例如,序列存在连续为1且连续为1的序列长度大于15,则确定为目标序列。进而可以根据目标序列的首字节出现的位置追溯至第一生成数据对应的位置,即实现ROP链的定位。
本实施例提供的根据滑动数据对应的任意一个序列满足预设条件时,预设条件为滑动数据对应的序列存在连续为1且连续为1的数据长度大于预设值的目标序列,进而根据目标序列中首次出现的位置也就是首字节的位置追溯至第一生成数据的位置实现ROP链的定位。进一步节省时间成本,简化检测过程,可根据所定位的ROP链位置为后续流量分析工作提供便利。
在上述实施例的基础上,步骤S11中的将待测流量数据包预处理得到第一数据,包括:
将待测流量数据包去除协议头部信息得到第一数据。
将待测流量数据包去除协议头部信息得到第一数据,保留数据包的有效载荷信息。
本实施例提供的将待测流量数据包去除协议头部信息得到第一数据。保证后续数据处理简洁,节省时间,提高数据处理效率。
在上述实施例的基础上,步骤S12中的根据操作系统位数将第一数据复制处理为多个第二数据并依据字节位置依次对多个第二数据划分处理对应得到多个第一生成数据,包括:
根据操作系统位数得到分组个数和字节数据;
根据分组个数将第一数据复制得到多个第二数据,其中多个第二数据对应的数据值相同;
获取当前第二数据;
根据字节数据以及当前字节位置将当前第二数据进行划分处理,其中首次处理时对应的当前字节位置为1;
根据字节数据判断当前第二数据是否处理完毕;
若是,则根据字节数据对当前第二数据划分处理得到当前第一生成数据,且在当前字节位置的基础上增加1得到下一个当前字节位置以处理下一个当前第二数据并返回至获取当前第二数据的步骤;
若否,则将当前第二数据不满足字节数据对应的数据进行丢弃以得到当前第一生成数据,且在当前字节位置的基础上增加1得到下一个当前字节位置以处理下一个当前第二数据并返回至获取当前第二数据的步骤。
具体地,根据操作系统位数得到分组个数和字节数据,例如当前的操作系统环境为32位,其分组的个数为4组,字节数据为4。根据分组的个数将第一数据复制为4组的第二数据,其每组的第二数据对应的数据值相同。
获取当前第二数据,根据字节数据和当前字节位置将当前第二数据进行划分处理,其首次处理时对应的当前字节位置为1,例如分为4组数据,以第一组数据作为当前第二数据,其首次处理对应的当前字节位置为1,从首字节开始以4个字节数据为一组划分处理。
根据字节数据判断当前第二数据是否处理完毕,也就是说当前第二数据的长度是否被字节数据整除,若整除,则说明处理完毕,则得到当前第一生成数据,从而按照顺序对下一个当前第二数据进行划分处理。
若未整除,则说明处理过程中数据末尾不足4个字节数据,则需要进行丢弃后处理得到当前第一生成数据,从而按照顺序对下一个当前第二数据进行划分处理。
在下一个当前第二数据处理时,其对应的当前字节位置加1,例如,第二组数据作为下一个当前第二数据,其对应的当前字节位置加1,从第二个字节的位置开始以4个字节数据为一组划分处理直到将第二数据全部处理得到多个第一生成数据。
需要说明的是,多个第一生成数据的数据长度和数据值均不相同,本实施例对第一生成数据的命名是由于后续的处理数据方式相同故此命名。
本实施例提供的根据操作系统位数将第一数据复制处理为多个第二数据并依据字节位置依次对多个第二数据划分处理对应得到多个第一生成数据,便于后续的数据处理,简化流程,提高数据处理效率。
在上述实施例的基础上,步骤S13中的Gadget地址空间的确定通过以下步骤:
获取Gadget代码段和共享库的内存映射区域对应的虚拟地址信息;
在虚拟地址信息中搜索目标代码段内存映射的第一地址区域,其中目标代码段为.text代码段;
在虚拟地址信息中搜索包含的动态链接库文件对应的内存映射区域以确定第二地址区域;
将第一地址区域与第二地址区域组成Gadget地址空间。
如图2所示,Gadget地址空间选自于代码段和共享库的内存映射区域,在虚拟地址信息中搜索目标代码段内内存映射的第一地址区域L1,其代码段为.text代码段,其目标代码段为只读段(.init、.text和.rodata)内的.text代码段,以0x08048000开始的区域。搜索动态链接库文件(.dll、.so)对应的内存映射区域以确定第二地址区域L2,该第二地址区域L2为命令行参数和环境变量,以0xC0000000开始的区域。
将第一地址区域L1和第二地址区域L2组成Gadget地址空间。
本实施例提供的Gadget地址空间,作为后续ROP链的判定依据,将判定对象简化,根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据以实现简化数据。
在上述实施例的基础上,确定Gadget地址空间后,步骤S13中的根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据,包括:
获取当前第一生成数据;
根据字节地址划分原则将当前第一生成数据划分为多个子生成数据,其中字节地址划分原则为字节数据划分第一生成数据的原则;
判断子生成数据对应的字节地址是否位于Gadget地址空间;
若是,则将子生成数据设置为1;
若否,则将子生成数据设置为0;
将设置的各子生成数据合并得到当前第二生成数据。
具体地,根据字节地址划分原则将当前第一生成数据划分为多个子生成数据,其字节地址划分原则是将处理好的第一生成数据继续以字节数据划分,对应每一组的子生成数据的字节地址是否位于Gadget地址空间,若是,则将子生成数据设置为1,若否,则将子生成数据设置为0。例如,当前第一生成数据为16个数据,字节数据为4,划分为4个子生成数据,每个子生成数据的个数为4,其子生成数据对应的字节地址位于Gadget地址空间的评判,将其简化为0和1的数据,将当前第一生成数据的16个数据处理得到当前第二生成数据的4个数据。
本实施例提供的根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据,简化数据,实现寻求有效地址。
在上述实施例的基础上,步骤S14中的根据滑动窗口将多个第二生成数据判定得到对应的滑动数据,包括:
获取滑动窗口的窗口长度和步长以及当前第二生成数据;
自当前第二生成数据的首字节开始,根据窗口长度和步长对当前第二生成数据依次滑动处理得到当前初始滑动数据;
根据窗口长度对当前初始滑动数据窗内取或得到当前滑动数据。
具体地,获取滑动窗口的窗口长度和步长以及当前第二生成数据,可以理解的是,滑动窗口的规格根据实际情况设定,不具有唯一性,本实施例基于Gadget指令长度,当操作系统为32位时,其Gadget指令长度为4,其窗口长度为4,步长为1;当操作系统为64位时,其Gadget指令长度为8,其窗口长度为8,步长为1。自当前第二生成数据的首字节开始,根据滑动窗口的窗口长度和步长依次滑动处理得到当前初始滑动数据。
例如,当前第二生成数据的数据长度为10,窗口长度为4,步长为1,其最后得到的当前初始滑动数据的数据长度为7。根据窗口长度每4个为一组进行窗内取或得到当前滑动数据。
本发明实施例提供的根据滑动窗口将多个第二生成数据判定得到对应的滑动数据,避免字节序列中断以及填充字节带来的影响。
上述详细描述了ROP链的检测方法对应的各个实施例,在此基础上,本发明还公开与上述方法对应的ROP链的检测装置,图3为本发明实施例提供的一种ROP链的检测装置的结构图。如图3所示,ROP链的检测装置包括:
预处理模块11,用于获取待测流量数据包并将待测流量数据包预处理得到第一数据;
复制处理模块12,用于根据操作系统位数将第一数据复制处理为多个第二数据并依据字节位置依次对多个第二数据划分处理对应得到多个第一生成数据;
划分模块13,用于根据字节地址划分原则和Gadget地址空间将多个第一生成数据对应划分为多个第二生成数据;
滑动处理模块14,用于根据滑动窗口将多个第二生成数据判定得到对应的滑动数据;
输出模块15,用于当检测到多个滑动数据对应的任意一个序列满足预设条件时,则输出目标序列中首次出现的位置对应的第一生成数据的位置以作为ROP链的位置。
由于装置部分的实施例与上述的实施例相互对应,因此装置部分的实施例请参照上述方法部分的实施例描述,在此不再赘述。
对于本发明提供的一种ROP链的检测装置的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述ROP链的检测方法相同的有益效果。
图4为本发明实施例提供的另一种ROP链的检测装置的结构图,如图4所示,该装置包括:
存储器21,用于存储计算机程序;
处理器22,用于执行计算机程序时实现ROP链的检测方法的步骤。
本实施例提供的ROP链的检测装置可以包括但不限于智能手机、平板电脑、笔记本电脑或者台式电脑等。
其中,处理器22可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器22可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器22也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(CentralProcessing Unit,CPU);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器22可以集成有图像处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器22还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器21可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器21还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器21至少用于存储以下计算机程序211,其中,该计算机程序被处理器22加载并执行之后,能够实现前述任一实施例公开的ROP链的检测方法的相关步骤。另外,存储器21所存储的资源还可以包括操作系统212和数据213等,存储方式可以是短暂存储或者永久存储。其中,操作系统212可以包括Windows、Unix、Linux等。数据213可以包括但不限于ROP链的检测方法所涉及到的数据等等。
在一些实施例中,ROP链的检测装置还可包括有显示屏23、输入输出接口24、通信接口25、电源26以及通信总线27。
领域技术人员可以理解,图4中示出的结构并不构成对ROP链的检测装置的限定,可以包括比图示更多或更少的组件。
处理器22通过调用存储于存储器21中的指令以实现上述任一实施例所提供的ROP链的检测方法。
对于本发明提供的一种ROP链的检测装置的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述ROP链的检测方法相同的有益效果。
进一步的,本发明还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器22执行时实现如上述ROP链的检测方法的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本发明提供的一种计算机可读存储介质的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述ROP链的检测方法相同的有益效果。
作为一种优选地实施例,该数据处理的操作环境为32位,图5为本发明实施例提供的一种ROP链的检测方法的应用示意图,如图5所示,该应用示意图包括:
步骤1:将待测流量去除协议头部信息,保留数据包有效载荷,生成数据S1,也就是第一数据;
步骤2:将S1从首字节开始,连续四字节为一组进行划分,若流量末尾不足四个字节则抛弃。抛弃前位字节,分别从第二、第三和第四字节依次开始进行上述操作,生成数据S21、S22、S23、S24,也就是多个第一生成数据;
步骤3:分别判断S21、S22、S23、S24划分的组内字节地址是否位于代码段地址空间L内 ,是则1,否则0,生成数据S31、S32、S33、S34,也就是多个第二生成数据;
步骤4:将S31、S32、S33、S34分别采用长度为4(gadget一般指令长度决定此数值)步长为1滑动窗口,窗内值取或 ,输出S41、S42、S43、S44,也就是多个滑动数据;
步骤5:若S41、S42、S43、S44任何一个序列中,有一个序列存在连续为1,长度大于15(对大量ROP链分析所得)的序列,则输出序列开始的位置,也就是对应的第一生成数据的位置,即为ROP 攻击链在数据包相应位置。
图6为本发明实施例提供的另一种ROP链的检测方法的应用示意图,如图6所示,该应用示意图包括:对应本实施例中的步骤1和步骤2的过程得到第一生成数据的内容,也就是图6中的第一个图框的数据内容,进而进行地址空间匹配得到第二生成数据的内容,也就是图6中的第二个图框的数据内容,通过滑动窗口的滑动处理以及窗内值取或得到滑动数据的内容,也就是图6中的第三个图框的数据内容,将滑动数据进行数值检测以便于ROP链的位置输出。
对于本发明提供的一种ROP链的检测方法的应用示意图的介绍请参照上述方法实施例,本发明在此不再赘述,其具有上述ROP链的检测方法相同的有益效果。
以上对本发明所提供的一种ROP链的检测方法、ROP链的检测装置及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种ROP链的检测方法,其特征在于,包括:
获取待测流量数据包并将所述待测流量数据包预处理得到第一数据;
根据操作系统位数将所述第一数据复制处理为多个第二数据并依据字节位置依次对多个所述第二数据划分处理对应得到多个第一生成数据;
根据字节地址划分原则和Gadget地址空间将多个所述第一生成数据对应划分为多个第二生成数据;
根据滑动窗口将多个所述第二生成数据判定得到对应的滑动数据;
当检测到多个所述滑动数据对应的任意一个序列满足预设条件时,则输出目标序列中首次出现的位置对应的所述第一生成数据的位置以作为所述ROP链的位置。
2.根据权利要求1所述的ROP链的检测方法,其特征在于,所述预设条件为所述滑动数据对应的序列存在连续为1且连续为1的数据长度大于预设值的所述目标序列。
3.根据权利要求1所述的ROP链的检测方法,其特征在于,将所述待测流量数据包预处理得到所述第一数据,包括:
将所述待测流量数据包去除协议头部信息得到所述第一数据。
4.根据权利要求2所述的ROP链的检测方法,其特征在于,所述根据操作系统位数将所述第一数据复制处理为多个第二数据并依据字节位置依次对多个所述第二数据划分处理对应得到多个第一生成数据,包括:
根据所述操作系统位数得到分组个数和字节数据;
根据所述分组个数将所述第一数据复制得到多个所述第二数据,其中多个所述第二数据对应的数据值相同;
获取当前第二数据;
根据所述字节数据以及当前字节位置将所述当前第二数据进行划分处理,其中首次处理时对应的所述当前字节位置为1;
根据所述字节数据判断所述当前第二数据是否处理完毕;
若是,则根据所述字节数据对所述当前第二数据划分处理得到当前第一生成数据,且在所述当前字节位置的基础上增加1得到下一个所述当前字节位置以处理下一个所述当前第二数据并返回至所述获取当前第二数据的步骤;
若否,则将所述当前第二数据不满足所述字节数据对应的数据进行丢弃以得到所述当前第一生成数据,且在所述当前字节位置的基础上增加1得到下一个所述当前字节位置以处理下一个所述当前第二数据并返回至所述获取当前第二数据的步骤。
5.根据权利要求4所述的ROP链的检测方法,其特征在于,所述Gadget地址空间的确定通过以下步骤:
获取Gadget代码段和共享库的内存映射区域对应的虚拟地址信息;
在所述虚拟地址信息中搜索目标代码段内存映射的第一地址区域,其中所述目标代码段为.text代码段;
在所述虚拟地址信息中搜索包含的动态链接库文件对应的内存映射区域以确定第二地址区域;
将所述第一地址区域与所述第二地址区域组成所述Gadget地址空间。
6.根据权利要求5所述的ROP链的检测方法,其特征在于,所述根据字节地址划分原则和Gadget地址空间将多个所述第一生成数据对应划分为多个第二生成数据,包括:
获取当前第一生成数据;
根据所述字节地址划分原则将所述当前第一生成数据划分为多个子生成数据,其中所述字节地址划分原则为所述字节数据划分所述第一生成数据的原则;
判断所述子生成数据对应的字节地址是否位于所述Gadget地址空间;
若是,则将所述子生成数据设置为1;
若否,则将所述子生成数据设置为0;
将设置的各所述子生成数据合并得到当前第二生成数据。
7.根据权利要求6所述的ROP链的检测方法,其特征在于,所述根据滑动窗口将多个所述第二生成数据判定得到对应的滑动数据,包括:
获取所述滑动窗口的窗口长度和步长以及所述当前第二生成数据;
自所述当前第二生成数据的首字节开始,根据所述窗口长度和所述步长对所述当前第二生成数据依次滑动处理得到当前初始滑动数据;
根据所述窗口长度对所述当前初始滑动数据窗内取或得到当前滑动数据。
8.一种ROP链的检测装置,其特征在于,包括:
预处理模块,用于获取待测流量数据包并将所述待测流量数据包预处理得到第一数据;
复制处理模块,用于根据操作系统位数将所述第一数据复制处理为多个第二数据并依据字节位置依次对多个所述第二数据划分处理对应得到多个第一生成数据;
划分模块,用于根据字节地址划分原则和Gadget地址空间将多个所述第一生成数据对应划分为多个第二生成数据;
滑动处理模块,用于根据滑动窗口将多个所述第二生成数据判定得到对应的滑动数据;
输出模块,用于当检测到多个所述滑动数据对应的任意一个序列满足预设条件时,则输出目标序列中首次出现的位置对应的所述第一生成数据的位置以作为所述ROP链的位置。
9.一种ROP链的检测装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的ROP链的检测方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的ROP链的检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210776302.2A CN114826793B (zh) | 2022-07-04 | 2022-07-04 | 一种rop链的检测方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210776302.2A CN114826793B (zh) | 2022-07-04 | 2022-07-04 | 一种rop链的检测方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114826793A CN114826793A (zh) | 2022-07-29 |
CN114826793B true CN114826793B (zh) | 2022-09-02 |
Family
ID=82522594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210776302.2A Active CN114826793B (zh) | 2022-07-04 | 2022-07-04 | 一种rop链的检测方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114826793B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115473826B (zh) * | 2022-11-03 | 2023-01-20 | 中国人民解放军国防科技大学 | 一种rop流量检测方法、装置、设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326747A (zh) * | 2016-08-26 | 2017-01-11 | 华中科技大学 | 一种针对rop攻击的检测方法 |
CN108710797A (zh) * | 2018-06-15 | 2018-10-26 | 四川大学 | 一种基于熵信息分布的恶意文档检测方法 |
CN110059477A (zh) * | 2019-03-14 | 2019-07-26 | 成都亚信网络安全产业技术研究院有限公司 | 一种攻击检测方法及装置 |
CN114679315A (zh) * | 2022-03-25 | 2022-06-28 | 中国工商银行股份有限公司 | 攻击检测方法、装置、计算机设备、存储介质和程序产品 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10476899B2 (en) * | 2015-09-25 | 2019-11-12 | Mcafee, Llc | Application phenotyping |
KR102434444B1 (ko) * | 2017-11-29 | 2022-08-19 | 한국전자통신연구원 | 가상 트러스트 컴퓨팅 베이스를 이용한 기기 보안성 검증 방법 및 장치 |
US11782744B2 (en) * | 2020-10-08 | 2023-10-10 | Nxp B.V. | Data processing system and method for accessing data in the data processing system |
-
2022
- 2022-07-04 CN CN202210776302.2A patent/CN114826793B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326747A (zh) * | 2016-08-26 | 2017-01-11 | 华中科技大学 | 一种针对rop攻击的检测方法 |
CN108710797A (zh) * | 2018-06-15 | 2018-10-26 | 四川大学 | 一种基于熵信息分布的恶意文档检测方法 |
CN110059477A (zh) * | 2019-03-14 | 2019-07-26 | 成都亚信网络安全产业技术研究院有限公司 | 一种攻击检测方法及装置 |
CN114679315A (zh) * | 2022-03-25 | 2022-06-28 | 中国工商银行股份有限公司 | 攻击检测方法、装置、计算机设备、存储介质和程序产品 |
Non-Patent Citations (1)
Title |
---|
多模块ROP碎片化自动布局方法;黄宁;《国防科技大学学报》;20200714;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114826793A (zh) | 2022-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9392005B2 (en) | System and method for matching pattern | |
CN112445729B (zh) | 操作地址确定方法、PCIe系统、电子设备及存储介质 | |
CN104079613A (zh) | 用于多租户间共享应用程序对象的方法和系统 | |
US11994988B2 (en) | Multi-ring shared, traversable, and dynamic advanced database | |
US8788766B2 (en) | Software-accessible hardware support for determining set membership | |
CN114826793B (zh) | 一种rop链的检测方法、装置及介质 | |
CN116431099B (zh) | 数据的处理方法、多输入输出队列电路及存储介质 | |
CN112930526A (zh) | 使用水平聚合SIMD指令对d-堆进行向量化的方法 | |
CN111597548A (zh) | 实现隐私保护的数据处理方法及装置 | |
US10810105B2 (en) | Logging stored information for identifying a fix for and/or a cause of an error condition | |
CN117311817B (zh) | 一种协处理器控制方法、装置、设备及存储介质 | |
US8769498B2 (en) | Warning of register and storage area assignment errors | |
US8407187B2 (en) | Validating files using a sliding window to access and correlate records in an arbitrarily large dataset | |
CN111381905B (zh) | 一种程序处理方法、装置及设备 | |
CN114816772B (zh) | 基于兼容层运行的应用的排错方法、排错系统及计算设备 | |
EP3692456A1 (en) | Binary image stack cookie protection | |
CN106991058B (zh) | 预取文件处理方法及装置 | |
CN115277553A (zh) | 一种流表存储方法、装置、设备和计算机可读存储介质 | |
CN109213526B (zh) | 用于确定处理器操作的方法及装置 | |
CN112000611A (zh) | 图数据划分方法、处理方法及电子设备 | |
CN111309475A (zh) | 一种检测任务执行方法及设备 | |
CN113765852B (zh) | 数据包的检测方法、系统、存储介质和计算设备 | |
CN117271440B (zh) | 一种基于freeRTOS文件信息存储方法、读取方法及相关设备 | |
CN114091111B (zh) | 一种区块链智能合约的存储方法及装置 | |
CN113704563A (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 |