掌桥专利:专业的专利平台
掌桥专利
首页

一种私有协议漏洞检测方法及系统

文献发布时间:2024-04-18 20:01:30


一种私有协议漏洞检测方法及系统

技术领域

本发明属于工业私有协议漏洞检测技术领域,具体涉及一种私有协议漏洞检测方法及系统。

背景技术

安全风险和漏洞挖掘分析是保障工业生产安全领域安全稳定运行的基础。由于私有协议的复杂性,使得安全风险和漏洞挖掘通常人工测试,无法实现自动化自动化,也缺乏科学性的定量分析。

发明内容

发明目的:为了解决上述问题,本发明提供了一种私有协议漏洞检测方法及系统。

技术方案:一种私有协议漏洞检测方法,包括以下步骤:

获取私有协议的元数据;基于知识图谱技术将所述元数据进行语义关联;

基于蒙特卡洛算法生成初始报文;对所述初始报文进行预定操作生成随机报文;其中,所述预定操作至少包括:交叉变异、顺序随机交换、随机删除、随机重复、强制中断;

基于所述随机报文形成模糊测试指令;基于所述模糊测试指令,进行漏洞风险概率计算,得到先验概率和后验概率;判断所述先验概率和后验概率之间是否符合判断条件,得到判断结果:

若是,则输出所述后验概率,并将所述后验概率作为漏洞的风险程度;反之,则调整随机生成策略,优化模糊测试集合中指令的蒙特卡洛方法出现概率。

进一步地,基于知识图谱技术将所述元数据进行语义关联包括以下步骤:

将私有协议的安全关联知识定义为知识图谱所需的数据和关系,并生成知识图谱关联图;其中,安全关联知识至少包括工作原理、数据格式、以及协议;

基于所述知识图谱关联图、前置条件、后置条件、顺序关联、以及控制工艺构建自动报文构建方法;

所述控制工艺至少包括第一控制方法、第二控制方法、以及第三控制方法;

其中,所述第一控制方法包括:下载逻辑文件到可编程逻辑控制器中;在下载逻辑文件流程中,包含多条请求报文;其中,协议请求设计功能至少包括以下类别:新建对象、修改多个参数、获取数据、开始传输、传输、结束传输、修改参数、删除对象;

所述第二控制方法包括:可编程逻辑控制器运行状态控制;

所述第三控制方法包括:修改可编程逻辑控制器的IP地址。

进一步地,进行漏洞风险概率计算包括以下步骤:

定义已知节点出现的先验概率为

将模糊测试指令输入测试系统后,根据漏洞被触发的次数,计算条件概率,计算公式如下:

其中,

根据全概率公式和贝叶斯公式,计算后验概率,计算公式如下:

其中

进一步地,判断所述先验概率和后验概率之间是否符合判断条件,包括以下步骤:

基于度量公式判定后验概率与先验概率的差异性,其中,所述度量公式为:

其中

进一步地,所述交叉变异包括以下步骤:

选取2个以上的流程种子,对其部分报文的进行交叉融合,模拟同时执行多个任务;

该交叉变异以“种子2插入种子1的位置”、“种子1的拆分间隔”、“种子2的拆分间隔”为差异,生成用例组;

设置种子1请求报文数量为n1,种子2请求报文数量为n2;对种子1拆分标准从每1条报文拆分一次开始,到每len(n1)条报文拆分一次;

对种子2拆分标准从每1条报文拆分一次开始,到每len(n2)条报文拆分一次;将种子1拆分组与种子2拆分组进行两两交叉,交叉次数为len(n1)*len(n2)次;任一拆分组到尾部后,将另一组剩余部分补充到尾部,共可生成用例数量len(n1)*len(n2)个;其中len为报文长度。

进一步地,所述顺序随机交换至少包括以下步骤:

从数据预处理中,选择上下关联的数据报文或报文组,调换其报文数据;根据选择的上下关联的数据报文或报文组位置的不同,生成用例组;

选取一个报文流程种子,按照报文数量选取交换对象1,其余部分根据交换对象所含的报文数量进行分片,视为插入对象,每当将交换对象插入对象的不同位置时后,生成一段用例。

进一步地,所述随机删除包括以下步骤:

从种子中,选择一条或多条数据进行删除;选取一个报文流程种子,按照从少到多的顺序选择删除对象,其余部分生成用例。

进一步地,所述随机重复包括以下步骤:

