跳转到主要内容
Chinese, Simplified

前言

目前遇到的各种客户多多少少都对工控安全的防御存在比较大的兴趣,团队里对这方面的研究还比较少。自己就抽空对整个工控安全体系进行了一段时间的学习,算是一个初步的认识。目前按照如下的进度学习相关的知识。仅从安全方面的角度去思考哪些层面可能存在问题,不是系统的工控知识学习。

1234 1、针对整个工控系统的组成进行分析2、工控系统涉及到的相关协议3、工控系统涉及的基础设备4、工控系统存在的安全漏洞

目前已经完成了基本的工控系统组成与modbus协议的分析与设备发现,对常见的安全漏洞也有一定的认识了。

工业控制系统简介

工业控制系统(ICS)在发展之初,使用的协议基本上都是基于串行链路的现场(总线)协议。 随着以太网的发展,早期的串行链路的现场(总线)协议基本都出现了基于以太网(或者互联网)的演化版本。这个演化是非常重要的,由于更多的设备联网,而相关人员的意识还停留在工控系统物理隔离、协议差异的概念里而导致了攻击者能有效的对相关设备、系统进行攻击。

工控行业涉及领域

123 电力行业市政:供水、供电、供暖、供气、水处理、交通等领域新兴:水利、铁路、化工、制造业等。

根据相关安全公司出具的报告现在电力行业中的工控设备联网量是非常多(虽然说是多,但由于基数少,对modbus协议的全国发现量还是不足1000个,不过由于其重要性与敏感性所以危害依然严重)

工控相关协议

123456 Modbus(基本上的行业标准)ProfibusDNP3IEC60870-5-101/104ICCP(IEC60870-6,TASE.2)IEC61850

区别于互联网上常见的http、ftp、dns等协议,工控的协议使用更多的是二进制形式的传输形式,单字节包含特定的含义,当然同样存在ASCII等可见字符的形式,不过前者使用更多。

工控安全脆弱点

12 一:工控协议自身特点所造成的固有问题。(未授权、认证、加密)二:演化至通用计算机、通用操作系统和TCP/IP后继承的问题。

工控中的协议由于其少见,且不像HTTP协议那样,发送端口请求即可得到响应信息,更多的是需要特定的协议通信包才能得到正确的返回,这样对识别联网的工控设备有更高的要求。其中存在较多的是未授权、未认证权限等问题,且大部分的数据是不经过加密处理的。笔者就发现了一些联网RTU/PLC设备可读(由于设备特征不明,读取了也不知道具体的信息指代什么意思,这也是相关的难点)

modbus协议问题若干:

缺乏认证、授权和加密等防护。仅需要一个合法的modbus地址(IP地址,默认端口502)和合法的功能码即可建立一个modbus会话,进行获取信息、写入数据、关停组件等操作,没有任何的访问控制机制,任意用户可执行任意的功能。地址与命令都是明文传输,很容易进行捕获和解析(解析需要对相关字段足够熟悉)。

操作系统、TCP/IP协议问题若干:

比如VxWorks实时操作系统的UDP端口诊断攻击。由于VxWorks的调试服务运行在UDP 17185端口,无需认证。攻击者可伪造服务器IP发送ICMP请求至广播地址引起拒绝服务(当然是个久远的漏洞了)。

同样在局域网中存在ARP攻击中间人等问题一样存在于工控系统中。

工控系统组成

工控系统一般使用系统数据采集与监控系统(SCADA)进行控制,一般是指由监控程序及数据收集能力的电脑控制系统,其主要功能是监控及控制所有设备的集中式系统。大部分的控制是由远程终端控制系统(RTU)或可编程逻辑控制器(PLC)进行,主系统一般只用作系统监控的控制。SCADA系统包含如下子系统:

12345 人机界面(HMI)计算机远程终端控制系统(RTU),连接程序中的感测器。可编程逻辑控制器(PLC,因其价格便宜,用途广泛,常用作现场设备,替换RTU)通信线路(使用特定的工控通信协议)

SCADA的通信协议会设计的非常精简,设备只有在被主站轮询到才需要发送数据。典型早期的SCADA通信协议包括Modbus RTU、RP-570、Profibus及Conitel。

标准的通信协议包括IEC 60870-5、IEC 60850或是DNP3。

举个大家耳熟能详的例子就是在2010年6月时白俄罗斯的安全公司VirusBlokAda发现了第一个攻击SCADA系统的计算机蠕虫,名称为震网(Stuxnet)。震网攻击在Windows操作系统下运作的西门子WinCC/PCS7系统,利用4个0day漏洞)安装一个Rootkit,在SCADA系统中登录,并且窃取设计及控制的文件[6][7]。此蠕虫可以修改整个控制系统,隐藏其变动的内容。VirusBlokAda在许多系统中发现此蠕虫,大部分是在伊朗、印度及印尼。

Article
知识星球
 
微信公众号
 
视频号