内容简介
网络监听、网络对抗、网络管理、恶意代码分析、软件安全漏洞挖掘等应用领域常常需要分析未知协议的格式,高效、准确的自动化协议逆向分析技术一直是人们追求的目标。
《网络与信息安全前沿技术丛书:网络协议逆向分析及应用》是国内全面介绍自动化网络协议逆向分析及应用的学术专著,反映了协议逆向分析领域的新研究成果,可作为从事软件及协议逆向分析、网络管理、网络安全与对抗等方向的教学、科研及工程技术人员的参考书。
内页插图
目录
第1章 绪论
1.1 协议
1.1.1 定义
1.1.2 网络体系结构
1.2 协议分析
1.2.1 应用需求
1.2.2 协议逆向工程
参考文献
第2章 协议设计原理
2.1 协议模型
2.2 协议设计的基本内容
2.2.1 协议的通信环境
2.2.2 协议提供的服务
2.2.3 协议功能
2.2.4 协议元素
2.3 差错控制技术
2.3.1 差错类型
2.3.2 差错检测技术
2.3.3 报文丢失、重复、失序处理技术
2.3.4 差错控制与层次的关系
2.4 典型协议
2.4.1 HDLC协议
2.4.2 PPP协议
2.4.3 IP协议
2.4.4 TCP协议
2.4.5 HTTP协议
2.5 总结与展望
参考文献
第3章 协议规范描述模型
3.1 概述
3.2 协议规范描述需求分析
3.3 高阶属性方法
3.3.1 协议格式分析
3.3.2 高阶属性文法
3.4 基于高阶属性方法的协议规范描述模型
3.5 模型实现
3.6 总结与展望
参考文献
第4章 基于网络流量的协议格式逆向分析
4.1 概述
4.2 序列比对技术
4.2.1 双序列比对
4.2.2 多序列比对
4.2.3 问题分析
4.3 典型报文序列分析方法
4.3.1 PI
4.3.2 PEXT
4.3.3 BFS
4.3.4 ScriptGen
4.3.5 Discoverel
4.3.6 Automaton
4.3.7 Netzob
4.4 基于递归聚类的协议格式提取方法
4.4.1 基本块划分
4.4.2 递归分析
4.4.3 报文结构信息分析
4.4.4 语义及取值约束推断
4.4.5 算法复杂度分析
4.5 人工知识在逆向分析中的应用
4.5.1 人工知识
4.5.2 半自动协议逆向分析
4.6 RPRA实现
4.6.1 输入模块
4.6.2 自动分析模块
4.6.3 输出模块
4.6.4 纠正模块
4.7 应用实例
4.7.1 样本集的获取
4.7.2 数据预处理
4.7.3 已知协议分析
4.8 总结与展望
参考文献
第5章 动态二进制程序分析技术
5.1 概述
5.2 动态污点分析技术
5.2.1 动态污点分析的原理
5.2.2 污点属性的传播特征
5.2.3 动态污点分析技术的应用
5.3 动态符号执行技术
5.3.1 符号执行的原理
5.3.2 符号执行技术的局限
5.3.3 动态符号执行的原理及应用
5.4 二进制分析平台简介
5 4 1Intel Pin
5.4.2 BltBlaze
5.4.3 其他二进制分析平台
5.5 总结与展望
参考文献
第6章 基于执行轨迹的协议格式逆向分析
6.1 概述
6.2 典型指令序列分析方法
6.2.1 Polyglot
6.2.2 AutoFormat
6.2.3 Tupni
6.2.4 Prospex
6.2.5 ReFormat
6.2.6 Dispatcher
6.3 基于混合符号执行的协议格式提取方法
6.3.1 概述
6.3.2 基本思想
6.3.3 基于中间语言的混合符号执行技术
6.3.4 语义解析层次的协议格式提取技术
6.3.5 原型实现及应用
6.4 总结与展望
参考文献
第7章 协议状态机推断技术
7.1 概述
7.2 基本定义
7.3 状态机推断技术研究现状
7.3.1 基于指令序列的状态机推断研究
7.3.2 基于报文序列的状态机推断研究
7.3.3 两类方法的比较
7.4 测试驱动状态融合的协议状态机推断方法-
7.4.1 状态融合问题分析
7.4.2 方法概述
7.4.3 初始状态机构造
7.4.4 状态匹配与融合
7.4.5 状态融合验证
7.4.6 实例分析
7.5 基于域知识的协议状态机主动推断算法
7.5.1 概述
7.5.2 L+N算法
7.5.3 基于强顺序约束关系的output query过滤机制
7.5.4 基于EPTT的output query预响应机制
7.5.5 基于正例样本变异的equivalence queor近似判定算法
7.5.6 实例分析
7.6 总结与展望
参考文献
第8章 协议逆向分析的应用
8.1 概述
8.2 Fuzzing测试技术
8.3 基于模型的Fuzzing技术面临的问题
8.3.1 数据格式的描述
8.3.2 测试用例的生成
8.4 文法驱动的Fuzzing测试技术
8.4.1 文法分析树的构造
8.4.2 测试节点的选择
8.4.3 基于语义的测试用例生成
8.5 应用实例
8.6 总结与展望
参考文献
附录 缩略语
前言/序言
协议是计算机网络和分布式系统中各种通信实体间相互交换信息时必须遵守的一组规则或约定,这些规则明确规定了所交换的数据格式及有关的同步问题,从而保证了通信双方有条不紊、可靠地交换信息。自从英格兰国家物理实验室(National Physical Laboratory,NPL)的R.A.Scantlebury和K.A.BaItlett在1967年将“协议”(protocol)一词用于描述数据通信过程以来,已有大量通信协议出现并被标准化,广泛用于各种各样的网络和通信应用中。比较著名的网络协议有TCP/IP协议栈中的一系列协议,如lP、TCP、UDP、POP3、SMTP、HTTP协议等。
除了大量标准化的通信协议外,网络中还存在大量私有协议(也称为未知协议),各软件厂商或个人出于经济利益、安全、隐私等因素的考虑,并没有公开协议细节;一些恶意软件也采用了自己的私有协议防止被跟踪和分析。
网络协议规范对于网络管理、网络攻防有着重要意义。从网络管理的角度看,识别网络流量使用的传输协议对于提高网络服务质量、了解网络运行状态、监控恶意网络应用具有重要意义。从网络攻击的角度来看,假冒攻击、网络监听等主动和被动攻击技术都需要以协议格式为前提。从网络防护的角度看,识别软件使用的通信协议、分析软件间网络交互报文是软件安全性分析、漏洞挖掘、流量控制和网络安全策略制定等工作的重要内容。而对于迅速传播的蠕虫、僵尸程序、木马等恶意软件,快速分析其通信协议、掌握其命令控制方式更是对恶意软件做出及时反应的关键步骤。因此,以网络协议为主要研究对象的协议分析技术应运而生。
协议分析技术主要分为两大类,一类是对已知协议的识别与分析,另一类是对未知协议的逆向分析。前者以协议特征(如协议格式特征、端口特征、流量特征等)为基础,识别应用使用的通信协议并根据协议规范对协议报文进行分析,其前提是协议规范已知。后者则是在协议特征未知的条件下,通过协议报文或协议软件执行过程分析得到协议规范(包括协议格式和协议状态机),即协议逆向分析。
协议逆向工程(ProtocolReverseEngineering),是指在不依赖于协议描述的情况下,通过对协议实体的网络输入/输出、系统行为和指令执行流程进行监控和分析,提取协议语法、语义和同步信息的过程,是工程化的协议逆向分析方法。人工方式的协议逆向虽然取得了较为理想的效果,但其过程冗长耗时、费力,且准确率依赖于分析人员的经验。随着网络规模的扩大和应用种类的增多,对协议逆向的准确性和时效性的要求越来越高,自动化的协议逆向分析技术成为人们追求的目标。
在江苏省自然科学基金项目“协议逆向工程关键技术研究”以及军队有关项目资助下,解放军理工大学协议逆向分析课题组经过多年研究,在自动化的协议逆向分析方面取得了一些研究成果。这些研究成果以及国内外在协议逆向分析方向的新研究进展形成了本书的主体内容。
全书共8章,主要介绍协议逆向分析原理及应用技术。第1章绪论,主要介绍协议、协议逆向工程等相关概念、研究现状。第2章主要介绍协议设计原理,内容包括协议设计模型、内容、差错控制技术以及典型协议简介等,以此作为协议逆向分析的背景知识。第3章主要介绍协议规范描述模型,内容涉及协议逆向分析对协议规范描述模型的要求、著者提出的基于高阶属性文法的协议规范描述模型,这部分内容是一体化的协议逆向分析技术的基础。协议格式逆向分析主要有两种方法:基于网络流量的协议格式逆向分析和基于执行轨迹的协议格式逆向分析。第4章主要介绍基于网络流量的协议格式逆向分析,内容包括该方法的一般原理、研究现状、著者提出的基于递归聚类的协议格式提取方法、人工知识在逆向分析中的应用等。第5章主要介绍动态二进制程序分析技术,内容包括动态污点分析、动态符号执行技术以及常见的二进制程序分析平台,本章是基于执行轨迹的协议格式逆向分析技术的基础。第6章介绍基于执行轨迹的协议格式逆向分析方法,包括该方法的一般原理、研究现状以及作者在此方向上的研究成果。第7章介绍协议状态机推断技术,包括状态机推断原理、研究现状以及著者提出的两种状态机推断方法。第8章以针对网络协议的模糊测试技术为例,介绍网络协议逆向分析技术的应用。
《网络协议逆向分析及应用》 深入剖析网络通信的奥秘,揭示数据流动的内在逻辑 在当今数字化浪潮汹涌澎湃的时代,网络已成为信息传输、业务运作乃至社会运行的生命线。从电子邮件的每一次传递,到金融交易的每一次确认,再到物联网设备的每一次交互,无数的信息在复杂的网络协议驱动下,如同血液般在数字世界中奔腾不息。然而,这些协议的复杂性、演进的速度以及潜在的安全风险,也给理解、保障和创新带来了巨大的挑战。 本书《网络协议逆向分析及应用》正是应运而生,旨在为读者提供一个深入理解网络协议的视角,尤其侧重于通过“逆向分析”这一强大而精密的工具,去洞察那些隐藏在表象之下的协议本质、工作原理及其在现实世界中的具体应用。我们不满足于仅仅了解协议的表面功能,而是要探究其设计哲学,理解其历史演进,掌握其实现细节,并最终能够灵活运用这些知识解决实际问题。 什么是网络协议?为何要进行逆向分析? 网络协议,简单来说,就是网络设备之间进行通信时必须遵循的一系列规则、标准和约定的集合。它们定义了数据如何被编码、传输、路由、接收和解释,确保了不同厂商、不同操作系统、不同应用之间的互联互通。从低层的物理层和数据链路层(如以太网、Wi-Fi),到传输层(如TCP、UDP),再到网络层(如IP),以及应用层(如HTTP、DNS、FTP、SSH、TLS/SSL),每一个层面都存在着海量而精密的协议。 然而,许多协议的文档并不总是完备的,或者随着技术的进步,出现了许多非标准、私有或遗留的协议。即便是标准协议,其内部的实现细节、安全加固机制、甚至是潜在的漏洞,也往往不为公众所熟知。这时,“逆向分析”(Reverse Engineering)就成为了解锁这些“黑箱”的钥匙。 网络协议逆向分析,是指通过观察、捕获、分析网络流量,以及对相关的软件、硬件进行反编译、反汇编等技术手段,来推断、理解和重构其通信机制、数据格式、指令集和工作逻辑的过程。它不是简单的“偷窥”,而是一种严谨的科学研究和技术探索,其核心在于“知其然,更知其所以然”。 本书将带您走过的知识之旅: 本书将以一种循序渐进、由浅入深的方式,引领读者踏上一段充满挑战与发现的网络协议逆向分析之旅。我们将从基础概念入手,逐步深入到高级技术和实际应用。 第一部分:网络协议基础与逆向分析的基石 深入理解网络分层模型: 我们将回顾OSI七层模型和TCP/IP四层模型,并详细解读每一层的关键协议,理解它们在整个网络通信流程中的定位和作用。例如,IP协议如何实现全球范围的寻址和路由,TCP协议如何保证可靠的、有序的数据传输,HTTP协议如何支撑Web应用的丰富交互。 掌握核心网络协议栈: 深入剖析TCP/IP协议族中的关键协议,包括但不限于: 传输层: TCP的连接建立(三次握手)、数据传输(滑动窗口、拥塞控制)、连接终止(四次挥手)的每一个细节;UDP的无连接、不可靠但高效的特性。 网络层: IP协议的报文结构、地址分配、路由选择的基本原理。 应用层: HTTP/1.x、HTTP/2、HTTPS的请求/响应机制、报文格式、状态码、头部字段,以及TLS/SSL的握手过程、加密解密机制。DNS的查询流程、记录类型。DHCP的地址分配过程。 网络抓包与分析工具的精通: 学习使用业界主流的网络抓包工具(如Wireshark、tcpdump),理解其工作原理,掌握如何有效地捕获、过滤和保存网络流量。我们将详细讲解如何从抓包数据中提取关键信息,识别协议类型,分析数据包结构。 数据包的结构与解析: 学习网络数据包的二进制结构,理解各个字段的含义,掌握如何使用工具(如Wireshark的Dissector)解析不同协议的数据包,识别数据负载中的重要信息。 基本的数据编码与解码: 了解常见的网络数据编码方式,如ASCII、UTF-8、Base64、Hex等,以及如何在分析中进行正确的编码和解码。 第二部分:网络协议逆向分析的实战技巧 流量捕获与分析的艺术: 选择合适的捕获点: 在网络拓扑的不同位置(客户端、服务器、中间设备)进行流量捕获,以获取最相关的信息。 精细化过滤: 掌握Wireshark等工具的高级过滤技巧,快速定位目标流量,排除无关干扰。 识别未知协议: 当遇到Wireshark无法自动识别的协议时,如何通过分析报文特征、字节模式、字符串信息来推断其协议类型和结构。 协议状态跟踪与会话重构: TCP流跟踪: 如何将乱序、分片的数据包按照TCP流的顺序进行重组,还原完整的通信会话。 应用层会话分析: 如何跟踪特定应用层协议(如HTTP)的请求和响应序列,理解客户端与服务器之间的交互逻辑。 数据负载的深入挖掘: 提取关键数据: 如何从捕获的数据包中提取重要的用户信息、命令、文件内容、配置参数等。 数据加密与解密: 了解对称加密、非对称加密、哈希函数在网络通信中的应用。学习如何捕获TLS/SSL握手过程中的密钥信息(在合法授权下),并解密HTTPS流量,以分析加密通信内容。 协议特征提取与模式识别: 字节序列分析: 识别协议特有的字节序列(Magic Bytes)、固定的字段顺序、特定的数值范围等,作为识别协议的依据。 字符串分析: 从数据负载中提取可读的字符串,如命令、URL、用户名、错误信息等,为理解协议功能提供线索。 利用自动化工具与脚本: 开发自定义Dissector: 学习如何为Wireshark开发自定义的Dissector,以支持私有或不常见的协议。 脚本化分析: 使用Python等脚本语言,结合Scapy等库,实现对网络流量的自动化解析、分析和数据提取。 动态分析与静态分析的结合: 动态分析: 在网络流量中观察协议的行为,捕捉其实时交互。 静态分析: 对相关的应用程序(客户端、服务器端)进行反汇编、反编译,分析其代码逻辑,以理解协议的实现细节和内部数据结构。 第三部分:网络协议逆向分析的应用领域与前沿探索 网络安全攻防中的逆向分析: 漏洞挖掘与分析: 如何通过逆向分析发现网络协议实现中的漏洞,如缓冲区溢出、格式化字符串漏洞、逻辑错误等。 恶意软件分析: 分析恶意软件的网络通信模式,识别其C2(Command and Control)通信协议,追踪其行为。 入侵检测与防御: 基于对协议的深入理解,设计更精准的入侵检测规则,开发更有效的防御机制。 取证分析: 在网络安全事件发生后,通过分析捕获的流量,还原攻击过程,收集证据。 网络性能优化与故障排查: 瓶颈定位: 分析协议交互中的延迟、丢包、重传等现象,找出网络性能瓶颈。 协议缺陷诊断: 识别协议实现中的非最优设计或错误配置,提出优化建议。 物联网(IoT)协议分析: 理解IoT通信: 剖析CoAP、MQTT、Zigbee、LoRa等IoT领域特有的协议,分析其通信模式和数据格式。 IoT设备安全: 针对IoT设备的逆向分析,识别潜在的安全风险,评估其通信的安全性。 新兴协议与技术探索: WebAssembly(Wasm)的网络应用: 分析Wasm在浏览器中的网络交互方式。 IPv6协议族的深入理解与分析: 探索IPv6的报文结构、扩展头部、地址解析等。 软件定义网络(SDN)与网络功能虚拟化(NFV)中的协议: 理解OpenFlow、Netconf等协议在SDN/NFV架构中的作用。 合规性与互操作性验证: 验证协议实现: 确保网络设备或软件的协议实现符合标准规范。 第三方设备集成: 分析第三方设备使用的私有协议,以便于集成和互操作。 数据包捕获与分析的道德与法律考量: 合法授权的重要性: 强调在进行网络协议分析时,必须遵守相关的法律法规,获得明确的授权,尊重用户隐私。 本书的特色: 理论与实践并重: 我们不仅会讲解协议的理论知识,更会提供大量的实战案例和操作指南,让读者能够亲自动手,掌握分析技能。 案例驱动: 通过分析实际的网络流量和常见协议,让抽象的概念变得具体可感。 前沿视野: 紧跟网络技术发展的步伐,介绍最新的协议和逆向分析技术。 全面性: 覆盖从基础到高级,从工具使用到实际应用的各个方面。 谁适合阅读本书? 本书适合所有对网络通信底层原理感兴趣的技术人员,包括但不限于: 网络工程师: 深入理解协议,优化网络性能,解决复杂网络问题。 安全研究员与工程师: 挖掘网络安全漏洞,分析恶意软件,进行入侵检测与防御。 软件开发工程师: 开发网络应用,理解其通信机制,保障数据传输安全。 系统管理员: 排查网络故障,监控网络运行状态。 渗透测试工程师: 深入了解目标系统的通信模式,发现潜在攻击面。 计算机科学与网络安全专业的学生: 构建扎实的网络协议基础,掌握实用的逆向分析技能。 通过阅读《网络协议逆向分析及应用》,您将不仅能够“看懂”网络中的数据流动,更能“读懂”协议背后的逻辑,掌握揭示网络通信奥秘的强大武器,从而在不断变化的网络世界中,成为一名更加自信、高效和专业的技术实践者。我们期待与您一起,在这趟深入探索网络协议世界的旅程中,共同发现、学习与成长。