Wireshark使用方法及S7协议重放攻击举例

Wireshark使用方法及S7协议重放攻击举例

时间:2020-09-11 作者:安帝科技

Wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

一、Wireshark的使用

1)界面简介:

2)使用步骤:

1、打开软件,选择需要监控的网卡;
2、点击工具栏中的开始截取按钮,开始截取流量;
3、通过配置过滤器,筛选所需的数据包。

3)常用的过滤器筛选条件:

二、攻击环境搭建

1)实验环境:
硬件:西门子200SmartPLC、PC机
软件:STEP 7-MicroWIN SMART v2.1、win7 64位、Python2.7、Wireshark
软硬件对应关系:STEP 7-MicroWIN SMART v2.1为安装于PC端的PLC编程软件、win7 64位系统、Python2.7为安装于PC端的攻击软件、Wireshark为安装于PC端的协议分析软件。

2)实验架构图:

三、PLC通讯过程

1)新建文件

打开STEP 7-MicroWIN SMART编程软件,用菜单命令“文件→新建”,生成一个新的项目。

2)参数设置
1、设置PLC类型
双击项目树下的CPU,在弹出的窗口中选择CPU ST20。

2、设置通信参数
单机“系统快”对话框的“通讯”,选中“IP地址……”,然后就可以设置IP地址了如下图。此实验PLC的IP设置为:192.168.1.3。

如果PLC已连接到电脑,可以通过以下方式更改IP地址:

3)编辑程序并保存

四、报文解析

PLC下载好程序后,打开抓包软件,选取本地连接,同时在PLC编程软件端将V20.1置位,如下所示:

1)截取的通讯数据包如下:

2)通讯数据包分析:
S7协议的通讯大致分为3个过程。
1、TCP三次握手



2、COTP握手

COTP主要由TPKT和COTP组成。

3、S7 Communication连接
写指令的报文如下:

S7 Communication主要包含三部分,即Header、Parameter、Data,其中Header、Parameter为建立连接过程中的字段,Data为数据字段。

1)Header

Header结构(占用长度):

2)Parameter
Error Class为错误类型,Error Code为错误数据,当有错误时在数据包中出现此部分。

Function codes
功能码 含义
0x00 CPU services
0xF0 Setup communication
0x04 Read Var
0x05 Write Var
0x1A Request download
0x1B Download block
0x1C Download ended
0x1D Start upload
0x1E Upload
0x1F End upload
0x28 PLC Control
0x29 PLC Stop
3)Data

五、PLC攻击重放

以下为使用python脚本编写的重放攻击代码(写入指令)。

写好Python脚本后,我们只需要将SYN、COTP、PLC_ON的值改为PLC通讯章节分析写指令数据即可。
脚本编辑好后,我们直接按F5键,即可运行脚本,效果如下:

PLC正常工作:

PLC遭受重放攻击: