前言:西门子PLC,西门子电线电缆,西门子CPU,西门子交换机,西门子触摸屏
西门子S7-400中央控制单元CPU412-2西门子中国一级总代理 西门子PLC代理商-宣传视频
西门子S7-400中央控制单元CPU412-2西门子中国一级总代理 西门子PLC代理商西门子S7-400中央控制单元CPU412-2西门子中国一级总代理 西门子PLC代理商西门子S7-400中央控制单元CPU412-2西门子中国一级总代理 西门子PLC代理商西门子S7comm plus通信过程及重放攻击分析一、概述西门子PLC广泛应用于工业控制系统。本文主要利用手上S7-1200 V3.0.2 固件版本的PLC和TIA13等环境进行S7comm-plus加密协议初步分析及防重放攻击分析,本文章只做交流学习使用,禁止应用于非法用途,欢迎各路大神进行交流,共同学习进步。二、西门子PLC介绍西门子PLC广泛应用于工业控制系统。西门子控制器包括S7-200、S7-300、S7-400、S7-1200以及S7-1500版本的西门子PLC,S7-200、S7-300、S7-400系列的PLC采用早期的西门子私有协议S7comm进行通信。S7-1200/1500系列固件版本为V3.0以下的PLC采用西门子新一代的S7comm-Plus协议进行通信,该协议采用了一些特殊编码规范。S7-1200/1500系列固件版本为V3.0以上,采用了最新的S7comm-Plus协议,S7comm-plus协议引入了会话ID来防止重放攻击。查看S7 plc系列有哪些型号及对应的固件版本,可以参考下图。三、协议分析3.1协议结构S7Comm-plus以太网协议基于OSI模型如下:通过抓包分析和wireshark源码解析,可以知道S7Comm-plus协议的帧结构大致由头部、数据域、和尾部组成,头部和尾部是固定的,而数据域对不同的帧结构和内容均有很大的差异。帧结构示意图如下图所示:3.2 头部和尾部分析Header和Trailer的组成是一样的,包含协议号、PDU类型和数据长度信息,其结构如下图所示:其中头部和尾部的结构一致。Protocol id为一个字节、 PDU type 为一个字节Length为双字节。PDU type定义了该帧的类型。3.3 数据域分析Data域是帧结构中最复杂也是变化最多的区域,通过分析可以将Data域分为Integrity part 、D_header和Data三个部分。具体结构如下图所示:(1)D_Head当PDU type为0×01和0×02,数据包中没有32位 Integrity part,当pdu type为0×03,数据包中有32位Integrity part;在数据头中有两处reseved和一处unknown部分,对于不同的帧其值是不一样的,从wireshark抓包数据分析,其值分布如下所示:(2)Datadata部分的结构、内容及格式与PDU type和opcode有关,Data部分情况种类多、较为复杂,详细分析可以阅读wireshark s7comm-plus协议解析代码。四、防重放攻击分析4.1 环境安装(1) PC1(192.168.10.101):安装博图软件TIA13,用于连接S71200 plc设备,并进行启停PLC CPU控制,主要用于抓包分析,博图软件添加正确的PLC设备、并配置好PLC网络地址,确保能连接成功,如下所示:(2)PLC (192.168.10.53):6ES7 214-1AG31-0xB0 V3.0.2,如下所示:(3) pc2 (192.168.10.100): 该主机主要进行重放攻击实验。4.2 抓包分析(1)离线模式下,点击博图软件stop 和 start 按钮,进行抓包分析。返回session id,以后每次请求均要带上该session id,达到防止重放攻击目的。Stop 和 start cpu 启停包长的均为121字节,操作成功响应数据包为84字节信息泄露,不知道为什么这么设计,需要返回设备信息。(2)session id 计算方式,s7comm_plus[24]+0×80, s7comm_plus数据包第24位+0×80,如下图所示:(3)stop cpu 指令分析,主要是AddressList和ValueList, 值为00000034019077000801, 将 值修改为00000034019077000803 则为 start cpu 指令五、实施重放攻击经过上面分析,只要获取到session id,并在每次请求plc的时候,添加上session id即可绕过S7comm-plus防重放攻击,编写如下验证代码,并抓包分析,观察现象:运行以上代码,重放攻击成功,当进行stop时,plc RUN/STOP 灯显示黄色,当进行start cpu时候,RUN/STOP 指示灯显示绿色,如下所示:重放攻击抓包分析如下所示:六、总结分析在实验过程中还发现两处问题,当完成COTP 连接后发送的第一个S7comm-plus CreateObject 数据包可以获取到plc的相关信息,造成信息泄露,可以推出cpu型号及固件版本,攻击者可以利用这些信息开展进一步攻击。另外,当TIA13软件在线连接上PLC,启停脚本失效,应该是PLC只允许一个工程师站客户端进行连接的原因。相关资料文档如下:1、工控资产嗅探与分析(S7 PLC)https://www.freebuf.com/articles/ics-articles/209786.html2、西门子S7Comm协议分析https://laucyun.com/3aa43ada8cfbd7eca51304b0c305b523.html#6-2-13、西门子S7-1200 CPU控制分析:https://github.com/dark-lbp/isf4、西门子S7通信过程及重放攻击分析:https://www.freebuf.com/articles/ics-articles/212283.html#5、刺穿S7CommPlus协议安全保护机制的长矛https://www.freebuf.com/column/197267.html6、S7comm_plus wireshark解析代码https://github.com/QingChenHT/S7COMMM-Plus西门子PLC如何把DB快做成源文件?西门子PLC如何把DB快做成源文件?打开db块后在菜单option下面有个customize,弹出的点选项sources那里就可以找到生成源文件的按钮。还原---源文件是保存在sources下面,你可以打开你的源文件并编译即可生成源文件可以导出成awl文件,可以在其他的环境下改写(比如记事本、excel等),可以拷贝,当然也可以重新导入的sources下面。或直接使用SCL source或STL source来创建DB,现有的DB也可以通过“File”->"Generate Source"形成源文件。这样做的好处,DB中的变量可以拷贝到Txt或Word中修改,使用更方便!例如,一个DB1的SCL源程序的代码:DATA_BLOCK DB1//// Block Comment ...//STRUCTtag01:REAL;//Pressuretag02:INT;//Tempreturetag03:BOOL;//High limit alarmtag04:WORD;//IWEND_STRUCTBEGINtag01:=0.0;tag02:=2;tag03:=false;tag04:=W#16#0;END_DATA_BLOCKWinCC亚洲版基本系统:运行版6AV63812BC075AV0WinCC V7.5 SP2 亚洲版基本系统: 运行版 支持128个外部变量 (运行版 - 128个变量) 6AV63812BD075AV0WinCC V7.5 SP2 亚洲版基本系统: 运行版 支持512个外部变量 (运行版 - 512个变量) 6AV63812BE075AV0WinCC V7.5 SP2 亚洲版基本系统: 运行版 支持2048个外部变量 (运行版 - 2048个变量) 6AV63812BH075AV0WinCC V7.5 SP2 亚洲版基本系统: 运行版 支持8192个外部变量 (运行版 - 8192个变量) 6AV63812BF075AV0WinCC V7.5 SP2 亚洲版基本系统: 运行版 支持65536个外部变量 (运行版 - 65536个变量) 6AV63812BJ075AV0WinCC V7.5 SP2 亚洲版基本系统: 运行版 支持102400个外部变量 (运行版 - 102400个变量) 6AV63812BK075AV0WinCC V7.5 SP2 亚洲版基本系统: 运行版 支持153600个外部变量 (运行版 - 153600个变量) 6AV63812BL075AV0WinCC V7.5 SP2 亚洲版基本系统: 运行版 支持262144个外部变量 (运行版 - 262144个变量) 6AV63812CA075AV0WinCC V7.5 SP2 亚洲版基本系统: 运行版 客户机 (运行版 - CLIENT)WinCC亚洲版基本系统:开发+运行版6AV63812BM075AV0WinCC V7.5 SP2 亚洲版基本系统: 开发+运行版 支持128个外部变量 (RC 128个变量) 6AV63812BN075AV0WinCC V7.5 SP2 亚洲版基本系统: 开发+运行版 支持512个外部变量 (RC 512个变量) 6AV63812BP075AV0WinCC V7.5 SP2 亚洲版基本系统: 开发+运行版 支持2048个外部变量 (RC 2048个变量) 6AV63812BS075AV0WinCC V7.5 SP2 亚洲版基本系统: 开发+运行版 支持8192个外部变量 (RC 8192个变量) 6AV63812BQ075AV0WinCC V7.5 SP2 亚洲版基本系统: 开发+运行版 支持65536个外部变量 (RC 65536个变量) 6AV63812BT075AV0WinCC V7.5 SP2 亚洲版基本系统: 开发+运行版 支持102400个外部变量 (RC 102400个变量) 6AV63812BU075AV0WinCC V7.5 SP2 亚洲版基本系统: 开发+运行版 支持153600个外部变量 (RC 153600个变量) 6AV63812BV075AV0WinCC V7.5 SP2 亚洲版基本系统: 开发+运行版 支持262144个外部变量 (RC 262144个变量) 6AV63812CB075AV0WinCC V7.5 SP2 亚洲版基本系统: 开发+运行版 客户机 (RC CLIENT)西门子网上总代理. .西门子网上代理 ..西门子代理. .西门子总代理 ..西门子全球总代理. .西门子亚洲总代理.. 西门子中国总代理. .西门子上海总代理 西门子松江总代理.. 西门子工业总代理 ..西门子工业自动化总代理.. 西门子驱动技术总代理 西门子工业自动化产品商务总代理.. 西门子总代理旗舰代理商. .西门子授权指定总代理 西门子推荐zuijia中国总代理.. 西门子总代理zuijia经销商. .西门子zuijia合作伙伴.. 西门子PLC总代理 西门子SIMATIC S7 系列总代理.. 西门子逻辑控制模块LOGO!总代理. 西门子SITOP系列直流电源总代理24V DC.. 西门子HMI 触摸屏总代理.. 西门子交流变频器总代理.. 西门子全数字直流调速装置总代理 西门子数控总代理 西门子伺服总代理 西门子总代理 西门子代理.. 西门子总代理旗舰代理商 ..西门子电缆总代理