首页>参考读物>计算机科学与技术>安全

黑客大曝光:工业控制系统安全
作者 : [美] 克林特 E.博顿金(Clint E.Bodungen) 布莱恩 L.辛格(Bryan L.Singer)亚伦·施比卜(Aaron Shbeeb) 凯尔·威尔霍伊特(Kyle Wilhoit) 斯蒂芬·希尔特(Stephen Hilt) 著
译者 : 戴超 张鹿 王圆 译
出版日期 : 2017-09-22
ISBN : 978-7-111-57594-8
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 335
开本 : 16
原书名 : Hacking Exposed Industrial Control Systems: ICS and SCADA Security Secrets & Solutions
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书系统介绍了工控系统的风险评估方法,重点关注作为风险评估核心的渗透测试,从攻击角度来探讨工控安全问题。本书对工控协议、工控设备和应用进行了漏洞分析,并给出了应对措施。

图书特色

·作者简介·

克林特 E.博顿金(Clint E. Bodungen) 业界公认的ICS/SCADA安全研究员与渗透测试专家,拥有20多年的安全行业从业经验。
布莱恩 L.辛格(Bryan L. Singer)持有CISSP、CAP认证,是行业公认的工业安全专家,目前是Kenexis安全公司的首席调查员。
亚伦·施比卜(Aaron Shbeeb)在多个研发和安全岗位工作了十余年,其中包括与ICS/SCADA相关的职位,专注于安全程序设计实践方面的研究。
凯尔·威尔霍伊特(Kyle Wilhoit)Trend Micro公司的高级威胁研究员,专注研究原始威胁、恶意软件、漏洞挖掘与分析以及互联网犯罪活动。
斯蒂芬·希尔特(Stephen Hilt)信息安全和ICS安全专家、研究员,曾经发布众多针对ICS的Nmap脚本,通过本地命令对ICS协议进行识别。

本书揭示了网络威胁源对石油管网、电网和核电站核心软硬件进行入侵的隐秘方法,并逐步展示了如何实施和维护具有针对性、高效性和高性价比的以ICS为重点的风险缓解框架。本书赋予你抵御削弱系统安全性甚至致命攻击时所必需的技能,使你了解如何评估风险、开展针对ICS的威胁建模、使用“保障ICS安全”的方式进行渗透测试以及阻隔恶意代码。作者借助著名的攻击案例来阐释具有可操作性的、能即刻部署的对抗措施。

通过阅读本书,你将学到:
评估暴露出的风险并拟订有效的风险管理计划
应用最新的针对ICS的威胁情报技术
使用威胁建模构建现实风险场景
实施定制且影响较小的ICS渗透测试策略
了解攻击者如何对工业协议进行漏洞利用
分析并加固ICS、SCADA设备以及应用程序
挖掘并消除未公开的“0-day”漏洞
对各种类型的恶意代码进行检测、拦截与分析

图书前言

