我的工控安全学习路线

by LauCyun Jun 13 14:06:53 9,679 views

一、概述

随着德国的“工业 4.0”、美国的“再工业化”风潮、“中国制造 2025”等国家战略的推出,以及云计算、大数据、人工智能、物联网等新一代信息技术与制造技术的加速融合,工业控制系统由从原始的封闭独立走向开放、由单机走向互联、由自动化走向智能化。在工业企业获得巨大发展动能的同时,也出现了大量安全隐患,伊朗核电站遭受“震网”病毒攻击事件、乌克兰电网遭受持续攻击事件和委内瑞拉大规模停电事件等更为我们敲响了警钟。

工业控制系统已成为国家关键基础设施的“中枢神经”,其安全关系到国家的战略安全、社会稳定。工业控制系统所面临的安全威胁是全世界面临的一个共同难题,工业设备的高危漏洞、后门、工业网络病毒、高级持续性威胁以及无线技术应用带来的风险,给工业控制系统的安全防护带来巨大挑战。

1.1 什么是工控安全

所谓工控即是工业控制,工业控制系统(ICS,Industrial Control System)是由各种自动化控制组件以及对实时数据进行采集、监测的过程控制组件,共同构成的确保工业基础设施自动化运行、过程控制与监控的业务流程管控系统。其核心组件包括数据采集与监控系统(SCADA)、分布式控制系统(DCS)、可编程逻辑控制器(PLC)、远程终端(RTU)、智能电子设备(IED)以及确保各组件通信的接口技术。

如图1所示,工业控制系统可简单划分为过程控制网络和现场控制网络两部分。过程控制网络中部署多种关键工业控制组件,通过 SCADA 服务器(MTU)与远程终端单元(RTU)组成远程传输链路。


图 1 典型工业控制系统结构(来源:计算机网络安全公众号)

过程控制网络向下与现场控制网络相连接。现场总线的控制和采集设备(PLC或RTU)一方面将现场设备状态传送到过程控制网络,另一方面还可以自行处理一些简单的逻辑程序,完成现场控制网络的大部分控制逻辑功能,如控制流量和温度、读取传感器数据等。

过程控制网络向上与企业信息网络相连接。在企业信息网络中,企业资源计划(ERP)服务器和制造执行系统(MES)服务器与工业控制系统紧密相连。

在企业信息网络中,邮件、Web、ERP 等业务都需要与互联网相连接,而 MES 需要与工业控制系统相连接,以获得生产过程的各种数据,并下达生产任务。各种病毒和木马就是利用这个通道进入企业信息系统,进而进入到工业控制系统中,这已经成为工业控制系统的主要安全威胁来源。随着信息技术的快速发展,工业控制系统中的无线连接、移动存储介质(U盘)、远程维护和升级等新兴技术和应用的广泛使用,为工业控制系统引入了更多的安全风险。

目前工业控制系统广泛的应用于我国电力、水利、污水处理、石油天然气、化工、交通运输、制药以及大型制造行业,其中超过 80% 的涉及国计民生的关键基础设施依靠工业控制系统来实现自动化作业,工业控制系统已是国家安全战略的重要组成部分。

1.2 工控安全与传统安全的区别

工业控制系统以“可用性”为第一安全需求,而传统安全以“机密性”为第一安全需求。在信息安全的三个属性(机密性、完整性、可用性)中,传统安全的优先顺序是机密性、完整性、可用性,而工业控制系统则是可用性、完整性、机密性。这一差异,导致工业控制系统中的信息安全产品,必须从软硬件设计上达到更高的可靠性,例如硬件要求无风扇设计(风扇平均无故障时间不到 3 年)。另外,导致传统信息安全产品的“故障关闭”原则如防火墙故障则断开内外网的网络连接,不适用于工业控制系统,工业控制系统的需求是防火墙故障时保证网络畅通。

为了进一步比较二者,总结如下表所示:


图 2 工控安全与传统安全的对比

1.3 工控安全特点

1.3.1 工业控制系统固有漏洞

