CN107707540A - 一种基于消息字段分隔符识别的网络协议逆向分析方法 - Google Patents
一种基于消息字段分隔符识别的网络协议逆向分析方法 Download PDFInfo
- Publication number
- CN107707540A CN107707540A CN201710894554.4A CN201710894554A CN107707540A CN 107707540 A CN107707540 A CN 107707540A CN 201710894554 A CN201710894554 A CN 201710894554A CN 107707540 A CN107707540 A CN 107707540A
- Authority
- CN
- China
- Prior art keywords
- stain
- separator
- action scope
- field
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/18—Protocol analysers
-
- 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/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Machine Translation (AREA)
Abstract
本发明提供一种基于消息字段分隔符识别的网络协议逆向分析方法,其步骤包括:在可控软件动态执行环境下,令网络协议对应的目标软件执行网络接收函数,获取缓冲区数据,并记录所有的执行指令序列;将所述缓冲区数据标记为污点,并根据所述执行指令序列进行字节级的多标签污点传播,获取污点的指令记录序列;从所述指令记录序列中提取比较指令,将为常数的操作数视为潜在分隔符;根据污点标签得到对应潜在分隔符的作用域,如果作用域的序列连续且长度大于2,则所述潜在分隔符视为分隔符;基于所诉分隔符对所述缓冲区数据进行字段划分,并基于其作用域提取字段关系,实现网络协议的逆向分析。
Description
技术领域
本发明属于网络安全技术领域,尤其涉及一种采用二进制软件基于消息字段分隔符识别的网络协议逆向分析方法。
背景技术
随着社会的不断发展和进步,互联网在社会各个领域的应用越来越广泛,其中,作为互联网主机和服务器之间进行网络通信基本规范的网络协议,扮演着越来越重要角色。网络协议及其实现的分析逐渐成为软件安全分析的重要领域之一,尤其是在网络痕迹提取、网络审计管理、网络攻击检测等领域得到广泛应用,对网络协议的逆向分析技术提出了更高的要求。
工业界和学术界纷纷投入到协议自动化逆向方法的研究,并取得了大量成果,其分析方法主要以流量分析方法为主,即截获客户端和服务端之间的通信流量,通过各种聚类分析方法提取协议消息中相似的语法结构和有意义的关键字。代表性工作包括ProtocolInformatics项目提出的字节序列匹配和对齐的字段切分方法,RolePlay和ScriptGen等工作也是在网络地址、字节和Cookie等特征字段识别的基础上进行字节级的序列匹配方法实现消息格式恢复,微软的Cui WeiDong等提出的基于消息内二进制和字符串排列模式的聚类分析方法,大多数方法都在某种程度上使用了Needleman-Wunsch算法进行序列对齐和匹配。
尽管基于流量的协议逆向分析方法在应用于实际协议分析中有一定效果,但仍由于该方法只能针对有限的流量数据进行分析,面临着以下难以解决的问题:
(1)该方法往往将消息中的个别特征字符串识别为类型关键字,导致同一类型的不同协议消息划分为不同类型,并将错误传导到后续分析中,严重影响消息格式恢复的精确度;
(2)有限的流量数据无法对协议消息中字段长度和字段间关系进行精确界定,往往存在较大误差,无法满足实际协议分析对逆向工程的需求。
发明内容
本发明的目的在于提出一种基于消息字段分隔符识别的网络协议逆向分析方法,通过动态污点传播技术定位协议消息分隔符和分隔符作用范围,实现协议逆向的字段分隔和字段关系划分,提高网络协议逆向分析效率。
为达到上述目的,本发明采用如下技术方案:
一种基于消息字段分隔符识别的网络协议逆向分析方法,其步骤包括:
1)在可控软件动态执行环境下,令网络协议对应的目标软件执行网络接收函数,获取缓冲区数据,并记录所有的执行指令序列;
2)将所述缓冲区数据标记为污点,并根据所述执行指令序列进行字节级的多标签污点传播,获取污点的指令记录序列;
3)从所述指令记录序列中提取比较指令,该比较指令包含两个操作数,一带有污点标签,另一为单字节或双字节常数,将为常数的操作数视为潜在分隔符;
4)统计每个潜在分隔符对应的全部污点标签,获得污点标签集合,对每个污点标签集合中的污点标签进行排序,得到对应潜在分隔符的作用域,如果作用域的序列连续且长度大于2,则所述潜在分隔符视为分隔符;
5)基于所诉分隔符对所述缓冲区数据进行字段划分,并基于其作用域提取字段关系,实现网络协议的逆向分析。
进一步地,所述可控软件动态执行环境基于用户态(Pintool,Valgrind等工具)、内核驱动或者虚拟机(Qemu)技术实现。
进一步地,所述网络接受函数在Windows系统上为recv、recvfrom、WSARecv、WSARecvFrom、NtFileDeviceIoControl。
进一步地,所述多标签污点传播的步骤包括污点标记、污点传播计算和污点相关信息提取。
进一步地,所述污点标记的方法是:将特定内存地址标记为原始污点标签,设置与被分析进程内存空间相同的影子内存,以记录该特定内存地址的污点状态信息,该污点状态信息包括内存地址是否为污点、污点来自哪个原始污点标签。
进一步地,所述污点传播计算的方法是:遍历所述执行指令序列,从所述影子内存中获取指令操作数的污点状态,如果其源操作数为污点,则标记其目的操作数为污点并记录污点标签,否则清除其目的操作数的污点标记,按照指令的操作语义更新每条指令的影子内存的污点状态。
进一步地,所述污点相关信息提取方法是在污点传播过程中或完成后依据特定的应用需求提取污点相关的指令信息。
进一步地,所述常数的单字节值为0至255。
进一步地,所述作用域的序列连续是指污点标签对应的缓冲区数据的字符是连续的,如一分隔符的污点标签集合为{3,4,5,6},分别对应缓冲区数据的第3到第6个字节,四个字节是连续的。
进一步地,所述基于作用域提取字段关系的方法包括:
如果一分隔符的作用域S1真包含于另一分隔符的作用域S2,则作用域S1的字段是作用域S2的字段的子字段;
如果一分隔符的作用域S1与另一分隔符的作用域S2没有交集,则称作用域S1的字段与作用域S2的字段是并列字段。
本发明的有益效果如下:
本发明基于字段分隔符语义,通过动态污点传播技术定位协议消息分隔符和分隔符作用范围,实现了协议逆向的字段分隔和字段关系划分,具备一定的网络协议自动逆向分析能力;通过分析网络程序处理输入消息的过程,依据分隔符的定位实现准确的字段划分;只需要执行一次网络程序,不依赖于流量数据,从而在提高网络协议逆向分析效率的同时避免了流量分析对于流量类型多样性需求过于依赖的弊端。
附图说明
图1为本发明的基于消息字段分隔符的网络协议逆向分析流程图。
图2为实施例中的字段划分和字段关系识别流程图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
如图1所示为一种基于消息字段分隔符识别的网络协议逆向分析方法,流程如下:
1.构建可控软件动态执行环境,获取网络协议消息执行指令序列:
构建待分析软件的运行环境,其中包括网络协议交互涉及的客户端和服务端程序,并选择一方为目标软件,另一方则为配合软件。基于程序执行动态监控技术执行目标软件。当客户端和服务端程序初始化完成后,从客户端上触发操作使得客户端和服务端产生网络交互行为。在可控执行环境中监控目标软件的执行情况,目标软件执行网络接受函数(Windows系统上为recv、recvfrom、WSARecv、WSARecvFrom、NtFileDeviceIoControl),在其执行结束后获取其中缓冲区数据(记为B),并开始记录后续所有的目标软件执行指令序列(记为IS)。
2.基于缓冲区数据进行多标签污点传播:
将第1步中的缓冲区数据标记为污点,污点标记粒度为字节,每个字节有单独的污点标签,标记长度为B_length,依据IS中的指令进行多标签污点传播,获取污点相关的指令,形成指令记录序列TIS,有TIS∈IS。
所述多标签污点传播的步骤包括:
污点标记,是指将特定内存地址(通常其中存放感兴趣的信息)标记为原始污点标签,设置与被分析进程内存空间相同的影子内存,以记录该特定内存地址的污点状态信息,该污点状态信息包括内存地址是否为污点、污点来自哪个原始污点标签;
污点传播计算,是指遍历IS,从影子内存中获取指令操作数的污点状态,如果其源操作数为污点,则标记其目的操作数为污点并记录污点标签,否则清除其目的操作数的污点标记,按照指令的操作语义更新每条指令的影子内存的污点状态;
污点相关信息提取,是指在污点传播过程中或完成后依据特定的应用需求提取污点相关的指令信息。
3.基于污点的指令记录序列的潜在分隔符识别:
从第2步中污点的指令记录序列TIS中,按照指令操作符类别提取比较指令序列CTIS,有CTIS∈TIS。要求比较指令的两个操作数中,一个带有污点标签(记为t),另一个为单字节或双字节常数(记为c),后者为潜在分隔符。
4.基于分隔符的字段划分:
针对CTIS中指令,统计所有c对应的污点标签,形成集合CCTIS(c),如果该集合的污点标签连续且大于2,则将潜在分隔符视作分隔符,并依据分隔符对消息进行字段划分。
5.基于分隔符作用域的字段关系提取:
对于分隔符,进一步分析其污点标签集合CCTIS(c)。依据不同分隔符的污点标签集合进行包含、重叠、并列关系的判别,并据此进行分隔符对应的不同字段间关系的判别。具体是:如果一分隔符的作用域S1真包含于另一分隔符的作用域S2,则S1的字段F1是S2的字段F2的子字段;如果一分隔符的作用域S1与另一分隔符的作用域S2没有交集,则称字段F1与字段F2为并列字段。
本发明在字段划分和字段关系识别阶段主要以多标签污点传播形成的指令执行记录为输入,图2所示显示了字段划分和字段关系识别的详细流程,具体内容如下:
(1)输入污点相关比较指令CTIS,对于每条指令I∈CTIS,操作数集合为I_Op,且一般该集合数量为2,操作数分别记为OP1和OP2。则OP1或OP2有污点标签,记为t,另外操作数的单字节值记为c(0<=c<=255)。根据OP1和OP2的地址查询影子内存中的污点标记;输入污点状态信息,判断OP1或OP2是否为污点,如果OP1是,则视OP2为潜在分隔符,如果OP2是,则视OP1为潜在分隔符,将潜在分隔符加入潜在分隔符集合P_C_S中;
(2)针对每条污点相关的比较指令I∈CTIS,依此按照上述步骤进行处理,直到遍历CTIS中每一条指令。统计所有单字节值c(当假定分隔符为单字节时,0<=c<=255)对应的污点标签t,形成集合CCTIS(c),,其中c即为潜在分隔符。注意,每个潜在分隔符c都对应一个集合CCTIS(c)。该集合中的所有污点标签按照序号进行排序,形成序列SCCTIS(c)=<t1,t2,..tn>,这个序列表示潜在分隔符的作用域。
(3)对于每个潜在分隔符c,如果c的作用域是连续的,且作用域对应的序列长度大于2则判定c是分隔符。用符号表示为,如果|SCCTIS(c)|>1,且存在ti,ti+1,有ti+1=ti+1,则将c加入分隔符集合C_S。对应的网络协议消息以C_S中的分隔符为边界进行字段划分。
(4)对于分隔符c,SCCTIS(c)包含的字节视为一个字段,其字段记为Field(c)。
(5)依据每个分隔符的作用域提取字段关系,具体方法为:对于分隔符c1,c2∈C_S,如果则Field(c1)与Field(c2)是并列字段,如果 则c1是c2的子字段。
本发明提出的基于分隔符的协议消息字段划分方法,对于本领域的工程技术人员而言,可以根据需要采取不同的具体程序执行监控和多污点分析方案,以及在比较指令提取中依据语义调整潜在分隔字符对应的指令类型,并在分隔符识别中调整预期分隔符的长度,从而获得达到特定需求的分析目的。
尽管本发明公开了具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可在不脱离本发明及权利要求的精神和范围内,进行各种替换、变化和修改。因此,本发明不应局限于最佳实施例和附图所公开的内容,保护范围以权利要求书界定的范围为准。
Claims (10)
1.一种基于消息字段分隔符识别的网络协议逆向分析方法,其步骤包括:
在可控软件动态执行环境下,令网络协议对应的目标软件执行网络接收函数,获取缓冲区数据,并记录所有的执行指令序列;
将所述缓冲区数据标记为污点,并根据所述执行指令序列进行字节级的多标签污点传播,获取污点的指令记录序列;
从所述指令记录序列中提取比较指令,该比较指令包含两个操作数,一带有污点标签,另一为单字节或双字节常数,将为常数的操作数视为潜在分隔符;
根据污点标签得到对应潜在分隔符的作用域,如果作用域的序列连续且长度大于2,则所述潜在分隔符视为分隔符;
基于所诉分隔符对所述缓冲区数据进行字段划分,并基于其作用域提取字段关系,实现网络协议的逆向分析。
2.根据权利要求1所述的方法,其特征在于,所述可控软件动态执行环境基于用户态、内核驱动或者虚拟机技术实现。
3.根据权利要求1所述的方法,其特征在于,所述网络接受函数在Windows系统上为recv、recvfrom、WSARecv、WSARecvFrom、NtFileDeviceIoControl。
4.根据权利要求1所述的方法,其特征在于,所述多标签污点传播的步骤包括污点标记、污点传播计算和污点相关信息提取。
5.根据权利要求4所述的方法,其特征在于,所述污点标记的方法是:将特定内存地址标记为原始污点标签,设置与被分析进程内存空间相同的影子内存,以记录该特定内存地址的污点状态信息,该污点状态信息包括内存地址是否为污点、污点来自哪个原始污点标签。
6.根据权利要求4所述的方法,其特征在于,所述污点传播计算的方法是:遍历所述执行指令序列,从所述影子内存中获取指令操作数的污点状态,如果其源操作数为污点,则标记其目的操作数为污点并记录污点标签,否则清除其目的操作数的污点标记,按照指令的操作语义更新每条指令的影子内存的污点状态。
7.根据权利要求4所述的方法,其特征在于,所述污点相关信息提取方法是:在污点传播过程中或完成后依据特定的应用需求提取污点相关的指令信息。
8.根据权利要求1所述的方法,其特征在于,所述根据所述污点标签得到对应潜在分隔符的作用域采用的方法是:统计每个潜在分隔符对应的全部污点标签,获得污点标签集合,对每个污点标签集合中的污点标签进行排序,得到对应潜在分隔符的作用域。
9.根据权利要求1所述的方法,其特征在于,所述作用域的序列连续是指污点标签对应的缓冲区数据的字符是连续的。
10.根据权利要求1所述的方法,其特征在于,所述基于作用域提取字段关系的方法包括:
如果一分隔符的作用域S1真包含于另一分隔符的作用域S2,则作用域S1的字段是作用域S2的字段的子字段;
如果一分隔符的作用域S1与另一分隔符的作用域S2没有交集,则称作用域S1的字段与作用域S2的字段是并列字段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710894554.4A CN107707540A (zh) | 2017-09-28 | 2017-09-28 | 一种基于消息字段分隔符识别的网络协议逆向分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710894554.4A CN107707540A (zh) | 2017-09-28 | 2017-09-28 | 一种基于消息字段分隔符识别的网络协议逆向分析方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107707540A true CN107707540A (zh) | 2018-02-16 |
Family
ID=61175236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710894554.4A Pending CN107707540A (zh) | 2017-09-28 | 2017-09-28 | 一种基于消息字段分隔符识别的网络协议逆向分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107707540A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600195A (zh) * | 2018-04-04 | 2018-09-28 | 国家计算机网络与信息安全管理中心 | 一种基于增量学习的快速工控协议格式逆向推断方法 |
CN108712414A (zh) * | 2018-05-16 | 2018-10-26 | 东南大学 | 一种基于序列比对的二进制未知协议报文格式划分方法 |
CN108960307A (zh) * | 2018-06-22 | 2018-12-07 | 中国人民解放军战略支援部队信息工程大学 | 一种私有协议字段格式提取方法、装置及服务器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166942A (zh) * | 2011-12-19 | 2013-06-19 | 中国科学院软件研究所 | 一种恶意代码的网络协议解析方法 |
CN103200203A (zh) * | 2013-04-24 | 2013-07-10 | 中国人民解放军理工大学 | 基于执行轨迹的语义级协议格式推断方法 |
CN104023018A (zh) * | 2014-06-11 | 2014-09-03 | 中国联合网络通信集团有限公司 | 一种文本协议的逆向解析方法和系统 |
US9100326B1 (en) * | 2013-06-13 | 2015-08-04 | Narus, Inc. | Automatic parsing of text-based application protocols using network traffic data |
-
2017
- 2017-09-28 CN CN201710894554.4A patent/CN107707540A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103166942A (zh) * | 2011-12-19 | 2013-06-19 | 中国科学院软件研究所 | 一种恶意代码的网络协议解析方法 |
CN103200203A (zh) * | 2013-04-24 | 2013-07-10 | 中国人民解放军理工大学 | 基于执行轨迹的语义级协议格式推断方法 |
US9100326B1 (en) * | 2013-06-13 | 2015-08-04 | Narus, Inc. | Automatic parsing of text-based application protocols using network traffic data |
CN104023018A (zh) * | 2014-06-11 | 2014-09-03 | 中国联合网络通信集团有限公司 | 一种文本协议的逆向解析方法和系统 |
Non-Patent Citations (1)
Title |
---|
刘豫等: "《基于动态污点分析的恶意代码通信协议逆向分析方法》", 《电子学报》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108600195A (zh) * | 2018-04-04 | 2018-09-28 | 国家计算机网络与信息安全管理中心 | 一种基于增量学习的快速工控协议格式逆向推断方法 |
CN108600195B (zh) * | 2018-04-04 | 2022-01-04 | 国家计算机网络与信息安全管理中心 | 一种基于增量学习的快速工控协议格式逆向推断方法 |
CN108712414A (zh) * | 2018-05-16 | 2018-10-26 | 东南大学 | 一种基于序列比对的二进制未知协议报文格式划分方法 |
CN108712414B (zh) * | 2018-05-16 | 2021-02-26 | 东南大学 | 一种基于序列比对的二进制未知协议报文格式划分方法 |
CN108960307A (zh) * | 2018-06-22 | 2018-12-07 | 中国人民解放军战略支援部队信息工程大学 | 一种私有协议字段格式提取方法、装置及服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101464905B (zh) | 一种网页信息抽取的系统及方法 | |
CN104506484B (zh) | 一种私有协议分析与识别方法 | |
WO2020073714A1 (zh) | 训练样本获取方法,账户预测方法及对应装置 | |
CN101286988B (zh) | 一种并行多模式匹配的方法及系统 | |
CN106874266A (zh) | 用户画像方法和用于用户画像的装置 | |
CN107707540A (zh) | 一种基于消息字段分隔符识别的网络协议逆向分析方法 | |
CN109492549A (zh) | 一种训练样本集处理、模型训练方法及系统 | |
CN103577478A (zh) | 网页推送方法及系统 | |
CN110737821B (zh) | 相似事件查询的方法、装置、存储介质和终端设备 | |
CN109194677A (zh) | 一种sql注入攻击检测方法、装置及设备 | |
CN101853289A (zh) | 一种数据库审计方法和设备 | |
CN103838754A (zh) | 信息搜索装置及方法 | |
CN112861894A (zh) | 一种数据流分类方法、装置及系统 | |
CN114817968B (zh) | 无特征数据的路径追溯方法、装置、设备及存储介质 | |
CN103970901B (zh) | 一种地理信息图形数据整合方法 | |
CN107741960A (zh) | Url的分类方法及装置 | |
CN115146271A (zh) | 一种基于因果分析的apt溯源研判方法 | |
CN111897644A (zh) | 一种基于多维度的网络数据融合匹配方法 | |
Li et al. | Multi-label pattern image retrieval via attention mechanism driven graph convolutional network | |
CN116186759A (zh) | 一种面向隐私计算的敏感数据识别与脱敏方法 | |
CN109547294B (zh) | 一种基于固件分析的联网设备型号探测方法、装置 | |
CN104410533A (zh) | 网络用户行为识别系统 | |
CN112437084B (zh) | 一种攻击特征提取的方法 | |
CN108021810B (zh) | 一种海量恶意代码高效检测方法 | |
CN105429817A (zh) | 基于dpi和dfi的非法业务识别装置与方法 |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180216 |
|
WD01 | Invention patent application deemed withdrawn after publication |