前言:PLC为可编程逻辑控制器,采用S7协议。其硬件本身存在许多漏洞,可以利用kali里面的漏洞模块或者modbus工具对其进行攻击,甚至直接可以进行未授权访问,只要其开启对外网的端口服务,那么我们就可以利用其私有协议进行指纹提取、模糊测试、漏洞利用来最终达到控制PLC。指纹提取占据比较重要的位置,因为我们只要把指纹提取的工作做好,那么我门就可以针对什么版本的PLC进行1day的打击。因为工控硬件的更新换代始终很慢。
这里采用的是一个西门子PLC的仿真软件来进行实验的。
0x01 nmap指纹识别
在虚拟机中开启西门子S7 PLC仿真软件,ip不用改,如果nmap扫不出,再改成本地ip
nmap扫描整个网段中开放102端口的存活ip
nmap -p102 -n 192.168.163.1/24 --open
先看看启动了PLC的虚拟机的ip
然后在物理机上扫描
发现整个内网中开放102端口的ip
接下来就可以用nmap的s7-info.nse脚本探测其指纹信息
nmap -p102 -n 192.168.1.116 --open --script=s7-info.nse
0x02 PLC连接信息采集工具
下载PLC连接测试工具对PLC的信息进行采集,获取到详细的指纹,ip地址填plc所在的ip,即存在plc仿真软件的虚拟机
然后连接,即可获取很详细的指纹信息
0x03 wireshark抓包进行流量分析获取PLC指纹信息
打开wireshark,开始抓包,筛选cotp
然后打开PLC连接工具进行连接
然后就捕获到了s7协议的包
747号的包是物理机向PLC请求通讯;749号数据包是物理机向plc请求配置通讯;等750号plc同意之后;752号物理机开始发送数据进行通讯;
下面从plc的ip192.168.1.116发送到物理机192.168.1.100的数据包就是plc的指纹信息,比如说755号的数据包。
可以看到PLC的CPU型号、序列号等指纹信息。
当然还有几种方法可以获取到PLC的指纹信息,比如说可以利用python模拟抓包来获取。但以上三种是最为常用方便的。
附上TideSec安全团队总结(更全面):
http://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247484526&idx=1&sn=92b6b46bd6471ba2bc7b51cad1c86fe1&chksm=ce5e260ff929af19db8a74f7c0309049c4eabc4b972d9ac03810bc3a4a791b6384864942294f&mpshare=1&scene=23&srcid=1024zQya2YBwrCEztoHnVbyn&sharer_sharetime=1571891653504&sharer_shareid=45176a46e594e1ff053abe513bfce4be#rd
原文地址:https://www.cnblogs.com/-chenxs/p/11731530.html
时间: 2024-10-12 19:32:55