从种子中,选择一条或多条数据进行重复一次或多次,重复的位置随机生成;选取一个报文流程种子,按照从少到多的顺序选择重复对象,对报文的任意可插入位置进行重复报文的插入,生成用例。

进一步地,所述强制中断包括以下步骤:

从种子中,选择任意位置,直接中断通讯连接;选取一个报文流程种子,按照顺序删除后续操作,生成用例。

在另一个技术方案中,提供了一种私有协议漏洞检测系统,用于实现如上述的一种私有协议漏洞检测方法,所述系统包括:

第一模块,被设置获取私有协议的元数据;基于知识图谱技术将所述元数据进行语义关联;

第二模块,被设置基于蒙特卡洛算法生成初始报文;对所述初始报文进行预定操作生成随机报文;其中,所述预定操作至少包括:交叉变异、顺序随机交换、随机删除、随机重复、强制中断;

第三模块,被设置基于所述随机报文形成模糊测试指令;基于所述模糊测试指令,进行漏洞风险概率计算,得到先验概率和后验概率;判断所述先验概率和后验概率之间是否符合判断条件,得到判断结果:

若是,则输出所述后验概率,并将所述后验概率作为漏洞的风险程度;反之,则调整随机生成策略,优化模糊测试集合中指令的蒙特卡洛方法出现概率。

有益效果:本发明首先基于知识图谱技术将设备、漏洞和拓扑结构等安全元数据进行语义关联,形成指令码、功能码、操作对象等分类;其次使用蒙特卡洛算法对正常指令生成初始报文,并使用智能交叉变异、顺序随机交换、随机删除、随机重复、强制中断等操作生成模糊测试指令;最后将模糊测试指令输入测试系统,采用贝叶斯后验概率理论进行漏洞风险概率计算,实现对某项漏洞的安全风险的定量分析;本发明高效实现私有协议漏洞检测测试集合,且动态调整漏洞检测方法,实现协议漏洞的自动风险评估。

附图说明

图1是本发明算法流程图;

图2是数据交互流程;

图3是利用知识图谱进行语义关联的示意图;

图4是自动报文构建方法的基本结构图;

图5是初始报文图;

图6是交叉变异示意图;

图7是新报文插入示意图;

图8是顺序调换示意图;

图9是删除示意图;

图10是重复示意图;

图11是强制中断示意图;

图12是随机打乱示意图;

图13是定向筛选删除示意图。

实施方式

实施例

本实施例提供了一种私有协议漏洞检测方法(以下简称本方法)。包括以下步骤:

S100、获取私有协议的元数据;基于知识图谱技术将所述元数据进行语义关联。

知识图谱的应用在漏洞挖掘领域发挥关键作用。知识图谱为模糊测试提供了支持,它能够从多个来源整合各种漏洞、漏洞模式和攻击方法的信息。基于知识图谱技术将设备、漏洞和拓扑结构等私有协议元数据进行语义关联。本方法考虑在模糊测试中主要考虑三方面的关键知识图谱信息。

S101、基于知识图谱技术将所述元数据进行语义关联包括以下步骤:

如图3所示,将私有协议的安全关联知识定义为知识图谱所需的数据和关系,并生成知识图谱关联图;其中,安全关联知识至少包括工作原理、数据格式、以及协议。

如图4所示,基于所述知识图谱关联图、前置条件、后置条件、顺序关联、以及控制工艺构建自动报文构建方法。

所述控制工艺至少包括第一控制方法、第二控制方法、以及第三控制方法;

其中,所述第一控制方法包括:下载逻辑文件到可编程逻辑控制器中;在下载逻辑文件流程中,包含多条请求报文;其中,协议请求设计功能至少包括以下类别:新建对象、修改多个参数、获取数据、开始传输、传输、结束传输、修改参数、删除对象;

所述第二控制方法包括:可编程逻辑控制器运行状态控制;

所述第三控制方法包括:修改可编程逻辑控制器的IP地址。

以下具体说明上述控制工艺:

(1)下载逻辑文件到PLC(可编程逻辑控制器)中

下载逻辑文件流程中,一共包含多条请求报文(数据传输分包视作一条),其中协议请求涉及功能8类,包括:新建对象、修改多个参数、获取数据、开始传输、传输、结束传输、修改参数、删除对象。

该流程视PLC(可编程逻辑控制器)当前运行状态,当PLC处于停止运行状态时,流程内不会出现修改PLC运行的修改参数请求。当PLC处于运行状态时,获取子数据请求收到的回复内若显示PLC处于运行状态,PLC的上位机软件会在流程中添加发送修改参数请求,将PLC置停。

