Techniques - ICS | MITRE ATT&CK®
一、初始入口(Initial Access)
1.水坑攻击
当用户访问网站时,攻击者可能会在会话劫持期间获得对系统的访问权限。使用此技术时,只需访问被感染的网站,即可锁定并利用用户的Web浏览器。攻击者可能会针对特定的社区,例如受信任的第三方供应商或其他行业的特定群体,这些群体经常访问目标网站。
这种有针对性的攻击依赖于一个共同的兴趣,被称为战略性的网络入侵或水坑攻击。美国国土安全部和联邦调查局的分析指出,在针对西方能源领域的“蜻蜓”行动中,有两类不同的受害者:暂存和预定目标。攻击者将目标锁定在安全性较低的目标网络上,其中包括可信赖的第三方供应商和相关外围组织。对预期目标的初始访问使用了针对过程控制、集成电路和关键基础设施相关的贸易出版物和信息网站的水坑攻击。
2. 利用面向公众的应用
攻击者可能试图利用面向公众的应用程序,如利用面向互联网的计算机系统、程序或资产上的弱点完成非法访问。面向公众的这些应用程序可能包括用户界面、软件、数据或命令等,均有可能成为攻击者进入OT系统的入口。
ICSCERT的分析显示GE Cimplicity HMl接入互联网后很可能成为攻击者渗透初期的访问媒介。
3. 利用远程服务
攻击者可能会利用软件漏洞,利用程序、服务或操作系统软件或内核本身中的编程错误来启用远程服务滥用。入侵后利用远程服务的一个共同目标是对整个 ICS 环境进行初始访问和横向移动,以便能够访问目标系统。[1]
ICS 资产所有者和运营商受到从企业 IT 迁移到 ICS 环境的勒索软件(或伪装成勒索软件的破坏性恶意软件)的影响:WannaCry、NotPetya 和 BadRabbit。在上述每种情况下,自我传播(可蠕虫)恶意软件最初都会感染 IT 网络,但通过利用(特别是针对 SMBv1 的 MS17-010 漏洞)传播到工业网络,从而产生重大影响。
4. 外部的远程服务
攻击者可能会利用外部远程服务作为对网络的初始访问点。这些服务允许用户从外部位置连接到内部网络资源。例如,VPN、Citrix 和其他访问机制。远程服务网关通常管理这些服务的连接和凭据身份验证。
外部远程服务允许从系统外部管理控制系统。通常,供应商和内部工程团队可以访问外部远程服务,以通过公司网络控制系统网络。在某些情况下,这种访问是直接从 Internet 启用的。当控制系统位于偏远地区时,远程访问可以轻松维护,但远程访问解决方案的妥协是一种负担。攻击者可以使用这些服务来访问控制系统网络并执行攻击。访问有效帐户通常是必需的。
在 Maroochy 攻击中,攻击者可以通过无线电远程访问系统;2015年对乌克兰电网的攻击表明,该环境中使用了当时的远程访问工具来访问控制系统网络。攻击者收集了工作人员的登录信息,其中一些是用来远程登录控制系统网络的VPN登录信息,这些VPN恰巧缺乏双因子身份验证。
注:2000年澳大利亚昆士兰Maroochy污水处理厂内部工程师多次攻击SCADA系统,导致三个月时间内有75万加仑未经处理的污水流入公园、河流等场地,造成海洋生物损失、危及公共安全等后果,并造成了巨大经济损失。这是有公开报道的第一次CPSs受到攻击。
5. 利用互联网开放设备
攻击者可以直接通过暴露于互联网的设备进行远程访问从而进入工业环境,而不必通过外部远程服务。这些设备提供的最小化权限机制,如密码身份验证,可能成为目标并遭受攻击。
在 Bowman大坝攻击事件中,攻击者利用调制解调器对大坝的控制网络进行了攻击。尽管该应用程序容易受到暴力破解,但通过密码身份验证机制可以保护。
6. 远程服务
攻击者可能会利用远程服务在资产和网段之间移动。这些服务通常用于允许操作员在网络内与系统进行远程交互,例如 RDP、SMB、SSH 和其他类似机制。
7.可移动介质摆渡攻击
攻击者可以通过将恶意软件复制到插入控制系统环境中的可移动介质上来进行(例如与企业网络分离的系统)。攻击者可能依靠不知情的可信任第三方引入可移动介质,例如具有访问权限的供应商或承包商,通过此技术,可以对从未连接到不受信任网络但可以物理访问的目标设备进行初始访问。德国核电站Gundremmingen的运营商在未连接到互联网的计算机上发现了恶意软件。该恶意软件包括Conficker和W32.Ramnit,在该设施的18个可移动磁盘驱动器中找到。此后,这家工厂检查了感染情况,并清理了1000多台计算机。一位ESET 研究人员评论说,互联网断开并不能保证系统免受感染或攻击载荷的执行。
8.恶意主机
攻击者可能会设置一个恶意主站,以利用控制服务器功能与外站进行通信。恶意主服务器可用于向其他控制系统设备发送合法的控制消息,从而以意想不到的方式影响进程。它还可用于通过捕获和接收用于实际主站的网络流量来中断网络通信。冒充主控服务器也可能使对手避免被发现。
在 2017 年的达拉斯警笛事件中,对手使用恶意主站向全市 156 个分布式警笛发送命令消息,要么通过一个信号强的恶意发射器,要么使用许多分布式中继器。
9.鱼叉式网络钓鱼攻击
攻击者可能会使用鱼叉式附件作为对特定目标的社会工程攻击形式。鱼叉式附件与其他形式的附件不同之处在于:它们使用附加到电子邮件的恶意软件。所有形式的网络钓鱼都是通过电子方式进行的,目标是特定的个人、公司或行业。在这种情况下,攻击者会将文件附加到欺骗性电子邮件中,并且通常依靠用户执行来获取执行和访问权限。
10.供应链攻击
攻击者可能通过受感染的产品、软件和工作流来执行供应链攻击,以获得控制系统的访问权限。供应链攻击是指在最终消费者收到产品(如设备或软件)之前,操纵产品或其交付机制。一旦受感染的产品进入目标环境,就会攻击、损害目标数据或系统。供应链攻击可能发生在供应链的所有阶段,从操纵开发工具和环境到操纵已开发和工具分发机制。这可能涉及在第三方或供应商网站上的合法软件和补丁的损害和替换。针对供应链攻击的目标,可以尝试渗透到特定受众的环境中发现。在IT和OT网中都拥有资产的控制系统环境中,针对IT环境的供应链攻击可能会进一步影响到OT环境。
F-Secure实验室分析了攻击者使用Havex破坏受害者系统的方法。攻击者在合法ICS/SCADA 供应商网站上植入了木马软件的安装程序。下载后,此软件用远程访问洛伊木马(RAT)感染了主机。
11.瞬态网络资产
攻击者可能以跨 ICS 网络和外部网络瞬态的设备为目标。通常,临时资产由授权人员带入环境,不会永久保留在该环境中。[1] 通常需要临时资产来支持管理功能,在远程管理资产不可行、不存在用于远程访问的外部连接或需要第三方承包商/供应商访问的系统中可能更常见。
攻击者可能以不同的方式利用瞬态资产。例如,当临时资产连接到外部网络时,攻击者可能会将其作为目标,然后利用其在另一个环境中的可信访问来发起攻击。他们还可以利用合法最终用户用来与控制系统设备交互的已安装应用程序和库。
在某些情况下,临时资产可能未使用安全配置进行部署,从而导致漏洞可能允许攻击者传播恶意可执行代码,例如,临时资产可能被恶意软件感染,并且当连接到 ICS 环境时,恶意软件会传播到其他系统。
12.无线攻击
攻击者可能会执行无线入侵,作为获取通信和未经授权访问无线网络的方法。对无线网络的访问可以通过破坏无线设备来获得。攻击者还可以使用与无线网络频率相同的无线电和其他无线通信设备。无线入侵可以作为远程距离的初始访问向量。
一名波兰学生使用改装的电视遥控器访问和控制波兰的罗兹市有轨电车系统。遥控器设备允许学生与有轨电车网络连接,以修改轨道设置并覆盖操作员控制。攻击者可能通过将控制器与红外控制协议信号的频率和幅度对齐来实现这一点。然后,控制器启用了对网络的初始访问,允许捕获和重放有轨电车信号。
二、执行攻击(Execution)
1.更改操作模式
攻击者可能会尝试更改控制设备上的程序的当前状态,程序状态更改可用于允许另一个程序接管控制或加载到目标设备上。
2.命令行界面
攻击者可能利用命令行界面(CLI)与系统交互并执行命令。CLI提供了一种与计算机系统进行交互的方式,并且是控制系统环境中多种平台和设备的常用功能。攻击者可以使用CLI安装和运行新软件,包括在操作过程中可能安装的恶意工具。
CLI通常在本地访问,但也可以通过SSH、Telnet和RDP等服务公开。在CL中执行的命令将以运行终端仿真器的进程的当前权限级别执行,除非该命令指定了权限上下文的更改。
许多控制器都有用于管理目的的CLI接口。
3. 通过API执行
攻击者可能试图利用控制软件和硬件之同通信的应用程序接口(API)。特定功能通常被编码成 API,软件可以调用API来实现设备或其他软件上的特定功能,如更改PLC上的程序状态。
4.图形用户界面GUI
攻击者可能试图通过图形用户界面(GUI)获得对计算机的访问权限,以增强执行能力。对GUI的访问允许用户以比CLI更直观的方式与计算机交互。GUI允许用户移动光标并点击界面对象,鼠标和键盘均是主要的输入设备。
如果不能进行物理访问,则可以通过协议进行访问,如基于Linux的VNC,以及Windows上的RDP。攻击者可以使用此访问权限在目标计算机上执行程序和应用程序。
在2015年对乌克兰电网的攻击中,攻击者利用SCADA环境中HMI打开了断路器。
5.钩子(Hooking)
攻击者可能会挂接到进程使用的应用程序编程接口 (API) 函数,以重定向对执行和权限提升手段的调用。Windows 进程通常利用这些 API 函数来执行需要可重用系统资源的任务。Windows API 函数通常作为导出的函数存储在动态链接库 (DLL) 中。
ICS 中出现的一种挂钩类型涉及通过导入地址表 (IAT) 挂接将调用重定向到这些函数。IAT 挂钩使用对进程 IAT 的修改,其中存储指向导入的 API 函数的指针。
6. 修改控制器任务
攻击者可以修改控制器的任务,以允许执行自己的程序。这可以允许攻击者操纵控制器的执行流和行为。
根据 61131-3,任务与项目组织单位 (POU) 的关联定义了任务关联。攻击者可以修改这些关联或创建新的关联来操纵控制器的执行流程。除了其他类型的程序修改(如在线编辑和程序附加)外,还可以使用程序下载来完成控制器任务的修改。
任务具有间隔、频率和优先级等属性,以满足程序执行的要求。一些控制器供应商使用隐式的预定义属性实现任务,而其他控制器供应商则允许显式表述这些属性。攻击者可能会将其程序与具有更高优先级的任务相关联,或者更频繁地执行相关程序。
例如,为了确保其程序在西门子控制器上的循环执行,攻击者可能会将其程序添加到任务组织块 1 (OB1) 中。
7.本地API
攻击者可以直接与本机操作系统应用程序编程接口(API)交互以访问系统功能。本机 API 提供了一种在内核中调用低级别操作系统服务的受控方法,例如涉及硬件/设备、内存和进程的服务。这些原生 API 在系统启动期间(当其他系统组件尚未初始化时)以及在日常操作期间执行任务和请求时作系统利用。
本机 API 提供的功能通常也通过接口和库向用户模式应用程序公开。例如,memcpy 和对内存寄存器的直接操作等函数可用于修改用户和系统内存空间。
8. 脚本编写
攻击者可以使用脚本语言以预先编写的脚本或以用户提供给解释器的代码的形式执行任意代码。脚本语言是不同于编译语言的编程语言,因为脚本语言使用解释器而不是编译器。这些解释器在源代码执行之前就读取并编译了部分源代码,与之相反,编译器将每一行代码都编译为可执行文件。脚本允许软件开发人员在存在解释器的任何系统上运行其代码。这样,他们可以分发一个程序包,而不是为许多不同的系统预编译可执行文件。脚本语言(如 Python)解释器在许多Linux 发行版中都默认提供。除了对开发人员和管理员来说是一个有用的工具外,脚本语言解释器还可能被攻击者滥用,从而在目标环境中执行代码、由于脚本语言的性质,使得武器化的代码可以很容易地部署到目标上,并允许随时编写脚本来执行任务。
9.用户执行
攻击者可能依赖目标组织的用户交互来执行恶意代码。用户交互可以包括安装应用程序、打开电子邮件附件或向文档授予更高的权限。攻击者可能会将恶意代码或VB代码嵌入文件中,如微软的Word和Excel 文档或软件安装程序。执行此代码要求用户在文档中启用脚本或写访问权限。在运行木马软件的情况下,嵌入式代码对于用户来说并容易忽视。