【协议逆向工程】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这一块,它运 ...
随机推荐
- hbase 快速开发
hbase是一个分布式的NoSQL,部署起来配置很多东西,开发起来太慢,可以使用docker快速搭建环境 gs@gs-virtual-machine:~$ sudo docker run -ti ha ...
- 第三章 jQuery事件和动画
1.什么是事件:事件指的是用于对网页操作的时候,网页做出的一个回应. 2.JQuery中的事件:JQuery事件是对JavaScript事件的封装,常用事件的分类如下:(1)基础事件:window事件 ...
- python全栈第一章
第一章 Python基础变量定义规则:1.变量名只能是字母数字或者下划线的任意组合2.变量名的第一个字符不能是数字3.关键字不能申明为变量名定义方式:1.驼峰体AgeOfSzp2.下划线隔开Age_o ...
- tomcat的jks的私钥导出nginx需要的key文件
方法一: 1.先用keytool导出pfx文件.第一个123456是jks密码,后边两个是新生成的pfx的密码 keytool -v -importkeystore -srckeystore D:\\ ...
- 【题解】Luogu P3931 SAC E#1 - 一道难题 Tree
原题传送门 题目几乎告诉你要用最大流 先进行搜索,将树的叶子节点都连到一个虚拟点T上,流量为inf(这样不会干扰到前面部分的最大流) 其他边按树的形态连边,以根节点为S,跑一变最大流即可求出答案 #i ...
- nrm 安装与使用
1.使用 npm install nrm -global 全局安装 2.安装完成后使用 nrm ls命令查看其维护的镜像地址列表 3.* 星号表示在使用 npm下载资源的时候,默认使用的地址 这里需要 ...
- iOS报错总结
1. new Date('2018-07-18 14:58:32').getTime(); //在ios上拿报Invalid Date 无法转化 Safari 正确解析new Date ...
- 获奖感想和python学习心得
一,获奖感想 很荣幸能成为小黄杉的获得者,也很感谢老师对我的这份鼓励和期望.回顾本学期的python学习中,我从一名对编程一无所知的小白,成为一名刚入门的程序猿.首先,我要感谢我的任课老师娄嘉鹏老师, ...
- CSS: hover选择器的使用
用法1:这个表示的是:当鼠标悬浮在a这个样式上的时候,a的背景颜色设置为黄色 a:hover { background-color:yellow; ...
- Java 基础 类加载器和双亲委派机制 学习笔记
转自博客:https://blog.csdn.net/weixin_38118016/article/details/79579657 文章不是我写的,但是感觉写的挺通俗易懂的,然后防止以后丢失,就转 ...