(2)PLC运行状态控制

该流程体现在PLC上位机单独控制PLC运行状态的过程中,修改PLC运行状态时会出现。通常只存在运行和停止状态。

(3)修改PLC的IP地址

该操作涉及对PLC内部数据的提取和下载,数据报文会稍多,主要包含的类型与(1)的类型类似,缺少了开始序列和结束序列操作。流程进行到一半时设备会自动重启而中断与外界的通讯。恢复运行后,重新建立连接,置位部分参数,该流程才正式结束。

S200、基于蒙特卡洛算法生成初始报文;对所述初始报文进行预定操作生成随机报文;其中,所述预定操作至少包括:交叉变异、顺序随机交换、随机删除、随机重复、强制中断。

使用蒙特卡洛算法,参考正常的报文系统,进行初始报文的生成。初始报文的结构可以用网络结构图表示,其中功能模块为关键知识图谱信息关键语句(或功能)。

S201、如程序1所示,所述交叉变异包括以下步骤:

选取2个以上的流程种子,对其部分报文的进行交叉融合,模拟同时执行多个任务;

该交叉变异以“种子2插入种子1的位置”、“种子1的拆分间隔”、“种子2的拆分间隔”为差异,生成用例组;

设置种子1请求报文数量为n1,种子2请求报文数量为n2;对种子1拆分标准从每1条报文拆分一次开始,到每len(n1)条报文拆分一次;

对种子2拆分标准从每1条报文拆分一次开始,到每len(n2)条报文拆分一次;将种子1拆分组与种子2拆分组进行两两交叉,交叉次数为len(n1)*len(n2)次;任一拆分组到尾部后,将另一组剩余部分补充到尾部,共可生成用例数量len(n1)*len(n2)个;其中len为报文长度。

交叉变异操作模拟PLC同时被多个操作影响的情况,当多个操作同时进行时,是否会因部分操作的冲突导致PLC的异常。

交叉变异操作不破坏操作的流程完整性,生成用例的通过率较高。

程序1:

S202、如程序2所示,所述顺序随机交换至少包括以下步骤:

从数据预处理中,选择上下关联的数据报文或报文组,调换其报文数据;根据选择的上下关联的数据报文或报文组位置的不同,生成用例组;

选取一个报文流程种子,按照报文数量选取交换对象1,其余部分根据交换对象所含的报文数量进行分片,视为插入对象,每当将交换对象插入对象的不同位置时后,生成一段用例。

顺序随机交换操作模拟PLC报文时序异常的情况,当设备因网络异常或收发进程错误、人员错误操作时,是否会因部分操作顺序的错误导致PLC的异常。

顺序随机交换操作略微破坏操作的流程完整性,生成用例模拟操作人员误操作致使设备异常响应,针对性的发现潜在的逻辑漏洞。

程序2:

S203、如程序3所示,所述随机删除包括以下步骤:

从种子中,选择一条或多条数据进行删除;选取一个报文流程种子,按照从少到多的顺序选择删除对象,其余部分生成用例。

随机删除操作模拟PLC报文输出传输异常丢包的情况,当设备因网络异常或收发进程错误、人员错误操作时,是否会因部分操作丢失的情况导致PLC的异常。

随机删除操作略微破坏操作的流程完整性,生成用例模拟操作人员跳过了部分操作或数据丢包致使设备异常响应,针对性的发现潜在的逻辑漏洞。

程序3:

S204、如程序4所示,所述随机重复包括以下步骤:

从种子中,选择一条或多条数据进行重复一次或多次,重复的位置随机生成;选取一个报文流程种子,按照从少到多的顺序选择重复对象,对报文的任意可插入位置进行重复报文的插入,生成用例。

随机重复操作模拟PLC报文异常重复的情况,当设备因受人员错误重复操作或网络异常导致的数据重放等原因影响时,是否会因部分操作重复导致PLC的异常。

随机重复操作略微破坏操作的流程完整性,生成用例模拟操作人员误操作致使设备异常响应,针对性的发现潜在的逻辑漏洞。

程序4:

S205、如程序5所示,所述强制中断包括以下步骤:

从种子中,选择任意位置,直接中断通讯连接;选取一个报文流程种子,按照顺序删除后续操作,生成用例。

强制中断操作模拟PLC报文异常中断的情况,当设备因网络异常或收发进程错误、人员错误操作、控制端断电等情况时,是否会因操作异常中断的错误导致PLC的异常。

