三、持续控制(Persistence)
该阶段:攻击者试图在您的 ICS 环境中保持其立足点。
持久性包括攻击者用来在重启、更改凭据和其他可能切断其访问的中断时保持对 ICS 系统和设备的访问的技术。用于持久性的技术包括任何访问、操作或配置更改,这些更改允许它们保护其正在进行的活动并在系统上保持立足点。这可能包括替换或劫持合法代码、固件和其他项目文件,或添加启动代码并将程序下载到设备上。
1. 硬编码凭据
攻击者可能会利用在软件或固件中硬编码的凭据来获取与资产的未经授权的交互式用户会话。可能在资产中硬编码的凭据示例包括:
a.用户名/密码
b.加密密钥/证书
c.API 令牌
与默认凭证不同,这些凭证以资产所有者无法更改的方式内置于系统中,或者由于会对控制系统操作造成影响而无法更改。这些凭据可以在整个产品线或设备型号中重复使用,并且通常不会发布或不为资产的所有者和运营商所知。
攻击者可以利用这些硬编码凭证在整个控制系统环境中移动,或者为其工具提供可靠的访问,以便与工业资产进行交互。
攻击检测:
a.登录会话:在可行的情况下监视硬编码凭据使用的登录会话。
b.网络流量:监控允许未加密身份验证的协议中的硬编码凭据使用的网络流量。
2.修改程序
攻击者可能会在控制器上修改或添加程序,以影响其与物理进程、外围设备和网络上其他主机的交互方式。除了其他类型的程序修改(如在线编辑和程序附加)外,还可以使用程序下载来完成对控制器程序的修改。
程序修改包括添加和修改程序组织单元 (POU) 中包含的指令和逻辑以及控制器上的类似编程元素。例如,这可能包括向控制器添加新函数、修改现有函数中的逻辑以及从一个函数到另一个函数进行新调用。
某些程序可能允许攻击者直接与控制器的本机 API 交互,以利用模糊的功能或漏洞。
攻击检测:
a. 应用日志:监视指示程序已更改的设备应用程序日志,尽管并非所有设备都生成这些日志。
b.资产:工程和资产管理软件通常会维护控制器上加载的预期程序的副本,并可能记录对控制器程序所做的任何更改。来自这些平台的数据可用于识别已修改的控制器程序。
c.网络流量:监视设备管理协议,以便检测像在线编辑和程序追加事件等修改程序功能。
d.操作数据库:监视指示程序已更改的设备警报,尽管并非所有设备都会产生这种警报。
3.模块固件
攻击者可能会在模块化硬件设备上安装恶意或易受攻击的固件。控制系统设备通常包含模块化硬件设备。这些设备可能有自己的一组固件,这些固件与主控制系统设备的固件是分开的。
此技术类似于系统固件,但对可能不具有相同功能或完整性检查级别的其他系统组件执行。尽管这会导致设备重新映像,但恶意设备固件可能会提供对其余设备的持久访问。
对于攻击者来说,一个简单的访问点是以太网卡,它可能有自己的 CPU、RAM 和操作系统。攻击者可能会攻击并可能利用以太网卡上的计算机。利用以太网卡计算机可能使攻击者能够完成其他攻击,例如:
延迟攻击 - 攻击者可能会提前发动攻击并选择何时发动攻击,例如在特别具有破坏性的时间。
让网卡变砖 - 恶意固件可能被编程为导致以太网卡故障,需要退厂。
随机攻击或失败 - 攻击者可能会将恶意固件加载到多个现场设备上。攻击的执行及其发生时间由伪随机数生成器生成。
现场设备蠕虫 - 攻击者可以选择识别同一型号的所有现场设备,最终目标是执行设备范围的入侵。
攻击现场设备上的其他卡 - 虽然它不是现场设备中最重要的模块,但攻击者和恶意软件最容易访问以太网卡。以太网卡的泄露可能会为破坏其他模块(例如 CPU 模块)提供更直接的途径。
攻击检测:
a.应用日志,同2 a。
b.固件修改:监视固件以查看意外更改。 应咨询资产管理系统,以了解已知的良好固件版本。 在易受攻击的系统上转储并检查 BIOS镜像,并与已知的好的镜像进行比较。分析差异以确定是否发生了恶意更改。
记录读取/写入 BIOS 的尝试,并与已知的补丁行为进行比较。 同样,可以收集 EFI 模块并与已知的清洁 EFI 可执行二进制文件列表进行比较,以检测潜在的恶意模块。CHIPSEC 框架可用于分析以确定是否已执行固件修改
c.网络流量:监视ICS管理协议/文件传输协议,以查看与固件更改相关的协议功能。
d.设备报警:通过设备产生的操作报警来监控固件的更改。
4.感染项目文件
攻击者可能会尝试使用恶意代码感染项目文件。这些项目文件可以由对象、程序组织单元、变量(如标签)、文档和 PLC 程序运行所需的其他配置组成。使用工程软件的内置功能,攻击者可能能够将受感染的程序下载到操作环境中的 PLC,从而启用进一步的执行和持久化技术。
攻击者可以将自己的代码导出到项目文件中,并有条件以特定时间间隔执行。 恶意程序允许攻击者控制 PLC 启用的流程的所有方面。将项目文件下载到 PLC 后,工作站设备可能会断开连接,而受感染的项目文件仍在执行。
攻击检测:
文件修改:监视项目文件的意外更改,虽然如果恶意修改与合法更改同时发生,仅通过分析文件系统修改将很难隔离意外更改。
5.系统固件
现代资产上的系统固件通常设计有更新功能。较旧的设备固件可能在出厂时安装,需要特殊的重新编程设备。如果该功能可用,供应商能够远程修补错误并执行升级。设备固件的更新工作通常委托给用户,可以使用软件更新包完成,也可以通过网络执行此任务。
攻击者可能会利用可访问设备上的固件更新功能上传恶意或过时的固件。因为固件是最低的可编程抽象层之一,恶意修改设备固件可能会为攻击者提供对设备的root访问权限。
固件攻击的目标系统包括:数据网关、HMI、智能电子设备、RTU、安全控制器、VPN服务器。
攻击检测:同3.
6.有效账户
攻击者可能会使用凭据访问技术窃取特定用户或服务帐户的凭据。在某些情况下,控制系统z中的设备的默认凭据可能是公开的。泄露的凭据可用于绕过对主机上和网络内各种资源的访问控制,甚至可能用于对远程系统的持久访问。泄露和默认凭据还可能授予攻击者对特定系统和设备的更高权限或访问网络受限区域的权限。攻击者可以选择不使用恶意软件或工具,以及这些凭据提供的合法访问权限,以使其更难检测其存在或控制设备并以意外方式发送合法命令。
攻击者还可能创建帐户,有时使用预定义的帐户名和密码,以提供持久性的备用访问方法。
跨系统网络的凭据和复用权限值得关注,因为攻击者可能能够跨帐户和系统进行透视,以达到高级别的访问权限(即域或企业管理员),并可能在IT和OT环境之间进行访问。攻击者可能能够利用来自一个系统的有效凭据来访问另一个系统。
攻击检测:
a. 登录会话检测:监视可能滥用现有帐户凭据以获取横向移动或持久性的登录行为。将其他安全系统与登录信息相关联(例如,用户有一个活动的登录会话,但尚未进入建筑物或没有 VPN 访问权限);
监控共享账户的系统中可疑的账户行为,这些账户可以是用户、管理员或服务账户。例如:一个账户同时登录多个系统;多个账户同时登录到同一台机器;账户在非常规时间或工作时间外登录。活动可能来自交互式登录会话或账户用于在远程系统上执行二进制文件作为特定账户的进程所有权。
b.用户账户认证:监控用户可能获取并滥用现有帐户凭证的身份验证尝试,以获取初始访问权限、持久性、特权升级或防御规避。
四、权限提升(Privilege Escalation)
该阶段:攻击者试图获取更高级别的权限。
权限提升包括攻击者用来在系统或网络上获得更高级别权限的技术。攻击者通常可以通过非特权访问进入和探索网络,但需要提升的权限才能实现其目标。常见的方法是利用系统弱点、错误配置和漏洞。
1. 利用特权提升
攻击者可能会利用软件漏洞来提升权限。当攻击者利用程序、服务或操作系统软件或内核本身中的编程错误来执行攻击者控制的代码时,就会发生利用软件漏洞的情况。权限级别等安全结构通常会阻碍对信息的访问和某些技术的使用,因此攻击者可能需要执行权限提升,以包括使用软件利用来规避这些限制。
当最初获得对系统的访问权限时,攻击者可能在较低权限的进程中操作,这将阻止他们访问系统上的某些资源。可能存在漏洞,通常存在于通常以更高权限运行的操作系统组件和软件中,可利用这些漏洞在系统上获得更高级别的访问权限。这可能使某人能够从非特权或用户级权限移动到 系统或root权限,具体取决于易受攻击的组件。对于攻击者来说,这可能是一个必要的步骤,因为攻击者破坏了已正确配置的端点系统,并限制了其他权限提升方法。
攻击检测:
a. 应用日志内容:根据可用工具,检测软件攻击可能会比较困难。软件攻击并不总是成功,可能会导致被攻击的进程变得不稳定或崩溃。
2. 钩子
攻击者可能会钩入进程使用的应用程序编程接口(API)函数,以重定向调用以执行和提升特权的手段。Windows进程通常利用这些API函数来执行需要可重复使用系统资源的任务。Windows API函数通常存储在动态链接库(DLL)中作为导出函数。在工业控制系统(ICS)中看到的一种钩入类型涉及通过导入地址表(IAT)钩入来重定向调用这些函数。IAT钩入使用对进程IAT的修改,其中存储着导入的API函数的指针。
攻击检测:
a. 操作系统API执行:监视可以用于安装挂钩程序的API调用,例如SetWindowsHookEx和SetWinEventHook函数。还应考虑使用工具分析挂钩链(其中保存每种挂钩类型的挂钩程序指针),或通过编程方式检查内部内核结构。
b. 进程元数据:通过比较内存中的代码与相应的静态二进制代码,来验证活动进程的完整性,特别是检查跳转和其他指令,以重定向代码流。