关于RSAC2022
RSA会议是一系列的IT安全会议。每年约有45,000人参加该会议。最初它是一个成立于1991年的小型的面向于密码学的会议,(后来拓展到信息安全及其它领域)。RSA会议每年在美国,欧洲,亚洲和阿联酋等国举行。RSAC 2022(RSA Conference 2022)作为安全界影响力最大的盛会之一,将于美国时间2022年6月6-9日在旧金山举办。
关于本议题的演讲嘉宾介绍:
Ulrich Lang博士拥有 20多年的网络安全从业经验,也是ObjectSecurity这家安全公司的创始人兼首席执行官。拥有剑桥的网络安全硕士和网络安全博士学位。2007年作为演讲嘉宾第1次参加了RSA大会。他本人的兴趣点如下:二进制漏洞分析(OT/ICS)、可信人工智能、5G/无线安全、访问策略自动化、供应链风险分析等。
该议题的其它贡献者介绍:
ObjectSecurity的高级研究专家Reza Fatahi博士,议题中的大部分二进制分析工作都由他指导。拥20多年的网络安全经验,包括大量的漏洞分析,硬件,侧信道,FPGA脆弱性分析等经验 。
OT技术(OT)是一类硬件和软件,用于监控和控制物理设备的性能。OT主要运用于制造业、运输业和公众服务业等一系列的工业控制系统中。与传统的信息技术(IT)不同,控制这些行业的OT技术一般没有与外界互联网进行互联。许多用于监控或调整物理设备的工具都是机械的,而那些具有数字控制的工具通常会使用封闭的专有协议。比如霍尼韦尔、西门子、施耐德等厂商的产品 。
OT越来越多的被成为攻击目标
先来看几个影响较为重大的OT系统安全的案例:2021年 Colonial pipeline 勒索软件事件,不是针对于OT系统的攻击,但是OT系统受到严重影响。总部设在美国佐治亚州的私营公司Colonial Pipeline在遭受网络攻击后关闭了从墨西哥湾沿岸到美国东北部的输油管道。美国东北部地区约45%的燃油由这一管道运输。DarkSide 选择受害者和文件,确保匿名和反检测,以及防止数据恢复 , 在DarkSide的案例中,预计造成的经济损失中,有40多名受害者总共支付了9000万美元的比特币。
2015年乌克兰大规模停电事件-主要针对SCADA设备。2015年12月23日 ,当时乌克兰首都基辅部分地区、乌克兰西部的 140 万名居民遭遇了一次长达数小时的大规模停电,至少三个电力区域被攻击,攻击面占据全国一半地区。 对于本次攻击,乌克兰的Kyivoblenergo电力公司表示他们公司遭到BlackEnergy 网络入侵,攻击者首先通过“主题为乌克兰总统对部分动员令”钓鱼邮件进行投递,在受害者点击并启用载有BlackEnergy的恶意宏文档后,BlackEnergy在获取了相关凭证后,便开始进行网络资产探测,横向移动,并最终获得了SCADA系统的控制能力。因此导致7个110KV的变电站和23个35KV的变电站出现故障,从而导致大规模断电。
其它诸如2014年德国钢铁厂被黑客攻击、2010年震网病毒(针对核电系统),主要是针对西门子PLC的攻击。也因该网络安全事件,从此网络战争的概念被提出。
这些都是关键系统(无论从网络安全角度、还是物理安全角度!),对日常生活至关重要,牵一发动全身,因此针对工业控制系统的安全问题不容忽视。
关于OT系统,其内部组成是多样化的( 有不同的厂商,各厂商下又有不同型号的工控设备) ,而针对于传统的IT系统而言,相比于OT系统要单一很多。
针对OT系统的内部操作系统、 总线架构都各有千秋,不能一概而论。通常来说,OT系统会在离线或非IP网络上(例如传感器、现场总线…)部署,其系统生命周期很长(部署完成,正常运转,很少进行修改),针对老旧的系统来讲,通常其系统安全性是非常脆弱的,由于不能更改正在运行的系统状态,以及快速打上补丁所导致的 。
针对OT系统的逆向通常来说基本上都是黑盒 ,其内部文档很少,相比于其它系统的逆向工程来讲,经常能找到标准的CPU和库来进行逆向分析,但是面向OT系统,逆向工程师需要手动评估并测试系统,目前面临的两个最大问题:
对于OT系统的逆向,需要工程师具备不同的知识体系基础,且相关领域知识大多都很分散,都需要逆向人员自行学习摸索。
国外主要对工控行业中OT系统网络空间安全的规约制定如下:
1、IEC3 62443:主要是面向工业通信网络的安全性
2、NIST SP 800-82: 面向工业控制系统的安全指南
以上两个相关的规约针对OT系统都很通用,具体包含以下几个方面:风险管理和评估、程序开发和部署、安全架构和控制、用于ICS的应用控制。根据相关安全规约,安全专家建议:对于IT 与 OT系统要进行必要的网络隔离和分割。
针对网络隔离这个问题 ,规约中的现有的内容主要存在以下问题:
•它必须与IT系统及其它“外部”系统都被隔离到域中
•针对新技术,诸如无线/5G通信,工业4.0的实施,使得OT系统的安全性变得更糟
•IT系统中零信任架构(ZTA)和IT的风险管理运用于OT系统
既然现有的规约存在以上问题 ,那针对于OT组织来讲,也存在一些障碍。
首先要思考OT 网络适合哪些组织来管理?究竟是CISO 还是 Ops?这是值得相关应用单位所思考的。目前OT组织中针对网络信息安全的传统技能并未能完全转化到OT系统。 传统的IT安全策略转化至OT目前还存在缺陷,不能完美适应。 企业内部的IT安全部门没有相关人员来处理OT安全问题。OT的网络安全问题通常没有成为IT安全部门的一部分。IT安全人员以及系统中的有限资源管理日趋严重混乱,通过自动化管理来处理相关问题仍具有挑战性。
在风险评估或保护您的系统之前,您需要了解OT系统环境中的以下方面:目前系统存在哪些设备?它们是如何连接的?谁在拥有/管理它们?系统中一切看似微不足道的动作行为都被记录下来这将是一个重大挑战,因为切合实际环境的内容都进行文档化处理,并不一定能直接实施,且以上操作,通常没有源代码。 通常,为了OT系统的安全性,您需要重新设计系统,魔鬼都在细节中,一些细微的安全性问题可能会被忽略。如何自动化处理这些安全问题是关键:因为安全人员无法手动分析整个OT环境。
要对OT网络进行自动化扫描通常需要考虑以下方面:1.查找并识别所有设备,通过主动扫描(扫描器)的方式、或者通过被动通信协议分析(包括协议分析,流量解析)的方式;2.直接进行漏洞扫描,该操作要考虑具体的OT设备限制,漏洞扫描并不能很好的支持所有的OT设备;3.要考虑设备的安全性,其中一些古老(遗留)的设备经常会崩溃。相对于传统IT安全,其影响范围小,仅仅考虑以上信息安全中的几个漏洞点,对OT系统来讲,其安全性还不足够。
许多设备由企业内的安全组织直接管理,主要包括:监控系统中可见的PLC,可以直接从监控系统获得软件版本,子系统中嵌入的其他设备。又因为网络安全专业人员对于这些工控设备知之甚少,工控设备往往容易遭受黑客攻击。这些都应该作为安全管理人员的考虑范围。
针对于工控安全测试,实验室环境的准备一般不需要测试工控现场的所有设备,例如所有的厂商PLC。如果知道该研究设备的软件版本及其它细节,可以在实验室先进行测试,然后再将结果在真实的OT系统中测试(这里要注意安全合规性)。且在大多数情况下:PLC是一种不可见(基本上没有源代码)的设备,需要研究人员自行进行安全性研究及测试、包括逆向工程等操作。
针对以上提及的技术要求,也面临一些挑战。通常,设备无法直接被安全研究人员管理。如果设备不受管理者直接管理且其安全属性未知,并且它是黑客攻击面的一部分,必须在实际现场环境中测试验证。考虑到OT系统规模性,及相关领域知识技能的掌握程度,无法手动完成所有的OT系统安全性测试。就目前而言,仅仅依靠网络扫描是不足以发现系统风险的、通过红盒进行测试 (RedBox https://www.secpoint.com/red-box.html)也是一个可以考虑的方向。
漏洞扫描工具查找已知的漏洞主要要考虑以下几点:1.有没有进行真正的可用性测试;2.确定测试目标版本、查找相关数据库信息;3.确认签名认证相关信息;4.在漏洞数据库中查找到小型的OT系统0 day信息 ;5.CWE != CVE,两者略有区别,都要进行查阅。
红队针对嵌入式设备和非IP的设备的攻击需要考虑以下几点: (Navy SBIR 2018.2 – Topic N182-131):1.是否需要逆向工程(自动化)来分析漏洞;2.需要考虑到的点:追求更简单或者更便宜?还是更大规模?3.是否包括嵌入式系统、是否包括一些遗留的古老旧系统、对现有的设备是否由一些非相关领域专家运营(主要是要进行相关人员规模化!);4.离线系统(包括云系统),相关系统的性能、规模、电量、时间消耗等方面的考虑;5.针对设备购买方与相关开发人员,无论是DevSecOps 或源代码工具的安全是否都被考虑到。
自动化漏洞挖掘及分析涉及以下部分或所有内容:针对设备之间的互连 、固件的提取、设备固件的分析、出具相关安全测试报告。连贯一致地协调其中所用到的许多工具和方法。
逆向工程师有很多工具可以用来做逆向分析,有些工作能够进行人工处理 。然而,很多情况下许多工作并不能很好的被逆向还原。且IDA Pro、Binary Ninja、Ghidra等逆向工具不适合非逆向专业人员(专家)使用;在CWE上查找相关漏洞,并不总是包括所有漏洞或恶意软件,目前没有一个通用工具可以做到这一切。
针对二进制文件的逆向分析,其文件通常有文件头和相关数据,通过将源代码编译为二进制文件,最终来创建可执行文件。通过静态链接和动态链接的方式所编译的程序都可能包含漏洞,这些漏洞有可能来自于软件依赖代码中的固有漏洞。分析二进制文件可以进行:1.Meta分析:主要是程序头和相关特征字符串的信息;2.恶意软件分析:该类程序具有自我修改行为和相关免杀技术;3其它类软件:可能包括未发觉的0day漏洞等。
可以通过以下方式进行二进制分析: 一般是线性扫描,递归遍历这两种方式进行反汇编。反汇编中的模式匹配包括:内核操作,溢出攻击,opcode操作 序列分析等。在该版块中,我们发现机器学习可以派上很大用处!可以进行漏洞验证,通过弱点检测,之后再确认相关漏洞。其中涉及到的关于中间语言(IR)的知识点包括:LLVM,BAP,Binary Ninja等。对于有的二进制文件分析可能涉及更高级别的反编译 、仿真。还有基于模糊测试的动态分析等操作。
目前二进制分析面临的挑战包括:分析所花费的时间较长 、分析任务复杂度高。通过逆向,重写相关业务代码,可能会触发危险边际,包括:1.软件发生故障时的代码隔离;2.软件开发流程的完整性校验。二进制分析也可使用侧信道分析技术,可以完全实现自动化、且无损化,也非常具有挑战性。
以上都是二进制分析中的高阶技术,需要研究人员有一定的技术实力。
二进制安全分析相关工具可以使用以下工具:
1.AFL/AFL+
2.PRIMUS
3.PIN
4.BAP
5.BITBLAZE
6.ANGR
7.IDA
8.RADARE
9.NASA COBRA
10.FLAWFINDER
11.CWE_CHECKER
12.GHIDRA
13.BINARY NINJA
以一个正确的二进制文件为例:它包含反汇编代码、CFG 控制流图(Control Flow Graph, CFG) 、INT REP/LANG字段,针对以上内容的分析,通常也是逆向工程的主要工作对象。
目前OT系统外部所面临的风险及挑战包含:控制台、端口、USB等,这些通常被设置为未授权用户无法访问。针对于内部系统所面临的风险及挑战包含:UART、JTAG等、这类知识通常需要一些相关技术及技能。所面临的问题是:
二进制文件自动化逆向的成功标准:
1.能够获取到控制台Shell,JTAG接口
2.针对不同的系统架构有其特定的处理方式,而不是“一刀切”
系统中的文件类型有以下类型: i386, x86-64, ARM, MIPS, PowerPC, SPARC, RISC-V, SH, m68k, m680x, AVR, XAP, System Z, XCore, CR16, HPPA, ARC, Blackfin, Z80, H8/300, V810, V850, CRIS, XAP, PIC, LM32, 8051, 6502, i4004, i8080, Propeller, Tricore, CHIP-8, LH5801, T8200, GameBoy, SNES, SPC700, MSP430, Xtensa, NIOS II, Java, Dalvik, WebAssembly, MSIL, EBC, TMS320 (c54x, c55x, c55+, c66), Hexagon, Brainfuck, Malbolge, whitespace, DCPU16, LANAI, MCORE, mcs96, RSP, SuperH-4, VAX, AMD Am29000, …
系统架构的文件样例有以下类型: ELF, Mach-O, Fatmach-O, PE, PE+, MZ, COFF, OMF, TE, XBE, BIOS/UEFI, Dyldcache, DEX, ART, CGC, Java class, Android boot image, Plan9 executable, ZIMG, MBN/SBL bootloader, ELF coredump, MDMP (Windows minidump), WASM (WebAssembly binary), Commodore VICE emulator, QNX, Game Boy (Advance), Nintendo DS ROMs and Nintendo 3DS FIRMs, various filesystems, …
针对以上文件类型及系统架构都是需要安全研究人员所应具备的能力。
反汇编目标二进制文件主要考虑以下几个方面:
一个二进制文件,生成IL/IR的工具有:
1.LLVM
2.BinaryNinja(扩展API)
3.BAP
4.BitBlaze
5.Radare
针对于中间语言的研究,对编译原理、编译器都要有深入的了解。
针对字节码数据序列的机器学习通用架构一般为:
1.NLP库
2.RNN 神经网络
这也是机器学习中较为通用的架构。
针对于Fuzz及机器学习,模糊测试目前面临的挑战,当前的OT系统具备无限的分析空间,对目标函数或目标二进制文件的潜在输入,要接近目标正确性是一个很大的挑战。针对函数或二进制库中处理的内容,要考虑其相关安全缓解措施,通过机器学习来进行更智能的输入,优化相关算法,完成分析。而针对手头数据和之前分析过的数据要进行判断,确定最佳的payload 从而触发漏洞。
而对于相关漏洞进行加固操作,首先要确定其漏洞测试方法,通过机器学习不断进行改进算法,优化加固流程。目前,最为流行的模糊测试工具-(AFL)是一个由谷歌发行的开源模糊测试器,通过使用遗传算法来有效增加测试用例的代码覆盖范围。目前基于机器学习的Fuzzers包含:AFL、VUzzer、FUZZER、SES、Steelix、Angora、AFL-laf-Intel、InsFuzz、T-fuzz、REDQUEEN、DigFuzz等。
要使机器学习应用于Fuzz,主要分为以下几个步骤:
1.建立fuzz目标
2.随机种子文件生成
3.测试样例生成
4.测试样例过滤
5.突变算子选择
6.漏洞可利用性分析
一旦制定了实施的标准,通过强化学习以最小化模式运行,可以从以下几个方面入手:1.针对哪个CPU架构,其文件大小,二进制文件类型等,及其所具备的工具对应的利用方法;2.研究设备所消耗的时间;3.使用相关工具预测程序崩溃点;4.随着工具和方法的不断变化, 进行组合调用来变化/增长,进行项目的自动化更新。
自动化二进制文件的分析。针对于任何库,包括且不限于开源依赖项,研究目标的可扩展性及其性能都值得注意。使用“差异化分析” 来处理自动化图形的相似性,对于IDE则进行(半)自动化处理, 通过差异化“刺激” 以创建“标记数据”。并根据要求进行二进制文件自动化分析。目前所面临的挑战:允许用户对指定需求,在没有状态空间及路径爆炸的情况下,通过满足这些要求来进行有意义地测试。
自动漏洞测试越来越有用,但是不能寻找目前已知的安全错误。至少目前来讲,自动化漏洞挖掘技术还是无法击败熟练的逆向分析人员。面对日趋复杂的黑客攻击,目前相关技术还未成熟,还在艰难探索中。
OT安全性与IT安全性不同,IT安全概念不能直接应用于OT系统,且OT系统安全指南并不能完全对所有的OT系统有帮助。目前的OT系统的网络分割的概念,经常不起作用。作为OT运营者,通常需要详细了解对应的OT/ICS系统。在攻击者发现所有OT设备中的所有连接和漏洞之前;并且对相关OT网络重新设计,且进行相关漏洞检测。
不要使用对待“IT安全”的心态及标准来应对OT系统。OT网络是截然不同的、不同于传统网络扫描,许多OT设备将不会直接暴露在公网中。在下周,找出您的OT系统暴露面——如果您的组织恰好运营OT系统,进行该项操作,其效果比没有这项操作要好很多。不要依赖OT制造商,安全责任通常由您的组织负责(即使OT制造商管理您的设备)。在下个月,澄清CISO(首席信息安全官)在OT系统中的作用。 其中包括预算,以及利益相关者将如何团结起来,并获得更多的资金回报。在3个月内,在您的组织中实施集成IT/OT运营的路线图;在6个月内,寻找OT网络解决方案,但要小心“万金油”,对于许多行业新手来讲,要真正了解设备供应商带来了什么,到底是安全性、还是其它威胁源。
【1】Dragos,An Executive’s Guide to Industrial Cybersecurity,Nov.2021
【2】IT大举入侵OT,工业自动化早已成为一个“软件”行业
【3】https://www.cyberscoop.com/the-benefits-of-understanding-industrial-technology/
【4】《OT网络安全指南》草案推出-NIST SP 800-82第三版修订:从ICS扩展到OT
【5】https://industrialcyber.co/analysis/nist-sp-800-82-addresses-ot-systems-security-including-unique-performance-reliability-safety-requirements/
【6】https://csrc.nist.gov/publications/detail/sp/800-82/rev-3/draft
【7】 https://www.automation.com/en-us/articles/may-2021/colonial-pipeline-ransomware-attack-darkside-works
【8】https://journals.plos.org/plosone/article/figure?id=10.1371/journal.pone.0237749.g001
【9】https://www.secrss.com/articles/13774
原文始发于微信公众号(山石网科安全技术研究院):RSAC2022议题分享:OT逆向工程