强制中断操作会破坏操作的流程完整性,生成用例模拟数据流中断触发设备异常响应,针对性的发现潜在的逻辑漏洞。

程序5:

预定操作不局限于S201~S205所提供的步骤,还包括以下操作:

S205、如程序6所示,新报文插入;新报文插入包括以下步骤:

从数据预处理中,选择一类报文,插入种子报文中。根据插入位置、数量的不同,生成用例组。选取一个报文流程种子和单条插入报文按照报文流程顺序,每插入一个位置,则视为生成一个用例保存。

新报文插入操作模拟PLC受操作时被其他数据干扰或数据传输异常重放的情况,当操作进行时,是否会因部分操作的重放导致PLC的异常。

新报文插入操作略微破坏操作的流程完整性,生成用例的通过率较高,因插入的数据为主动选择,可以更有针对性的发现目标特定漏洞。

程序6:

S207、随机打乱;随机打乱包括以下步骤:

全部结果推算,按照贝叶斯后验分布产生的给定概率分布产生随机数,进行随机打乱。

随机打乱操作无法模拟PLC正常、异常数据流的情况,仅从随机数据构成方面测试是否会有情况导致PLC的异常。

随机打乱操作完全破坏操作的流程完整性,生成用例随机触发设备异常响应。用例数量庞大,涵盖全部可能情况。

S208、定向筛选删除;定向筛选删除包括以下步骤:

从数据预处理中,选择一类报文,比对种子报文中的同类型报文,将同类型报文(一条或多条)删除。生成一组或多用例组。选取一个报文流程种子和单条删除报文。按照报文流程顺序,每删除一个位置,则视为生成一个用例保存,直至全部删除。部分删除,部分保留,视为一个用例。

定向筛选删除操作模拟PLC正常数据流中的部分数据受防火墙或安全设备拦截的情况,从特定数据确实方面测试是否会有特殊情况导致PLC的异常。

定向筛选删除操作略微破坏操作的流程完整性,生成用例缺少某一类特定报文,尝试触发设备异常响应。用例数量较少,针对性的发现潜在的逻辑漏洞。漏洞发现效率较高。

S300、基于所述随机报文形成模糊测试指令;基于所述模糊测试指令,进行漏洞风险概率计算,得到先验概率和后验概率;判断所述先验概率和后验概率之间是否符合判断条件,得到判断结果:

若是,则输出所述后验概率,并将所述后验概率作为漏洞的风险程度;反之,则调整随机生成策略,优化模糊测试集合中指令的蒙特卡洛方法出现概率。

将随机报文作为模糊测试指令输入至测试系统中,进行条件概率的计算,以及后验概率的更新。

S301、进行漏洞风险概率计算包括以下步骤:

定义已知节点出现的先验概率为

将模糊测试指令输入测试系统后,根据漏洞被触发的次数,计算条件概率,计算公式如下:

其中,

根据全概率公式和贝叶斯公式,计算后验概率,计算公式如下:

其中

S302、判断所述先验概率和后验概率之间是否符合判断条件,包括以下步骤:

基于度量公式判定后验概率与先验概率的差异性,从而判定最终的漏洞风险的量化。其中,所述度量公式为:

其中

判断所述先验概率和后验概率不符合判断条件后,调整随机生成策略,优化模糊测试集合中指令的蒙特卡洛方法出现概率。调整过程为:

假设原测试指令集合为

本方法对S7私有协议进行漏洞检测,具体包括两个漏洞的发现与评估。

(1):当设备提前收到删除会话报文时,设备运行异常,进入拒绝服务状态,且无法正常恢复。断电重启后恢复。

命中漏洞的用例生成过程:

首先构建初始报文:下载逻辑文件流程中,一共包含13条请求报文(数据传输分包视作一条),其中S7协议请求9条,涉及功能8类,包括:新建对象、修改多个参数、获取数据、开始传输、传输、结束传输、修改参数、删除对象。

该流程视PLC当前运行状态,当PLC处于停止运行状态时,流程内不会出现修改PLC运行的修改参数请求。当PLC处于运行状态时,获取子数据请求收到的回复内若显示PLC处于运行状态,PLC的上位机软件会在流程中添加发送修改参数请求,将PLC置停。

A向P,102端口发起TCP握手请求;

P向A,响应TCP请求;

A向P,完成TCP握手请求;

A向P,构建COTP通路,配置COTP参数;

P向A,确定COTP通路;

A向P,构建S7协议-新建对象请求;

