简介
S7-1200是西门子SIMATIC S7系列的一款小型、紧凑、模块化的PLC,西门子S7-1200系列PLC的CPU模块一般自集成了以太网接口,硬件形态如下图。1200支持以太网进行管理,同时支持较多的以太网服务,如WEB服务器,SNMP,PROFINET等,这为设备的识别和发现都提供了很好的基础,同样为攻击者也开放了更多的入口,根据ICS-CERT和CVE漏洞库曾经的多个漏洞报告显示s7-1200上一些应用均存在过拒绝服务等。因为s7-1200对以太网的支持,免不了因为一些原因暴露在公网,在互联网上针对该设备的查找可以关键字和协议在ISO-TSAP(TCP/102端口)、WEB服务(默认80端口),SNMP服务(UDP/161)进行检索。
服务介绍
TCP/102 ISO-TSAP
西门子S7-1200的TCP/102端口主要用于设备管理和数据通讯,因为一些特性的改变导致1200在通讯协议上和西门子S7-300、400有所不同,如rack和slot(机架和cpu号)默认为0,1,导致在COTP组包时目的地址不一样导致通讯失败,例如使用以前公开过的plcscan和nmap下的s7-enumerate.nse无法再获取到设备信息。读取S7-1200的SZL信息需要构造如下请求报文:
--- -- add S7-1200 packet -- by Z-0ne plcscan.org -- Based on S7COMM Protocol analysis plugin. -- --- -- S7-1200 PLC usage Rack 0 Slot 1 local COTP_0x0000 = bin.pack("H","0300001611e00000000100c0010ac1020100c2020301") -- Setup communication 0xf0 local Setup_comm = bin.pack("H","0300001902f080320100000c0000080000f0000001000101e0") -- Request SZL functions Read SZL ID=0X0011 local Req_SZL_0x0011 = bin.pack("H","0300002102f080320700000d00000800080001120411440100ff09000400110000") -- response is used to collect the packet responses
NMAP脚本下载:s7-enumerate.nse(在Digital Bond原件脚本上增加了对S7-1200的支持,减少原有判断,增加模糊识别S7系列其他型号,S7-1200、S7-300测试通过)
识别S7-1200如下图:
识别S7-300如下:
规则识别未知S7设备如下图:
在TCP/102端口上还有另一种极不推荐的识别方式如下:
-- -- Based on TIA Portal software. -- soft handshake Methods one local connectpack = bin.pack("H","030000231ee00000000600c1020600c20f53494d415449432d524f4f542d4553c0010a") -- soft handshake Methods two -- local connectpack = bin.pack("H","0300001611e00000000800c1020600c2020600c0010a") -- send local connection packet(IE NIC and session) local gethwinfo = bin.pack("H","030000e502f080720100d631000004ca00000001".. "00000120360000011d00040000000000a1000000".. "d3821f0000a38169001515536572766572536573".. "73696f6e5f31433943333932a3822100152c313a".. "3a3a362e303a3a5443502f4950202d3e2042726f".. "6164636f6d204e65744c696e6b2028544d29202e".. "2e2ea38228001500a38229001500a3822a001516".. "4846504654385246375052474837595f34313831".. "3731a3822b000401a3822c001201c9c392a3822d".. "001500a1000000d3817f0000a381690015155375".. "62736372697074696f6e436f6e7461696e6572a2".. "a20000000072010000")
NMAP脚本下载:s71200-enumerate-old.nse(注意同时间内对同一设备使多次使用该脚本扫描将会导致PLC连接堵塞,无响应或其他意想不到的情况)
识别S7-1200如下图:
SNMP服务
西门子S7-1200的SNMP服务同样主要用于对设备的状态、连接等进行监控,可以通过对UDP的161端口进行探测,设备在sysDescr系统描述上会有详细的型号标注和固件版本以及串号等。
特征:
sysDescr:.1.3.6.1.2.1.1.1.0 SNMP Output: Siemens, SIMATIC S7, CPU-1200, 6ES7 212-1HD30-0XB0 SZVA3YUXXXXXX , 1, V.1.0.1, SZVA3YUXXXXXX
查询样例:Shodan
WEB服务
西门子S7-1200系统内嵌的WEB服务器主要用于设备的状态监控,如缓冲区日志、设备运行状态等,网页CGI程序后缀为.mwsl,比较好辨别。
特征:
GET / HTTP/1.1 HTTP/1.1 302 Object Moved Content-Type:text/html Content-Length: 0 Location: /Default.mwsl
查询样例:Shodan
PROFINET
西门子S7-1200支持PROFINET,扫描计算机可以使用组播方式请求网络内PROFINET设备,同网络内的西门子设备会主动响应。
工具地址:Github