【协议逆向工程】Part 1 概述
1 协议逆向工程概述
1.1 协议
协议是计算机网络与分布式系统中各种通信实体键相互交互信息时必须遵守的一组规则和约定,这些规则明确规定了所交换的数据格式以及有段的同步问题,从而保证了双方通信有条不紊、可靠地交换信息。
比较著名的网络协议有TCP/IP协议栈中的一些协议,比如IP、TCP、UDP、POP3、SMTP、HTTP等。除了大量标准化的通信协议外,网络中还存在大量私有协议,各种软件厂商或个人处于经济利益、安全、隐私等因素的考虑,并没有公开协议细节;一些恶意软件也采用了自己的私有协议防止被跟踪和分析。
1.2 协议分析技术
协议分析技术主要分为两大类:
(1)对已知协议的识别与分析。
(2)对未知协议的逆向分析。
第一类以协议特征(比如协议格式特征、端口特征、流量特征等)为基础,识别应用使用的通信协议并根据协议规范对协议报文进行分析,前提是协议规范已知。
第二类在协议特征未知的条件下,通过协议报文或协议软件执行过程分析得到协议规范(比如协议字段格式和协议状态机),即协议逆向分析。
1.3 协议逆向工程
协议逆向工程是指在不依赖协议描述的情况下,通过对协议实体的网络输入输出、系统行为和指令执行流程进行监控和分析,提取协议语法、语义和同步信息的过程,是工程化的协议逆向分析方法。随着网络规模的扩大和应用种类的增多,对协议逆向的准时性和时效性要求越来越高,自动化协议逆向分析技术成为人们追求的目标。
2 协议逆向分析流程
以协议规范描述模型为目标,协议逆向分析系统应当包括输入预处理,协议格式提取,协议状态机推断三个阶段。
2.1 输入预处理
协议逆向的原始输入为连续的网络数据流或者处理网络数据流的指令执行轨迹。要实现协议格式提取以及协议状态机推断,首先要以会话个报文为粒度对输入进行分割。分析之前要提出原始输入中的冗余和干扰,比如报文序列中可能出现的重传、乱序、分片。会话划分和报文定界是网络流量分析领域的重要研究方向。目前研究已较为成熟。
2.2 协议格式提取
字段符号特征和结构是格式文法的属性。协议格式提取需依次经过字段识别、结构提取、语义与取值约束判断三个步骤,才可识别每个报文对应的格式。对报文所有格式进行合并,得到统一的协议格式文法和各个报文结构属性。根据分析对象的不同,协议格式提取技术分为两类:
(1)基于网络流量的协议格式逆向分析
(2)基于执行轨迹的协议格式逆向分析
第一类基于网络流量的协议格式逆向分析技术,也叫作基于报文的协议逆向分析技术,或者报文序列分析技术。即以截获的网络数据流作为分析对象,依据协议字段的取值变化频率和和特征推断得到协议格式。其依据是:数据流中的当个报文是协议格式的一个实例,相同格式的报文样本往往具有相似性,可以将具有相似性的报文汇集到一起,推断他们所遵循的报文格式。
第二类是基于执行轨迹的协议格式逆向分析技术,也成为基于指令序列的逆向分析技术,或者指令序列分析技术。以指令执行轨迹为分析对象,利用动态污点分析技术跟踪程序对报文的解析过程,并依据协议实体解析报文字段的具体过程实现协议格式的提取。
基于网络流量的分析技术与基于执行轨迹的分析技术相比,存在以下优点:
(1)时效性强。在报文样本数量大,协议种类多的情况下,运行速度快,能够快速得到结果。
(2)对终端依赖小。在未知目标通信软件的情况下,不需要跟踪报文在终端运行情况。
(3)通用性强。报文序列分析方法不关心报文所在协议的层次,只对报文的格式进行分析。
基于网络流量的分析技术与基于执行轨迹的分析技术相比,存在以下缺点:
(1)在仅提供正例网络流量的前提下,正则语言不可能通过学习得到。
(2)对采用加密和压缩机制的协议,报文字节的取值已被破坏,无法通过网络流量分析进行逆向。
(3)对样本集的覆盖率依赖大,样本中不存在的报文格式,无法网络流量分析逆向。
2.3 协议状态机推断
协议状态机推断是指通过分析捕获的网络协议报文序列和协议实体对该报文序列的解析过程,获得协议实体处理状态迁移的逻辑结构以及行为语义信息,最终构成协议的状态机。
在协议状态机推断过程中,通常需要将报文序列中的报文实例抽象为其所属的报文类型,进而将一个或连续的多个抽象类型标注为一个状态。
经过输入预处理,协议格式提取,协议状态机推断后,形成协议规范文本,为后续网络协议逆向应用奠定基础,比如基于协议的模糊测试技术等。
【协议逆向工程】Part 1 概述的更多相关文章
- SSL/TLS协议运行机制的概述_转
转自:SSL/TLS协议运行机制的概述 作者: 阮一峰 日期: 2014年2月 5日 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和 ...
- Protocol Informatics (PI项目)【基于网络轨迹的协议逆向工程文献学习】
Protocol Informatics[基于网络轨迹的协议逆向工程文献学习]by tsy 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途.恕作者著作 ...
- LoRaWAN协议(四)--入网方式概述
前言 在LoRaWAN中,node最终和服务器能够正常数据交互,需要先入网,入网的本质,也就是获得一些通信相关的参数,有以下几个: NwkSKey AppSKey DevAddr DevEui 其中 ...
- SSL/TLS协议运行机制的概述
互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 ...
- 【转】SSL/TLS协议运行机制的概述
互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 ...
- TCP/IP 协议:链路层概述
我们以一个常见的查看IP指令为出发点(ifconfig -a): 1.链路层是什么 链路层是指硬件层协议.也即网络所使用的硬件,比如:以太网(后文主要讨论对象),令牌环网,FDDI已经RS-232 ...
- SSL/TLS协议运行机制的概述(转)
互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 ...
- SSL/TLS协议运行机制的概述(转)
互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 ...
- 第03节-BLE协议各层数据格式概述
本篇博客根据韦大仙的视频,整理所得. 对于BLE系统,它分为上下两块.上面那一块,我们称为host主机.下面这一块是controller,你可以简单的认为它就是一个蓝牙芯片. 对于host这一块,它运 ...
随机推荐
- python基础之 面向对象之反射
1.isinstance和issubclass issubclass(Son,Foo) 判断雷与类之间的是否有继承关系,接受两个参数,一个是疑似子类,一个是疑似父类,判断Son是否是Foo的子类 ob ...
- 【Common】NO.81.Note.1.Common.1.002-【文章摘要】
1.0.0 Summary Tittle:[Common]NO.81.Note.1.Common.1.002-[文章摘要] Style:Common Series:Common Since:2018- ...
- JavaScript实现字符串逆置的几种方法
1. 一般来说js实现字符串逆置输出的一般思路是: 1.将字符串转为数组,一个字符为数组的一个元素: 2.将数组倒置: 3.再将数组元素拼接为字符串. 2. 一般用到的方法有: join():该方法用 ...
- C#设计模式(7)——适配器模式(Adapter Pattern)(转)
一.引言 在实际的开发过程中,由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象.那么如果将“将现存的对象”在新的环境中进行调用 ...
- AARRR海盗模型简介
整理下AARRR模型的概念.实际应用场景等问题,初步感觉这个模型主要应用在APP应用分析中. 1.什么是AARRR模型 AARRR是Acquisition.Activation.Retention.R ...
- Python在金融量开源项目列表
Python也已经在金融量化投资领域占据了重要位置,开源项目列表:
- 对于get系列className的不兼容
function getClass(param){ if(id.getElementsByClassName){ return id.getElementsByClassName(param); }e ...
- container(容器),injection(注入)
1.container为什么会出现? 在书写程序的时候,我们常常需要对大量的对象引用进行管理.为了实现有效的归类管理,我们常常将同类的引用放置在同一数据容器中.由于数据容器中存放了我们随时可能需要使用 ...
- Perl新接触的小命令
0,glob()函数 my @infile = glob("$indir/*.txt.gz"); #获得指定路径下的文件名,并形成列表,如果$indir为空,则自动匹配当前目录下 ...
- hdu 1895 Sum Zero hash
Sum Zero Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Proble ...