ICS工业控制安全类方向赛题简单总结

ICS工业控制安全类赛题简述

之前一段时间,参加了一些工控安全的比赛,接触到了一些工业控制系统相关安全内容,有过一些学习、分析和思考。这篇文章总结了一些常见的工业安全比赛里的内容,对过往知识的一些梳理和回顾,末尾对一些梯形图上常见的安全场景具体罗列。作者本身非工控专项研究人员,如果文章有错误请多指正。

ICS工业控制系统的赛题本身涉及PLC、HMI、SCADA等内容,包含网络、控制器、传统PC等主体,出题面比较广,简单可以理解为Web、Reverse、Misc等方向综合体。从本身入门难易程度来看,入门的题目以WEB和流量分析为主,深入一些会涉及到梯形图、固件分析、程序修改等等方面的考察。

要求掌握一定的传统安全渗透技能,同时一定程度了解二进制安全和工控系统。比较典型的例子是一些工控比赛中,只会传统攻防的人员遇到梯形图、SCADA系统无法继续,而只会PLC、SCADA编程的人员又无法在过程中突破主机或网络限制。

关于队伍人员配置。如果是标准的三人队伍,推荐组队的配置1名渗透人员、1名逆向人员、1名工控人员。或者1名渗透人员、2名工控人员。

PLC软件

由于工控设备和软件的壁垒比较高,不同的PLC只能由对应厂商提供的软件打开和编辑。下面是总结的一些PLC软件清单。

厂家软件
和利时AutoThink
台达(AS)ISPSoft
西门子STEP 7 MicroWIN SMART(PLC)、S7-PLCSIM(仿真器)
三菱GX Works:GX Developer(PLC)、GX Simulator(仿真器)
欧姆龙(Omron)CX One:CX-Programmer(PLC)、CX-Simulator(仿真器)
霍尼韦尔Safety Manager
罗克韦尔(AB)RSLogix
ABB(Asea Brown Boveri)Control Builder Plus、AC 800PEC Tool
施耐德SoMachine
步科KincoBuilder
大连理工PLC Config(PLC)
力控ForceControl

国内工业安全竞赛

下面是一个表格,总结了国内工业安全竞赛的常见比赛形式。

比赛类型考察点说明
渗透测试传统渗透、数据保送系统、数据库WEB服务、主机服务、数据服务等
逆向分析固件分析、工控软件逆向逆向实战,会有Arm等指令集
工控协议工控流量分析、Misc 类Misc 流量分析,工控场景流量特征
工控编程PLC 编程、HMI 组态、RTU 编程工控实际组态软件使用,梯形图识别与分析
漏洞挖掘协议分析、Fuzz、固件分析综合各种漏洞挖掘手段,可以是固件、私有协议等

渗透测试PT

  • 与业务场景高度关联,例如工业控制中,Web 端主要为显示当前使用场景中的控制参数、运行状态等信息,如果在内网中被中间人劫持,当 HMI 显示设备无法与 PLC 等实时运行设备同步时,系统会报警或出错。工业协议对校验、加密等防护手段做的不够好,容易产生这类问题。
  • 一般采用通用技术展示 Web 界面,以 windows 操作系统为主要平台,包括嵌入式系统WinCC、桌面系统Windows Server 2008和Windows 7 等系统为主,MSF在这些系统的突破上会是一大杀器。
  • Web 渗透的同时会保留多个端口,例如 FTP、HTTPS、Telnet、SNMP、NTP 等服务端口,在 Web 渗透无法突破时可以试试其他端口。
  • 为了简化问题复杂度,有些工控场景一般处于直连环境,内网劫持往往比较有效。但是如果内网配置了静态 IP 或其他防护措施,ARP 欺骗方式等内网劫持方法无法起效。
  • 敏感信息泄露,配置错误配置等是工控 Web 发布常见问题,比如 .git, .idea, .project 等工程信息,还可能出现路径遍历、命令注入、弱口令等问题。

逆向分析RE

  • 工控操作系统可能为 RTOS(Real Time Operate System), 例如 vxworks、uc-os 等实时操作系统,在逆向前需要对其架构和指令集需要比较熟悉。
  • 遇到ARM、MIPS等指令集程序的概率较高,测试环境可以通过 qemu 搭建 arm 环境进行动态调试。
  • 工控固件逆向常见的目标是工控工程加密算法、硬编码秘钥、硬编码后门等常见固件逆向漏洞,如果发现了堆栈溢出类漏洞,往往能够导致目标设备拒绝服务,对工业设备来说非常严重。
  • 在上位机、PLC和一些SCADA加密情况比较多,需要在第一步解压过程对其进行解压或解密。也有对工程文件、编程软件加密码的场景,只有对一些特定的版本可以逆向。

