描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111575948丛书名: 信息安全技术丛书
内容简介
基于工业控制系统的特点,本书从渗透测试的角度介绍了针对工控系统进行安全研究涉及的诸多方面内容,为工控系统的研究人员提供了有益参考。本书共分为三个部分:第壹部分介绍工控系统的架构与组成、工控系统的风险评估以及工控系统的威胁情报;第二部分介绍工控系统渗透测试、协议、设备、应用,以及针对工控系统的“0-day”漏洞挖掘与恶意代码;第三部分介绍工控系统安全标准及风险缓解策略。
目 录
目 录 Contents
译者序
作者简介
技术审校者简介
前言
致谢
部分 做好准备:工业控制系统渗透测试就位
案例研究 部分:无尽的灾难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 6244325
译者序
作者简介
技术审校者简介
前言
致谢
部分 做好准备:工业控制系统渗透测试就位
案例研究 部分:无尽的灾难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 6244325
前 言
前言 Preface黑客大曝光—工业力量毫无疑问,本书沿袭了《黑客大曝光》系列书籍的一贯风格。无论称之为渗透测试(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”,那么恭喜啦,因为你肯定拥有巨额的网络安全预算还有大量合格的工作人员!但是即便如此
监控和数据采集系统(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”,那么恭喜啦,因为你肯定拥有巨额的网络安全预算还有大量合格的工作人员!但是即便如此
评论
还没有评论。