Page 154 - 软件工程与项目管理
P. 154
软件工程与项目管理
Software Engineering & Project Management
关系包含了状态转换信息。网络协议可分为二进制协议与文本协议。二进制协议
是一种面向数据结构的协议,如域名系统协议(DNS)。在二进制协议中,协议
字段由协议规范预定义来表示特定的字段含义,而不像文本协议一样使用协议关
键字字段作为前导词,这使得研究人员在无先验知识的情况下对未知二进制协议
无从下手。文本协议由人类可读的文本字符串所构成,如 HTTP 作为一种基于文
本的应用层通信协议,是万维网上能够可靠地交换文件的重要基础。
协议字段、协议关键字、字段分隔符、键—值分隔符、值—值分割符等是
主要用来表达文本协议格式的术语。在协议逆向工程中,字段被定义为具有特定
语义的不可分割的子序列。协议通常包含多个字段,而这些字段可能是长度固定
的也可能是长度可变的,字段之间通常存在着顺序、并列以及层级三种结构关系。
协议关键字是语义相关的一个字段,它蕴涵着与上下文相关的语义信息。分隔符
是非字母符号,如“#”“:”“;”“,”以及十六进制符号,分隔符有三类,
分别用来分割字段、键与值以及值与值。语法推断与语义推断是自动协议逆向工
程过程中的核心步骤。通过语法推断,期望得到未知协议完整的字段边界、偏
移位置和字节顺序,从而进一步推测协议的整体报文结构。语义推断是接下来要
做的工作,例如在 HTTP 中,语义推断的内容应该是网页内容;而在分布式网络
协议(DNP3)中,推断出的语义信息应为控制命令。公开的互联网通信协议在
RFC 文档中有对其详细的协议规范说明,但对于未知协议和未记录的协议,语法
推断以及语义推断则需要协议逆向工程来实现。
协议格式与协议状态机是协议逆向工程最常见的两个输出结果,两者共同
构成了协议逆向工程的协议规范的完整描述。协议格式实际是上述语法推断与语
义推断的输出集合。协议状态机推断通过分析消息序列的解析过程,得到协议实
体处理状态转换的逻辑结构及其行为语义信息,最后构造协议有限状态机。协议
状态机反映了协议元素之间的联系,可表示有限个协议状态之间的转移、输入输
出动作等交互行为的模型。对于未知协议,协议格式提取是协议状态机推断的前
提,而侧重于协议状态机推断的技术反过来也验证了协议格式提取的正确性。正
确性、简洁性以及覆盖率是目前协议逆向工程学术界公认的三个独立评估指标。
正确性衡量了协议逆向工程的推断结果与协议真实规范的匹配程度;简洁性度量
了有多少逆向工程推断出的消息或状态代表单个真实的消息或状态;覆盖率是测
试完整性的衡量标准。
144
144

