基于工业控制系统的特点,本书从渗透测试的角度介绍了针对工控系统进行安全研究涉及的诸多方面内容,为工控系统的研究人员提供了有益参考。本书共分为三个部分:第壹部分介绍工控系统的架构与组成、工控系统的风险评估以及工控系统的威胁情报;第二部分介绍工控系统渗透测试、协议、设备、应用,以及针对工控系统的"0-day"漏洞挖掘与恶意代码;第三部分介绍工控系统安全标准及风险缓解策略。
About the Authors 作 者 简 介Clint Bodungen(休斯顿,得克萨斯州)Clint Bodungen是卡巴斯基实验室的一名关键基础设施安全高级研究员。在"网络"(cyber)安全行业拥有二十余年的从业经历,专门从事风险评估、渗透测试以及脆弱性研究。Clint Bodungent过半的工作经历都关注于工业控制系统。Clint Bodungen从11岁起开始编程,并在20世纪90年代中期为Unix/Linux操作系统开发应用程序与工具。在美国空军服役期间,Clint Bodungen的职业生涯拉开了序幕,他拥有工业设计技术学位并先后担任了单位的计算机系统安全官(Computer Systems Security Officer,CSSO)及OPSEC主管。Clint Bodungen在Symantec公司任职并对公司研发的IDS应用程序进行测试期间热衷于威胁研究与系统测试。2003年,一家工业自动化咨询公司聘请Clint Bodungen来帮助某家大型石油和天然气公司对其SCADA(Supervisory Control and Data Acquisition)系统进行安全保障,自那以后Clint Bodungen开始对工业控制系统有所涉猎。此后,Clint Bodungen领导了多项美国 能源机构的工业控制系统风险评估和渗透测试项目,并继续同工控系统厂商一起致力于脆弱性研究。Clint Bodungen设计并教授了十多门工控系统安全培训课程,并多次在工控系统网络安全大会上发表演讲。
Bryan L. Singer,CISSP,CAP(蒙特瓦洛,阿拉巴马州)Bryan Singer是Kenexis安全公司的主要投资人之一,重点关注工控系统以及SCADA系统安全问题,是一名业内公认的工业安全专家。Bryan Singer曾服役于美国陆军,从一名空降兵成长为情报分析员。此后,Bryan Singer多次参与大型工业网络架构及网络安全架构的设计、开发与实施工作,并在全球多个关键基础设施领域开展渗透测试与网络安全评估工作,涵盖领域包括电力、石油和天然气、食品饮料、核能、汽车、化工及制药等。Bryan Singer 2002年开始担任ISA-99/62443标准委员会的创始主席,直到2012年卸任。Bryan Singer擅长的技术包括软件开发、逆向工程、电子取证、网络设计、渗透测试以及网络安全脆弱性评估等等。Bryan Singer现居住于阿拉巴马州的蒙特瓦洛,多次就工控系统安全领域的问题撰写文章、发表演讲并分享经验。
Aaron Shbeeb(休斯顿,得克萨斯州)Aaron Shbeeb早在少年时期就对程序开发及计算机安全产生了兴趣。他毕业于俄亥俄州立大学,获得了计算机科学与工程理学学士学位。Aaron Shbeeb在软件开发以及安全岗位拥有十多年的从业经验,主要关注安全程序设计实践。从2008年起,在职业发展以及个人兴趣的双重驱动下,Aaron Shbeeb开始从事针对工控系统/SCADA系统的渗透测试以及安全研究工作。
Stephen Hilt(查塔努加,田纳西州)Stephen Hilt在信息安全与工控系统安全领域工作了十余年。从南伊利诺伊大学获得学士学位后,Stephen Hilt供职于美国一家大型电力公司。在该公司就职期间,Stephen Hilt在安全网络工程、事件响应、电子取证、评估以及渗透测试领域积累了丰富的经验。随后,Stephen Hilt开始关注工控系统评估以及NERC CIP(North American Electric Reliability Council,Critical Infrastructure Protection)评估工作。鉴于其从业经历,世界上的工控系统安全咨询公司Digital Bond聘请他担任工控系统安全顾问与研究员。2014年至2015年期间,Stephen Hilt了针对工控系统的众多Nmap脚本,通过本地命令对工控系统协议进行识别。目前,Stephen Hilt担任Trend Micro公司的高级威胁研究员,继续从事工控系统研究工作,并在其他高级研究领域开展了深入的探索。
Kyle Wilhoit(费斯图斯,密苏里州)Kyle Wilhoit是Trend Micro公司的一名高级威胁研究员,主要关注于捕获互联网上的恶意代码。在加入Trend Micro公司之前,Kyle Wilhoit就职于FireEye公司,主要关注国家层面的攻击者。只要Kyle Wilhoit没有去周游世界,你就可以在他的家乡圣路易斯找到他。
目录 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.1Modbus协议114
5.1.1Modbus协议中间人攻击119
5.1.2Schneider终止CPU运行攻击119
5.1.3Schneider功能码90鉴别攻击121
5.2EtherNet/IP协议122
5.2.1EtherNet/IP协议身份鉴别请求攻击124
5.2.2EtherNet/IP协议中间人攻击126
5.2.3EtherNet/IP协议终止CPU运行攻击126
5.3DNP3协议127
5.3.1DNP3 协议模糊测试攻击131
5.3.2DNP3协议鉴别攻击133
5.4Siemens S7通信协议134
5.4.1S7协议终止CPU运行攻击135
5.4.2S7协议鉴别攻击141
5.4.3S7 协议口令暴力破解攻击144
5.5BACnet协议147
5.6其他协议152
5.6.1OMRON FINS协议鉴别攻击152
5.6.2PCWORX协议鉴别攻击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.7DLL劫持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.2Rootkits227
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.2Stuxnet235
8.2.3Flame237
8.2.4Havex237
8.2.5BlackEnergy239
8.2.6伪装为工控系统软件的犯罪软件241
8.2.7Shamoon243
8.3本章总结243
8.4延伸阅读244
案例研究第四部分:立足之地245
延伸阅读247
第三部分融会贯通:风险缓解
案例研究第五部分:何去何从250
延伸阅读251
第9章工业控制系统安全标准入门252
9.1合规性与安全性253
9.2常见的工控系统网络安全标准254
9.2.1NIST SP 800-82254
9.2.2ISA/IEC 6244325