P向A,响应S7协议-新建对象请求;

A向P,构建S7协议-修改多个参数请求,修改对象为LID_SessionVersionStruct

P向A,响应修改多个参数请求结果;

A向P,构建S7协议-获取子数据请求,获取对象为NativeObjects.theCPUexeUnit_Rid,读取PLC运行状态;

P向A,响应请求数据内容

A向P,构建S7协议-修改参数请求,修改对象为NativeObjects.thePLCProgram_Rid

P向A,响应参数修改结果;

A向P,构建S7协议-开始传输序列请求,请求ID为NativeObjects.thePLCProgram_Rid;

P向A,响应开始传输序列结果;

A向P,传输S7协议数据;

P向A,响应S7协议数据接收结果;

A向P,构建S7协议-结束传输序列请求,无需参数;

P向A,响应开始传输序列结果;

A向P,构建S7协议-修改参数请求,修改对象为PLCProgramma.ESconsistent

P向A,响应参数修改结果;

A向P,构建S7协议删除对象请求,ID为ObjectQualifier;

P向A,响应删除对象请求;

A向P,断开TCP连接,FIN,ack;

P向A,确认断开,FIN,ack;

P向A,RST,ack;

P向A,rst。

以融合报文变异和后验概率的私有协议漏洞检测方法作为策略,选择插入的数据为:A向P,构建S7协议删除对象请求,ID为ObjectQualifier,生成用例为插入PLCProgramma.ESconsistent参数的请求的多个用例。

漏洞原理分析:该漏洞的触发原因为PLC内部收到请求时,对每个操作流程赋予一个对象ID,在操作完成前提前触发了对象删除操作,致使PLC内部对象管理混乱,致使PLC调度队列进入异常,设备全部指示灯闪烁。

漏洞触发后恢复原理:通过断电重启,清空PLC内存,清空操作请求调度队列。队列异常消失,设备恢复正常

(2)当设备未收到部分ESconsistent时,设备无法恢复运行状态,进入停止致运行状态,无法正常恢复,断电重启无法恢复,重新使用组态软件进行程序下载后恢复。

选择删除的数据为:A向P,构建S7协议-修改参数请求,修改对象为PLCProgramma.ESconsistent。生成用例为不包含修改PLCProgramma.ESconsistent参数的请求

漏洞原理分析:该漏洞触发的原因为PLCProgramma.ESconsistent参数为与设备恢复运行过程强关联的一个参数,该参数在流程一中操作过2次,第一次将该参数修改(推测为顺利执行下载过程),第二次复位该参数后重新运行PLC。

将第二次复位该参数的数据流程删除后,PLC检测内部参数时发现参数不符合恢复运行条件,便进入等待,直至该参数复位。从而导致设备的拒绝服务状态。

断电重启并不能重置参数状态,故无法通过该手段恢复设备的正常运行。

漏洞触发后恢复原理:重新使用组态软件进行程序下载的流程中,包含对PLCProgramma.ESconsistent参数的修改和复位操作,重新执行整个流程可以有效复位该参数。

也可以通过单步执行S7协议-修改参数请求,修改对象为PLCProgramma.ESconsistent使该参数复位,恢复设备正常工作。

实施例

本实施例提供了一种私有协议漏洞检测系统,用于实现如实施例1所述的一种私有协议漏洞检测方法,所述系统包括:

第一模块,被设置获取私有协议的元数据;基于知识图谱技术将所述元数据进行语义关联;

第二模块,被设置基于蒙特卡洛算法生成初始报文;对所述初始报文进行预定操作生成随机报文;其中,所述预定操作至少包括:交叉变异、顺序随机交换、随机删除、随机重复、强制中断;

第三模块,被设置基于所述随机报文形成模糊测试指令;基于所述模糊测试指令,进行漏洞风险概率计算,得到先验概率和后验概率;判断所述先验概率和后验概率之间是否符合判断条件,得到判断结果:

若是,则输出所述后验概率,并将所述后验概率作为漏洞的风险程度;反之,则调整随机生成策略,优化模糊测试集合中指令的蒙特卡洛方法出现概率。

相关技术
  • 电力施工用电线杆埋设装置
  • 一种食用油加工用具有防滑效果的运输装置
  • 一种布匹服装加工用运输装置
  • 一种农业饲料加工用运输装置
  • 一种电力施工用辅助电线杆快速安装的运输装置
  • 一种电力施工用辅助电线杆快速安装的运输装置
技术分类

06120116556858