工控协议MISC

  • 工控协议针对工控场景设计,具有简单、高效、低延时等特点,协议可能没有校验或者加密,针对此类问题完全可以考虑采用重放、劫持等简单攻击手段。
  • 工控协议包括众多的私有协议,这部分协议具体细节需要逆向或者采集数据来实现数据功能的还原。
  • 工控协议可能导致目标 PLC、DCS、RTU 等设备出现拒绝服务,采用基于 协议Fuzz 的方法可以快速发现此类问题。
  • 遇到需要区分哪些是合法请求、哪些是异常请求的场景,除了分析功能码,还需要分析流量上下文。
  • 除了一些工控协议,根据实际场景还可能有一些数据传输协议,比如MQTT、OPC等,都是可以读取数据的点。

工控和组态编程

  • 必需将工控编程逻辑和业务场景对应,某个bit值变量为0,对应的操作可以是闭合也可以打开,要明白工控业务逻辑。
  • 务必明确梯形图文件是什么格式,指定格式只能用指定软件打开和仿真,同厂家也可能存在新旧产品不共用软件的情况。
  • 工控设备往往可以直接连接、上载程序、在线调试,不提供梯形图的多半是此类场景。
  • 工控设备的连接方式多样,一般采用RJ 45网线接口,但是也有COM串口、USB 接口等新的方式。
  • 梯形图计算最好使用仿真运行,尤其是带有浮点、类型转化的梯形图,口算很难算对。如果逻辑过多,可以新建工程选出主要逻辑运行,否则可能因为其他变量制约无法得出结果。

漏洞挖掘

  • 固件分析部分基本同逆向部分,要注意配置文件、数据输入等不安全输入造成的问题。
  • 私有协议测试需要自己编写收发包,或者用协议Fuzz工具。
  • 注意工控设备对时效性和鲁棒性都要求较高,一些安全问题会更严重,比如拒绝服务场景。

梯形图计算

梯形图问题设置的意义,在于攻击者拿到HMI或者工程主机,如何进一步破坏工业系统。比如震网病毒,就是修改了很小一点的内容,不易被觉察,最后导致设备损坏。看懂梯形图,能理解逻辑,并且能修改就成了关键的技能技术。

变量计算

梯形图基础是要识别符号。不同的厂家的PLC符号不尽相同,有的额是缩写,有的是符号,需要具体对待,一般在PLC编程软件的帮助中带有相应的指令说明。下面列举一些相对通用的指令,太过复杂的也不适合出计算题:

缩写符号意义
ADD+
SUB-
MUL*
DIV/
-| |-关闭
-|/|-打开
OR
AND
MOV赋值

最佳的计算方法是使用仿真器运行程序,监视变量得到运行结果。

不涉及精度和位运算的数据转化的简单梯形图可以手算。

复杂功能需要分析简化,否则可能在仿真器中运行不起来。最好可以新建一个工程,只取出相关的逻辑。

场景计算

梯形图场景计算是比较常见的真正工控内容的题目,题目会给出一段程序和程序背景叙述,最终求得某一个业务逻辑运行后的结果。

这种问题一般都会涉及到变量计算、时钟周期等。需要结合描述搞清楚控制逻辑是怎么实现的,哪几个变量是开关变量等。最后通过手动计算或者仿真运行得到运行结果。

提供HMI不提供梯形图

需要上载、控制梯形图的场景。

一般出现在工业渗透场景或者线下实战,PLC中确定有相应程序的情况。

获取梯形图的时候,可以用HMI上的组态软件连接PLC,然后进行程序上载,获取相应的梯形图。

控制梯形图一般是对一些开关开闭互转,完成对一些变量的控制,从而控制机器做出相应的动作,逻辑一般不会太复杂。

编辑完成后需要编译程序,然后下载到PLC后运行程序。

具体逻辑本的分析原则和方法参考上一部分。

无梯形图的场景

一般出现在工业渗透场景或者线下直接连接设备的实战场景,这时PLC中可能会存在没有程序的情况,属于难度较高的一类场景。

相对来说不会太过复杂,可能要分析工艺流程之后,设计控制逻辑。一般是参考HMI的组态图之后,自行设计一个简单的梯形图实现功能。可能的话,一些编程软件中携带的示例程序改改就可以运行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值