黑客大曝光—工业力量
毫无疑问,本书沿袭了《黑客大曝光》系列书籍的一贯风格。无论称之为渗透测试(penetration testing或pentesting)、道德入侵(ethical hacking)还是红队测试(red team testing),本书主要从攻击的角度研究网络安全问题。而且,在本书中,我们主要研究工业控制系统(Industrial Control Systems,ICS)的网络安全(不管读者喜不喜欢,主题已经剧透出来了),根据情况也可以称之为in-security。
监控和数据采集系统(Supervisory Control and Data Acquisition,SCADA)、工业控制系统(ICS)以及运营技术(Operations Technology,OT)都是最近在提到工业系统时常用的“万能”术语。如果真想深究营销术语,还可以将工业物联网(Industrial Internet of Things,IIoT)添加进去。不过,先将这些热门词汇抛在一边,除了很多其他的行业术语,例如:过程控制域(Process Control Domain,PCD)、过程控制网络(Process Control Network,PCN)、过程控制系统(Process Control System,PCS)、集散控制系统(Distributed Control System,DCS)等,还有监控和数据采集系统(SCADA)以及工业控制系统(ICS)也都旨在描述工业系统特定但又互不相同的方面。但是,这两个术语经常被错误地互换使用。有鉴于此,为了简单起见,本书中我们使用“工控系统”(ICS)来指代工业系统的所有方面,即便我们知道这个术语未必在每种场合下都是正确的。
渗透测试……确定要在工业控制系统中进行吗
从传统角度来讲,当从“红队”或者说从攻击角度来讨论工控系统网络安全时,通常会遭到持怀疑态度并且忧心忡忡的工业资产所有者和运营人员的强烈排斥。从“蓝队”或者说从单纯的防御角度已经出版了若干本内容翔实的工控系统安全图书,然而在我遇到的来自不同工业部门的人员中,还是有人认为那些详细介绍“工控系统入侵”(ICS hacking)技术的图书压根儿就不该出版。这一“理论依据”主要是源自于这样一支思想流派:他们认为类似的信息(甚至包括向部分人士披露有关工控系统的漏洞)都应该妥善保管起来,只有特定的专业团队还有信息共享和分析中心(Information Sharing and Analysis Centers,ISAC)才能够获取这些信息。这一方法也被看作是一种阻止黑客获取敏感信息的努力。因为很多人担心这类信息会帮助黑客们制订工控系统攻击方案或者“入侵攻略”。而细究起来,这种“策略”其实是“不公开即安全”(security through obscurity)的另一种形式,IT社区早在20年前也是这样的心态。这也正是整个行业中工控系统安全的领军人物经常说“工控系统的安全落后于其他行业十多年”的原因之一。
但是,真相是黑客们已经知道了这些信息,或者最起码知道如何获取这类信息,不论业界已经尽了多大努力来隐藏它们。不管用户喜不喜欢,通过主流的隔离措施与不公开的方法已经难以实现对工业系统的保护。正所谓木已成舟,已成定局。既然攻击者已经知道了工控系统和SCADA系统的存在,并且了解了它们的重要性,而且坦率地讲,攻击者也清楚它们到底有多脆弱,那么自然会对开展攻击燃起狂热的兴趣。事实上,与资产所有者以及运营人员在学习入侵技术以及如何实施入侵方面所付出的时间相比,黑客们往往花费了更多时间来学习工控系统,以及如何入侵这些系统。支撑这一发现的证据可以从世界各地众多“黑客”大会的会议日程中清晰地看到,例如著名的Black Hat和DefCon,而这只是其中的两个会议。事实上,大多数安全会议现在都会开辟出特色鲜明的“工控系统小镇”,让与会者可以体验一把工控系统设备的入侵。无论读者是否相信,工控系统入侵正在迅速成为主流话题。实际情况是,限制该类信息的获取不仅难以阻止黑客们获取信息,反而阻碍了真正需要这类信息的人们获取信息(工业资产所有者以及运营人员),更不要说工业社区中已经共享了大量关于安全事件和漏洞的信息。然而,关于工控系统漏洞利用以及入侵技术的重要信息往往会被忽视。
为什么了解攻击技术这么重要?简言之就是,如果能够像攻击者一样思考,并且了解其做法,那么就有更多的机会阻挡攻击者的入侵。想想看,以读者最喜欢的运动为例(无论是团队的还是个人的),是否有人在不了解对手攻击方式的情况下就踏上赛场?当然了,肯定会有这种情况,但是在这种情况下,通常是场有利于对手的一边倒的比赛。在对对手的攻击策略与攻击方法一无所知的情况下,实施针对攻击的有效防御是相当困难的一件事。在工控系统网络安全领域中也是这样。对攻击、漏洞利用和恶意代码感染的方法与技术细节越了解,有的放矢地开展防御就越准确、越高效,性价比也越高。考虑一下,下面哪种方法听起来更加高效、性价比更高?
1)以“层次防御”以及网络安全标准合规性的名义,尽可能多地尝试采用一揽子“最佳实践”。
2)对于经过验证得出的的确存在漏洞的地方,根据其潜在影响的严重程度进行优先级排序,针对最有可能面临的威胁部署相应的对抗措施。
如果回答是“1”,那么恭喜啦,因为你肯定拥有巨额的网络安全预算还有大量合格的工作人员!但是即便如此,仍然需要针对试探性的攻击威胁构建安全保障网。
对于存在合规要求的某一行业来说,合规性通常是其实施和改进网络安全控制措施的唯一强制驱动力,其预算往往捉襟见肘,即便如此,聘请渗透测试人员仍会体现出巨大的价值。事实上,预算不足正是渗透测试的用武之地。在结合适当的风险评估过程(详见第2章)使用时,渗透测试(详见第4章)与威胁建模(详见第3章)相结合的方式能够提供更有针对性而且更加高效的风险管理策略。由于具备同恶意攻击者一样的技术水平和知识储备,渗透测试人员能够帮助验证潜在威胁是否确实会对系统构成巨大风险(同只采用传统的风险评估方式相比具有更高的准确性)。这些信息有助于改进风险缓解策略、明晰目标资源中需要关注的重点、确定可以“接受”哪些风险,从而降低对目标资源(金钱、时间和人力)的影响。
很多人不会立即将渗透测试和威胁建模关联起来。但是,渗透测试人员在网络攻击方法方面所具备的经验与知识储备在威胁建模过程中确实是非常宝贵的资源。
当谈到工控系统的可用性、正常运行时间以及功能安全时,(由于渗透测试通常具有主动性和侵入性的特点)往往会存在一些对渗透测试的偏见。如果未经规范培训的测试人员没有采用能够保障工控系统安全(“ICS safe”)的测试方法,这种担心确实不是空穴来风。很多在IT系统中没有危害的渗透测试方法可能会在工控系统环境中出现副作用,以至于给安全与生产带来风险。甚至非常简单的测试方法,比如端口扫描在工控系统环境中通常也是禁止的。
所以,如何应用渗透测试来保障工控系统安全呢?首先,本书将教会读者在不影响生产系统的前提下,如何应用针对工控系统的渗透测试方法与技术。其次,我们意图展示如何通过以基于威胁建模的方法应用渗透测试知识,甚至在无须开展主动渗透测试的情况下,制订出更加高效(以及性价比更高)的风险缓解策略与部署方案。
本书所涵盖的内容
无论是作为工控系统渗透测试指南还是用于离线威胁建模,本书旨在帮助读者了解攻击者所具备的“攻击性”知识,使读者在风险管理方面所做出的努力具有更高的准确性与性价比。我们在这里使用术语“管理”的原因在于风险缓解并不总是最优的选择。在某些情况下,最优的解决方案可能只是降低、接受或者转移风险。
依据若干工业安全标准所提出的要求,必须开展渗透测试,而且渗透测试也应该成为每个风险管理项目的一部分,但我们的本意并不是为具体的工控系统网络安全标准提供“合规性”指南。本书也无意于作为工控系统风险缓解或管理技术的专用指南。正如前文提到的,从这一角度出发已经出版了很多书籍,因此没有必要再进行重复。而我们将要分析研究的风险缓解技术以及对抗措施则与本书中介绍的攻击方式与策略密切相关。
我们将会讨论在CVE以及ICS-CERT公告中已经公开披露的几个漏洞及其众多技术细节,还有相关的漏洞利用技术。但是,在工控系统厂商以及其他业界成员开始提心吊胆之前,需要指出的是我们不会披露0-day漏洞(未公开漏洞)与漏洞利用工具。本书中所讨论的全部内容都可以采用各种方式公开查询得到。我们所做的仅是对其中部分CVE与ICS-CERT公告进行剖析和研究,以展示如何开展针对工控系统设备、应用程序与环境的渗透测试、脆弱性研究以及威胁建模。
本书也不打算对工控系统或者通用渗透测试方法进行全面介绍。但是,当我们认为出于功能所需并且与上下文相关时,将会提供辅助资料,或者在需要进一步指导或者额外信息的事件中指明正确的方向。例如,部分读者可能并不了解工控系统环境的运行机制,所以本书将从较高的层面对工控系统进行有一定深度的基础介绍,以帮助读者理解本书的内容。(那些对工控系统已经有深入了解的读者可以忽略这部分内容。)类似地,还有部分读者可能对渗透测试的基础内容不太熟悉,对此本书也提供了大量关于传统渗透测试方法的参考资源,涵盖了从基础入门到高级技巧的所有内容。
我们的总体目标主要关注于本书各主题所涉及的同工控系统有关的细节。放心好了,对于想要进一步获取本书未涉及的细节以及指导的读者,我们也提供了资料、链接,以及参考文献以供读者进行更深入的了解。
本书面向的读者
本书可以作为对工控系统网络安全感兴趣的读者的参考用书,但是,最终本书面向的对象是对工控系统有关的脆弱点、威胁或威胁建模,以及渗透测试技术等技术细节感兴趣的读者,包括:
承担针对工控系统的渗透测试项目,以及希望了解工控系统渗透测试技术的渗透测试人员
监控工控系统网络的网络安全分析人员
工控系统网络安全威胁情报分析人员
致力于工控系统相关设备与应用程序漏洞挖掘的研究人员
研发适用于工控系统设备、应用、网络产品的网络安全产品开发商
工控系统厂商
对工控系统渗透测试技术感兴趣的网络安全爱好者以及渗透测试人员
其他对本书感兴趣的读者群体包括:
工控系统资产所有者以及负责招聘渗透测试团队的管理人员
工控系统资产所有者以及负责工控系统安全团队的管理人员
虽然这些读者群不需要知道工控系统渗透测试过程中的所有技术细节,但是他们应该对工控系统网络安全威胁与渗透测试技术有一个大概的了解。
本书的组织方式
在学习本书的过程中无须逐页阅读。例如,对工控系统环境已经非常熟悉的读者可以跳过第1章。渗透测试人员则可以直接跳到与其当前测试内容有关的具体章节。不过,书中每个主题的安排顺序均同现实中渗透测试项目的实施流程相一致。所以,为了了解工控系统渗透测试的全过程,从头开始逐页阅读也是个不错的选择。资产所有者以及管理人员也可以采用这种方式,来获取对整个工控系统渗透测试和威胁建模过程,以及各组成部分的完整认识。
本书的每一部分都会安排案例分析。这些案例分析虽然是虚构的,但是其背后蕴含的内容都是由可行的事件所组成的,将这些内容组合起来可以构成一个完整的场景。故事中涉及的特定行业、系统以及装置设备的细节并未明确描述,所以来自不同行业的读者都可以从中找到与自己行业似曾相识的感觉。在阅读这些案例分析时,读者可以尝试着将自己带入工控系统安全专家的角色,看看自己能否找出故事中的机构、人员所犯下的错误,正是这些错误最终导致了信息泄露以及入侵攻击。关于这些案例分析中用到的方法、技术的参考文献和技术细节可以在每个案例分析的结尾位置或者案例分析所在的章节中找到。对抗措施在全书都可以找到,也可以在第三部分找到。
第一部分(第1章至第3章)主要包括从较高层面构建渗透测试项目的相关内容,为后续内容做铺垫,并对工控系统、风险评估以及威胁建模过程进行了简短概述。
第二部分(第4章至第8章)深入介绍了工控系统渗透测试过程中的细节。首先对工控系统渗透测试策略进行了概述,然后以《黑客大曝光》式的风格介绍了细节、技术以及实例。为了更详尽地涵盖工控系统渗透测试技术的方方面面,我们对工控系统设备、应用程序以及协议中最常见漏洞类别中的部分样本进行了分析。每类都表示若干种相关的、现实中已经披露的漏洞,包括与之关联的ICS-CERT公告。本着渗透测试的“完整性”原则,本书就工控系统漏洞研究进行了高级进阶内容的入门介绍(再提醒一下,书中未披露现实中存在的任何0-day漏洞)。由于恶意代码迅速成为工控系统安全中的一个重要主题,所以我们对工控系统恶意代码也进行了分析,并介绍了其实现机制及对抗措施。
第三部分(第9章和第10章)主要通过研究工控系统网络安全策略来形成风险评估过程的闭环,但是仅仅涉及了本书中讨论到的攻击技术。正如前文所述,已有大量内容对工控系统网络安全对抗措施进行介绍,我们会在适当的位置做出提示帮助读者获取相关信息。本部分的目标是帮助读者针对攻击采取正确的响应与对抗措施。因此,为了便于参考,针对各自章节攻击方式所提出的对抗措施也均会进行相应的总结。
最后,第四部分的附录中包含了术语表以及在风险评估、威胁建模及渗透测试项目中卓有成效的流程图和图表。
各章概述
下面是对各个章节的概要,分别对各章节的内容进行了简要介绍。
第一部分 做好准备:工业控制系统渗透测试就位
第1章 工业控制系统安全概述
从较高的层次简短介绍工控系统架构、组成部分、功能以及术语等方面,读者能够获取到理解本书概念所需的基本工控系统知识。
第2章 工业控制系统风险评估
就如何在工控系统风险评估过程应用本书内容以及如何根据环境开展工控系统渗透测试提供了一个简短的高级指南。
第3章 通过威胁建模获取具有可操作性的工业控制系统威胁情报
虽然数十年来术语威胁情报(threat intelligence)在情报界一直是个不可或缺的概念,但是在工业界中则是最近才流行起来的一个时髦词汇。本章讨论了如何利用威胁情报以及如何利用获取的相关资源对工控系统风险管理策略进行改进。
第二部分 工业控制系统入侵
第4章 渗透测试策略
为了得到准确、符合实际的结果以及保护运营过程的功能安全,必须拟定合适的工控系统策略。本章主要基于现实的风险场景讨论工控系统渗透测试策略,并就避免对工控系统生产环境造成影响的方法与步骤进行了概述。
第5章 工业控制系统协议攻击
本章详细介绍了在常见工控系统协议中发现的漏洞以及与之对应的漏洞利用技术。
第6章 工业控制系统设备与应用攻击
本章结合ICS-CERT公告,研究了工控系统设备和应用程序的漏洞,以及相应的漏洞利用技术。
第7章 工业控制系统“0-day”漏洞研究
大部分渗透测试依赖于众多的已知漏洞。但是,未披露甚至未发现的漏洞(即0-day漏洞)却会带来更加严重的问题。因此,具备独立挖掘未公开漏洞的能力在风险管理策略中会赋予策略制订者以关键优势。虽然仅仅一个章节不足以涵盖漏洞研究的方方面面,但是,本章不仅对工控系统漏洞挖掘策略进行了概述,还提供了可供进一步研究的关键资源。
第8章 工业控制系统恶意代码
自从2010年遭受Stuxnet攻击以来,工业界清醒地认识到恶意代码已经将工控系统环境作为了攻击目标,并且确实能够对工控系统环境造成影响。自从那时起,众多攻击活动均以Stuxnet为模板,开发出了针对工控系统的恶意代码,用以潜入、感染关键系统,甚至对关键系统造成破坏。本章分析了恶意代码开发人员在编写专门针对工控系统环境的恶意代码时所用到的结构、机制及技术。最后,为了帮助读者对恶意代码所能造成的工控系统威胁拥有更加深入的认识,本章对部分现实中针对工控系统的知名恶意代码攻击活动进行了介绍。
第三部分 融会贯通:风险缓解
第9章 工业控制系统安全标准入门
本章对常见的工控系统网络安全标准,以及这些标准同本书中所提及的技术与内容的关联进行了简要介绍。
第10章 工业控制系统风险缓解策略
虽然本书并不想成为一本关于工控系统网络安全对抗措施技术的详细指南,但第10章仍然对与本书主题相关的工控系统风险缓解策略及对抗措施进行了介绍。
第四部分 附录
附录A 缩略语表
附录A中的内容是工控系统网络安全中常用的缩略语。
附录B 术语表
附录B中的内容定义了工控系统网络安全中常用的术语。
附录C 工业控制系统风险评估与渗透测试方法流程图
附录C中提供了一组开展工控系统风险评估以及渗透测试的模板与流程图。
基本组成模块:攻击与对抗措施
同其他带有《黑客大曝光》题目的图书一样,本书的基本组成模块也是在“入侵”章节中所讨论的攻击与对抗措施。本书中对攻击的强调方式同整个《黑客大曝光》系列中的其他图书一样:
攻击图标
采用这种图标对攻击进行强调可以很容易地识别出特定的渗透测试工具和方法,帮助读者快速定位到说服管理层为新安全计划提供资金支持时所需要的信息。当涉及对抗措施时,我们也遵循了“黑客大曝光”系列图书采用的一贯方式,在每次介绍完一种攻击方式或者一系列相关的攻击方式之后,紧接着介绍对抗措施。对抗措施的图标也保持不变:
对抗措施图标
该图标提醒读者下面介绍的将是关键修复信息。
在第5章和第6章中对每种攻击方式的风险评级是这样计算的,首先对各攻击方式的流行度、难易度以及影响力进行赋值,然后对各单项得分取平均值。
流行度:  流行度基于实施攻击的工具的可用性,1表示可用性最低,10表示可用性最高
难易度:  难易度基于攻击实施的难易程度,例如,如果需要操作某些数据包来开展攻击,那么1表示最困难,10表示最容易
影响力:  影响力是如果攻击成功对工控系统的影响程度,1表示影响最小,10表示造成了关键影响
风险评级:  上述3个值的平均值即整体的风险评级

