工业控制系统渗透测试浅析
随着“两化”融合的不断深入,传统IT的安全威胁不断涌向工业控制系统,让原本封闭和脆弱的工业控制系统雪上加霜。据美国国土安全部下属的工业控制系统网络应急响应小组(ICS-CERT)发布的报告披露,2014年9月至2015年2月期间共发生了245起网络安全事件, 其中的154起影响了关键制造业、能源系统、化工和核设施。这些事件在发生频率、复杂性和严重性上均有不同程度增加,且超过一半属于高级持续性威胁(APT)。尽管企业在安全防护、监控和检测能力上已有所增强,但伴随着工控系统攻击行为的集团化、精准性特点越来越显著,可被利用的安全漏洞在过去几年逐年增多,充分了解自身安全风险显得尤为必要。渗透测试作为发现工控系统脆弱性的有效补充手段,可验证安全管理流程和技术防护措施的有效性,增强工业控制系统网络安全性。
图1 ICS-CERT公布的发生在2014年9月到2015年2月期间的网络安全事件
什么是渗透测试?
渗透测试是通过模拟恶意黑客的攻击手段和方法,来评估网络系统安全性的一种方法。不同于漏洞评估偏重于检查系统和服务是否存在安全问题,渗透测试主要通过执行漏洞利用来验证系统确实存在漏洞。
基于渗透测试的特点,在对工业控制系统进行渗透测试时需特别注意,因为传统的渗透测试方法可能会对工业控制系统基础设施和生产过程产生严重影响。
为什么要,什么时候执行渗透测试?
在工业控制系统环境中,渗透测试常常面临质疑、恐惧,甚至被彻底否定。在不采取必要预防措施的情况下,渗透测试确实可能会对生产系统产生严重后果,但准确评估系统安全性的唯一途径就是验证生产系统面临严重攻击时的防护能力。工业控制网络普遍采取多层结构的纵深安全防御体系,需要通过渗透测试来判断防护措施的有效性。
渗透测试应贯穿风险评估工作的整个生命周期,包括:
验证漏洞评估结果,剔除错误信息;
评判前期制定的安全策略是否合理;
评估漏洞修复是否成功执行。
工业控制系统渗透测试安全标准
工业控制系统安全防护标准已逐渐完善,包括NIST SP800-82, ISA-99/IEC 62443,《工业控制系统信息安全防护指南》等,但针对工业控制系统渗透测试的标准却几乎没有,NIST SP800-115提供了漏洞评估和渗透测试的指导,但并未针对工业控制系统给出相关建议。工业控制系统渗透测试应结合传统的渗透测试手段、工业控制系统现场经验以及工业控制系统安全防护标准来完成。
识别“0-day”漏洞
渗透测试最能体现专业性和技术性的方面之一就是“0-day”漏洞的研究和发现。“0-day”漏洞研究只适合于拥有最高专业技能的渗透测试人员,旨在发现尚未报道,甚至是还未发现,更不用说修复的安全漏洞。
在传统IT领域,漏洞发现、补丁修复以及漏洞发布已非常成熟,但在工业控制系统领域,其研究和发现工作却远远落后,主要因为:
工业控制系统设备和协议在设计之初未充分考虑安全设计;
设备生产厂商不愿修复漏洞或重新进行安全设计;
已发现的工控漏洞并未完全发布到漏洞共享平台。
工控系统漏洞发现和防护工作不能仅仅依靠各漏洞共享平台,需结合工控设备或系统的渗透测试成果,实现最准确的工控漏洞态势感知,最大限度做好安全防护工作。
工控渗透测试原则
渗透测试工作的前提是不能影响工业控制系统安全和正常生产过程。对渗透测试过程中允许和禁止使用的方法、技术要进行明确规定,同时根据不同行业、系统、生产环节等制定各自不同的测试原则。
工控渗透测试策略
渗透测试过程除了需遵循相关原则外,还需采取必要的策略,并综合考虑工业控制系统的特殊设计、功能、应用系统、协议以及使用的设备等,充分利用设计或功能方面的缺陷或漏洞进行切入。所有渗透测试的结论应基于合法、真实有效的成功结果(如:在不影响系统的前提下获得关键系统访问权限)。
侦查
工控渗透测试环节的第一步,也是最重要的一环,直接影响后续的渗透测试的策略制定。工控渗透测试的侦查阶段与传统IT渗透测试相同,如在互联网上搜索企业的所有相关信息,分析与测试目标相关的IP地址、BBS、电子邮件、网页快照等。
外部测试
外部测试指的是通过互联网对面向互联网的网络环境进行测试。应尽量避免直接对工业控制系统进行渗透,选择面向互联网的临近网络,如管理信息网,然后通过管理信息网进入生产控制网。根据大多数工业安全标准,尤其是ISA-99/ IEC 62443,不仅要求生产网需与其它网络隔离,还规定了数据流向不能从高级别管理区域(levels 4 and 5)流向低级别生产区域(levels 0 to 3)(如图2)。
图2 ISA-99/IEC 62443 Purdue模型
尽管ISA-99/IEC 62443等对数据流向进行了规定,但不遵守安全分区和数据流向规则的网络大量存在,多网卡以及允许全网ICMP通讯的情况也非常普遍,外部渗透测试方法依旧可行。
其它可选渗透测试方法
除了上面提到的互联网和相邻连接网络渗透测试方法,其它可考虑的渗透点包括物理安全脆弱性和社会工程学。社会工程学利用了任何安全程序中最薄弱的环节之一:人的因素。技术性社会工程学方法(如钓鱼网站)结合专业的工具可实现最有效的渗透测试,工业控制系统需综合终端防护、入侵检测及加强人员安全意识培训等来防范社会工程学攻击。
测试模拟的真实工业控制网络
在实验室或者测试环境搭建模拟真实生产控制系统的平台,采用相同的设备类型、型号和版本,并尽可能采用真实系统的备份镜像进行测试,采取各项渗透测试手段,尽最大可能发现模拟环境的问题,而无需太关心安全问题。
测试工控设备
取得控制设备操作权限或破坏控制设备是黑客攻击的重要目的。由于前期未进行安全设计,大部分基于IP的工业控制协议都缺乏加密认证机制,很容易被修改、劫持、破坏,甚至造成设备被直接控制。需对工控设备进行安全性和健壮性测试,挖掘其未知安全漏洞。
测试工控服务器和工作站
工控服务器和工作站大部分是Windows系统,且很大一部分为XP等老旧系统。用户由于担心系统兼容性问题,通常不升级补丁,系统长期运行后会积累大量的安全漏洞,也为渗透测试提供了丰富的研究素材。
小结
本文简单介绍了工控系统渗透测试方法,并分析了工业控制系统的特定威胁、攻击行为以及风险点,帮助客户优化安全防护策略,减少安全隐患。
威努特作为工控安全行业领头羊,组建了一支由工控系统专家和工控安全专家组成的渗透小组,运用网络安全知识和工业控制系统专业技能,深入不同行业开展渗透测试调研。最终形成了“一事一议”的工业控制系统渗透测试原则,为工控系统渗透测试工作的开展提供了新思路。
提交
未雨绸缪,工控安全培训正当时
你的车安全吗-车联网工控系统安全隐患排查
典型SCADA系统安全防护案例分享
第三届工业控制系统安全研讨会在京胜利召开
从“拒绝服务”到“安全稳定”