CN111314279B - 一种基于网络流量的未知协议逆向方法 - Google Patents
一种基于网络流量的未知协议逆向方法 Download PDFInfo
- Publication number
- CN111314279B CN111314279B CN201911163543.4A CN201911163543A CN111314279B CN 111314279 B CN111314279 B CN 111314279B CN 201911163543 A CN201911163543 A CN 201911163543A CN 111314279 B CN111314279 B CN 111314279B
- Authority
- CN
- China
- Prior art keywords
- protocol
- message
- voter
- state
- field
- 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
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- 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
Abstract
本发明提出一种基于网络流量的未知协议逆向方法,包括三个步骤,步骤1,协议字段解析;步骤3,协议格式逆向;步骤3,协议状态机解析。
Description
技术领域
本发明涉及一种未知协议逆向方法,尤其涉及一种基于网络流量的未知协议逆向方法。
背景技术
网络协议规定了网络实体之间信息传输所必须遵循的语法和语义规则,合法的数据帧必须满足协议的规定。网络协议对于是很多网络应用的基础。网络解析工具(wireshark,tshark)等基于网络协议来解析网络报文。防火墙基于网络协议来进行深度包检测,从而识别恶意入侵,保障网络安全。网络管理系统通过网络协议实现流量的分类和管理。Fuzz工具基于网络协议产生变异样本,网络协议还可以用来识别僵尸网络。
随着互联网的发展,越来越多的私有协议开始出现。这些私有协议缺乏公开的协议规格说明。私有协议的产生给互联网和工控系统带来极大的安全隐患,传统的工具无法识别和解析私有协议。为了解决这个问题,协议逆向工程开始出现。协议逆向工程是指基于协议相关的网络流量或者二进制执行指令对协议的语法和语义进行逆向的过程,传统的协议逆向主要采取人工的方式,这种方式需要消耗巨大的人力和时间。开源项目SAMBA的人员花了12年时间才完全逆向微软SMB协议。同时,统一协议经常变化,人工逆向协议的效率无法匹配协议变化的速度。针对这一现象,很多自动化的逆向协议工具被提出。
工业协议,也被称为自动化协议,是指用在工业控制系统中的协议。例如Modbus,Iec104和Ethernet/cip协议等。工控系统对安全有着极高的要求,传统的工控系统和互联网是隔离的,现代的工控系统越来越多的用到互联网。工控协议中有大量的私有协议,这些私有协议给工控系统带来很大的安全隐患。工控协议具有一些很独特的特征,这些特征使得传统协议逆向工具逆向工控协议的效果比较差。
现有技术中协议字段解析存在的问题有:公共子序列(LCS)是挖掘关键字段常用的方法,但是这种方法会带来大量的冗余关键字段。此外,该方法只能将关键字段视为独立的,不考虑字段的上下文约束。VE具备比较高的精确性,但是算法中有需要人工调试的参数,选择合适的参数大多数情况下是经验性的。基于频繁集的数据挖掘可以发现协议中出现频率较高的字段,然而对于出现可变字段(长度)等,基于频繁集的数据挖掘方法通常难以取得比较好的效果。此外,先前的工作往往需要综合多个数据帧来对消息格式进行比较最终确定变长字段。基于n-gram的方法缺点是无法发现长度大于n的关键字段,且随着窗口的变大,n-gram需要的空间会急剧增加。
现有技术中协议格式解析存在的问题有:discover识别功能码的方法是经验性的,并且最终的参数需要根据不同协议进行调整。此外,这种方法无法解决功能码处于不同位置的情况。netzob在获取语义阶段需要大量的人工处理,并且对于很多协议来说,提前获取语义信息是比较困难的.IB聚类算法依赖于关键字段识别的准确率且需要提前确定集合的个数,确定集合个数很大程度上是经验性的。
现有技术中语义推测存在的问题有:一是将通信流分为不同的session,然后根据每一个session中消息交互过程生成前缀树,前缀树进一步生成确定自动机,自动机经过最小化和泛化生成最终的通信模型,这种方法可以逆向出未知协议对应的通信模型,然而,如何划分session现有技术并未有很好的方法;二是模糊测试的方法来人工生成网络交互流量,从而可以对在原始的网络流量中没有出现的通信模式进行建模。这种方法可以获得更加全面的通信模型,但是模糊测试需要获得对应未知协议的二进制可执行程序。
发明内容
本发明提出一种基于网络流量的未知协议逆向方法,该方法具备对未知协议的基本分析能力,可以实现对未知协议字段,语法和语义的自动化逆向功能。该工具支持对三种类型的协议的逆向:工控协议,文本协议和一般二进制协议。
本发明的方法主要包括三个步骤,步骤1,协议字段解析;步骤2,协议格式逆向;步骤3,协议状态机解析。
对于每一个序列w,都有一个对应的序列lo(wi),所述lo(wi)为其中i,j,N为正整数,在投票阶段,有两个投票器,顺序投票器和熵投票器,这两个投票器对每个消息的边界进行投票,然后在决策阶段将所有消息的投票数按照公式(3)、(4)相加进行投票,其中CP(X)是位置X得到的顺序投票器票数之和,CP(Xi)是位置X在第i条消息中得到顺序投票器票数,CE(X)是位置X得到的所有的熵投票器票数之和,CE(Xi)是位置X在第i条消息上得到的熵投票器票数,
如果一个位置的投票数比任何一个相邻位置高,那么这个位置将会被选择为字段边界,最终的决定策略如公式(5),(6)所示,
其中IP(x)是概率决策器最后选择出来的字段边界位置,IE(x)是熵投票器最后选择出来的字段边界位置,CP(X),CE(X)分别是位置X得到的顺序投票器和熵投票器的总票数。
进一步,所述协议格式逆向包括协议消息分类和协议格式抽取阶段,在消息分类阶段,根据协议消息的功能码将消息分到相同的集合里,然后对每一个集合的消息数据部分运行所述协议字段解析对数据部分进行字段识别,识别字段完成以后,比较最后一个字段位置和集合中最长消息的长度,如果最长消息长度大于该位置,则添加一个数据字段在格式后面。
进一步,所述协议的状态机逆向的方式为,一次会话开始前的状态为初始状态,每次收到一种格式的消息,状态会发生变迁,采用Ngram方法来判断状态变迁是否相同,所述Ngram方法的具体方式是,每一个状态作为一个单词生成Ngram序列,当Ngram长度为1时,下一次的状态仅仅跟当前状态接受到的消息类型有关,当Ngram长度为3是,下一次的状态结构跟上次状态发送的消息和本次状态收到的消息都有关系,如果两个状态对应的Ngram序列相同,那么两个状态就是相同的状态。
附图说明
图1为本发明的方法框架图;
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示为本发明的方法框架图,主要包括协议流量预处理和协议逆向两部分内容。其中协议逆向包括协议字段解析、协议格式逆向、和协议状态机解析三个部分。
本方法以网络流量作为输入,可以识别工控协议流量和一般网络协议的流量,首先进行流量采集。采集后的流量会有噪声,所以需要对流量进行分类。流量分类的目的是将属于相同流量的协议数据分类到相同的集合里。具体包含协议流量预处理,流量特征提取,模型训练和流量分类4个步骤,最后生成流量分类集合。
在协议字段解析中,二进制协议的关键字段挖掘是基于VE算法,因为二进制协议并不一定存在公共头部,所以无法采用GVE的算法直接进行关键字段定界,传统的VE算法在识别二进制协议时候效果比较差,在三个二进制协议上平均的F1-measure只有41%.本发明对相关的结果进行分析,发现主要的误差来源于不同长度的序列进行比较的时候,一个固定字段之后跟一个可变字段,如果可变字段的随机特征不是十分明显,最终正则化之后相对值跟固定字段是相同的甚至大于固定字段。例如字段ab后面有字段abc,abe等字段,正则化后abc的频率值跟ac是一样的。本发明提出了Order_RGVE协议字段算法,一是用排序信息代替频率信息来衡量字段的整体性,二是定义了不同长度序列之间的映射关系。位于长度为L的序列组成的集合,根据集合中序列出现的次数进行倒序排列,如公式(1)所示。其中C(w)为序列w出现的次数。对于每一个
序列w,都有一个对应的序lo(wi),lo(w)为w在相同长度的序列集合中对应的顺序。C(wj)为序列wj对应的顺序。其中lo定义如方程式公式(2)所示。
Order_RGVE算法有两个投票器:顺序投票器和熵投票器。在投票阶段,一个滑动窗口在消息上移动,在每个窗口内,顺序投票器选择可以使字段顺序和最大的位置进行投票,熵投票器选择可以使字段后续熵最大的位置进行投票。在决策阶段将所有消息的投票数相加进行投票。如公式(3),(4)所示。其中其中CP(X)是位置X得到的顺序投票器票数之和,CP(Xi)是位置X在第i条消息中得到顺序投票器票数。CE(X)是位置X得到的所有的熵投票器票数之和,CE(Xi)是位置X在第i条消息上得到的熵投票器票数。
在决策阶段,采用相对差的方式来决策。当一个位置的票数比相邻位置多一定比例时,才认为这个位置的票数比相邻位置要多。同时,GVE在只有在某个位置的票数同时比相邻位置多时才会选择这个位置为字段边界,这意味着VE算法无法识别单字节的关键字字段。针对这个缺点,本发明提供了一个“宽松的投票策略”,如果一个位置的投票数比任何一个相邻位置高,那么这个位置将会被选择为字段边界,原来的选择策略本发明成为严格的投票策略。
最终的决定策略如公式(5),(6)所示,其中r阈值,只有大于r的位置才会被投票为字段边界。CP(X),CE(X)分别是位置X得到的顺序投票器和熵投票器的总票数。其中IP(x)是概率决策器最后选择出来的字段边界位置,IE(x)是熵投票器最后选择出来的字段边界位置。
所述协议格式逆向包括协议消息分类和协议格式抽取阶段,在消息分类阶段,根据协议消息的功能码将消息分到相同的集合里。然后对每一个集合的消息数据部分运行Order_RGVE算法来对数据部分进行字段识别,识别字段完成以后,比较生成格式最后一个字段的偏移量和集合中最长消息的长度,如果该消息长度大于最后一个字段的偏移量,本发明在格式的末尾添加一个数据字段,用来表示这个字段是一个可变的数据,最后,本发明将解析出来的格式跟头部组合在一起生成协议树。
所述协议状态机解析为定义一个通信实体在一次会话开始前的状态为初始状态。每次收到一种格式的消息,状态会发生变迁。本发明采用Ngram方法来判断状态变迁是否相同。Ngram方法是一个语言模型,这个模型通常用在文本协议中计算一段文本序列在某种语言下出现的概率。Ngram当Ngram长度为1时,下一次的状态仅仅跟当前状态接受到的消息类型有关。当Ngram长度为3是,下一次的状态结构跟上次状态发送的消息和本次状态收到的消息都有关系。在状态机生成阶段,首先根据格式解析出线性消息序列,然后将线性消息序列装换为状态机。如果两个状态对应的Ngram序列相同,那么两个状态就是相同的状态。通过这种最小化方法生成生成最终状态机。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (2)
1.一种基于网络流量的未知协议逆向方法,其特征在于,包括三个步骤,步骤1,协议字段解析,所述协议字段解析的具体方式为,对于长度为L的序列组成的集合,根据集合中序列出现的次数按照公式(1)进行倒序排列,其中C(w)为序列w出现的次数,
对于每一个序列w,都有一个对应的序列lo(wi),所述lo(wi)为其中i,j,N为正整数,在投票阶段,有两个投票器,顺序投票器和熵投票器,这两个投票器对每个消息的边界进行投票,然后在决策阶段将所有消息的投票数按照公式(3)、(4)相加进行投票,其中CP(X)是位置X得到的顺序投票器票数之和,CP(Xi)是位置X在第i条消息中得到顺序投票器票数,CE(X)是位置X得到的所有的熵投票器票数之和,CE(Xi)是位置X在第i条消息上得到的熵投票器票数,
如果一个位置的投票数比任何一个相邻位置高,那么这个位置将会被选择为字段边界,最终的决定策略如公式(5),(6)所示,
其中所述r为阈值,若通过上述公式计算得到的值大于r,则得到一个协议字段边界,IP(x)是概率决策器最后选择出来的字段边界位置,IE(x)是熵投票器最后选择出来的字段边界位置,CP(X),CE(X)分别是位置X得到的顺序投票器和熵投票器的总票数;步骤2,协议格式逆向;步骤3,协议状态机解析;所述协议格式逆向包括协议消息分类和协议格式抽取阶段,在消息分类阶段,根据协议消息的功能码将消息分到相同的集合里,然后对每一个集合的消息数据部分运行所述协议字段解析对数据部分进行字段识别,识别字段完成以后,比较最后一个字段位置和集合中最长消息的长度,如果最长消息长度大于该位置,则添加一个数据字段在格式后面。
2.如权利要求1所述的方法,其特征在于,所述协议的状态机逆向的方式为,一次会话开始前的状态为初始状态,每次收到一种格式的消息,状态会发生变迁,采用Ngram方法来判断状态变迁是否相同,所述Ngram方法的具体方式是,每一个状态作为一个单词生成Ngram序列,当Ngram长度为1时,下一次的状态仅仅跟当前状态接受到的消息类型有关,当Ngram长度为3时 ,下一次的状态结构跟上次状态发送的消息和本次状态收到的消息都有关系,如果两个状态对应的Ngram序列相同,那么两个状态就是相同的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911163543.4A CN111314279B (zh) | 2019-11-25 | 2019-11-25 | 一种基于网络流量的未知协议逆向方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911163543.4A CN111314279B (zh) | 2019-11-25 | 2019-11-25 | 一种基于网络流量的未知协议逆向方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111314279A CN111314279A (zh) | 2020-06-19 |
CN111314279B true CN111314279B (zh) | 2021-11-19 |
Family
ID=71148153
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911163543.4A Active CN111314279B (zh) | 2019-11-25 | 2019-11-25 | 一种基于网络流量的未知协议逆向方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111314279B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112702235B (zh) * | 2020-12-21 | 2022-08-05 | 中国人民解放军陆军炮兵防空兵学院 | 一种对未知协议自动化逆向分析的方法 |
CN112784271B (zh) * | 2021-01-21 | 2022-07-22 | 国网河南省电力公司电力科学研究院 | 一种电力工控系统的控制软件逆向分析方法 |
CN113139593B (zh) * | 2021-04-19 | 2022-06-21 | 湖南大学 | 一种基于对话分析的工控协议报文分类方法和系统 |
CN114866282A (zh) * | 2022-03-30 | 2022-08-05 | 中核武汉核电运行技术股份有限公司 | 一种基于网络行为重构的核电工控协议解析系统和方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103546443A (zh) * | 2012-07-16 | 2014-01-29 | 清华大学 | 结合网络流量分析和消息聚类的网络协议逆向分析方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6195706B1 (en) * | 1998-07-07 | 2001-02-27 | Emc Corporation | Methods and apparatus for determining, verifying, and rediscovering network IP addresses |
US9077590B2 (en) * | 2009-06-22 | 2015-07-07 | Citrix Systems, Inc. | Systems and methods for providing link management in a multi-core system |
CN103955539B (zh) * | 2014-05-19 | 2017-03-22 | 中国人民解放军信息工程大学 | 一种获取二进制协议数据中控制字段划分点的方法及装置 |
CN108632252B (zh) * | 2018-04-03 | 2021-02-02 | 中国人民解放军战略支援部队信息工程大学 | 一种私有网络协议迭代逆向分析方法、装置及服务器 |
CN109547409B (zh) * | 2018-10-19 | 2022-05-17 | 中国电力科学研究院有限公司 | 一种用于对工业网络传输协议进行解析的方法及系统 |
CN109462590B (zh) * | 2018-11-15 | 2021-01-15 | 成都网域复兴科技有限公司 | 一种基于模糊测试的未知协议逆向分析方法 |
-
2019
- 2019-11-25 CN CN201911163543.4A patent/CN111314279B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103546443A (zh) * | 2012-07-16 | 2014-01-29 | 清华大学 | 结合网络流量分析和消息聚类的网络协议逆向分析方法 |
Non-Patent Citations (1)
Title |
---|
《Toward Unsupervised Protocol Feature Word Extraction》;Zhuo Zhang,et.al;《IEEE JOURNAL ON SELECTED AREAS IN COMMUNICATIONS》;20141031;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111314279A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111314279B (zh) | 一种基于网络流量的未知协议逆向方法 | |
CN111506599B (zh) | 基于规则匹配和深度学习的工控设备识别方法及系统 | |
CN114553983B (zh) | 一种基于深度学习高效工业控制协议解析方法 | |
CN108600195B (zh) | 一种基于增量学习的快速工控协议格式逆向推断方法 | |
CN113067754A (zh) | 一种半监督时间序列异常检测方法及系统 | |
CN113452672B (zh) | 基于协议逆向分析的电力物联网终端流量异常分析方法 | |
Tao et al. | Bit‐oriented format extraction approach for automatic binary protocol reverse engineering | |
CN104468262A (zh) | 一种基于语义敏感的网络协议识别方法及系统 | |
CN111585832A (zh) | 一种基于语义预挖掘的工控协议逆向分析方法 | |
Wang et al. | IPART: an automatic protocol reverse engineering tool based on global voting expert for industrial protocols | |
US9600572B2 (en) | Method, computer program and apparatus for analyzing symbols in a computer system | |
CN109889471B (zh) | 结构化查询语句sql注入检测方法和系统 | |
CN110855608B (zh) | 基于强化学习的协议逆向工程系统及其工作方法 | |
CN115859305B (zh) | 一种基于知识图谱的工控安全态势感知方法及系统 | |
CN115622926A (zh) | 一种基于网络流量的工控协议逆向分析方法 | |
CN116827656A (zh) | 网络信息安全防护系统及其方法 | |
CN115587007A (zh) | 基于RoBERTa的网络日志安全检测方法及系统 | |
CN111767695B (zh) | 一种协议反向工程中字段边界推理优化方法 | |
Wang et al. | Reverse engineering of industrial control protocol by XGBoost with V-gram | |
Jiang et al. | A Text Similarity-based Protocol Parsing Scheme for Industrial Internet of Things | |
Luo et al. | Capturing uncertainty information and categorical characteristics for network payload grouping in protocol reverse engineering | |
Ma et al. | Grammatch: An automatic protocol feature extraction and identification system | |
CN110175200A (zh) | 一种基于人工智能算法的异常用能分析方法及系统 | |
CN116033048B (zh) | 物联网的多协议解析方法、电子设备和存储介质 | |
CN114629809B (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 |