上架指导

计算机\安全

封底文字

本书揭示了网络威胁源对石油管线、电网和核电站核心软硬件进行入侵的隐秘方法,并逐步展示了如何实施和维护具有针对性、高效性和高性价比的ICS为重点的风险缓解框架。本书赋予读者在抵御衰弱的、可能致命的攻击时所必需的技能,使读者了解如何评估风险、开展针对ICS的威胁建模、使用“保障ICS安全”的方式进行渗透测试以及阻隔恶意代码。整个过程中,作者借助著名的攻击案例来对脆弱性,以及具有可操作性的、能即刻部署的对抗措施进行了阐释。

你将会学到:
 评估暴露出的风险并拟订有效的风险管理计划
 应用最新的针对ICS的威胁情报技术
 使用威胁建模构建现实风险场景
 实施定制的且影响较小的ICS渗透测试策略

 了解攻击者如何对工业协议进行漏洞利用
 分析并加固ICS、SCADA设备以及应用程序
 挖掘并消除未公开的“0-day”漏洞
 对各种类型的恶意代码进行检测、拦截与分析

作者简介

[美] 克林特 E.博顿金(Clint E.Bodungen) 布莱恩 L.辛格(Bryan L.Singer)亚伦·施比卜(Aaron Shbeeb) 凯尔·威尔霍伊特(Kyle Wilhoit) 斯蒂芬·希尔特(Stephen Hilt) 著:
Clint E. Bodungen,业界公认的ICS/SCADA安全研究员与渗透测试专家,拥有20多年的安全行业从业经验。 Bryan L. Singer,持有CISSP、CAP认证,是行业公认的工业安全专家、Kenexis安全公司的首席调查员。 Aaron Shbeeb,在多个研发和安全岗位工作了十余年,其中包括与ICS/SCADA相关的职位,并专注于安全程序设计实践方面的研究工作。 Stephen Hilt,信息安全和ICS安全专家、研究员,曾经发布过众多针对ICS的Nmap脚本通过本地命令对ICS协议进行识别。 Kyle Wilhoit,Trend Micro公司的高级威胁研究员,专注研究原始威胁、恶意软件、漏洞挖掘与分析以及互联网犯罪活动。

