一、引言
在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行战术、持久化战术(一)知识,本期我们为大家介绍ATT&CK 14项战术中持久化战术(二)涉及的6项子技术,后续会陆续介绍其他战术内容,敬请关注。
二、ATT&CK v10简介
MITRE ATT&CK 是一个全球可访问的基于现实世界观察的对手战术和技术知识库。ATT&CK 知识库被用作在私营部门、政府以及网络安全产品和服务社区中开发特定威胁模型和方法的基础。
ATT&CK v10更新了适用于企业、移动设备和 ICS(工业控制系统)框架的技术、组和软件。最大的变化是在企业 ATT&CK 中增加了一组新的数据源和数据组件对象,这是对 ATT&CK v9 中发布的 ATT&CK 数据源名称更改的补充。在 ATT&CK v10 中更新的内容汇总了有关数据源的这些信息,同时将它们构建为新的 ATT&CK 数据源对象。
ATT&CK v10 for Enterprise包含14个战术、188个技术、379个子技术、129个组织、638个软件,一共包括38类数据源。数据源对象具有数据源的名称以及关键细节和元数据,包括 ID、定义、可以收集它的位置(收集层)、可以在什么平台上找到它,突出显示构成数据源的相关值/属性的组件。ATT&CK v10 中的数据组件分析每个亮点映射到各种(子)技术,这些技术可以用该特定数据检测到。在个别(子)技术上,数据源和组件已从页面顶部的元数据框重新定位,以与检测内容并置。这些数据源可用于 Enterprise ATT&CK 的所有平台,包括最新添加的涵盖映射到 PRE 平台技术的开源情报 (OSINT) 相关数据源。
ATT&CK战术全景图(红框为持久化战术)
三、持久化战术
3.1 概述
持久化包括攻击者用来在重新启动、更改凭据和其他中断期间保持对系统的访问的技术,例如替换或劫持合法代码或添加启动代码。
持久化战术包括19种技术,上期给大家介绍了前6项技术,本期为大家逐一介绍中间6项技术。
3.2 创建账户(T1136)
攻击者可以创建一个帐户以维持对受害者系统的访问。攻击者可以在本地系统或云租户内创建帐户,在云环境中,攻击者可能会创建只能访问特定服务的帐户,减少被检测的风险。
创建账户技术包含3项子技术,介绍如下:
3.2.1 本地账户(T1136.001)
攻击者可以创建一个本地帐户,以维持对受害者系统的访问。本地帐户可用于建立不需要在系统上部署持久性远程访问工具的辅助凭据访问。
3.2.2 域账户(T1136.002)
攻击者可以创建一个域帐户来保持对受害系统的访问,域帐户可以涵盖用户、管理员和服务帐户。
3.2.3 云账户(T1136.003)
攻击者可以创建一个云帐户来保持对受害者系统的访问,创建仅有权访问特定云服务的帐户,这可以减少被检测的风险。
3.2.4 缓解措施
ID | 缓解措施 | 描述 |
M1032 | 多因素认证 | 对用户和特权帐户使用多重身份验证。 |
M1030 | 网络分割 | 配置访问控制和防火墙以限制对域控制器和系统的访问。 |
M1028 | 操作系统配置 | 通过确保关键服务器的正确安全配置来保护域控制器。 |
M1026 | 特权账户管理 | 不要用域管理员帐户进行日常操作,可能会增加账户泄露风险。 |
3.2.5 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控与账户创建相关联操作的执行命令和参数。 |
DS0009 | 进程 | 进程创建 | 监控与账户创建相关联的新建的进程。 |
DS0002 | 用户账号 | 用户账号修改 | 监控新建的用户帐户,收集有关在网络或Windows事件ID为4720中创建帐户的数据。 |
3.3 创建或修改系统进程(T1543)
攻击者可以创建或修改系统级进程,通过重复执行恶意有效载荷保持持久性。当操作系统启动时,它们可以启动执行后台系统功能的进程。在Windows和Linux上,这些系统进程称为服务。
攻击者可以安装新的服务、守护进程或代理程序,这些服务、守护进程或代理程序可以配置为在启动时或定时执行,以建立持久性。同样,攻击者可以修改现有的服务、守护进程或代理以达到相同的效果。
创建或修改系统进程技术包含4项子技术,介绍如下:
3.3.1 启动代理(T1543.001)
攻击者可以创建或修改启动代理,通过重复执行恶意有效载荷以保持持久性。通常安装启动代理来执行程序更新、在登录时启动用户指定的程序或执行其他任务。
启动代理名称可以通过使用相关操作系统或合法软件中的名称来伪装,启动代理使用用户级别权限创建并执行。
3.3.2 Systemd服务(T1543.002)
攻击者可以创建或修改systemd服务,以重复执行恶意有效载荷以保持持久性。Systemd服务管理器通常用于管理后台守护进程和其他系统资源。Systemd利用服务单元配置文件来控制服务如何启动以及在什么条件下启动。
3.3.3 Windows服务(T1543.003)
攻击者可以创建或修改Windows服务,通过重复执行恶意有效载荷保持持久性。当Windows启动时,它会启动执行服务程序或应用程序。Windows注册表中存储了Windows服务配置信息,包括服务可执行或恢复程序/命令的文件路径。
攻击者可以安装新服务或修改现有服务以在启动时执行, 可以使用系统程序设置、修改服务配置、修改注册表或者直接与Windows API交互方式。
攻击者可使用服务来安装和执行恶意驱动程序。攻击者会利用这些驱动程序作为Rootkit来隐藏系统上恶意活动的存在。攻击者还可以将已签名但易受攻击的驱动程序加载到受损的计算机上实现特权升级。
3.3.4 启动守护进程(T1543.004)
攻击者可以创建或修改启动守护进程,以执行恶意有效载荷。启动守护进程通常用于提供共享资源,软件更新或执行自动化任务的访问。
攻击者可以通过使用参数设置在启动时执行启动守护进程,并将程序参数设置为恶意可执行路径。守护程序名称可以伪装成操作系统或合法软件名称来规避检测风险。
3.3.5 缓解措施
ID | 缓解措施 | 描述 |
M1047 | 审计 | 使用能够检测系统的特权和服务滥用的审计工具。 |
M1040 | 预防端点行为 | 在Windows10上,启用攻击面减少(ASR)规则以防止应用程序将易受攻击的驱动程序写入系统。在Windows10和11上,启用易受攻击的驱动程序阻止列表,以加固第三方开发的驱动程序。 |
M1045 | 代码签名 | 强制注册和执行仅合法签名的服务驱动程序。 |
M1033 | 限制软件安装 | 将软件安装限制在受信任的存储库中,注意孤立软件包。 |
M1028 | 操作系统配置 | 启用驱动程序签名以限制安装未签名的驱动程序。 |
M1022 | 限制文件和目录权限 | 限制对系统级进程文件的读写访问权限,仅授权需要管理系统服务的合法特权用户访问。 |
M1018 | 用户帐户管理 | 限制用户帐户和组的权限,只有授权的管理员才能进行系统级的流程更改和服务配置。 |
3.3.6 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控来自已知服务的异常过程调用命令。 |
DS0027 | 驱动程序 | 驱动程序负载 | 监控新的服务驱动程序(例如:SYSMON事件ID 6),这些驱动程序不是已知的软件更新或补丁。 |
DS0022 | 文件 | 创建文件 | 监控新创建的文件。 |
文件修改 | 监控与系统级进程关联的文件的更改。 | ||
DS0009 | 进程 | OS API执行 | 监控可能创建或修改系统级进程的API调用。 |
进程创建 | 监控新创建的进程。 | ||
DS0019 | 服务 | 服务创建 | 监控新建的服务。 |
服务修改 | 监控未知的服务更改。 | ||
DS0024 | Windows注册表 | Windows注册表项创建 | 监控新建的Windows注册表项。 |
Windows注册表项修改 | 监控对Windows注册表项的修改。 |
3.4 事件触发执行(T1546)
攻击者可以使用基于特定事件触发执行的系统机制来建立持久性或提升特权。操作系统具有监控如登录或其他用户活动(例如运行特定应用程序/二进制文件)等事件的方法。
攻击者利用这些机制,通过反复执行恶意代码来保持持久化。在获得受害者系统的访问权限之后,攻击者可能会创建或修改事件触发器,以执行恶意代码。
事件触发执行技术包含16项子技术,介绍如下:
3.4.1 更改默认文件关联(T1546.001)
攻击者可以通过执行由文件类型关联触发的恶意代码来建立持久性。打开文件时,将检查文件关联程序,文件关联存储在Windows注册表中,可以由具有注册表访问权限的用户、管理员或程序编辑,也可以由管理员使用内置assoc程序编辑。应用程序可以修改给定文件扩展名的文件关联,以便调用任意程序。
3.4.2 屏幕保护程序(T1546.002)
屏幕保护程序是在可配置的用户无效时间后执行的程序,由带有.scr文件扩展名的便携式可执行文件(PE)文件组成。屏幕保护程序设置存储在注册表中,可以操纵以实现持久性:
scrnsave.exe-设置为恶意PE路径
屏幕屏蔽 - 设置为“ 1”以启用屏幕保护程序
ScreenSaverissecure-设置为“ 0”以不需要密码来解锁
ScreenSaveTimeOut - 在执行屏幕保护程序之前设置用户无效超时
攻击者可以使用屏幕保护程序设置来通过将屏幕保护程序设置为在用户不活动的一定时间范围后运行恶意软件来保持持久性。
3.4.3 WMI事件订阅(T1546.003)
攻击者可以使用WMI的功能订阅事件并在事件发生时执行任意代码,从而在系统上提供持久性。攻击者也可以将WMI脚本编译为Windows管理对象文件,可用于创建恶意订阅。
3.4.4 Unix Shell配置修改(T1546.004)
攻击者可通过执行由用户的shell触发的恶意命令来建立持久性,也可通过将命令插入shell自动执行的脚本来建立持久性。
3.4.5 Trap(T1546.005)
Trap命令允许程序和shell指定将在接收中断信号时执行的命令,例如终止和处理常见的键盘中断,如ctrl+c和ctrl+d。攻击者可以使用Trap来注册当shell遇到特定中断时要执行的代码来建立持久性。
3.4.6 LC_LOAD_DYLIB添加(T1546.006)
攻击者可以通过执行恶意二进制文件来建立持久性。MACH-O二进制文件中的LC_LOAD_DYLIB标头告诉macOS和OS X在执行期间加载哪些动态库(dylib)。只要对其余字段和依赖项进行调整,就可以将它们临时添加到已编译的二进制文件中。攻击者可以修改mach-O二进制标头,以便在每次执行二进制文件时加载并执行恶意dylib。
3.4.7 Netsh Helper DLL进程注入(T1546.007)
攻击者可以通过执行由Netsh Helper DLL触发的恶意代码来建立持久性。Netsh.exe是一种命令行脚本程序,用于与系统的网络配置进行交互。
3.4.8 辅助功能(T1546.008)
攻击者可以通过执行由辅助功能触发的恶意代码来建立持久性或提升权限。Windows包含可在用户登录之前使用组合键启动的辅助功能。攻击者可以修改这些程序的启动方式,以获得命令提示符或后门,而无需登录系统。攻击者常在注册表中替换辅助功能二进制文件。
两个常见的辅助程序是C:\ Windows \ System32 \ sethc.exe,在按下移位键五次时启动,C:\ Windows \ System32 \ utilman.exe在按下Windows + U键组合时启动。sethc.exe程序通常称为“粘滞键"”,被攻击者利用远程桌面登录屏幕用于未经身份验证的访问。
3.4.9 AppCert DLLs进程注入(T1546.009)
攻击者可以通过执行加载到进程中的AppCert Dll触发的恶意代码来建立持久性或提升特权。
恶意AppCert DLL还可以通过API活动持续触发来提供持久性。
3.4.10 AppInit DLLs进程注入(T1546.010)
攻击者可以通过执行加载到进程中的AppInit Dll触发的恶意代码来建立持久性或提升特权。AppInit_DLL值中指定的动态链接库由user32.dll加载。恶意AppInit Dll也可能通过API活动持续触发来提供持久性。
启用安全启动时,AppInit DLL功能在Windows8及更高版本中被禁用。
3.4.11 应用兼容程序(T1546.011)
攻击者可以通过执行应用兼容程序触发的恶意代码来建立持久性或提升特权。创建应用兼容程序是为了在操作系统代码库随时间变化时允许软件的向后兼容性,充当程序和Windows操作系统之间的缓冲区。
为了保证应用兼容程序的安全,Windows将它们设计为在用户模式下运行,这样它们就不能修改内核,必须具有管理员权限才能安装应用兼容程序。但是,某些兼容程序可用于绕过用户帐户控制(UAC和RedirectEXE),将Dll注入进程(InjectDLL)等,利用这些应用兼容程序可能允许攻击者执行一些恶意行为,例如提升特权,安装后门,禁用windows Defender等防御措施。
3.4.12 映像劫持(T1546.012)
攻击者可以通过执行由映像文件执行选项(IFEO)调试器触发的恶意代码来建立持久性或提升权限。IFEOs使开发人员能够将调试器附加到应用程序。创建进程时,应用程序的IFEO中存在的调试器将被添加到应用程序的名称前面,从而有效地在调试器下启动新进程。
恶意软件还可能使用IFEO通过注册无效的调试器来破坏防御,这些调试器重定向并有效地禁用各种系统和安全应用程序。
3.4.13 PowerShell配置文件(T1546.013)
攻击者可以通过执行PowerShell配置文件触发的恶意代码来建立持久性和提升权限。PowerShell配置文件(profile.ps1)是在PowerShell启动时运行的脚本,可用作自定义用户环境的登录脚本。
攻击者可以修改这些配置文件,包含任意命令、函数、模块或PowerShell驱动器等,当用户打开PowerShell会话时,修改后的脚本将被执行。
3.4.14 事件监视器守护程序Emond(T1546.014)
攻击者可以通过执行事件监视器守护程序(emond)触发的恶意代码来获得持久性和提升特权。Emond是一个启动守护程序,它接受来自各种服务的事件,通过简单的规则引擎运行它们并采取行动。规则文件采用plist格式,并定义要执行的名称、事件类型和操作,包括系统启动,用户身份验证,运行系统命令或发送电子邮件等。
攻击者可能会通过编写规则来利用此服务,以便在发生定义的事件(例如系统启动或用户身份验证)时执行命令。当Emond服务由启动守护程序服务以root权限执行时,攻击者也可以将权限从管理员升级到root。
3.4.15 组件对象模型劫持(T1546.015)
攻击者可以通过执行由对组件对象模型(COM)的劫持引用触发的恶意代码来建立持久性。COM是Windows中的一个系统,通过操作系统启用软件组件之间的交互,对各种COM对象的引用存储在注册表中。
攻击者可以使用COM系统插入恶意代码,这些恶意代码可以通过劫持COM引用和关系来代替合法软件,作为持久性的手段。劫持COM对象需要更改注册表以替换对合法系统组件的引用。
3.4.16 安装程序软件包(T1546.016)
攻击者可以通过使用安装程序来触发恶意代码的执行来建立持久性和提升权限。安装程序包包含操作系统在系统上安装应用程序所需的资源,包括在安装之前以及安装完成之后运行的脚本。开发人员经常使用这些脚本来准备安装环境,检查需求,下载依赖关系,并在安装后删除文件。
攻击者在应用程序中修改了安装程序脚本,以执行恶意代码。用户安装应用程序时,可能需要授予管理权限以允许安装。攻击者可以使用这些脚本执行恶意文件或安装其他恶意组件(如启动守护程序)以提升权限。
3.4.17 检测
ID | 数据源 | 数据组件 | 检测 |
DS0025 | 云服务 | 云服务修改 | 监控云资源的创建和修改 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数 |
DS0022 | 文件 | 创建文件 | 监控新创建的文件。 |
文件元数据 | 监控文件的上下文数据,包括名称、内容、用户、权限等信息。 | ||
文件修改 | 监控修改的文件 | ||
DS0011 | 模块 | 模块加载 | 通过进程监控DLL加载,查找无法识别或通常未加载到进程中的Dll,监控由于加载恶意DLL的进程导致的异常进程行为。 |
DS0009 | 进程 | 进程创建 | Sysinternals Autoruns等工具可用于检测执行触发器的更改及异常进程调用。 |
DS0024 | Windows注册表 | Windows注册表项修改 | 监控对windows注册表项做的修改 |
DS0005 | WMI | WMI创建 | 监控新建的WMI对象 |
3.5 利用外部远程服务(T1133)
攻击者可以利用面向外部的远程服务来初始访问或在网络中持久化。Vpn、Citrix和其他访问机制等远程服务允许用户从外部位置连接到内部企业网络资源。Windows远程管理和VNC等服务也可以在外部使用。
访问也可以通过不需要身份验证的公开服务获得。在容器化环境中,这可能包括公开的Docker API、Kubernetes API服务器、kubelet或Web应用程序(如Kubernetes dashboard)。
3.5.1 缓解措施
ID | 缓解措施 | 描述 |
M1042 | 禁用或删除功能或程序 | 禁用或阻止不必要的远程服务。 |
M1035 | 限制通过网络访问资源 | 通过集中管理的集中器(如Vpn和其他托管远程访问系统)限制对远程服务的访问。 |
M1032 | 多因素认证 | 对远程服务帐户使用多因素身份验证,以减轻攻击者利用被盗凭据的能力 |
M1030 | 网络分割 | 通过使用网络代理、网关和防火墙拒绝直接远程访问内部系统。 |
3.5.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0015 | 应用日志 | 应用日志内容 | 当访问公开的远程服务不需要身份验证时,需监控后续活动,例如公开的API或应用程序的异常外部使用。 |
DS0028 | 登录会话 | 登录会话元数据 | 收集身份验证日志并分析异常访问,包括异常时间、异常地点等维度。 |
DS0029 | 网络流量 | 网络连接创建 | 监控新建的网络连接。 |
网络流量内容 | 监控未遵循预期协议标准的流量数据包,监控异常进程执行和命令行参数。 | ||
未知的网络流量 | 监控未知硬件设备的网络流量。 |
3.6 执行流程劫持(T1574)
攻击者可通过劫持操作系统运行程序的方式来执行自己的恶意代码。攻击者可利用这些机制来提升特权或逃避防御,例如应用程序控制或其他执行限制。
攻击者可以通过多种方式劫持执行流程,包括操纵操作系统定位要执行的程序。操作系统定位程序要使用的库也可以被拦截,文件目录或注册表等都可以被恶意篡改。
执行流程劫持技术包含12项子技术,介绍如下:
3.6.1 DLL搜索顺序劫持(T1574.001)
攻击者可通过劫持加载Dll的搜索顺序来执行恶意代码,以建立持久性或提升权限。
攻击者可通过多种方式劫持DLL加载。攻击者可能会在程序将要请求的合法库的位置之前搜索的目录中放置特洛伊木马动态链接库文件,导致windows在受害者程序调用时加载其恶意库。攻击者还可以执行DLL预加载,也称为二进制植入攻击,将一个恶意DLL放在Windows在合法DLL之前搜索的位置,通常这个位置是程序的当前工作目录。当程序在加载DLL之前将其当前目录设置为远程位置时,就会发生远程DLL预加载攻击。攻击者也可通过DLL重定向直接修改搜索顺序。
3.6.2 DLL侧加载(T1574.002)
攻击者可以通过侧加载Dll来执行恶意代码。侧加载利用加载程序使用的DLL搜索顺序,将受害应用程序和恶意载荷彼此定位。攻击者可能使用侧加载掩盖他们在合法、可信的系统或软件进程下执行的动作。用于侧加载载荷的良性可执行文件在执行期间可能不会被标记。攻击者载荷也可以被加密或以其他方式混淆,直到加载到可信进程的内存中为止。
3.6.3 Dylib劫持(T1574.004)
攻击者可以通过在应用程序运行时搜索的路径中放置恶意动态库(dylib)来攻击。动态加载器将尝试根据搜索路径的顺序查找Dylibs。Dylibs的路径可以以@rpath作为前缀,@RPath允许开发人员使用相对路径根据可执行文件的位置指定运行时使用的搜索路径数组。
攻击者可通过在识别的路径中插入带有缺失dylib名称的恶意dylib来执行。Dylib被加载到应用程序的地址空间中,允许恶意dylib继承应用程序的特权级别和资源。
3.6.4 可执行安装程序文件权限弱点(T1574.005)
攻击者可以通过劫持安装程序使用的二进制文件来执行恶意代码。如果二进制文件本身或上级目录权限设置不正确,则可能会被另一个二进制文件覆盖,并由原始进程执行。
在安装过程中,安装程序通常使用%TEMP%目录中的子目录来解压缩Dll、EXEs或其他有效负载等二进制文件。当安装程序创建子目录和文件时,通常不会设置适当的权限来限制写访问,攻击者可以使用此技术将合法二进制文件替换为恶意二进制文件,作为在更高权限级别执行代码的手段。
3.6.5 动态链接器劫持(T1574.006)
攻击者可通过劫持动态链接器加载共享库的环境变量来执行恶意代码。在程序的执行准备阶段,动态链接器从环境变量和文件加载共享库的指定绝对路径,首先加载环境变量中指定的库,优先于具有相同函数名的系统库。这些变量经常被开发人员用来调试二进制文件,而无需重新编译,并在不改变原始库的情况下实现自定义函数。
3.6.6 PATH环境变量的路径拦截(T1574.007)
攻击者可以通过劫持用于加载库的环境变量来执行恶意代码。攻击者可能会将程序放在PATH环境变量存储的目录列表中的历史条目中,然后在Windows通过该路径列表中顺序搜索时将执行该程序,以搜索从脚本或命令行调用的二进制文件。
3.6.7 搜索顺序劫持的路径拦截(T1574.008)
攻击者可通过劫持用于加载其他程序的搜索顺序来执行恶意代码。由于某些程序不使用完整路径调用其他程序,对手可能会将自己的文件放在调用程序所在的目录中,导致操作系统由于调用程序的请求启动其恶意软件。
当攻击者利用Windows搜索未给定路径的程序的顺序时,就会发生搜索顺序劫持。
3.6.8 未引用路径的路径拦截(T1574.009)
攻击者可通过劫持易受攻击的文件路径引用来执行恶意代码。方法是将可执行文件放在路径内的较高级别的目录中,以便Windows选择要启动的恶意可执行文件。
如果定期调用可执行文件,此技术可用于持久性,如果拦截的可执行文件由较高特权进程启动,则可用于特权升级。
3.6.9 服务文件权限弱点(T1574.010)
攻击者可以通过劫持服务使用的二进制文件来执行恶意代码。攻击者可能会利用Windows服务权限中的弱点来替换在服务启动时执行的二进制文件。这些服务进程可以自动执行特定的二进制文件,攻击者可以使用此技术将合法二进制文件替换为恶意二进制文件,作为在更高权限级别执行代码的手段。
3.6.10 服务注册权限弱点(T1574.011)
攻击者可以通过劫持服务使用的注册表项来执行恶意代码,利用服务相关的注册表项的权限中的弱点,从最初指定的可执行文件重定向到他们控制的可执行文件,以便在服务启动时执行恶意代码。Windows将本地服务配置信息存储在HKLM\SYSTEM\CurrentControlSet\Services下的注册表中。存储在服务注册表项下的信息可以通过服务控制器sc等工具来操作以修改服务的执行参数。
如果未正确设置用户和组的权限并允许访问服务的注册表项,则攻击者可能会更改服务的binPath/ImagePath以指向恶意可执行文件。攻击者还可以为其恶意服务添加Parameters键或其他自定义子键,以建立持久性。
3.6.11 COR_PROFILER环境变量劫持(T1574.012)
攻击者可以利用COR_PROFILER环境变量劫持加载.NET CLR的程序的执行流。COR_PROFILER是一个.NET Framework功能,允许开发人员指定要加载到CLR的每个.NET进程中的分析DLL。
攻击者可利用COR_PROFILER来建立持久性,以便在每次调用CLR时在所有.NET进程的上下文中执行恶意DLL。
3.6.12 内核回调注入(T1574.013)
攻击者可能会使用kernelcallbacktable通过将原始回调函数替换为恶意代码来劫持进程的执行流,例如反射代码加载或进程注入到另一个进程中。
被篡改的函数通常使用Windows消息调用。在进程被劫持并执行恶意代码后,kernelcallbacktable也可能被恶意代码的其余部分恢复到原始状态。
3.6.13 缓解措施
ID | 缓解措施 | 描述 |
M1013 | 应用开发者指南 | 在清单文件中包含哈希值,以帮助防止恶意库的侧加载 |
M1047 | 审计 | 通过审计工具检查侧加载漏洞、程序配置文件、脚本、PATH环境变量、服务和快捷方式中的路径拦截弱点,使用绝对路径指定搜索顺序。 卸载软件时清理旧的Windows注册表项,以避免没有关联的合法二进制文件的密钥。 |
M1040 | 端点行为防御 | 通过端点防御来阻止与进程注入或内存篡改相关的某些类型的行为。 |
M1038 | 执行预防 | 通过应用程序控制解决方案,识别并阻止通过劫持执行的潜在恶意软件。 |
M1022 | 限制文件和目录权限 | 设置目录访问控制,以防止在运行应用程序的文件夹和标准库文件夹中的应用程序的搜索路径中写入文件。 |
M1044 | 限制库加载 | 不允许加载远程Dll,启用安全DLL搜索模式 |
M1024 | 限制注册表权限 | 注册表权限控制 |
M1051 | 更新软件 | 定期更新软件以修复DLL侧加载漏洞的补丁。 |
M1052 | 用户账户控制 | 关闭UAC对标准用户的权限提升 |
M1018 | 用户账户管理 | 限制用户帐户和组的权限,以便只有授权管理员才能与服务更改和服务二进制目标路径位置进行交互。 |
3.6.14 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数,这些命令和参数可能通过劫持操作系统运行程序的方式来执行恶意代码。 |
DS0022 | 文件 | 文件创建 | 监控新创建的文件。 |
文件修改 | 监控用于移动,重命名,更换或修改DLL的文件系统。监控与已知软件,补丁等不相关的过程加载的可疑DLL的变化。 监控对与软件更新无关的.manifest和.Local重定向文件的修改或创建。 | ||
DS0011 | 模块 | 模块加载 | 监控加载到一个进程中的DLL并检测具有相同文件名但异常路径的DLL。 |
DS0009 | 进程 | 进程创建 | 监控新创建的进程 |
DS0019 | 服务 | 服务元数据 | 监控在软件更新期间发生的二进制文件和服务可执行文件的更改。 |
DS0024 | Windows注册表 | Windows注册表修改 | 监控对windows注册表项所做的更改。 |
3.7 植入容器镜像(T1525)
攻击者可能会植入带有恶意代码的云或容器镜像,以便在获得对环境的访问权限后建立持久性。与上传恶意软件不同,此技术侧重于攻击者在受害者环境中的注册表中植入镜像。
3.7.1 缓解措施
ID | 缓解措施 | 描述 |
M1047 | 审计 | 定期检查云部署中使用的镜像和容器的完整性,以确保它们未嵌入恶意软件。 |
M1045 | 代码签名 | 要求容器镜像由受信任的源签名。 |
M1026 | 特权账户管理 | 基于最小化授权原则管理容器镜像相关权限。 |
3.7.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0007 | 镜像 | 镜像创建 | 监控用户与镜像和容器的交互,识别异常添加的镜像和容器。 |
镜像元数据 | 定期地基线虚拟机镜像以识别恶意修改或添加。 | ||
镜像修改 | 在容器化的环境中,可以通过监控Docker守护程序日志或Kubernetes审核日志来检测更改。 |
四、总结
本期主要介绍了持久化战术(二),涉及中间6项技术,下期将给大家介绍持久化战术(三),涉及持久化剩余技术介绍。敬请关注。