NMAP:网络探索和安全审计手册 Chapter8 扫描 ICS SCADA 系统

本章包括以下内容:

  • 查找 ICS SCADA 系统中使用的常用端口

  • 查找人机界面系统

  • 枚举西门子 SIMATICS7PLC

  • 枚举 Modbus 设备

  • 枚举 BACnet 设备

  • 枚举以太网/IP 设备

  • 枚举 Niagara Fox 设备

  • 枚举 ProConOS 设备

  • 枚举 Omrom PLC 设备

  • 枚举 PCWorx 设备

引言

ICS SCADA 系统是发电厂、化工厂、炼油厂和更多大型综合设施中关键基础设施的一部分。随着监控技术的成熟,旨在改善组件间连接的联网功能带来了新型风险:网络攻击。更糟糕的是,被认为处于孤立网络中的系统被发现与互联网相连,完全可以远程访问。不幸的是,在网上发现的关键系统的数量一直在稳步增长,时至今日,发现拥有允许访问 ICS SCADA 系统所在网段的互连网络的组织仍然非常普遍。

安全研究人员已经证明,许多协议和产品都非常脆弱,因为许多协议和产品都是在没有安全保障的情况下构建的。在扫描关键基础设施时,需要谨慎使用 Nmap,因为许多网络堆栈非常脆弱,很容易受到不同扫描技术产生的某些数据包的影响而出现拒绝服务的情况。因此,建议始终使用 TCP 连接扫描 (-sT) 来正确打开和关闭每个端口探测连接,并限制端口探测列表,本章将对此进行介绍。版本和操作系统检测探针会发送畸形数据包,因此我们也需要谨慎使用该模式。相反,许多产品都提供了管理界面,可用于通过强度较低的扫描对设备进行指纹识别。例如,人机界面通常安装在启用了 SMBv1 的 Microsoft Windows 系统上,我们可以安全地对这些主机系统进行指纹识别,而无需进行侵入式扫描。

本章涵盖与 ICS SCADA 扫描相关的各个方面。首先,我们将学习如何识别 ICS SCADA 网络中存在的不同协议,然后举例说明如何收集支持 BACnet、EtherNET/IP、PC Worx、Modbus 等协议的设备的信息。千万不要跳过这一章,因为有朝一日,你可能不得不解释为什么开始扫描工厂时生产线会停止!

查找 ICS SCADA 系统中使用的常用端口

关键基础设施需要格外小心处理,因为有报告称,扫描甚至是 ping 扫描都会导致设备重启或离线。这在生产网络中尤为危险,因为损坏或中断服务会给企业带来数十万甚至数百万美元的损失。因此,我们不能贸然扫描网络以收集尽可能多的信息,而必须使用精心挑选的探测列表。

本教程将向您展示如何使用 Nmap 安全地识别常见的 ICS SCADA 协议。

How to do it...

打开终端,输入以下 Nmap 命令:

$ nmap -Pn -sT --scan-delay 1s --max-parallelism 1 -p80,102,443,502,530,593,789,1089-1091,1911,1962,2222,2404,4000,4840,4843,49,11,9600,19999,20000,20547,34962-34964,34980,44818,46823,46824,55000-55003 <target> 

列出的每个端口都与已知的 ICS SCADA 协议相对应。请记住,这可能是假阳性,因为它可能是运行在同一端口上的任何其他服务。这只是初步的侦察扫描,目的是识别可能的 ICS SCADA 协议:

 PORT STATE SERVICE 

 502/tcp open modbus 

How it works...

前面显示的命令用于检测 ICS SCADA 协议使用的常用端口。禁用主机发现 (-Pn),因为它会使用特制的 SYN、ACK 和 ICMP 数据包,并首选单个完整连接 TCP 探测 (-sT)。正如我们之前提到的,ICS SCADA 设备非常脆弱,绝对不能对其进行强力扫描(--scan-delay 1s --max-parrallelism 1)。有报告称,操作系统、版本和激进的 NSE 扫描甚至是 ping 扫描都会对设备造成不良影响。指定的端口列表 (-p) 涵盖了不同 ICS SCADA 供应商使用的最常见端口,如果可能,我们必须减少该列表,只针对已知供应商。请记住,这些系统中有许多已经非常过时。以下端口列表基于 Digitalbond 的控制系统端口列表,但我从不同来源添加了更多端口:

ProtocolPorts
BACnet/IPUDP/47808
DNP3TCP/20000, UDP/20000
EtherCATUDP/34980
Ethernet/IPTCP/44818, UDP/2222, UDP/44818
FL-netUDP/55000 to 55003
Foundation Fieldbus HSETCP/1089 to 1091, UDP/1089 to 1091
ICCPTCP/102
Modbus TCPTCP/502
OPC UA binaryVendor application specific
OPC UA discovery serverTCP/4840
OPC UA XMLTCP/80, TCP/443
PROFINETTCP/34962 to 34964, UDP/34962 to 34964
ROC PLusTCP/UDP 4000
Red lionTCP/789
Niagara FoxTCP/1911, TCP/4911
IEC-104TCP/2404

There's more...

There are a vast number of protocols being used across many different types of systems and some vendors don't release documentation that indicates what ports they use to operate. This can become troublesome as we try to identify ICS SCADA protocols on the network. The following list is a great compilation done by DigitalBond's team that covers many vendor-specific ports that are usually used by one or very few vendors:

VendorProduct or ProtocolPorts
ABBRanger 2003TCP/10307, TCP/10311, TCP/10364 to 10365, TCP/10407, TCP/10409 to 10410, TCP/10412, TCP/10414 to 10415, TCP/10428, TCP/10431 to 10432, TCP/10447, TCP/10449 to 10450, TCP/12316, TCP/12645, TCP/12647 to 12648, TCP/13722, TCP/13724, TCP/13782 to 13783, TCP/38589, TCP/38593, TCP/38600, TCP/38971, TCP/39129, TCP/39278
Emerson / FisherROC PlusTCP/UDP/4000
Foxboro/InvensysFoxboro DCSFoxApiTCP/UDP/55555
Foxboro/InvensysFoxboro DCS AIMAPITCP/UDP/45678
Foxboro/InvensysFoxboro DCS InformixTCP/UDP/1541
IconicsGenesis32GenBroker(TCP)TCP/18000
Johnson ControlsMetasysN1TCP/UDP/11001
Johnson ControlsMetasysBACNetUDP/47808
OSIsoftPI ServerTCP/5450
SiemensSpectrum Power TGTCP/50001 to 50016, TCP/50018 to 50020, UDP/50020 to 50021, TCP/50025 to 50028, TCP/50110 to 50111
SNCGENeTCP/38000 to 38001, TCP/38011 to 38012, TCP/38014 to 38015, TCP/38200, TCP/38210, TCP/38301, TCP/38400, TCP/38700, TCP/62900, TCP/62911, TCP/62924, TCP/62930, TCP/62938, TCP/62956 to 62957, TCP/62963, TCP/62981 to 62982, TCP/62985, TCP/62992, TCP/63012, TCP/63027 to 63036, TCP/63041, TCP/63075, TCP/63079, TCP/63082, TCP/63088, TCP/63094, TCP/65443
TelventOASyS DNAUDP/5050 to 5051, TCP/5052, TCP/5065, TCP/12135 to 12137, TCP/56001 to 56099

寻找人机界面 (HMI) 系统

人机界面 (HMI) 系统经常出现在 SCADA 网络中,它们不一定与其他 ICS/SCADA 设备在相同的端口上运行。(不过,有些人机界面使用 ICS 协议)。例如,Sielco Sistemi Winlog 是一款用于 PC 的简单但非常流行的 HMI 软件,其远程漏洞可公开获取。

本教程将向您展示如何使用 Nmap 在网络上识别 Sielco Sistemi Winlog 实例(以及一般的 HMI 系统)。

How to do it...

要查找 Sielco Sistemi Winlog 实例,请运行以下命令:

$ nmap -Pn -sT -p46824 <target>Scanning ICS SCADA Systems 

在 TCP 端口 46824 上运行的服务器实例可能表明这是 Sielco Winlog 服务器。

How it works...

Sielco Sistemi Winlog 的服务器在 TCP 端口 46824 上运行,该服务器被发现存在严重的远程代码执行漏洞。我们使用 nmap-Pn -sT -p46824 命令来识别目标是否在 46824 端口上运行服务器 (-p46824)。确定该服务后,您可以尝试使用 Metasploit 模块 winlog_runtime_2 (https://www.rapid7.com/db/modules/exploit/windows/scada/winlog_runtime_2) 利用该漏洞。

人机界面系统有许多不同的规模和类型,因此请密切注意高端口中的未知服务。

There's more...

现在有很多不同的 HMI 软件可供选择。如果我们能确定人机界面运行在相对现代化的 PC 上,那么我们就可以更积极地扫描,寻找这些奇怪的人机界面高端口。很多 HMI 软件都已经过时,而且充满了安全漏洞。不要忘记提交您发现的 HMI 服务的服务签名。请记住,Metasploit 文件夹中装满了针对各种服务器的 HMI 漏洞利用。

为 HMI 服务端口创建数据库

在尝试创建人机界面常用端口列表时,我注意到这些信息都散落在供应商的文档手册和晦涩难懂的网站上。因此,我将尝试列出所有已知的人机界面端口,并在以下网址创建一个数据库(请为该项目做出贡献): https://github.com/cldrn/hmi-port-list

枚举西门子 SIMATIC S7 PLC

西门子 S7 300/400 系列的 S7 PLC 设备使用 S7comm 协议进行 PLC 编程、PLC 与 SCADA 系统之间的数据交换以及诊断。这些设备通常监听 102 端口(iso-tsap),我们可以使用一些诊断功能,在脚本引擎的帮助下从设备中获取信息。

本教程向您展示如何使用 Nmap 枚举西门子 S7 PLC 设备。

How to do it...

打开终端,输入以下 Nmap 命令:

$ nmap -Pn -sT -p102 --script s7-info <target> 

脚本 s7-info 将获取设备信息,如下图所示:

 PORT STATE SERVICE 
 102/tcp open iso-tsap 
 | s7-info: 
 | Module: 6ES7 420-2FK14-1DB3 
 | Basic Hardware: 6ES7 420-2FK14-1DB3 
 | Version: 3.2.11 
 | System Name: SIMATIC 300(1) 
 | Module Type: CPU 317F-2 PN/DP 
 | Serial Number: S C-F1UB42002417 
 |_ Copyright: Original Siemens Equipment 
 Service Info: Device: specialized 

How it works...

s7-info 脚本可通过 s7comm 检测 PLC 设备,s7comm 是西门子 S7 300/400 系列自 1994 年起使用的协议。它收集有关设备的信息,如类型、系统名称、序列号和版本。在上一条命令中,我们检查了 TCP 端口 102 (-p102),使用了完整的 TCP 连接 (-sT),并禁用了主机发现 (-Pn),以减少发送到设备的异常数据包数量。

 | s7-info: 
 | Module: 6ES7 420-2FK14-1DB3 
 | Basic Hardware: 6ES7 420-2FK14-1DB3 
 | Version: 3.2.11 
 | System Name: SIMATIC 300(1) 
 | Module Type: CPU 317F-2 PN/DP 
 | Serial Number: S C-F1UB42002417 
 |_ Copyright: Original Siemens Equipment 

There's more...

s7-info 脚本旨在提供与 Nmap 中的 PLCScan 工具 (https://code.google.com/archive/p/plcscan/) 相同的功能。除了能通过其他协议(如 Modbus)检测 PLC 之外,PLCScan 还能显示脚本中未显示的一些信息字段。如果您已经识别了 S7 设备,不妨也使用 PLCScan 来获取更多信息。

枚举 Modbus 设备

Modbus TCP/IP 是许多 SCADA 设备用于传输信息的通信协议。它被认为是最流行的开放协议之一,可以找到有效的从站 ID 并远程获取有关设备和软件的信息。本食谱向您展示如何使用 Nmap 枚举 Modbus 从站 ID (SID)。

How to do it...

打开终端,输入以下 Nmap 命令:

$ nmap -Pn -sT -p502 --script modbus-discover <target> 

默认情况下,脚本 modbus-discover 将获取第一个从站 ID 设备信息,如下图所示。显示的信息取决于设备的响应:

 PORT STATE SERVICE 
 502/tcp open modbus 
 | modbus-discover: 
 | sid0x0: 
 |_ Slave ID data: \xB4\xFFLMB3.0.3 

How it works...

modbus-discover 脚本可枚举 Modbus 设备及其从属 ID 信息。该脚本由 Alexander Rudakov 编写,旨在改进著名工具 Modscan (https://code.google.com/archive/p/modscan/)。默认情况下,脚本将返回第一个从属 ID,但也可进行配置。在前面的命令中,我们使用 TCP 连接扫描 (-sT) 探测了 TCP 端口 502 (-p502),并禁用了主机发现 (-Pn)。每个从属 ID 可以通过 sid 字符串识别:

 PORT STATE SERVICE 
 502/tcp open modbus 
 | modbus-discover: 
 | sid0x0: 
 |_ Slave ID data: \xB4\xFFLMB3.0.3 

某些设备会返回对设备指纹识别有用的附加信息:

 PORT STATE SERVICE 
 502/tcp open modbus 
 | modbus-discover: 
 | sid0x64: 
 | Slave ID data: \xFA\xFFPM710PowerMeter 
 |_ Device identification: Schneider Electric PM710 v03.110 

There's more...

通过设置脚本参数的攻击性,可以将脚本配置为尝试枚举所有从属设备 ID,如下所示:

$nmap -sT -Pn -p502 --script modbus-discover --script-args modbus-discover.aggresive=true <target> 

积极模式将使脚本尝试检索前 256 个从属 ID 的信息:

 PORT STATE SERVICE
 502/tcp open modbus
 | modbus-discover:
 | sid0x0:
 | Slave ID data: \xB4\xFFLMB3.0.3
 | sid0x1:
 | Slave ID data: \xFA\xFFPM710PowerMeter <edited for conciseness>
 | sid0x64:
 | Slave ID data: \xFA\xFFPM710PowerMeter
 |_ Device identification: Schneider Electric PM710v03.110

枚举 BACnet 设备

BACnet 设备在楼宇自动化系统中非常常见,用于互联和控制暖通空调、电力和通风系统以及许多其他组件。在 Nmap 脚本引擎的帮助下,可以从中收集供应商、设备名称、序列号、描述、位置甚至固件版本等信息。

本教程将向您展示如何使用 Nmap 检测和收集 BACnet 设备的信息。

How to do it...

打开终端,输入以下 Nmap 命令:

$ nmap -Pn -sU -p47808 --script bacnet-info <target> 

bacnet-info 脚本将获取设备信息,如下图所示:

PORT STATE SERVICE
 47808/udp open bacnet
 | bacnet-info:
 | Vendor ID: CarelS.p.A. (77)
 | Vendor Name: CarelS.p.A.
 | Object-identifier: 77000
 | Firmware: A1.4.9 - B1.2.4
 | Application Software: 2.15.2
 | Object Name: pCOWeb77000
 | Description: CarelBACnet Gateway
 |_ Location: Unknown

How it works...

bacnet-info 脚本由 Stephen Hilt 编写,用于检测 BACnet 设备并从中收集信息。设备的可用信息包括位置、名称、描述、供应商 ID 和固件版本。在前面的命令中,我们检查了 47808 端口 (-p47808),使用了 UDP 扫描 (-sU),并禁用了主机发现 (-Pn),以减少发送到设备的异常数据包数量。

 PORT STATE SERVICE
 47808/udp open bacnet
 | bacnet-info:
 | Vendor ID: CarelS.p.A. (77)
 | Vendor Name: CarelS.p.A.
 | Object-identifier: 77000
 | Firmware: A1.4.9 - B1.2.4
 | Application Software: 2.15.2
 | Object Name: pCOWeb77000
 | Description: CarelBACnet Gateway
 |_ Location: Unknown

There's more...

如果设备使用的是旧版本的协议或不符合协议,则会返回错误信息。不过,错误信息本身就表明我们确实在使用 BACnet 设备。请查找以下字符串,以确定尽管有错误,但它是一个 BACnet 设备:

BACNetADPU Type: Error (5) 

发现 BACnet 广播管理设备

该脚本所基于的原始 bacnet-info 也支持发现 BACnet 广播管理设备(BBMD)。安装 BBMD 是为了允许跨网络广播请求。不过,官方的 bacnet-info 脚本并未包含这一功能。原始脚本名为 BACnet-discover-enumerate,可在 Digitalbond 的 Redpoint

存储库:https://github.com/digitalbond/Redpoint/blob/master/BACnet-discover-enumerate.nse

枚举以太网/IP 设备

以太网/IP 是工业系统中非常常用的协议,它使用以太网作为传输层,使用 CIP 提供应用所需的服务和配置文件。多个供应商的以太网/IP 设备通常在 UDP 端口 44818 上运行,我们可以收集供应商名称、产品名称、序列号、设备类型、产品代码、内部 IP 地址和版本等信息。

本食谱向您展示如何使用 Nmap 枚举以太网/IP 设备。

How to do it...

打开终端,输入以下 Nmap 命令:

$ nmap -Pn -sU -p44818 --script enip-info <target> 

enip-info 脚本将获取设备信息,如下图所示:

 PORT STATE SERVICE
 44818/udp open EtherNet-IP-2
 | enip-info:
 | Vendor: Rockwell Automation/Allen-Bradley (1)
 | Product Name: PanelViewPlus_6 1500
 | Serial Number: 0x00123456
 | Device Type: Human-Machine Interface (24)
 | Product Code: 51
 | Revision: 3.1
 |_ Device IP: 10.19.130.20

How it works...

enip-info 脚本由 Stephen Hilt 提交,用于通过发送请求标识数据包枚举和收集以太网/IP 设备的信息。在上一条命令中,我们使用 UDP 扫描 (-sU) 探测 44818 端口 (-p44818),并禁用主机发现 (-Pn)。设备返回的信息包括供应商名称、产品名称、序列号、设备类型(用于识别人机界面)、版本和设备 IP。

 PORT STATE SERVICE
 44818/udp open EtherNet-IP-2
 | enip-info:
 | Vendor: Rockwell Automation/Allen-Bradley (1)
 | Product Name: PanelViewPlus_6 1500
 | Serial Number: 0x00123456
 | Device Type: Human-Machine Interface (24)
 | Product Code: 51
 | Revision: 3.1
 |_ Device IP: 10.19.130.20

There's more...

请求标识数据包的响应包括一个对识别以太网/IP 设备非常有用的信息位,这是协议的要求:设备类型。例如,通信适配器会返回以下信息:

 | enip-info:
 | Vendor: Rockwell Automation/Allen-Bradley (1)
 | Product Name: 1769-L32E Ethernet Port
 | Serial Number: 0x000000
 | Device Type: Communications Adapter (12)
 | Product Code: 158
 | Revision: 3.7
 |_ Device IP: 192.168.1.1

枚举Niagara Fox 协议设备

使用 Niagara Fox 协议的设备通常在 TCP 端口 1911 和 4911 上运行。我们可以通过它们远程收集信息,如应用程序名称、Java 版本、主机操作系统、时区、本地 IP 地址以及堆栈中涉及的软件版本。NSE 脚本 fox-info 是少数几个允许我们使用该协议并轻松提取这些信息的工具之一。

本教程将向您展示如何使用 Nmap 从使用 Niagara Fox 协议的设备中检测和收集信息。

How to do it...

打开终端,输入以下 Nmap 命令:

$ nmap -Pn -sT -p1911,4911 --script fox-info <target> 

如下图所示,fox-info 脚本将获取设备信息:

 PORT STATE SERVICE
 1911/tcp open niagara-fox
 | fox-info:
 | fox.version: 1.0.1
 | hostName: 192.168.1.128
 | hostAddress: 192.168.1.128
 | app.name: Station
 | app.version: 3.7.106.1
 | vm.name: Java HotSpot(TM) Client VM
 | vm.version: 1.5.0_34-b28
 | os.name: Windows XP
 | timeZone: America/Mexico_City
 | hostId: QAQ-APX1-0000-420A-AB21
 | vmUuid: 32d6faaa-1111-xxxx-0000-000000001a12
 |_ brandId: Webs

关于操作系统字段名称和虚拟机版本字段,这是对目标进行指纹识别和进一步攻击的绝佳信息。

How it works...

The fox-info script was written by Stephen Hilt to enumerate and retrieve information from Tridium Niagara systems. The protocol usually operates on port TCP 1911 or 4911 and a lot of information can be obtained from devices using it.

In the previous command, we used TCP connect scan to probe ports 1911 and 4911 and execute the fox-info script if they are open. Host discovery was disabled to reduce the number of specially crafted packets sent to the device.

 PORT STATE SERVICE
 1911/tcp open niagara-fox
 | fox-info:
 | fox.version: 1.0.1
 | hostName: 192.168.1.128
 | hostAddress: 192.168.1.128
 | app.name: Station
 | app.version: 3.7.106.1
 | vm.name: Java HotSpot(TM) Client VM
 | vm.version: 1.5.0_34-b28
 | os.name: QNX
 | timeZone: America/Mexico_City
 | hostId: QAQ-APX1-0000-420A-AB21
 | vmUuid: 32d6faaa-1111-xxxx-0000-000000001a12
 |_ brandId: Webs

There's more...

fox-info 脚本返回的信息包括协议版本、主机名、主机地址、应用程序名称、应用程序版本、虚拟机名称、虚拟机版本、操作系统、时区和一些设备标识符。这些信息无需验证即可获取,可用于对主机操作系统进行指纹识别,而无需使用操作系统检测扫描 (-O) 和针对 JVM 的可能客户端攻击。

枚举 ProConOS 设备

ProConOS 是一个 PLC 运行时引擎,专为嵌入式或基于 PC 的控制应用而设计。该协议无需验证即可查询系统信息,并返回 PLC 类型、项目名称、项目源代码名称和梯形图逻辑运行时信息等信息。

本食谱向您展示如何使用 Nmap 枚举 ProConOS PLC。

How to do it...

打开终端,输入以下 Nmap 命令:

$nmap -Pn -sT -p20547 --script proconos-info <target> 

The procons-info script will obtain device information, as shown next:

 PORT STATE SERVICE
 20547/tcp open ProConOS
 | proconos-info:
 | LadderLogicRuntime: ProConOS V4.1.0230 Feb 4 2011
 | PLC Type: Bristol: CWM V05:40:00 02/04
 | Project Name: Test
 | Boot Project:
 |_ Project Source Code: Test_2

How it works...

proconos-info 脚本使用 ProConOS 协议检测 PLC。它收集的设备信息包括梯形图逻辑运行时信息、PLC 类型和项目名称。在 nmap -Pn -sT -p20547 --script proconos-info 命令中,我们使用完整的 TCP 连接 (-sT) 检查 TCP 端口 20547 (-p20547),并禁用主机发现 (-Pn),以减少发送到设备的异常数据包数量。如果正确检测到 ProConOS PLC,将显示类似下面的输出:

 PORT STATE SERVICE
 20547/tcp open ProConOS
 | proconos-info:
 | LadderLogicRuntime: ProConOS V4.1.0230 Feb 4 2011
 | PLC Type: Bristol: CWM V05:40:00 02/04
 | Project Name: Test
 | Boot Project:
 |_ Project Source Code: Test_2

There's more...

菲尼克斯电气软件公司的 ProConOS 应用程序没有实施身份验证系统,攻击者可以远程更改梯形图的逻辑,因此被视为易受攻击。这对于远程访问或在未分段网络上访问的 PLC 来说非常危险。有关此安全公告的更多信息,请访问以下 URL:

https://ics-cert.us-cert.gov/advisories/ICSA-15-013-03

枚举 Omrom PLC 设备

Omrom PLC 设备使用通过 UDP 或 TCP 通信的 FINS 协议来控制网络上的机器。Nmap 脚本引擎可以枚举这些设备并获取更多信息。

本食谱向您展示如何使用 Nmap 枚举 Omrom PLC 设备。

How to do it...

打开终端,输入以下 Nmap 命令:

$ nmap -Pn -sU -p9600 --script omrom-info <target> 

如下所示,omrom-info 脚本将获取设备信息:

 9600/udp open OMRON FINS
 | omron-info:
 | Controller Model: CJ2M-CPU32 02.01
 | Controller Version: 02.01
 | For System Use:
 | Program Area Size: 20
 | IOM size: 23
 | No. DM Words: 32768
 | Timer/Counter: 8
 | Expansion DM Size: 1
 | No. of steps/transitions: 0
 | Kind of Memory Card: 0
 |_ Memory Card Size: 0

How it works...

omrom-info 脚本通过发送控制器数据读取命令,使用协议 FIN 检测 Omrom PLC 设备。它收集有关设备的信息,如控制器型号、控制器版本和系统信息。在前面的命令中,我们检查了 UDP 端口 9600 (-p9600),并禁用了主机发现 (-Pn),以减少发送到设备的畸形数据包数量。

Omrom PLC 设备也可以通过 TCP 运行。在尝试枚举设备时,最好同时检查这两种协议。

 9600/udp open OMRON FINS
 | omron-info:
 | Controller Model: CJ2M-CPU32 02.01
 | Controller Version: 02.01
 | For System Use:
 | Program Area Size: 20
 | IOM size: 23
 | No. DM Words: 32768
 | Timer/Counter: 8
 | Expansion DM Size: 1
 | No. of steps/transitions: 0
 | Kind of Memory Card: 0
 |_ Memory Card Size: 0

There's more...

过去曾发现 Omrom 的产品在以纯文本传输敏感信息时存在漏洞。如果您与 Omrom 设备处于同一网段,请立即开始捕获数据包!请在以下 URL 阅读安全公告:

https://ics-cert.us-cert.gov/advisories/ICSA-15-274-01

枚举 PCWorx 设备

PCWorx 设备可以在网络上映射,因为它们允许返回系统信息(如 PLC 类型、型号和固件详细信息)的未验证请求。

本食谱将向您展示如何使用 Nmap 枚举 PCWorx 设备。

How to do it...

打开终端,输入以下 Nmap 命令:

$ nmap -Pn -sT -p1962 --script pcworx-info <target> 

如下所示,pcworx-info 脚本将获取设备信息:

 PORT STATE SERVICE
 1962/tcp open pcworx
 | pcworx-info:
 | PLC Type: ILC 330 ETH
 | Model Number: 2737193
 | Firmware Version: 3.95T
 | Firmware Date: Mar 2 2012
 |_ Firmware Time: 09:39:02

How it works...

pcworx-info 脚本可检测 PCWorx 设备并收集设备信息,如类型、型号和固件信息。在前面的命令中,我们检查了 TCP 1962 端口 (-p1962),使用了完整的 TCP 连接 (-sT),并禁用了主机发现 (-Pn),以减少发送到设备的自定义数据包数量。

 PORT STATE SERVICE 
 1962/tcp open pcworx 
 | pcworx-info: 
 | PLC Type: ILC 330 ETH 
 | Model Number: 2737193 
 | Firmware Version: 3.95T 
 | Firmware Date: Mar 2 2012 
 |_ Firmware Time: 09:39:02