专业术语
SCADA:数据采集与监视控制系统
ICS:工业控制系统
DCS:分布式控制系统/集散控制系统
PCS:过程控制系统
ESD:应急停车系统
PLC:可编程序控制器(Programmable Logic Controller)
RTU:远程终端控制系统
IED:智能监测单元
HMI:人机界面(Human Machine Interface)
MIS:管理信息系统(Management Information System)
SIS: 生产过程自动化监控和管理系统(Supervisory Information System)
MES:制造执行管理系统
什么是⼯控系统:
ICS(Industrial control system)⼯业控制系统
SCADA(Supervisory Control And Data Acquisition)数据采集与监视控制系统
DCS(Distributed Control System)分布式控制系统
什么是工控组件:
PLC 可编程逻辑控制器
RTU 远程控制单元
HMI ⼈机交互界⾯
国内工控比赛考察点
采用 CTF 分类模型,总结分析当前工控 ICS 比赛中的关键点:
根据漏洞类型其实还可以区分细化题目类型,包括常见的 Web 注入类、固件弱口令、后门程序、协议重放与逻辑问题、组态部署问题等常见的工控场景安全问题。
Web 渗透类(Web)
工控 Web 渗透的特点:
-
与业务场景高度契合,例如工业控制中,Web 端主要为显示当前使用场景中的控制参数、运行状态等信息,如果在内网中被中间人劫持,当 HMI 显示设备无法与 PLC 等实时运行设备同步时,系统会报警或出错。
-
一般采用通用技术展示 Web 界面,以 windows 操作系统为主要平台,包括 WinCC、Windows Server、Windows 98/2000/XP 等看似古老的系统为主。
-
Web 渗透的同时会保留多个端口,例如 FTP、HTTPS、Telnet、SNMP、NTP 等服务端口,在 Web 渗透无法打穿的同时可以试试其他端口。
-
工控由于一般处于内网环境,内网劫持往往比较有效,但是如果内网配置了静态 IP 或其他防护措施,ARP 欺骗方式等内网劫持方法无法起效。
-
敏感信息泄露,配置文件不完善是工控 Web 发布常见问题,不仅仅包括. git/.idea/.project 等工程信息协议,还可能出现路径遍历、命令注入、弱口令等问题。
逆向分析(Reverse)
工控逆向的特点:
-
工控操作系统一般为 RTOS(Real Time Operate System), 例如 vxworks、uc-os 等实时操作系统,在逆向前需要对其架构和指令集需要比较熟悉,如果不懂请自行学习。
-
工控固件逆向常见的目标是工控工程加密算法、硬编码秘钥、硬编码后门等常见固件逆向漏洞,如果发现了堆栈溢出类漏洞,往往能够导致目标设备宕机(即 DOS 后果)。
-
工控固件往往存在加密和压缩情况,需要在第一步解压过程对其进行解压或解密,这部分依据具体厂商来定,不能一概而论。
-
工控固件存在逆向分析不出的情况
工控协议(Protocol)
该节主要谈论工控协议类题目的相关特点:
-
工控协议针对工控场景设计,具有简单、高效、低延时等特点,所以针对此类的攻击完全可以考虑采用重放、命令注入等简单攻击手段。
-
工控协议不仅仅采用公开协议、还包括众多的私有协议,这部分协议具体细节需要逆向或者采集数据来实现数据功能的还原。例如 Modbus、DNP3、Melsec-Q、S7、Ethernet/IP 等。
-
工控协议可能导致目标 PLC、DCS、RTU 等设备出现宕机、不可重启等问题,采用基于 Fuzz 的方法可以快速高效发现 PLC 宕机类漏洞。
-
工控协议中可能有众多针对 PLC 等设备的操作,用户需要区分哪些是合法请求、哪些是异常请求,这需要经验,需要研究推断当前流量的使用逻辑。这个场景很适合机器学习的条件,这可以考虑是个探索的方向。
-
针对工控场景的实际防御方案其实最好的还是旁路检测,通过分光将流量接入分析系统,在不影响正常业务使用的同时对目标系统进行安全监控。
Modbus
存在的漏洞风险:
缺乏认证:仅需要使用一个合法的Modbus地址和合法的功能码即可以建立一个Modbus会话。
缺乏授权:没有基于角色的访问控制机制, 任意用户可以执行任意的功能。
缺乏加密:地址和命令明文传输, 可以很容易地捕获和解析。
PROFIBUS
一种用于工厂自动化车间级监控和现场设备层数据通信与控制的现场总线技术,可实现现场设备层到车间级监控的分散式数字控制和现场通信网络。
DNP3
DNP(Distributed Network Protocol,分布式网络协议)是一种应用于自动化组件之间的通讯协议,常见于电力、水处理等行业。
简化OSI模型,只包含了物理层,数据层与应用层的体系结构(EPA)。
SCADA可以使用DNP协议与主站、RTU、及IED进行通讯。
ICCP
电力控制中心通讯协议。
OPC
过程控制的OLE (OLE for Process Control)。
OPC包括一整套接口、属性和方法的标准集,用于过程控制和制造业自动化系统。
BACnet
楼宇自动控制网络数据通讯协议(A Data Communication Protocol for Building Automation and Control Networks)。
BACnet 协议是为计算机控制采暖、制冷、空调HVAC系统和其他建筑物设备系统定义服务和协议。
CIP
通用工业协议,被deviceNet、ControINet、EtherNet/IP三种网络所采用。
Siemens S7
属于第7层的协议,用于西门子设备之间进行交换数据,通过TSAP,可加载MPI,DP,以太网等不同物理结构总线或网络上,PLC一般可以通过封装好的通讯功能块实现。
其他工控协议
IEC 60870-5-104、EtherNet/IP、Tridium Niagara Fox、Crimson V3、OMRON FINS、PCWorx、ProConOs、MELSEC-Q。按需求自行查阅资料。
工控编程(Program)
工控编程是工控系统运行的核心和重点,此类题目特点一般是:
-
工控编程核心为明白工控业务逻辑,而工控编程遵循 IEC61131-3(工控史上首例实现 PLC、DCS、运动控制、 SCADA 等联合编程的标准——IEC61131-3),包括 5 种编程语言标准,3 种是图形化语言(梯形图、顺序功能图和功能块图),两种是文本化语言(指令表和结构文本)。
-
工控设备往往可以在线调试,从而可以控制某些输入输出端口,实现强制启停的功能,如果这些功能可以采用 Remote 方式重发,那攻击危害就更为严重。
-
工控设备的连接方式多样,一般采用串口,但是目前设备发展支持以太网、USB 接口等新的方式,如果网口不行试试串口、USB。
-
工控组态可以非常复杂,甚至连接成百上千个输入输出都有可能,组态中会由于添加了新的组件而更加麻烦,这时候要慢慢看,一点一点缕出来。
工控设备发现
工控扫描脚本
基于工控端口的信息扫描脚本
基于工控组态软件的组件扫描方法
Ethernet/IP 44818
`nmap -p 44818 --script enip-enumerate.nse 85.132.179.*`
Modbus 502
`nmap --script modicon-info.nse -Pn -p 502 -sV 91.83.43.*`
IEC 61870-5-101/104 2404
`nmap -Pn -n -d --script iec-identify.nse --script-args=iec-identify -p 2404 80.34.253.*`
Siemens S7 102
`nmap -p 102 --script s7-enumerate -sV 140.207.152.*`
Tridium Niagara Fox 1911
`nmap -p 1911 --script fox-info 99.55.238.*`
上述NSE脚本意义:
定位工控系统及协议模块。
收集目标工控的信息,如版本、内网IP、模块、硬件信息等。结合对应的NSE脚本进一步拓展,例如自定义空间搜素引擎。
脚本资源
Github测试脚本
https://github.com/atimorin/scada-tools
https://github.com/atimorin/PoC2013
https://github.com/drainware/scada-tools
https://github.com/drainware/nmap-scada
Exploit-db测试脚本
https://www.exploit-db.com/exploits/19833/
https://www.exploit-db.com/exploits/19832/
https://www.exploit-db.com/exploits/19831/
https://www.exploit-db.com/search/?action=search&description=scada&e_author=
组态的利用方法:
-
强制 IO(最管用的一种调试方法)
-
工程加密与解密(工程加密是 PLC 一种保护措施,但仍存在被破解的可能)
-
上载下载(基础概念请自行恶补)
-
PLC 等目标设备的内存分布(基础概念请自行恶补)
-
其他附加功能(例如 ftp、ntp 等)
通信劫持
通信劫持是工控场景中最经典利用方式,例如 ARP 劫持、PLC/HMI 通信劫持、PLC 会话劫持、PLC 命令执行等内容。通信劫持的方法:
-
ARP 劫持,ARP 劫持可以阻断 PLC 与其他设备的通信,鉴于工程会存在写死 IP 等交互地址,未必管用,但是值得一试
-
PLC/HMI 通信劫持,采用旁路设备接入或控制 PLC 设备,对 IO 进行强制重写或输出
-
PLC 命令执行,针对工控设备最敏感的部分是设备宕机(无法恢复的)、设备启停、设备强制更新参数,等等这些对普通工艺能够产生较大的影响。
Web 渗透
目标企业往往存在 Web 类工控应用,例如发布工艺发布页面,用户数据库等页面,这些内容基本与平日 Web 题目无异。
-
弱口令(工控里比较常见,工控设备中厂商默认密码)
-
命令注入(比较普遍,需要审计 Web 工程源码)
-
目录遍历(手测简单,利用难,需要结合上传等功能实现)
-
预置后门(比较难以发现,需要逆向和 Web 渗透相结合)
-
SQL 类注入(比较简单)
-
XSS 在这里基本无用(基本没怎么遇到过)
-
工程文件泄露(.git/.idea/.project 等工程文件泄露)
利用框架
-
isf 利用框架 https://github.com/dark-lbp/isf
-
isf 利用框架 https://github.com/w3h/isf
整理 ICS 资源
-
icsmaster https://github.com/w3h/icsmaster
-
rapidscada https://github.com/RapidScada/scada
弱口令集合
-
工控弱口令 https://github.com/scadastrangelove/SCADAPASS
-
TOP1 万内系列弱口令 https://github.com/danielmiessler/SecLists/tree/master/Passwords
蜜罐 honeypot
利用小工具
-
PLC 扫描发现工具 PLCscan https://code.google.com/archive/p/plcscan/source
工控态势感知
-
NSA 开发的工控 ICS/SCADA 态势感知开源工具 Grassmarlin
学习资料
ZoomEye工控专题: http://ics.zoomeye.org/
Shodan工控专题:https://www.shodan.io/report/l7VjfVKc
Z-0ne专注于工控安全攻防技术研究 :http://plcscan.org/blog/
网络空间工控设备的发现与入侵:https://github.com/evilcos/papers
工控系统安全威胁与应对探索(Kimon)
Exploit PLC on the internet(Z-0ne):https://github.com/knownsec/KCon/tree/master/KCon%202015
协议安全分析专业公司-科诺康:http://www.codenomicon.com/cn/
Modbus通讯协议学习-认识篇:http://www.cnblogs.com/luomingui/archive/2013/06/14/Modbus.html
https://www.cnblogs.com/HacTF/p/9248528.html
https://ctf-wiki.github.io/ctf-wiki/ics/learn-zh/
本文始发于微信公众号(山石网科安全技术研究院):工控攻防比赛技术知识点总结与学习资料
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论