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