渗透测试,如今很多企业都有在做,但其实真正能明白渗透测试真正的用途的企业可能并不多,更多程度上,是跟风,看大家都在做,也跟着做。导致这种现象的泛滥,深层次的原因,还是现在绝大多数企业在面对信息安全的时候,还都是一脸茫然,不知从何下手,最后就必然发生这样的跟风现象。

而工业控制系统与传统的IT系统的渗透测试,又有不一样的地方。

首先,二者关注的重点不一样,信息安全三个主要领域的优先顺序不一样。

传统的IT系统的信息安全三个主要领域的优先顺序如下:

  • 保密性(Confidential)
  • 完整性(Integrity)
  • 可用性(Availability)

而工业控制系统的信息安全三个主要领域的优先顺序则是以下:

  • 可用性(Availability)
  • 完整性(Integrity)
  • 保密性(Confidential)

工业控制系统和传统的IT系统的信息安全三个主要领域的优先顺序的不同,决定了对二者进行渗透测试的时候,关注的重点不同,这样可以避免不必要的无用功。

其次,是二者的测试规则不一样

工业控制系统的可用性(Availability)要求很高,而又由于工业控制系统的以下特殊性,其可用性(Availability)又极其的脆弱:

  • 工业控制系统设备的处理能力过载阈值较低
  • 工业控制系统设备的网络堆栈处理能力较弱
  • 遗留系统的使用
  • 网络宽带较低

因此,对工业控制系统进行渗透测试,不能完全采用传统的IT系统的渗透测试时所采用的方法和工具。为了避免渗透测试带来的重大风险,必须提前制定测试规则。下面是工业控制系统部分常用的测试规则:

  • 不得针对生产设备、装置、服务器或工作站开展拒绝服务(DoS)测试
  • 如果需要对生产系统进行端口扫描,那么应该每次只针对一台设备或计算机进行扫描,扫描速度不得影响网络性能,并且每次只能针对目标端口中的部分端口进行
  • 不得针对生产设备或装置开展基于内存漏洞的漏洞利用
  • 不得针对生产系统或设备开展数据包重放、数据包篡改以及主动中间人(MiTM)攻击
  • 如果成功连接生产设备、装置、工作站或服务器,不得尝试篡改生产数据、设定点、配置、逻辑以及图形界面

第三,是二者的测试策略不一样

今天在很多地方看到,做信息安全必须要有系统工程思维。而现在说到渗透测试,可能很多人把它当作是风险评估,其实这种理解是不恰当的,因为这种想法是缺乏系统工程思维的。更确切的说,渗透测试应该是验证风险评估结果的一种方式之一。因此,要做渗透测试,必须现有风险评估,然后目的地规划渗透测试来验证风险评估的相关风险。

所以,要做渗透测试,必须要提前根据风险场景制定相应的测试策略。又因为工业控制系统与传统的IT系统的风险关注点不同,必然导致两者的测试策略的不同。如以下是部分针对工业控制系统的测试策略:

  • 尝试入侵SCADA服务器(例如,应用服务器、标签数据库),以拦截、控制以及欺骗返回人机界面的数据
  • 使用中间人攻击(MIMT)尝试劫持工控系统设备的控制并欺骗返回人机界面的数据
  • 攻击标签数据库,使操作人员在不经意间执行威胁安全的操作(例如,关闭一个已经压力过大的管道阀门而不是打开它)
  • 通过搜索认证信息或者改变设备逻辑方式入侵工程师站
  • 尝试对CVE或ICS-CERT公告中公布的已知漏洞进行漏洞利用
  • 对厂商的应用程序进行逆向分析,挖掘其中的0-day漏洞或者复现其功能构造更加精巧的攻击