针对西门子PLC漏洞挖掘的方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202010233207.9
(22)申请日 2020.03.29
(71)申请人 博智安全科技股份有限公司
地址 210001 江苏省南京市雨花台区软件
大道168号3栋5层
(72)发明人 傅涛 郑轶 王力 王路路 
程旺宗 
(74)专利代理机构 南京司南专利代理事务所
(普通合伙) 32431
代理人 于淼
(51)Int.Cl.
G05B  19/05(2006.01)
(54)发明名称针对西门子PLC漏洞挖掘的方法(57)摘要一种针对西门子PLC漏洞挖掘的方法,其基于西门子PLC的合法有效通信数据,分别针对特定数据段的Fuzzing测试方法,首先保证了生成的Fuzzing数据的各字段、协议头、包长度、数据块长度等的合法有效性,因此生成的数据发往目标PLC,PLC必然对数据进行解析和回应;固定选取一个或多个字段变异,极具针对性测试协议设计上在该字段是否存在缺陷,因此可以快速发现PLC的漏洞。本方法基于西门子PLC通信过程分析,不依赖于常用Fuz
zing测试工具,无需进行固件逆向,有效避免了当前对通信协议进行模糊测试过程中的:数据随机生成丢包率高、针对性不强、覆盖性太低、
漏洞发掘效果差的问题。权利要求书2页  说明书4页  附图2页CN 111427305 A 2020.07.17
C N  111427305
A
1.一种针对西门子PLC漏洞挖掘的方法,其特征在于,包括:
顺序依次执行的PLC通信场景搭建、PLC有效通信数据采集、流量分析、Fuzz脚本程序开发以及PLC异常监测。
2.根据权利要求1所述的针对西门子PLC漏洞挖掘的方法,其特征在于,所述针对西门子PLC漏洞挖掘的方法,具体步骤如下:
步骤1:PLC通信场景搭建,所述PLC通信场景搭建包括:
安装一台win7x64上位机,与被测试的西门子PLC进行连通,确认上位机与被测试的西门子PLC通信正常;
步骤2:作为PLC有效通信数据采集的流量采集,所述流量采集包括:
在上位机中安装西门子组态软件TIA后,对被测试的西门子PLC进行简单编程;
步骤3:流量分析,所述流量分析包括:
打开wireshark抓包软件,加载针对西门子协议分析的专用插件,即西门子PLC通信协议插件s7comm对PLC工程下载过程的数据的流量数据包进行全面分析,识别作为通信数据的流量数据包中的协议头、功能码、参数、长度和数据这样的部分;
步骤4:Fuzz程序开发,所述Fuzz程序开发包括:
分析了上位机与被测试的西门子PLC的通信过程之后,掌握其数据交互的过程,开发程序对通信过程进行模拟,达到通过程序完成与被测试的西门子PLC通信效果;针对数据包中的某一帧数据,对应被测试的西门子PLC执行的一个特定操作,对数据中的协议字段进行变异,覆盖该字段数值所有可能存在的情况,构造成完成的数据包发送至被测试的西门子PLC;
步骤5:异常监测,所述异常监测包括:
在程序测试过程中,监测被测试的西门子PLC运行状态,当被测试的西门子PLC拒绝服务漏洞被触发
后,被测试的西门子PLC进入异常状态,指示灯异常闪烁,程序自动测试被中断,此时可断定触发了PLC的拒绝服务漏洞。
3.根据权利要求2所述的针对西门子PLC漏洞挖掘的方法,其特征在于,所述安装一台win7x64上位机,包括:下载西门子TIA Portal软件,即博图软件并进行安装在该win7x64上位机上。
4.根据权利要求2所述的针对西门子PLC漏洞挖掘的方法,其特征在于,所述对被测试的西门子PLC进行简单编程,包括:
使用西门子TIA Portal软件编制一个简易的PLC工程,将简易的PLC工程文件下载至被测试的西门子PLC。
5.根据权利要求4所述的针对西门子PLC漏洞挖掘的方法,其特征在于,所述简易的PLC 工程下载之前开启wireshark抓包软件,确保整个简易的PLC工程下载过程的数据被wireshark抓包软件完成采集。
6.根据权利要求4所述的针对西门子PLC漏洞挖掘的方法,其特征在于,所述Fuzz程序开发具体包括:
选取某种脚本语言作为Fuzz程序开发语言,编写程序与被测试的西门子PLC建立合法通信,截取通信中的数据包中的完整请求数据,该段数据为合法的、完整对被测试的西门子PLC的CPU的某个请求,该数据发往被测试的PLC后,被测试的PLC将进行解析与应答;识别到
数据段中字节码包含了对CPU的某个请求,就可选取此字节码为需要进行Fuzz的为,从0x00只0xFF进行全部遍历,构造成响应数据包往被测试的西门子PLC发送,观察被测试的西门子PLC对数据解析应答后的状态。
针对西门子PLC漏洞挖掘的方法
技术领域
[0001]本发明涉及工业控制系统安全技术领域,具体涉及一种针对西门子PLC漏洞挖掘的方法,尤其涉及一种主要用于发现PLC的拒绝服务类漏洞的针对西门子PLC漏洞挖掘的方法。
背景技术
[0002]伴随着计算机和网络技术的飞速发展,信息化与工业化这样的“两化”加速融合,云计算、大数据、物联网等快速发展,以往神秘而封闭的工业控制系统快速走向公众,2010年发生“震网”病毒事件,让人们意识到工业控制系统的脆弱性,面临的安全威胁以及一旦被攻击带来的后果将是无法预估。各种病毒木马、APT攻击等威胁正在向工业控制系统扩散,工业控制系统信息安全问题日益突出。工业控制系统包含SCADA、PLC、DCS等,系统问题的根源主要是其存在的漏洞。据CNVD统计数据,自2007年以来,工业控制系统的漏洞呈逐年上升状态,2010年“震网”事件发生以后,工业控制系统漏洞更是呈爆炸性增长。
[0003]而现有技术的针对工业控制系统的漏洞挖掘方法存在如下缺陷:
[0004]1)当前漏洞挖掘的方式主要使用模糊测试工具,如SPIKE、Peach、Sulley等,之于PLC漏洞挖掘,以Peach工具为例,主要是开发peach pit配置文件,针对通信协议的漏洞挖掘,peach pit开发有复杂而严格语法要求,fuzzing测试的过程为Peach工具基于变异算法,生成大量随机数据包发送至被测PLC,由于数据是随机产生的,因此发送至PLC后大部分数据直接会被PLC丢包;另外,完成一个测试需要数十小时时长,最终难于发现一个有效漏洞。
[0005]2)逆向分析PLC固件亦是PLC漏洞挖掘的一个有效方法,固件通常包含一个完整的操作系统,包括系统内核,启动代码,文件系统,还有梯形图运行时系统之类的应用,web服务器,FTP服务器。由于西门子PLC有很好的保护机制,其固件为私有操作系统,公开渠道很难获取到某个型号PLC的固件,另外固件分析技术门槛较高,需要熟练掌握逆向工具使用、代码走读及分析、动态调试等方法,且需要花费大量的时间,因此漏洞挖掘的产出量非常低。
发明内容
[0006]为解决上述问题,本发明提供了一种针对西门子PLC漏洞挖掘的方法,基于西门子PLC的合法有效通信数据,分别针对特定数据段的Fuzzing测试方法,解决了传统PLC漏洞挖掘中工具依赖、数据随机生成丢包率高、针对性不强、覆盖性太低、漏洞发掘效果差的问题。[0007]为了克服现有技术中的
不足,本发明提供了一种针对西门子PLC漏洞挖掘的方法的解决方案,具体如下:
[0008]一种针对西门子PLC漏洞挖掘的方法,包括顺序依次执行的PLC通信场景搭建、PLC 有效通信数据采集、流量分析、Fuzz脚本程序开发以及PLC异常监测。
[0009]所述针对西门子PLC漏洞挖掘的方法,具体步骤如下:
[0010]步骤1:PLC通信场景搭建,所述PLC通信场景搭建包括:
[0011]安装一台win7x64上位机,与被测试的西门子PLC进行连通,确认上位机与被测试的西门子PLC通信正常;
[0012]步骤2:作为PLC有效通信数据采集的流量采集,所述流量采集包括:
[0013]在上位机中安装西门子组态软件TIA后,对被测试的西门子PLC进行简单编程;[0014]步骤3:流量分析,所述流量分析包括:
[0015]打开wireshark抓包软件,加载针对西门子协议分析的专用插件,即西门子PLC通信协议插件s7comm对PLC工程下载过程的数据的流量数据包进行全面分析,识别作为通信数据的流量数据包中的协议头、功能码、参数、长度和数据这样的部分;
[0016]步骤4:Fuzz程序开发,所述Fuzz程序开发包括:
[0017]分析了上位机与被测试的西门子PLC的通信过程之后,掌握其数据交互的过程,开发程序对通信过程进行模拟,达到通过程序完成与被测试的西门子PLC通信效果;针对数据包中的某一帧数据,对应被测试的西门子PLC执行的一个特定操作,对数据中的协议字段进行变异,覆盖该字段数值所有可能存在的情况,构造成完成的数据包发送至被测试的西门子PLC;
[0018]步骤5:异常监测,所述异常监测包括:
[0019]在程序测试过程中,监测被测试的西门子PLC运行状态,当被测试的西门子PLC拒绝服务漏洞被触发后,被测试的西门子PLC进入异常状态,指示灯异常闪烁,程序自动测试被中断,此时可断定触发了PLC的拒绝服务漏洞。
[0020]所述安装一台win7x64上位机,包括:下载西门子TIA Portal软件,即博图软件并进行安装在该win7x64上位机上。
[0021]所述对被测试的西门子PLC进行简单编程,包括:
[0022]使用西门子TIA Portal软件编制一个简易的PLC工程,将简易的PLC工程文件下载至被测试的西门子PLC。
[0023]所述简易的PLC工程下载之前开启wireshark抓包软件,确保整个简易的PLC工程下载过程的数据被wireshark抓包软件完成采集。
[0024]所述Fuzz程序开发具体包括:
[0025]选取某种脚本语言作为Fuzz程序开发语言,编写程序与被测试的西门子PLC建立合法通信,截取通信中的数据包中的完整请求数据,该段数据为合法的、完整对被测试的西门子PLC的CPU的某个请求,该数据发往被测试的PLC后,被测试的PLC将进行解析与应答;识别到数据段中字节码包含了对CPU的某个请求,就可选取此字节码为需要进行Fuzz的为,从0x00只0xFF进行全部遍历,构造成响应数据包往被测试的西门子PLC发送,观察被测试的西门子PLC对数据解析应答后的状态。
[0026]本发明的有益效果为:
[0027]  1.不依赖于常规的Fuzzing测试工具。
[0028]  2.不用进行大量、复杂的程序设计和开发。
[0029]  3.不用进行固件逆向,测试具有针对性,漏洞发掘效率高。

本文发布于:2024-09-21 20:33:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/408948.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   漏洞   测试
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议