一、前言
近年来,工控安全事件频发,工控安全不仅事关工控行业,更是被上升到国家安全的高度,优秀的工控安全解决方案被应用到了生产中,而安全解决方案最终会落地到安全产品中,越来越多工控安全产品部署在工业现场,其中作为安全产品中的主力军防火墙在现场用得最多。对工控防火墙的功能测试已经是老生常谈,但是对其安全性测试却鲜有人提及,本篇主要介绍了工控防火墙安全测试一些关键思路,目的是提高工控防火墙自身的安全性。
二、工控防火墙
工控防火墙可以根据需要部署在关键节点上,如工程师站和控制器之间,或者IT网和OT网之间等,防火墙对流量进行解析,根据内置的规则对流量进行阻断或者放行,并对用户及时进行通知告警。工控防火墙和传统的IT类防火墙除了自身需要满足在工业现场部署的相关标准外,最主要的区别还是在支持的协议上,除了传统的IT类协议,工控防火墙内置了大量工控协议的解析引擎,例如OPC、Modbus TCP、Siemens S7、IEC104、EIP等工业协议,而且有些工业协议是私有的,只能进行定制化处理,在实现这些解析引擎时,也会出现一些安全性问题。
三、测试方法
无论是黑盒还是白盒测试,都是发现安全问题的利器。
黑盒测试:
通过端口扫描对防火墙的管理口和业务口进行端口扫描,发现其开放服务,或者直接使用漏扫测试,发现已知漏洞。安全人员也可以凭借测试经验,发现未知安全问题。
白盒测试:
在获取到代码情况下,进行代码审计,退一步来说,即使在获取固件的情况下,通过解包固件文件,获取到其中的相关代码,通过逆向工具进行逆向分析。
四、安全测试
暴露的服务
远程控制服务:
有些工控防火墙为了维护方便,会留下一些诸如SSH,telnet方便运维人员进行远程支持,一旦知道了root密码,任何人都可以获取到防火墙的完全控制权限,这种是非常不安全的设计,也是进行安全测试重点关注的服务。
WEB服务:
WEB服务一般是在管理口会开放,其他网口访问不到WEB服务,针对该服务进行测试时,可以沿用传统的WEB安全测试思路,对工控防火墙的WEB口进行相关测试,重点关注未授权访问,命令注入,SQL注入等危害较大的漏洞,一旦出现这类漏洞,有可能会导致工控防火墙沦陷。
安全建议:
任何时候都不应该使用硬编码,工控防火墙是通用性产品,一旦攻击者知道了硬编码,就可以利用该硬编码去攻击其他同系列的产品。
协议解析
防火墙对协议解析的健壮性也是值得进行测试的,由于大量工控协议解析插件可能是厂商自己实现的,没有经过大量安全测试,那么其中就有可能存在问题。为了快速测试防火墙的健壮性,可以使用模糊测试对其进行快速测试。
测试示意图:
- fuzz发送端发送变异的工控数据,在经过防火墙时,防火墙会调用解析引擎对发送协议进行解析。
- fuzz接收端接收到发送端发送的fuzz数据,返回变异的响应数据包,这时防火墙同样会进行解析。
- fuzz可以选取大量的工控协议测试数据,来保证测试的覆盖度,一旦防火墙出现了异常,有可能导致数据包丢失或者拒绝服务。
安全建议:解析引擎一般都是c/c++实现的,在开发的过程中,要遵守安全编码规范,对数据包的长度字段使用之前一定要对其范围进行限定,杜绝使用危险函数。
安全功能绕过
工控防火墙使用得白名单进行访问控制,只允许规则中功能码,或者工控协议中的指定读写地址的数据包通过防火墙。如何构造测试数据包需要结合解析协议的具体实现,例如一些协议解析插件细粒度不够,导致恶意的数据包可以进行“走私”,对控制器或者其他设置进行恶意操作,这也是安全测试过程中需要测试到的。
五、总结
本篇通过介绍了对工控防火墙安全测试的思路,从不同的测试途径对工控防火墙的安全性进行测试,旨在提高工控防火墙自身的安全性,从而让安全的解决方案能够真正安全!也希望厂商能够更多关注工控安全产品自身的安全性。
版权声明
本站“技术博客”所有内容的版权持有者为绿盟科技集团股份有限公司(“绿盟科技”)。作为分享技术资讯的平台,绿盟科技期待与广大用户互动交流,并欢迎在标明出处(绿盟科技-技术博客)及网址的情形下,全文转发。
上述情形之外的任何使用形式,均需提前向绿盟科技(010-68438880-5462)申请版权授权。如擅自使用,绿盟科技保留追责权利。同时,如因擅自使用博客内容引发法律纠纷,由使用者自行承担全部法律责任,与绿盟科技无关。