各大厂商工控产品都或多或少存在着漏洞,工业领域存在着软、硬件的更新、升级、换代困难等问题。

工业控制系统协议在设计之初就缺乏安全性考虑,存在明文设计、缺乏认证、功能码滥用等安全威胁。

缺乏完善信息安全管理规定,存在U盘管理、误操作、恶意操作等安全威胁。

1.3.2 工业控制系统建设周期长

一般一个大型工业项目建设周期长达 5-10 年,一套工业系统建设调试到稳定需要的周期很长,无法频繁升级。

1.3.3 其他原因

两化融合使得工控系统而临着更多传统IT网络的威胁。

二、学习路线

上面介绍了工控安全的概念、与传统安全的区别和特点,那么接下来将讨论如何学习工控安全的问题。

工控安全是一个多学科,多技术,多领域的交叉门类。本身工控行业的基础专业是自动化专业,自动化专业就是一个多学科的交叉专业,它涉及计算机专业,电气电子专业、仪表专业、通信专业和信息专业等内容。工控网络涉及多个行业,如能源、交通、水利等。多技术包含控制技术、工艺技术、信息技术、网络技术、通信技术、存储技术等等。

作为初学者想开始学习时,却发现无从下手,因为工控安全涉及的知识面太广也太多了,为了广大初学者能够快速学习,特此整理本学习路线,而本学习路线仅展示了工控安全的冰山一角,还希望大家一起学习,一起交流,一起探讨,一起进步。

接下来,将重点介绍如何由浅入深、循序渐进的 Get 工控安全技能。

2.1 基础篇

正所谓万丈高楼平地起,所以基础的重要不言而喻。首先,无论是做工控安全还是程序员,都需要掌握的基本技能,那就是编程语言,建议从汇编、C/C++ 到 Python 的路线学习。

推荐书目:

  • 《汇编语言(第3版)》王爽·清华大学出版社
  • 《C Primer Plus(第6版)中文版》
  • 《Python编程:从入门到实践》
  • 《Python教程》廖雪峰·https://www.liaoxuefeng.com

除了,学习编程语言之外,还需要学习自动化相关知识,比如:自动化设备的基本原理、组成等。

推荐书目:

  • 《传感器与自动检测技术》
  • 《自动控制原理》
  • 《可编程逻辑控制器(PLC)》默里斯·机械工业出版社
  • 《工业控制网络》
  • 《信号与系统》

2.2 进阶篇

经过上面的基础学习,已经有了一定的知识储备,那接下来将学习自动化软件、协议解析两方面内容。

首先,介绍的是自动化软件,自动化软件分为编程软件、组态软件(SCADA 软件)、实时数据库等,具体可按照行业、厂家进行归类了解,深入了解后,再进行跨厂家、跨行业的深度学习。

至于,需要掌握到何程度,比如:会编写 S7 系列 PLC 梯形图、上载、下载等常用的操作。

计算机与计算机、人交流都涉及到协议,协议的重要就不言而喻,所以我们需要学习网络协议,网络协议分为基础协议和私有协议两大类。


图 3 OSI模型(来源:互联网)

基础协议主要涉及 TCP/IP 分层模型有关的内容,包括常见协议的工作原理和特点、缺陷、保护或替代措施等。学习 TCP/IP 方面的知识有很多原因,比如:要适当地实施防火墙过滤,安全管理员必须对于 TCP/IP 的IP层和 TCP/UDP 层有很深的理解、黑客经常使用 TCP/IP 堆栈中一部分区或来破坏网络安全等。

私有协议主要涉及应用层相关内容,常见的工业协议有 Modbus、S7、Ethernet/IP、DNP3、OMRON FINS、IEC104、OPC UA、OPC DA 等,需要学习、分析它的协议结构、工作原理和特点、缺陷、保护或替代措施等,为后续的漏洞挖掘做相应的铺垫。

推荐书目:

  • 《TCP/IP详解 卷1:协议》

