工控安全-PLC指纹提取的几种方法

Posted -chenxs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工控安全-PLC指纹提取的几种方法相关的知识,希望对你有一定的参考价值。

前言: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

 

以上是关于工控安全-PLC指纹提取的几种方法的主要内容,如果未能解决你的问题,请参考以下文章

[工控安全][原创]简单谈谈PLC固件中的“虚拟机”机制

工控系统的指纹识别技术

(转载)PLC内部电路常见的几种形式

Laravel:如何在控制器的几种方法中重用代码片段

工控安全简单入门

工控安全入门之Modbus(转载)