译者序

2016年2月,一部名为《Zero Day》的纪录片在柏林国际电影节上映,这部影片在烂番茄影评网站上获得了平均为7.4的评分(同年《美国队长3:英雄内战》平均评分为7.6),影片纪录了一起在2010年人们广泛关注的恶意代码攻击事件:一款名为Stuxnet的蠕虫发起了针对西门子公司数据采集与监控系统SIMATIC WinCC的攻击。自此,针对工控系统的潘多拉魔盒被打开了……
Stuxnet蠕虫攻击事件发生之后,人们纷纷将目光聚焦到了工业控制系统之上。那么,工业控制系统是什么?与物联网、工业4.0、工业物联网、SCADA相比,工控系统有什么区别?针对工控系统的攻击为什么会造成那么大的破坏?我们如何来保障工控系统的安全?等一系列问题纷至沓来。
根据美国国家标准技术研究院(NIST)给出的定义,工业控制系统(Industrial Control System,ICS)是多种控制系统的总称,包括监控和数据采集系统(SCADA)、集散控制系统(DCS),以及工业部门和关键基础设施中常见的可编程序控制器(PLC)等控制系统。工业控制系统通常由共同作用以期实现某一工业用途(例如,物质或能量的制造、运输)的控制部件(例如电器、机械、液压、气动)组合而成。当前,工控系统已经广泛应用于电力、石油、天然气、核能、化工、食品、医疗、水利、交通等众多关键基础设施之中。
早期的工业控制系统同互联网物理隔离,且大多采用专用软硬件,因此即便工控系统中存在安全隐患,但外界既难以接触到工控系统也难以展开对工控系统的研究。但是,随着IT技术在工业环境中的广泛应用,通用计算设备、通用操作系统开始用于工控系统的实现,工控协议也开始基于TCP/IP协议构建,传统IT系统所面临的威胁蔓延到了工控系统环境当中。尤其自从2010年Stuxnet蠕虫出现以来,针对工控系统领域的关注度飙升,2011年至2015年工控系统的安全事件经历了一段时期的快速增长,直到2016年增速才逐渐放缓。
虽然同传统IT技术之间存在着千丝万缕的联系,然而由于工业控制系统在结构和作用上的特点,使得其同传统IT系统安全相比呈现出了诸多区别:
工控系统设计时未从信息安全角度进行考量
工控系统在设计时大多仅仅考虑了功能安全,即确保工控系统能够正确执行其功能,并且当系统失效或出现故障时,设备或系统仍然能够处于安装状态或进入到安全状态。但是,工控系统环境中的设备、协议及应用程序在设计之初并没有考虑到信息安全问题。某些情况对于IT网络而言通常是正常的,然而在工控系统环境中却可能带来不可逆转的负面影响。而且,工控系统中的应用程序和协议最初都是在没有考虑认证和加密机制以及常见网络攻击方式的情况下设计开发的。
工控系统中信息安全三要素的优先级不同
传统IT系统安全中的三要素分别是保密性、完整性和可用性,但是在工控系统中需要对三要素的顺序进行调整。对于工控系统而言,系统的可用性至关重要,因此需要将可用性放在考虑安全问题的第一位,即可用性、完整性、保密性。此外,优先级的变化不仅仅体现在安全要素的排序之上,更关键的是在应对工控系统安全问题时按照该优先顺序考虑问题。
工控系统设备的处理能力过载阈值较低
许多工控系统设备,比如PLC与RTU均用到了嵌入式处理器,而嵌入式处理器在特定条件下可能非常容易过载。当嵌入式处理器过载时,就可能会对设备的可用性造成影响,导致包括设备响应中断、复位、故障、网络通信中断,甚至出现配置丢失的情况。
工控系统设备的网络堆栈处理能力较弱
很多工控系统设备处理异常流量的能力较为薄弱。当向工控系统设备发送异常流量时,例如超长数据包、畸形数据包、高速网络包,抑或是未使用预定协议的数据包,也会导致设备响应中断、复位、故障、网络通信中断等情况。
工控系统环境中大量使用遗留的老式系统
无论是控制设备本身还是老式的服务器与工作站,大多数工控系统环境中依然保留有大量遗留的老式系统,这些老式系统甚至还在使用Windows XP、Windows NT、Windows 95等操作系统。这些遗留的老式系统不仅有些已经停止更新,而且即便是安装某些软件对其进行加固都可能会导致资源耗尽与系统崩溃。
工控系统网络的网络带宽较低
同传统的业务IT网络相比,许多工控系统网络用于网络连接的网络带宽较低,其原因在于工控系统使用了老旧的网络设备或者使用了工业无线网络,其中也包括移动宽带和卫星通信。所以,引入高速网络流量可能会导致网络延迟甚至网络通信的中断,哪怕看似无害的网络流量也可能会导致部分工控系统网络的延迟。而对于高可用性网络,延迟也是不可接受的。
工控系统补丁更新不及时且难以应用
大多数工控系统环境都无法像传统的IT系统环境那样经常定期发布补丁。而且,对于基于老式操作系统开发的工业控制系统,甚至可能已经没有厂家能够提供可用的安全补丁。同时,由于工控系统软件与其底层之间紧密耦合,补丁更新必须进行代价高昂、耗时甚多的回归测试。而对补丁更新后的软件进行测试以及补丁后续分发过程中的耗时,则可能导致工控系统在一段相当长的时间范围内存在漏洞。此外,工控系统本身所具有的关键性和敏感性也使得对其进行补丁修复工作较为困难,工控系统中的很大一部分属于“高可用性”系统,因此在定期维护时间窗口之外进行关机来安装更新和补丁程序通常是不现实的。即使是在定期维护时间窗口之内,许多传统的网络安全措施(如反病毒软件、安全更新和补丁)也都有可能对工控系统设备和网络产生负面影响。
基于工业控制系统的自身特点,本书从渗透测试的角度介绍了针对工控系统进行安全研究所涉及的诸多方面,必将为工控系统的研究人员提供有益的参考。全书的组织结构与概要如下:
全书共分三个部分:
第一部分包括第1章至第3章,主要对工控系统的架构与组成、工控系统的风险评估以及工控系统的威胁情报进行介绍。
这一部分主要回答了以下问题:
工控系统主要功能有哪些?
工控系统中的普渡参考模型是什么?
常见的控制系统有哪些?
工控系统风险评估的评估与度量对象有哪些?
如何针对工控系统开展风险评估?
工控系统威胁情报的概念与作用是什么?
工控系统环境中如何开展威胁建模?
第二部分由第4章至第8章组成,主要对工控系统渗透测试、协议、设备、应用以及针对工控系统的“0-day”漏洞挖掘与恶意代码进行介绍。
这一部分主要回答了以下问题:
工控系统渗透测试的测试方法有哪些?
针对工控系统与IT系统开展渗透测试的区别有哪些?
如何部署工控系统渗透测试环境?
工控系统渗透测试的测试策略都有哪些?
工控系统主要采用哪些协议?针对这些协议主要有哪些攻击方式?
针对工控系统设备与应用主要有哪些攻击方式?
如何着手开展工控系统“0-day”漏洞研究?
针对工控系统的恶意代码有哪些类型?各有什么特点?
第三部分包括第9章和第10章,对工控系统安全标准及风险缓解策略进行介绍。
这一部分主要回答了以下问题:
工控系统合规性与安全性之间有什么关系?
常见的工控系统安全标准有哪些?
从哪些角度考量有助于缓解工控系统常见风险?如何缓解?
工控系统的风险缓解过程包含哪些步骤?
本书第3章至第8章由戴超翻译,第1章、第2章、第9章、第10章由张鹿翻译,全书由戴超、张鹿进行审校。在前期翻译过程中,王圆博士也开展了大量工作,在后期审校过程中,海康威视网络与信息安全实验室王滨博士、北京理工大学王安博士提供了大量宝贵意见,在此一并表示衷心的感谢。最后,感谢机械工业出版社华章分社的编辑朱劼、张锡鹏、陈佳媛在本书翻译过程中提供的帮助,感谢他们的全力支持与耐心指导,在全书的翻译过程中使我们少走了很多弯路。
在阅读本书的过程中,读者可将错漏之处与问题反馈给我们,联系邮箱为icsquestion@163.com,希望广大读者不吝赐教。

