工业控制系统安全防护 课件 第二章 工业控制系统协议安全_第1页
工业控制系统安全防护 课件 第二章 工业控制系统协议安全_第2页
工业控制系统安全防护 课件 第二章 工业控制系统协议安全_第3页
工业控制系统安全防护 课件 第二章 工业控制系统协议安全_第4页
工业控制系统安全防护 课件 第二章 工业控制系统协议安全_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

工业控制系统协议安全ICSSecurity&ProtectionCatalogue目录主要工业通信协议2.1.工业控制系统协议概述工业控制系统常见IT协议3.01工业控制系统协议概述ICSSecurity&Protection早期控制方式电气时代,工业自动化依赖继电器、定时器和电磁计数器,控制电机启停和阀门开关,系统复杂且难以维护。Modbus协议发展1979年,Modicon公司推出Modbus协议,成为最早现场总线协议之一,后发展出Modbus/TCP等版本。PLC的诞生1968年,迪克·莫利发明了第一台商业可编程逻辑控制器(PLC),开启了工业控制新时代。工业控制系统协议历史Modbus协议地址和命令明文传输,攻击者可轻松获取数据,增加数据被窃听和篡改风险。明文传输缺少授权机制Modbus协议无基于角色的访问控制,未经授权人员可随意操控关键设备,改变运行参数。缺少认证Modbus协议无认证机制,攻击者可拦截报文并建立通信会话,发送异常指令或篡改控制指令。信息广播Modbus网络中所有设备都接收所有消息,攻击者可通过广播实现拒绝服务攻击。缺少完整性检查Modbus协议缺乏完整性检测,攻击者可伪造报文导致响应异常,使从站拒绝服务。工业控制系统协议安全问题02主要工业通信协议ICSSecurity&ProtectionModbus协议ICSSecurity&Protection基本定义Modbus是由Modicon公司开发的工业通信协议,广泛应用于工业自动化领域,采用主从通信技术,主设备主动查询和操作从设备。01通信模型Modbus是请求和响应模型的协议,有自己的消息结构,适用于不同网络通信,主设备可询问网络上其他设备并报告错误信息。02Modbus协议简介协议栈通信方式Modbus通信方式包括串口通信(RS232、RS485、RS422)和以太网通信,不同方式封装不同但功能相同。Modbus协议栈包括ModbusASCII、ModbusRTU和Modbus/TCP,分别用于串口和以太网通信,ModbusPlus是扩展协议。协议栈与通信方式协议栈Modbus帧即应用数据单元(ADU),包含协议数据单元(PDU),用于传输数据,结构简单明了。0102帧结构主从应答模式Modbus通信为主从应答模式,主站发送请求,从站回复,功能码说明动作,数据区填充相关数据。数据交互从站返回通信帧,功能码区填充操作码,数据区填充结果数据,实现数据交互。正常响应差错码机制事务处理异常时,从站返回通讯帧功能码中填充差错码,差错码=功能码+0x80。异常响应Modbus在中小型工业自动化系统中应用广泛,用于连接PLC、传感器、执行器等设备,实现数据采集、传输、处理及设备远程监控等功能。工业自动化系统在智能建筑领域,Modbus连接楼宇自控系统设备,如空调、照明、安防等,实现集中管理、能源优化和舒适度控制。智能建筑领域Modbus应用能源管理领域在能源管理领域,Modbus连接电表、水表、气表等计量设备,实现实时采集能源数据、分析能源使用情况等功能。。优势与局限Modbus简单易用、可扩展性强、通用性强,但数据传输速率低、实时性差,难以支持大规模复杂自动化系统。Profinet协议ICSSecurity&ProtectionProfinet是基于以太网的工业自动化通信协议,由PROFIBUS国际组织开发,具有高实时性和可靠性,适用于制造业和工业自动化。定义Profinet支持多种网络拓扑结构,包括星型、线型、环形等,还支持红外无线通信,可满足不同工业场景需求。特点协议定义Profinet广泛应用于生产线控制、工艺自动化、物流系统和机器人控制等工业自动化环境,连接传感器与PLC等设备。应用领域01Profinet支持实时和非实时数据交换,满足工业控制对实时性、可靠性和高效性的要求,是工业自动化的理想选择。优势02应用场景协议栈Profinet基于工业以太网,使用TCP/IP通信,响应时间约100ms,适用于普通工厂控制场景。技术特点基于TCP/IP通讯ProfinetRT通过优先级调度机制实现10ms级实时性能,优化协议栈,减少数据包封装和解封装时间。实时性能适用于对实时性要求较高的工业控制场景,如生产线的快速响应设备控制。应用场景ProfinetRT协议栈ProfinetIRT采用时间触发通信机制,循环刷新时间小于1ms,100个节点下响应时间小于1ms,抖动误差小于1μs。高级实时性能适用于对实时性要求极高的场景,如机器人控制和高精度自动化设备。应用场景ProfinetIRT协议栈重要性核心职能IO控制器是ProfinetIO系统的核心,负责对IO设备进行集中管控与调度,确保设备按工艺流程和需求工作。IO控制器是系统控制的关键,连接PLC等上层控制系统,实现对现场设备的精准控制。ProfinetIO组成-IO控制器执行单元作用IO设备是ProfinetIO系统中具体执行任务的单元,包括传感器、执行器等,种类丰富多样。IO设备在PLC控制下完成各项动作,实现自动化生产,如仓库自动化系统中的货架、输送带和升降机等。ProfinetIO组成-IO设备IO监视器为用户提供调试和监控手段,实时监控系统运行状态,跟踪设备工作情况和数据变化。调试与监控IO监视器通常是用户使用的计算机,用于PLC编程、程序烧录以及系统调试和监控。用户设备ProfinetIO组成-IO监视器ProfinetIO组成工作原理介质冗余将线型网络拓扑改造成环形,冗余管理器阻塞一个端口,故障时打开该端口,保障网络通畅。设备支持接入介质冗余网络的设备需支持介质冗余协议(MRP),不支持的设备可通过MRP交换机接入。介质冗余机制介质冗余机制OPC协议ICSSecurity&ProtectionOPC全称是OLEforProcessControl,是针对现场控制系统的一个工业标准接口,由OPC基金会管理。定义OPC旨在实现不同厂商设备和应用程序之间的接口标准化,简化数据交换,使过程控制软件开发不依赖特定开发环境和语言。目的OPC简介传统接口问题在引入OPC之前,不同设备需提供各自驱动程序,系统需安装多个驱动,设备升级时需更新驱动并修改代码,维护工作量大且易出错。引入OPC的背景OPC的优势OPC规范了接口函数,应用程序可统一访问不同设备,减少重复开发,提高设备兼容性,降低集成成本。引入OPC的背景作用OPC服务器创建和管理OPC组对象,管理服务器内部状态信息,是OPC对象的最上层。OPC组OPC组创建和管理OPC标签对象,管理组内状态信息,提供服务器内部实时数据的读写服务,可进行批量数据访问。OPC分层结构-OPC服务器定义OPC标签代表与服务器数据源的连接,是OPC组的基本组成单位。功能OPC标签在数据变化时触发向OPC应用程序的通知事件,支持实时数据交互。OPC分层结构-OPC标签OPC分层结构定义OPC客户端从服务器读取信息时,必须等待服务器处理完成并返回结果后才能进行下一步操作。01特点同步通信保证了数据的即时性和准确性,但可能影响客户端的响应速度。02OPC通信方式-同步通信OPC客户端从服务器读取信息时,无需等待服务器处理完成即可进行下一步操作,服务器处理完成后通知客户端。定义异步通信提高了客户端的响应速度,适用于对实时性要求不高的场景。特点OPC通信方式-异步通信1OPC客户端设定数据变化限度,数据源实时数据变化超过限度时,服务器通过回调函数返回数据给客户端。定义2订阅方式可减少不必要的数据传输,提高系统效率,适用于数据变化频繁的场景。优势OPC通信方式-订阅方式03工业控制系统常见IT协议ICSSecurity&Protection0102HTTP协议简介HTTP是超文本传输协议,基于TCP/IP,用于客户端和服务器间请求和应答。HTTP协议应用HTTP在工业控制系统中用于设备参数配置,通过Web页面或Web服务器实现。HTTP协议FTP协议简介FTP是文件传输协议,用于网络中文件上传、下载等操作,使用TCP作为传输协议。FTP协议应用FTP在工业控制系统中用于上传固件或下载设备日志文件。FTP协议Telnet协议简介Telnet是远程登录协议,允许用户通过本地计算机连接到远程主机并执行命令。Telnet协议应用Telnet在工业控制系统中用于远程登录工控设备进行操作。Telnet协议SSH是安全外壳协议,用于加密和认证的远程访问及文件传输,比Telnet更安全。SSH协议简介SSH在工业控制系统中用于安全远程登录和文件传输。SSH协议应用SSH协议SSH协议ARP协议简介ARP是地址解析协议,用于将IP地址解析为MAC地址,确保数据包正确传输。ARP协议应用ARP在工业控制系统中用于网络设备间的数据传输和通信。ARP协议ARP协议ICMP协议简介ICMP是因特网控制报文协议,用于传输出错报告和控制信息。ICMP协议应用ICMP在工业控制系统中用于测试设备可达性和显示到达路径。ICMP协议ICMP协议胡双钱打磨飞机零件胡双钱,中国商飞上海飞机制造有限公司高级技师、数控机加车间钳工组组长,我国首架新型大飞机C919首席钳工。近四十年间,经他手加工的飞机零件达数十万个,无一次品。他是让国产大飞机C919、支线飞机ARJ21-700在蓝天上翱翔的幕后英雄之一,被称为“航空手艺人”。他在上海飞机制造有限公司工作了几十年,主要负责飞机零部件的加工和装配。他经手的零件精度要求极高,很多都是百万分之一米的精度标准。胡双钱凭借着自己的耐心和精湛技艺,手工打磨出无数符合要求的飞机零件。在我国大型客机研制过程中,他更是发挥了关键作用。他可以不用图纸,仅凭借记忆和经验就制造出复杂的零件,他对工作的严谨认真和对技术的精益求精,保障了我国航空事业的稳步发展,体现了大国工匠的匠心精神。大国工匠谢谢大家ICSSecurity&Protection工业控制系统协议安全实验ICSSecurity&Protection0102CONTENTS目录搭建虚拟Modbus通讯环境通过脚本攻击ModbusCONTENTS01搭建虚拟Modbus通讯环境ICSSecurity&Protection搭建虚拟Modbus通讯环境:在无硬件条件下,通过虚拟串口和模拟器搭建Modbus通讯环境,模拟实际工业场景中的设备通信,便于实验和学习。01理解Modbus协议:通过搭建环境,深入了解Modbus协议的通信机制和参数配置,为后续安全分析奠定基础。02验证通信功能:确保虚拟环境中的主从设备能够正常通信,为后续的攻击模拟提供稳定的测试平台。03任务概述VirtualSerialPortDriver:创建虚拟串口,与串行应用程序通信,类似物理串口,支持多种操作系统,易于安装和配置。功能特点:支持多对虚拟串口,可自定义串口参数,如波特率、数据位等,适用于各种串口通信场景。应用场景:广泛应用于软件开发、设备测试等场景,尤其适合在无硬件设备时进行通信协议的开发和测试。虚拟串口仿真工具ModScan32.exe:作为主站模拟器,模拟Modbus主站设备,发送请求并接收响应。ModSim32.exe:作为从站模拟器,模拟Modbus从站设备,响应主站请求,提供数据。功能特点:支持多种Modbus功能码,可自定义设备地址、寄存器地址和数据长度,适用于教学和实验环境。Modbus主站模拟器和从站模拟器CommTone串口调试精灵:支持多种协议调试,提高工程师调试效率,界面友好,操作简单。功能特点:支持批量协议调试,高精度发送时间延时,支持物理串口、USB转串口和虚拟串口,兼容性强。应用场景:适用于各种串口设备的调试,尤其在工业自动化领域,可快速定位和解决通信问题。串口调试工具软件准备01安装虚拟串口工具任务步骤下载安装:从官网下载VirtualSerialPortDriver,安装并启动软件。添加虚拟串口:点击“Addpair”按钮,添加一对虚拟串口(如COM1和COM2),确保串口未被占用。验证串口:通过设备管理器查看虚拟串口是否创建成功,确保COM1和COM2能够相互通讯。02配置串口调试工具任务步骤启动软件:下载并安装CommTone串口调试精灵,启动软件。配置COM1:设置端口号为COM1,波特率为9600,数据位为8,停止位为1,校验位和流控制为None,点击“打开串口”。配置COM2:重复上述步骤,配置COM2,确保两个串口能够正常通03启动Modbus模拟器任务步骤配置从站模拟器:打开ModSim32.exe,设置设备号为1,地址为0001,长度为8,数据点类型为“03:HOLDINGREGISTER”。连接从站:选择“Connection”菜单,点击“Connect”→“Port1”,设置协议为RTU,波特率为9600,数据位为8,停止位为1,校验位为NONE。配置主站模拟器:打开ModScan32.exe,设置设备号为1,地址为0001,长度为8,数据点类型为“03:HOLDINGREGISTER”。连接主站:选择“Connection”菜单,点击“Connect”,选择“DirectConnectiontoCOM2”,设置波特率为9600,数据位为8,停止位为1,校验位为NONE。04测试通信任务步骤发送数据:在COM1界面输入数据(如“123”),点击“Go”按钮,观察COM2是否收到数据。验证通信:在主站模拟器上发送请求,观察从站模拟器是否响应,确保主从站能够正常通信。02通过脚本攻击ModbusICSSecurity&Protection模拟攻击目的:通过编写脚本对Modbus系统进行模拟攻击,读取和篡改寄存器值,理解Modbus协议的安全漏洞。01攻击方式:利用ModbusTCP协议,通过脚本连接到Modbus从站,读取和修改寄存器值,模拟真实攻击场景。02实验意义:帮助学习者深入了解Modbus协议的安全风险,掌握防护措施,提高工业控制系统的安全性。03任务概述01配置从站模拟器任务步骤启动从站模拟器:打开ModSim32.exe,设置设备号为1,地址为0001,长度为8,数据点类型为“03:HOLDINGREGISTER”。连接从站:选择“Connection”菜单,点击“Connect”→“MODBUS/TCPsvr”,设置端口为502,确保从站模拟器正常运行。02配置主站模拟器任务步骤启动主站模拟器:打开ModScan32.exe,设置设备号为1,地址为0001,长度为8,数据点类型为“03:HOLDINGREGISTER”。连接主站:选择“Connection”菜单,点击“Connect”,设置连接方式为“RemotemodbusTCPServer”,IP地址为,端口为502。03测试通信任务步骤验证通信:主站模拟器和从站模拟器通过以太网通信,观察主站的“NumberofPolls”和“ValidSlaveResponses”是否计数,确保通信正常。04编写脚本任务步骤脚本功能:使用Python和modbus_tk库编写脚本,连接到Modbus从站,读取和篡改寄存器值。05执行脚本任务步骤运行脚本:执行上述脚本,读取从站寄存器值并篡改,观察从站寄存器值的变化。验证攻击效果:脚本成功篡改从站寄存器值,模拟攻击完成,验证Modbus协议的安全漏洞。脚本输出:脚本成功读取和篡改从站寄存器值,输出结果验证攻击效果。0102从站寄存器变化:从站模拟器显示寄存器值被篡改,验证脚本攻击成功。03实验总结:通过模拟攻击,深入理解Modbus协议的安全漏洞,为工业控制系统安全防护提供参考。攻击结果谢谢大家ICSSecurity&Protection工业控制系统协议安全实验——Modbus协议详解及案例分析ICSSecurity&Protection01Modbus协议概述02Modbus通信模式03Modbus协议帧结构04Modbus常用功能码05Modbus协议数据包分析目录CONTENTS01Modbus协议概述ICSSecurity&ProtectionModbus协议由Modicon公司开发,用于PLC通信,现为国家标准GB/T19582-2008,涵盖应用协议、串行链路和TCP/IP实现指南。Modbus协议在中国成为国家标准,为工业自动化通信提供规范,其国标编号为GB/T19582-2008,包含Modbus应用协议、串行链路实现指南以及TCP/IP实现指南三部分内容。0102Modbus协议简介使用Wireshark抓取Modbus协议数据包,步骤包括下载安装Wireshark、选择接口、输入过滤条件“Modbus”、执行任务二操作并捕获数据包,最后保存为文件。01通过Wireshark抓取Modbus协议数据包,首先下载并安装Wireshark软件,打开后选择“”接口,执行任务二操作后停止捕获,将数据包保存为modbus.pcapng文件。02Wireshark抓包步骤使用Wireshark抓取Modbus协议数据包,步骤包括下载安装Wireshark、选择接口、输入过滤条件“Modbus”、执行任务二操作并捕获数据包,最后保存为文件。01窗口1是数据包列表窗口窗口2是数据包详情窗口窗口3是数据包字节窗口02Wireshark界面结构02Modbus通信模式ICSSecurity&Protection在任务二脚本中,主站模拟器读取保持寄存器值,修改前两个寄存器值为3和4,再次读取寄存器值,Wireshark抓包显示主从通信过程,包括读取请求、响应、写入请求、响应和再次读取请求、响应。Modbus采用主从通信模式,主站设备发起请求,从站设备响应请求,通过Wireshark抓包可清晰看到主从通信过程。Modbus通信模式Modbus通信模式编号448的数据包就是主站发起ReadHoldingRegisters请求,450就是从站相应该请求。452是主站发起WriteMultipleRegisters请求,454是从站相应该请求。456是数据修改后主站发起ReadHoldingRegisters请求,458是从站相应该请求。这种主站发起请求从站响应请求的模式就是Modbus的通信模式,对照Wireshark抓的数据包我们可以清楚地看到其交互过程是怎么样的,既简洁又明了。03Modbus协议帧结构ICSSecurity&ProtectionModbusRTU用于串口通信,帧结构包含从站地址、功能码、数据域和差错校验,适用于工业现场设备的近距离通信。0103ModbusTCP用于以太网通信,帧结构包含MBAP报文头、功能码和数据域,借助TCP协议实现可靠通信。02ModbusASCII同样用于串口通信,帧结构在RTU基础上增加了开始和结束标识,便于在不稳定的通信环境中传输。ModbusRTUModbusASCIIModbusTCP协议版本协议版本从站地址1字节,标识通信中的从站设备,确保数据包能准确送达目标设备。功能码1字节,标识操作类型,如读取寄存器、写入数据等。差错校验2字节,采用CRC校验,验证数据完整性。数据域n字节,存储请求或响应数据,长度由功能码决定。ModbusRTU帧组成从站地址SlaveAddress功能码FunctionCode数据域Data差错检验CRC1字节1字节n字节2字节数据域数据以ASCII字符表示,长度由功能码决定。开始标识以冒号“:”开始,标识帧的起始。地址与功能码同RTU,但以ASCII字符表示,便于文本传输。差错校验采用LRC校验,验证数据完整性。结束标识以回车换行符“\r\n”结束,标识帧的结束。ModbusASCII帧组成开始Start地址Address功能码Function数据域Data差错检验LRC结束End1字符2字符2字符n字符2字符2字符7字节,包含事务处理标识、协议标识、长度和单元标识符。MBAP报文头1字节,标识操作类型,与RTU和ASCII相同。功能码n字节,存储请求或响应数据,长度由功能码决定。数据域ModbusTCP帧组成MBAP报文头MBAPHeader功能码FunctionCode数据域Data7字节1字节n字节协议标识2字节,固定为0,标识ModbusTCP协议。长度2字节,表示后续数据长度,单位为字节。单元标识符1字节,标识设备地址,用于多设备通信场景。事务处理标识2字节,标识事务序列号,主从通信中用于匹配请求和响应。PART01PART02PART03PART04MBAP报文头组成事务处理标识TransactionIdentifier协议标识ProtocolIdentifier长度Length单元标识符UnitIdentifier2字节2字节2字节1字节04Modbus常用功能码ICSSecurity&ProtectionModbus常用寄存器功能码顾名思义就是实现某些功能的代码,在Modbus中功能码主要是指对寄存器操作的类型。Modbus主要有4种寄存器。‌线圈寄存器(Coil)‌,用于存储开关量信息,可读可写,例如设备的开关。大小为1bit。‌‌离散输入寄存器(Input)‌,用于存储设备的离散输入信号,只读不可写,例如开关状态。大小为1bit。‌‌保持寄存器(HoldingRegister)‌,用于存储需要长时间保持的数据,可读可写,例如温度、压力等测量值。大小为16bit。‌‌输入寄存器(InputRegister)‌,用于存储设备的输入数据,只读不可写,例如传感器读数。大小为16bit。Modbus常用功能码功能码寄存器描述位/字操作01H线圈寄存器读单个或多个线圈寄存器位操作02H离散输入寄存器读单个或多个离散输入寄存器位操作03H保持寄存器读单个或多个保持寄存器字操作04H输入寄存器读单个或多个输入寄存器字操作05H线圈寄存器写单个线圈寄存器位操作06H保持寄存器写单个保持寄存器字操作0FH线圈寄存器写多个线圈寄存器位操作10H保持寄存器写多个保持寄存器字操作05Modbus协议数据包分析ICSSecurity&ProtectionModbus协议数据包分析结合Wireshark抓到的数据包来分析ModbusTCP协议帧的具体内容。分析第一次读取保持寄存器请求(Query)和读取保持寄存器响应(Response)时候的数据包。在Wireshark中分别为编号448和450的记录。读取保持寄存器请求数据包应用数据单元(ADU):00

010000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论