欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

西门子S7通信过程及重放攻击分析

来源:本站整理 作者:佚名 时间:2019-09-04 TAG: 我要投稿

0×1前言
最近手头有个S7-300,根据之前多位大神S7协议相关的分析,决定自己动手实操一下,通过payload重放实现对PLC的启停及DO数据的读写,实验过程记录下来跟大家分享一下,欢迎各位大神来交流。
0×2实验环境
PC1:
操作系统:win7 32位
相关软件:step7 v5.5 sp4 / wireshark_win32_2.2.1.0/snap7-1.4.2.7
PC2:
操作系统:win10 64位
相关软件:python2.7
PLC:
S7-300:
CPU:313C
固件版本:V3.3
0×3实验拓扑

其中,PC1主要用来对plc进行硬件组态和程序下载、执行操作命令(plc启停,数据的读写),并对通信过程进行抓包。PC2用来对plc进行重放攻击。
0×4初始化PLC
由于这个S7-300闲置多年,ip已经不知道了,手上也没有MPI线,好在有以太网模块,通过MAC地址连上plc,分享下方法:

以太网模块上有接口的mac地址,接上网线连接PC1,

打开step7,菜单栏选项->设置PG/PC接口

在访问路径中选择TCP/IP->自己的网卡,确定

回到菜单栏,选择PLC->编辑Ethernet节点

输入我们刚刚获取的mac地址,点击浏览

这样就能找到以太网模块之前的ip地址了。如果这个模块是第一次使用(没有ip地址,IP地址栏为空),同样选择设备并确认

返回后在这里可以设置临时ip地址,设置完后,修改pc地址,保证在同一网段。
下面就是硬件组态了,这里就不赘述了,我这台设备因为之前用过,我就直接从plc上传组态信息及程序了,我们拿到一些需要的信息就可以了

菜单栏选择PLC->将站点上传到PG,

首先选择插槽,S7-300一般为2,点击更新,稍等一会儿会弹出plc的信息,选择后点击确定,到这里,程序上载完成。

查看硬件组态

这样我们就获取了I/O模块的地址。到这里,我们拿到了需要的信息:
IP地址:172.18.15.104
DO地址:124-125
0×5 S7通信过程分析
这里我们采用的是snap7对plc进行启停操作和DO输出进行读写,并进行抓包。
Snap7这里就不多做介绍了,一款非常强大的工具,具体介绍请自行百度,我这里直接使用windows的客户端。


S7的协议分析请参照工控安全 | 西门子通信协议S7COMM,非常详细,这里根据我的理解做个简单描述。

S7的通讯大致分为4个过程,分别是:
1.TCP三次握手:这个没什么好说的,大家都懂。
2.COTP握手:COTP部分分为两种:COTP连接包和COTP功能包,COTP握手阶段使用的是COTP连接包,S7数据传输阶段使用的是COTP功能包。
3.S7COMM建联:S7COMM作为COTP的有效载荷,主要包含三部分:Header、Parameter、Data,建联阶段S7COMM只包含Header和Parameter两个字段。

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载