戴超 张鹿
2017年3月

图书目录

译者序
作者简介
技术审校者简介
前言
致谢
第一部分 做好准备:工业控制系统渗透测试就位
案例研究 第一部分:无尽的灾难2
第1章 工业控制系统安全概述4
1.1 信息物理系统:机器崛起5
1.1.1 传统威胁的全新攻击向量7
1.1.2 后果:这将导致什么呢8
1.1.3 理解工控系统所面临的现实威胁与风险9
1.2 工业控制系统概述12
1.2.1 画面12
1.2.2 监视12
1.2.3 控制12
1.2.4 用于工控系统的普渡参考模型13
1.2.5 常用控制系统、设备和组件的类型15
1.3 本章总结20
1.4 延伸阅读20
第2章 工业控制系统风险评估22
2.1 工控系统风险评估入门22
2.1.1 难以确定的工控系统“风险度量标准”23
2.1.2 风险评估标准23
2.1.3 工控系统风险评估中评价和测量的内容24
2.1.4 工控系统风险评估过程概述27
2.2 工控系统风险评估过程步骤28
2.2.1 第1阶段:资产识别与评定30
2.2.2 第2阶段:脆弱性识别与威胁建模36
2.2.3 后续步骤51
2.3 本章总结51
2.4 延伸阅读52
第3章 通过威胁建模获取具有可操作性的工业控制系统威胁情报53
3.1 威胁信息与威胁情报54
3.2 威胁建模:将工控系统威胁信息转化为“可操作”的威胁情报56
3.2.1 工控系统杀伤链56
3.2.2 工控系统威胁建模过程58
3.2.3 信息收集60
3.3 本章总结78
3.4 延伸阅读78
案例研究 第二部分:威胁涌现79
延伸阅读81
第二部分 工业控制系统入侵
案例研究 第三部分:乘虚而入84
延伸阅读86
第4章 渗透测试策略87
4.1 渗透测试的目的88
4.2 黑盒测试、白盒测试与灰盒测试90
4.3 特殊考量:工控系统渗透测试不同于IT系统渗透测试91
4.4 实验环境的部署93
4.4.1 从“类似”配置的系统中取样93
4.4.2 虚拟化94
4.4.3 装备99
4.5 测试规则100
4.6 风险场景的运用101
4.7 工控系统渗透测试:测试策略101
4.7.1 侦察(“踩点”)102
4.7.2 外部测试103
4.7.3 跳板攻击105
4.7.4 网络之外的考虑:非对称与可替换的攻击向量107
4.7.5 内部测试:针对工控系统网络的测试108
4.8 本章总结112
4.9 延伸阅读112
第5章 工业控制系统协议攻击114
5.1 Modbus协议114
5.1.1 Modbus协议中间人攻击119
5.1.2Schneider终止CPU运行攻击119
5.1.3 Schneider功能码90鉴别攻击121
5.2 EtherNet/IP协议122
5.2.1 EtherNet/IP协议身份鉴别请求攻击124
5.2.2 EtherNet/IP协议中间人攻击126
5.2.3 EtherNet/IP协议终止CPU运行攻击126
5.3 DNP3协议127
5.3.1 DNP3 协议模糊测试攻击131
5.3.2 DNP3协议鉴别攻击133
5.4 Siemens S7通信协议134
5.4.1 S7协议终止CPU运行攻击135
5.4.2 S7协议鉴别攻击141
5.4.3 S7 协议口令暴力破解攻击144
5.5 BACnet协议147
5.6 其他协议152
5.6.1 OMRON FINS协议鉴别攻击152
5.6.2 PCWORX协议鉴别攻击153
5.7 协议攻击的对抗措施154
5.7.1 更新固件154
5.7.2 强网络隔离和网络安全155
5.7.3 口令暴力攻击的对抗措施155
5.8 本章总结156
5.9 延伸阅读156
第6章 工业控制系统设备与应用攻击157
6.1 软件的漏洞利用158
6.1.1 若干基本原理158
6.1.2 缓冲区溢出159
6.1.3 整型溢出:上溢、下溢、截断与符合失配164
6.1.4 指针操纵168
6.1.5 格式化字符串172
6.1.6 目录遍历175
6.1.7 DLL劫持178
6.1.8 注入182
6.1.9 跨站脚本186
6.1.10 跨站请求伪造189
6.1.11 硬编码值利用191
6.1.12 暴力攻击192
6.2 所有软件皆有漏洞194
6.3 本章总结194
6.4 延伸阅读195
第7章 工业控制系统“0-day”漏洞研究196
7.1 像攻击者一样思考197
7.2 步骤1:目标选取197
7.3 步骤2:文档研究198
7.4 步骤3:可访问接口的枚举与优先级排序198
7.5 步骤4:逐接口分析与测试199
7.5.1 模糊测试199
7.5.2 静态二进制分析205
7.5.3 动态二进制分析211
7.6 步骤5:漏洞利用214
7.7 融会贯通:MicroLogix案例研究216
7.7.1 漏洞研究的准备216
7.7.2 深入之前的工作217
7.7.3 打造定制固件218
7.8 本章总结223
7.9 延伸阅读224
7.9.1 工具224
7.9.2 一般文献224
第8章 工业控制系统恶意代码225
8.1 工控系统恶意代码入门225
8.1.1 代码释放器225
8.1.2 Rootkits227
8.1.3 病毒228
8.1.4 广告软件与间谍程序228
8.1.5 蠕虫229
8.1.6 木马229
8.1.7 勒索软件231
8.1.8 感染途径232
8.2 工控系统恶意代码分析234
8.2.1 实验环境234
8.2.2 Stuxnet235
8.2.3 Flame237
8.2.4 Havex237
8.2.5 BlackEnergy239
8.2.6 伪装为工控系统软件的犯罪软件241
8.2.7 Shamoon243
8.3 本章总结243
8.4 延伸阅读244
案例研究 第四部分:立足之地245
延伸阅读247
第三部分 融会贯通:风险缓解
案例研究 第五部分:何去何从250
延伸阅读251
第9章 工业控制系统安全标准入门252
9.1 合规性与安全性253
9.2 常见的工控系统网络安全标准254
9.2.1 NIST SP 800-82254
9.2.2 ISA/IEC 62443255
9.2.3 NERC CIP255
9.2.4 API 1164256
9.2.5 CFATS257
9.2.6 NRC Regulations 5.71258
9.2.7 NEI 08-09260
9.3 通用网络安全标准260
9.3.1 NIST网络安全框架260
9.3.2 ISO/IEC 27002:2013标准262
9.4 本章总结262
9.5 延伸阅读264
第10章 工业控制系统风险缓解策略265
10.1 风险处置266
10.2 工控系统的特殊风险因素266
10.2.1 机密性、完整性和可用性266
10.2.2 纵深防御267
10.2.3 功能安全268
10.3 针对工控系统风险缓解措施的考量268
10.3.1 工控系统网络方面的考量268
10.3.2 工控系统基于主机方面的考量269
10.3.3 工控系统物理访问方面的考量270
10.4 漏洞利用工具、威胁和漏洞270
10.4.1 漏洞利用工具的清除271
10.4.2 威胁的清除271
10.4.3 漏洞的清除271
10.5 工控系统风险缓解的其他方面考量284
10.5.1 系统集成问题284
10.5.2 合规性与安全性285
10.5.3 购买保险285
10.5.4 蜜罐286
10.6 风险缓解过程286
10.6.1 风险评估步骤的融合287
10.6.2 风险场景的融合287
10.6.3 成本效益分析的开展288
10.6.4 风险缓解策略的制订290
10.7 本章总结291
10.8 延伸阅读291
第四部分 附录
附录A 缩略语表294
附录B 术语表298
附录C 工业控制系统风险评估与渗透测试方法流程图311

教学资源推荐
作者: (美)Charles P.Pfleeger,Shari Lawrence Pfleeger
作者: 【英】基思 M.马丁(Keith M. Martin)著
作者: 马洪连,刘旸,韩瑜,孙亮
作者: David Challener;Kent Yoder;Ryan Catherman;David Safford;Leendert Van Doorn
参考读物推荐
作者: (英)Shakeel Ali;Tedi Heriyanto 著
作者: 周纪海 周一帆 马松松 陶芬 杨伟强 等著
作者: 刘焱 编著
作者: 张威 张耀疆 赵锐 等编著