在今年的DEF CON大会上,我有机会参加了一个专注于工业控制系统(ICS)的夺旗(CTF)比赛。对于那些不知道DEF CON的人来说,DEF CON是世界上参加人数最多的安全/黑客竞赛之一,每年在拉斯维加斯举行。安全ctf是一种使用各种攻击和取证安全技术来解决挑战和谜题的比赛,这些比赛通常以个人或团队的形式进行,通常是为了炫耀自己的权利或奖励。我和一些老朋友在一个团队中参与了这个CTF,我们并没有真正的计划参与,所以我们开始得比较晚,但我们玩得很开心。在这篇博文中,我将向您介绍来自CTF的几个场景,以及一些现实世界的含义。
正如我在上一篇博客对于DomainTools, ICS可以被广泛定义为任何使用计算机软件控制物理系统的系统,如工业机械。与传统的多处理系统不同,集成电路通常使用嵌入式处理器来设计实时系统。实时系统用于计时应用非常关键的地方。典型的计算平台允许操作系统内核根据需求、使用、安全性或其他考虑来交换或延迟应用程序。许多传统的安全和信息保证工具,如反病毒或加密,为实时嵌入式系统引入了不可接受的延迟。这些系统将机器和操作人员的物理安全置于信息安全需求之上。
我和我的朋友(Bridget和Kev都是Facebook的事件响应人员)参加的CTF是红色警报ICS CTF。本次竞赛的场景包括:干扰机场控制、干扰发电和配电、干扰铁路控制、改变化工厂plc和人机界面、改变水处理厂plc和人机界面。在这些场景中,存在包括分析和利用协议在内的挑战网络通讯协议,分布式网络协议v3 (DNP3),蓝牙,无线个域网,它有特殊的挑战需要开发空隙利用真实人机界面的机器(HMIs)和可编程逻辑控制器(制度),以及社会工程.
在房间前面的一张桌子上,CTF的组织者有一个微型城市,一架看起来正在飞行的飞机,几个小型plc,至少两个真正的plc,以及几个蓝牙设备(包括谷歌Pixel和谷歌Nexus 5x)。
CTFs的旗帜散落在比赛的各个挑战中。在这个特定的CTF中,标志格式类似于RACTF{some-value-here}。
像modbus和DNP3这样的ICS协议在安全性、身份验证、加密和其他保护措施方面提供的很少。这使得它们在连接到公共网络时非常容易受到攻击,然而,这些类型的协议也相当模糊和特定于域。
Modbus用于多个主从应用程序来监控和编程设备;用于智能设备与传感器和仪器之间的通信;使用个人电脑和人机界面监控现场设备。Modbus也是需要无线通信的RTU应用的理想协议。由于这个原因,它被用于无数的天然气和石油和变电站的应用。但是Modbus不仅仅是一个工业协议。建筑、基础设施、交通和能源应用也利用了它的好处。
Modbus是一种开放协议,这意味着制造商可以免费将其内置到他们的设备中,而无需获得许可或支付版税。它通常用于将仪表和控制设备的信号传回主控制器或数据收集系统。作为一种协议,modbus设备只能通过单元id进行识别。每个单元都有许多输入、输出和存储类型,这些类型相当有限,并通过离散的输入、线圈(输出)、输入寄存器和保持寄存器进行描述。这些不同的数据类型通常代表现实世界中的模拟值,要么作为传感器读数,要么作为执行器值,可以是1位(0或1)或16位(通常约为2个字母)。在现实世界中,大多数情况下,除非您是一个系统操作员,否则您不知道对一个特定的线圈或寄存器进行什么写入或读取。如果您正在攻击一个真正的modbus设备,您可能不知道对一个特定输入或寄存器的写入或读取意味着什么,除非您对PLC所测量或控制的系统的实现有特定的知识。
基于这些背景知识,当我们找到一个modbus服务时,我们期望读或写modbus服务,并在其他地方显示一个标志(因为我们知道modbus有这种模式,它在现实世界中表示模拟值)。我们被告知不要尝试向PLC写入新值,因此我们从读取保持寄存器开始。我们发现的数据大多是二进制数据,但我们也注意到一个我们识别的模式:
如果您对二进制文件一无所知,那么您可能猜不到上面blob中的“PNG”意味着这个二进制数据是一种可移植网络图形(PNG)图像格式。如果我们在图像编辑器中打开它,我们会看到:
为了解决这个问题,我们写了一个简单的python程序从modbus读取,并逐渐计算出文件的长度(基于错误条件)。
当Modbus设备直接连接到互联网或其他不安全的网络时,确实会带来安全风险。这些设备本身几乎没有安全特性,通常控制或反映物理世界中正在发生的进程,因此从理论上讲,改变它们的值可能会产生严重的后果。一个快速搜索的设备搜索引擎Shodan展示了超过14000个可以直接从公共互联网访问的设备。
然而,重要的是要把这些风险放在大背景下。虽然modbus设备没有固有的安全性,但它们确实通过隐蔽性获得了一些安全性。原则上,这不是我们想要依赖的那种证券,但它也意味着天不会塌下来。控制工业应用程序的plc可能没有很多信息安全保障措施,但这些工业应用程序通常被法律要求有许多安全后备措施。因此,虽然远程写入这些设备可能很容易造成一定程度的破坏和不便,但对其中一个设备的攻击不太可能(虽然不是不可能)导致工业过程的灾难性失败。这些设备背后的安全和冗余(例如,在物理工厂操作中)是主要的防线。
考虑到这一点,管理这些设备的组织应该遵循最佳实践,包括网络分割,以删除对这些机器的直接访问。此外,监视进出这些设备的通信异常通信可以在检测工业控制网络的妥协或潜在妥协方面发挥作用。
关于modbus和其他ICS设备安全的其他信息:https://ics-cert.us-cert.gov/Recommended-Practices
电网场景的前提有一些内置的假设。我们推断,在一些总部存在一个存储凭证和访问代码的低能耗蓝牙设备——当电网参数需要干预时,这个设备还负责发送自动短信。它还假设发电和配电站的关键人员使用安卓手机获取状态信息。
我们从线索中推断出这一切,并提供了包捕获文件,这些文件是蓝牙设备之间对话的原始转储。我们被告知,一个恶意的行为者已经能够捕获并泄露运营商电话和总部BLE设备之间的蓝牙会话。
虽然核心发电和配电基础设施通常不依赖蓝牙,但一些研究表明,这种场景可能并不遥远:
http://eecatalog.com/wireless/2017/09/07/bluetooth-5-expands-into-the-smart-grid/
我们根据被告知的内容和对场景的推断,建立了一个心理模型,如下所示:
在该场景中,总部设备持有OFR / UFR码。OFR/UFR有点超出我的理解范围,但从本质上讲,它们是用来传达功率是过频响应或过频响应的代码。接收到该信息的访问码将触发运营商进行补偿。
该场景的目标是将OFR代码发送给一个运营商,将UFR代码发送给另一个运营商,使它们相互补偿,并关闭发电和配电。
有关OFR/UFR在预防孤岛方面的更详细讨论,请参见:
为了访问总部蓝牙设备,我们在pcap文件中找到了蓝牙mac地址,使用sdptool通过串行方式与蓝牙设备联系,并从串行输出中进行业务发现和提取UFR/OFR代码。
在这个场景中,有人透露,将正确的代码发送到接线员的电话就会触发行动。但是,我们不知道接线员的电话号码。但我们确实知道他们在哪里(实际上,他们在桌子上),我们知道他们手机的MAC地址(从我前面提到的数据包捕获)。
为了获得这些电话号码,我们首先尝试了非常非常老的工具。”bluesnarfer的电话本,但没有奏效。然后,我们从2017年9月开始搜索这个相当新的(有点)漏洞,名为“blueborne.”
我们使用Android概念证明利用代码在两个android设备上获得远程命令提示符。我们使用的漏洞在披露者的网站上有描述:
此漏洞存在于蓝牙网络封装协议(BNEP)服务中,该服务允许通过蓝牙连接(tethering)共享互联网。由于BNEP服务的缺陷,黑客可以触发外科手术式的内存损坏,这很容易被利用,使他能够在设备上运行代码,有效地授予他完全的控制权。由于缺乏适当的授权验证,触发此漏洞不需要任何用户交互、身份验证或配对,因此目标用户完全不知道正在进行的攻击。
使用此代码,我们能够获得远程命令提示符,并从这些设备下载电话簿。然后我们得到了发电和配电端发送OFR/UFR代码的设备编号。我们如何做到这一点的一个例子可以在阿姆斯演示视频.当我们向两个不同的设备发送OFR/UFR代码时,它向我们解释说,这相当于关闭了城镇的电源(我们触发了警报)。CTF的组织者非常兴奋,他们得到了一张我和我的一个队友戴着安全帽的照片:
近年来,关于美国电网遭遇的妥协,有各种各样的猜测性报道。人们的意见从“我们所有的设备都已经被侵入”到“我们很安全”不等。在我之前作为美国能源部国家实验室的网络安全分析师工作时,我有幸与一些在能源输送和分配领域工作的人交谈过。从这些对话中,我得到的压倒性的感觉是,我们对互联网连接的电力系统的基线知之甚少,无法进行有效的异常检测。然而,我们的电网是作为分布式系统建立和运行的。网格中不同点的安全控制和实现可能非常不同,ICS系统的使用和实现也可能非常不同。这意味着在电网的一部分上使用的漏洞将不太可能转移到其他地方。此外,电网需要补偿需求和发电量的波动——这意味着电网的不同部分在某种意义上已经准备好处理相邻部分参数的异常。
附加信息:https://www.npr.org/2018/03/16/596057713/infiltrating-power-grid-would-be-difficult-heres-why
https://www.darkreading.com/endpoint/power-grid-security-how-safe-are-we/a/d-id/1332420
http://fortune.com/2017/09/11/dragonfly-2-0-symantec-hackers-power-grid/
这并不是说我们不应该认真对待电网的漏洞或威胁,但通常恐惧、不确定性和怀疑(FUD)是良好、理性、谨慎的安全政策的敌人。我们可以为工业控制系统的安全做一些事情,我们可以做更多的事情来确保我们的电网有一个有弹性的未来。在许多情况下,运营商已经在做的事情——依靠他们在提高连接到ICS设备的系统故障模式的安全性方面的优势——是一个良好的开始。FUD往往导致不作为,因为我们相信我们的情况是无法解决的……我们需要采取渐进的步骤,为发电和配电创造一个更安全的环境。
我们很晚才开始比赛——周五上午10点开始,周六上午11点开始参加。到周六结束时,我们已经排在了第一名。在星期天上午比赛的最后两个小时里,另一支队伍超过了我们。尽管起步晚了,但我们做得还不错。在30多个团队中,我们的团队“n00bcountry”迅速上升。
像这次竞赛中的工业控制系统控制着我们这个现代互联世界中的大部分机械和工业过程。作为安全从业者,理解并与这些类型的系统交互非常重要,因为它们通常具有与我们典型的信息技术系统不同的功能和特征。同样重要的是,要记住在利用这些类型的系统时真正的漏洞和困难。许多这样的系统是相当脆弱的,但在实践中利用它们并不总是微不足道的,因为它们的配置和交互通常是相当不透明的,而且到位的物理安全措施使许多逻辑上的利用不那么重要。
订阅DomainTools每月通讯,以获得创新的,实用的建议,以改善他们的安全态势。我们的目标是帮助组织在其组织的日常防御中更高效、更有知识、更积极主动。