渗透测试,如今很多企业都有在做,但其实真正能明白渗透测试真正的用途的企业可能并不多,更多程度上,是跟风,看大家都在做,也跟着做。导致这种现象的泛滥,深层次的原因,还是现在绝大多数企业在面对信息安全的时候,还都是一脸茫然,不知从何下手,最后就必然发生这样的跟风现象。
而工业控制系统与传统的IT系统的渗透测试,又有不一样的地方。
首先,二者关注的重点不一样,信息安全三个主要领域的优先顺序不一样。
传统的IT系统的信息安全三个主要领域的优先顺序如下:
- 保密性(Confidential)
- 完整性(Integrity)
- 可用性(Availability)
而工业控制系统的信息安全三个主要领域的优先顺序则是以下:
- 可用性(Availability)
- 完整性(Integrity)
- 保密性(Confidential)
工业控制系统和传统的IT系统的信息安全三个主要领域的优先顺序的不同,决定了对二者进行渗透测试的时候,关注的重点不同,这样可以避免不必要的无用功。
其次,是二者的测试规则不一样。
工业控制系统的可用性(Availability)要求很高,而又由于工业控制系统的以下特殊性,其可用性(Availability)又极其的脆弱:
- 工业控制系统设备的处理能力过载阈值较低
- 工业控制系统设备的网络堆栈处理能力较弱
- 遗留系统的使用
- 网络宽带较低
因此,对工业控制系统进行渗透测试,不能完全采用传统的IT系统的渗透测试时所采用的方法和工具。为了避免渗透测试带来的重大风险,必须提前制定测试规则。下面是工业控制系统部分常用的测试规则:
- 不得针对生产设备、装置、服务器或工作站开展拒绝服务(DoS)测试
- 如果需要对生产系统进行端口扫描,那么应该每次只针对一台设备或计算机进行扫描,扫描速度不得影响网络性能,并且每次只能针对目标端口中的部分端口进行
- 不得针对生产设备或装置开展基于内存漏洞的漏洞利用
- 不得针对生产系统或设备开展数据包重放、数据包篡改以及主动中间人(MiTM)攻击
- 如果成功连接生产设备、装置、工作站或服务器,不得尝试篡改生产数据、设定点、配置、逻辑以及图形界面
第三,是二者的测试策略不一样
今天在很多地方看到,做信息安全必须要有系统工程思维。而现在说到渗透测试,可能很多人把它当作是风险评估,其实这种理解是不恰当的,因为这种想法是缺乏系统工程思维的。更确切的说,渗透测试应该是验证风险评估结果的一种方式之一。因此,要做渗透测试,必须现有风险评估,然后目的地规划渗透测试来验证风险评估的相关风险。
所以,要做渗透测试,必须要提前根据风险场景制定相应的测试策略。又因为工业控制系统与传统的IT系统的风险关注点不同,必然导致两者的测试策略的不同。如以下是部分针对工业控制系统的测试策略:
- 尝试入侵SCADA服务器(例如,应用服务器、标签数据库),以拦截、控制以及欺骗返回人机界面的数据
- 使用中间人攻击(MIMT)尝试劫持工控系统设备的控制并欺骗返回人机界面的数据
- 攻击标签数据库,使操作人员在不经意间执行威胁安全的操作(例如,关闭一个已经压力过大的管道阀门而不是打开它)
- 通过搜索认证信息或者改变设备逻辑方式入侵工程师站
- 尝试对CVE或ICS-CERT公告中公布的已知漏洞进行漏洞利用
- 对厂商的应用程序进行逆向分析,挖掘其中的0-day漏洞或者复现其功能构造更加精巧的攻击