使用工控漏扫对SCADA系统的各个组成模块进行安全检查,会让整个工控网络的安全风险无处遁形;通过对部分未公开漏洞的工控机的fuzzing测试,可以较为准确的发现这些未公开漏洞的工控机存在的安全风险;针对SCADA系统的安全防护系列手段,在电力、烟草、油化、铁路等众多涉及国计民生的关键生产领域都具有一定的适用性,能主动减轻攻击者针对SCADA网络造成的破坏和影响。
使用工控漏扫ICSscan可以较为准确的发现SCADA系统中各个组成部分存在的安全隐患,尤其是PLC等工控机的安全漏洞和安全隐患以及windows系统的安全风险,这给工控系统漏洞的扫描带来了极大的便利。 工控漏扫在对IED、RTU等设备进行评估时,以稳压器或者温度控制器为例,由于厂商众多,再者考虑到厂商公开漏洞的情况,很难对厂商数量繁多的稳压器或温度控制器进行标准化的漏洞扫描。
基于这样的安全现状,可以考虑使用FUZZING测试技术来对这些未公开漏洞的厂商的工控设备进行设备健壮性的安全测试,并形成统一格式的安全报表,以解决未公开漏洞这一问题。
小编的注释:FUZZING可以提供一种智能方法来试图注入不规则消息内容和数据输入,以此来验证系统的可靠性。使用FUZZING系统进行测试主要有三个步骤:
如图1所示。FUZZING平台首先需要对被测的工控设备或系统进行配置,知道被测对象具体的型号和来自什么厂商(说哪种语言),接着建立连接(打招呼握手),选择相应测试用例集(准备交流的话题)。准备工作完成后就可以运行挖掘任务了,FUZZING平台除了向被测设备发送符合规范的通话报文(同一种语言),还会自动产生并发送大量变形后的报文(各种语言混杂以及不正确的语法),这个过程叫模糊测试(FUZZING),其目的是通过变异输入来观察被测设备是否有相应的容错能力(能否听得懂)。
举个简单的例子:
图1 FUZZING测试流程
Autodafe是一个可以对程序及协议进行健壮性测试的著名的FUZZING测试工具。Autodafe其实是一个FUZZING框架,我们可以在BT5或者kali上安装它。然后还需要准备一台被测试的设备,被测试的设备可以是稳压器或者温度调节器,当然也可以是一台普通PC。这里我使用一台装有windows系统的普通PC进行安全测试。
前期准备工作:
就像在NIPS入侵防护系统上打回放包一样,我们需要把整个攻击过程进行抓包做成回放包(使用wireshark等抓包工具捕获操作的整个过程,通过将捕获的数据包回放到网卡上,模拟原始数据包在网络上传输情况)。这里简单来说就是先模拟一次对被测设备的控制过程,将该过程存储后扔到autodafe中进行变异,变异后再进行回放输出。当然最后输出的时候还是要用到autodafe的核心模块autodafe,autodafe是fuzz的核心引擎,用来解析.adc文件,生成fuzz数据同时发包。
重点语句有以下三个:
如果是对一台普通PC进行安全测试,那最终使用autodafe的语句又会有些变化了。比如要对一台使用4000端口和攻击机进行通信的被测PC进行安全测试。 最终要使用这样一条语句: autodafe –b –vv –p 4000 –r 127.0.0.1 –P 8000 –D 192.168.0.1 ./vuln2.adc
来对目标主机的4000端口进行测试。在图2中可以看到fuzz不断在增加fuzz变量的大小。图3显示和目标主机的4000端口连接失败。
图2 fuzz变量增加过程
图3 和4000端口连接失败
TFTP Daemon Fuzzer是另一款可以给CBC设备带来短暂中断影响的fuzzing工具。CBC设备和稳压器类似。从工具名可以看出,该fuzzing工具主要是针对使用TFTP协议的设备进行fuzzing测试。在执行TFTPfuzz脚本之前,我们可以使用wireshark对fuzzing过程进行抓包以查看测试过程中fuzz的变化。图4是测试过程,图5可以看出fuzz引擎在尝试不同的测试内容,fuzzing测试可能会对设备造成一定的影响,故在生产环境中还需要考虑测试策略。
图4 测试过程
图5 尝试不同测试内容
虽然无法在部署之前了解和检测所有安全漏洞,但可以肯定的是通过采用下面纵深防御措施一定可以主动地减轻攻击者对SCADA网络造成的安全破坏:
【原文:SCADA网络fuzzing测试及防护 作者:张, 学聪 安全脉搏编辑整理发布】