工控安全:CTF赛前小知识[转]

工控比赛考察点

采用 CTF 分类模型,总结分析当前工控 ICS 比赛中的关键点

比赛类型考察点与 CTF 异同
内网渗透Web 端渗透测试、CMS 系统、工控发布展示系统、数据库系统与 Web 渗透相关
逆向分析固件分析、工控软件逆向实际场景逆向
工控协议工控流量分析、Misc 类Misc 流量分析,工控场景流量特征
工控编程PLC 组态、HMI 组态、RTU 组态等工控实际组态软件使用,梯形图识别与分析

根据漏洞类型其实还可以区分细化题目类型,包括常见的 Web 注入类、固件弱口令、后门程序、协议重放与逻辑问题、组态部署问题等常见的工控场景安全问题。

比赛类型漏洞类型
内网渗透Web 类(SQL、XSS、命令注入、敏感文件泄露. git/.idea/.project 等、)
逆向分析固件分析、工控软件逆向
工控协议工控流量分析、Misc 类
工控编程PLC 组态、HMI 组态

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 等设备的操作,用户需要区分哪些是合法请求、哪些是异常请求,这需要经验,需要研究推断当前流量的使用逻辑。这个场景很适合机器学习的条件,这可以考虑是个探索的方向。
  • 针对工控场景的实际防御方案其实最好的还是旁路检测,通过分光将流量接入分析系统,在不影响正常业务使用的同时对目标系统进行安全监控。

工控编程(Program)

工控编程是工控系统运行的核心和重点,此类题目特点一般是:

  • 工控编程核心为明白工控业务逻辑,而工控编程遵循 IEC61131-3(工控史上首例实现 PLC、DCS、运动控制、 SCADA 等联合编程的标准——IEC61131-3),包括 5 种编程语言标准,3 种是图形化语言(梯形图、顺序功能图和功能块图),两种是文本化语言(指令表和结构文本)。
  • 工控设备往往可以在线调试,从而可以控制某些输入输出端口,实现强制启停的功能,如果这些功能可以采用 Remote 方式重发,那攻击危害就更为严重。
  • 工控设备的连接方式多样,一般采用串口,但是目前设备发展支持以太网、USB 接口等新的方式,如果网口不行试试串口、USB。
  • 工控组态可以非常复杂,甚至连接成百上千个输入输出都有可能,组态中会由于添加了新的组件而更加麻烦,这时候要慢慢看,一点一点缕出来。

工控设备发现

工控设备发现是工控比赛的前提,目前针对工控设备扫描中,在 Nmap、Metasploit、Censes 集成了大量的工具,用于挖掘当前在线 PLC、DCS 等 ICS 设备。

工控扫描脚本

基于工控端口的nmap扫描脚本

在大量 IP 中如何发现工控设备, 除了工控特殊端口意外,大量端口都是正常服务,例如 ftp、ssh、telnet、smtp、ntp 等正常网络服务。下面列表列举了当前可以利用开源工控扫描脚本。

2018-11-09_155903.png

上述脚本并未完全整列了当前能够使用脚本信息,未完待续中......

基于工控组态软件的组件扫描

各工控厂商往往自带组态软件,组态软件时连接当前内网内设备时可自主发现目标 PLC 设备

端口协议 / 设备连接方法
102(TCP)siemens s7西门子软件 Step7 自带扫描当前网段 PLC 设备功能
502(TCP)modbus施耐德 SoMachine Basic 连接 PLC 设备自带扫描内网网段功能

工控扫描与发现引擎

Shodan 引擎

Shodan 是一款网络空间搜索引擎,主要搜索的是存在于互联网中的设备,服务器、摄像头、工控设备、智能家居等,并且可以识别出其版本,位置,端口,服务等信息。Shodan 于 2013 年增加了针对工控协议的探测,用户可以直接使用工控协议的端口直接检索该协议的所有数据,用户也可以使用特征 Dork 直接搜索对应设备数据。

Zoomeye 引擎

ZoomEye 是知道创宇打造的面向网络空间的搜索引擎,ZoomEye 于 2015 年 3 月上线了工控专题 (ics.zoomeye.org),ZoomEye 支持 12 种工控协议的数据检索,使用者也可以使用工控协议的端口和特征 Dork 关键字发现暴露在互联网的工控软硬件,对于工控协议类型的数据,ZoomEye 启用了保护策略,一般用户无法直接查看。

FOFA 引擎

FOFA 是白帽汇推出的一款网络空间资产搜索引擎。它能够帮助用户迅速进行网络资产匹配、加快后续工作进程。例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等

Diting 全网引擎

谛听 (ditecting) 网络空间工控设备搜索引擎,取谛听辨识万物之意,属意在搜寻暴露在互联网上的工业控制系统联网设备, 帮助安全厂家维护工控系统安全、循迹恶意企图人士。

Censys 全网引擎

Censys 是一款搜索引擎,它允许计算机科学家了解组成互联网的设备和网络。Censys 由因特网范围扫描驱动,它使得研究人员能够找到特定的主机,并能够针将设备、网站和证书的配置和部署信息创建到一个总体报告中。

各类漏洞引擎内容不同,采取配置、部署节点等存在较大的差异,目前针对工控这块的搜索引擎以 shodan 和 ditecting 更为专业,但是从针对端口来看,各个引擎宣称的公布检索方式不尽相同。

工控漏洞利用

组态利用

组态是工控场景的核心,是工控编程与实现功能的核心内容,如果你不太懂组态,请自行学习自动化领域工业控制系统组态的相关书籍。 最好的学习方式是拿到相关的产品说明书,针对说明书上的内容一点一点学习。

组态的利用方法
  • 强制 IO(最管用的一种调试方法)
  • 工程加密与解密(工程加密是 PLC 一种保护措施,但仍存在被破解的可能)
  • 上载下载(基础概念请自行恶补)
  • PLC 等目标设备的内存分布(基础概念请自行恶补)
  • 其他附加功能(例如 ftp、ntp 等)

通信劫持

通信劫持是工控场景中最经典利用方式,例如 ARP 劫持、PLC/HMI 通信劫持、PLC 会话劫持、PLC 命令执行等内容。

通信劫持的方法
  • ARP 劫持,ARP 劫持可以阻断 PLC 与其他设备的通信,鉴于工程会存在写死 IP 等交互地址,未必管用,但是值得一试
  • PLC/HMI 通信劫持,采用旁路设备接入或控制 PLC 设备,对 IO 进行强制重写或输出
  • PLC 命令执行,针对工控设备最敏感的部分是设备宕机(无法恢复的)、设备启停、设备强制更新参数,等等这些对普通工艺能够产生较大的影响。

Web 渗透

目标企业往往存在 Web 类工控应用,例如发布工艺发布页面,用户数据库等页面,这些内容基本与平日 Web 题目无异。

Web渗透的常用方法
  • 弱口令(工控里比较常见,工控设备中厂商默认密码)
  • 命令注入(比较普遍,需要审计 Web 工程源码)
  • 目录遍历(手测简单,利用难,需要结合上传等功能实现)
  • 预置后门(比较难以发现,需要逆向和 Web 渗透相结合)
  • SQL 类注入(比较简单)
  • XSS 在这里基本无用(基本没怎么遇到过)
  • 工程文件泄露(.git/.idea/.project 等工程文件泄露)

转自:https://ctf-wiki.github.io/ctf-wiki/ics/

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值