既然我们是搞工控安全,那么下面的书籍很有必要读一读:

  • 《工业控制网络安全技术与实践》姚羽等·机械工业出版社
  • 《工业SCADA系统信息安全技术》饶志宏等·国防工业出版社
  • 《工业控制系统信息安全》肖建荣·电子工业出版社
  • 《工业控制系统安全等级保护方案与应用》蔡皖东·国防工业出版社
  • 《工业网络安全—智能电网,SCADA和其他工业控制系统等关键基础设施的网络安全》[美] Eric D.Knapp·国防工业出版社
  • 《智能电网安全:下一代电网安全》 托尼•弗里克·国防工业出版社

2.3 高手篇

经过以上阶段的学习,先想必对工控安全有一定的认识。本阶段主要学习的内容是固件分析和漏洞挖掘两部分。

2.3.1 固件分析

首先,固件逆向分析是在不对嵌入式系统进行实际运行的情况下,通过对固件文件进行逆向解析,分析固件中各代码模块的调用关系及代码内容,从而发现嵌入式系统中可能存在的漏洞及后门的一种技术手段。分析过程中,将会涉及到固件的识别和解压、固件的静态分析等技术。

固件的识别和解压,可以借用一些成熟的工具软件,如:Binwalk、BAT(Binary Analysis Toolkit)等。对二进制可执行文件进行反汇编分析,可以借用一些成熟的工具软件,如:IDA Pro、Capstone 等。

2.3.2 漏洞挖掘

最后,就是漏洞挖掘,也是最为高阶的学习内容,通过前面学习的基础基本就可进入此阶段了,综合利用上述内容对工业控制系统中的设备、软件、网络等内容进行渗透测试。

目前工控漏洞挖掘方法有很多种,常见的方法包括:基于工控协议的模糊测试漏洞挖掘方法、基于固件逆向分析的漏洞挖掘方法、基于工控软件 ActiveX 控件的漏洞挖掘方法、基于 VxWorks 操作系统的漏洞挖掘方法等,我们将会一一进行学习和研究。

三、如何加入?

3.1 加入条件

招收要求:

  • 热衷于信息安全,对信息安全有着不可磨灭的热情;
  • 对工控系统有一定的认知,熟悉或了解一种或多种工控协议 ModBus、S7、Ethernet/IP、DNP3、OMRON FINS、IEC104、OPC UA、OPC DA 等;
  • 熟悉主流的漏洞利用框架及扫描工具,懂得 Fuzz 技术;
  • 英语能力较强,对国外文章进行翻译复现;
  • 掌握至少一门编程语言,如 Python,Java、Lua 等,至少能上手写代码;
  • 人品良好,不将团队内部资料外泄;
  • 有分享精神,每周输出一篇短文章,每月输出一篇长文章(包含但不限于学习经验、学习笔记、总结知识、分析漏洞原理、靶机实验报告);
  • 执行力强,不推诿分内之事,能及时完成分配的任务;
  • 此未参加任何黑产、非法事项。

加分项:

  • 具备攻防能力者优先;
  • 具备设备漏洞挖掘能力者优先;
  • 掌握国内 DCS 相关协议者优先。

3.2 你能得到

加入我们有什么好处呢?

  • 拥有一群志同道合的朋友;
  • 个人技术提升、团队归属感、职业发展;
  • 获得各大公开课、沙龙的参与演讲机会;
  • 在日后工作中可多出一份项目经验;
  • 获得许多团队的内部资料(学习资料、测试环境(PLC、DCS、RTU等)等)及内部福利;
  • 参与论文、团队安全系列图书的撰写。

3.3 加入方式

我是 Ms08067 实验室工控安全小组的 laucyun,如果您想加入我们,一起成长、学习,并且符合以上条件。

请将个人简介发送至 liu#laucyun.com(替换#为@即可),抄送 8946723#qq.com(替换#为@即可),邮件标题为 “[加入申请]-工控安全-xxx”,并包含如下内容:

  • 个人基本情况介绍;
  • 研究方向;
  • 相关技能;
  • 原创文章、研究成果、项目经历等。

Tags