一、引言
在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化战术、提权战术(一),本期我们为大家介绍ATT&CK 14项战术中提权战术(二),包括提权剩余7项子技术,后续会介绍其他战术,敬请关注。
二、ATT&CK v12简介
MITRE ATT&CK 是一个全球可访问的基于现实世界观察的对手战术和技术知识库。ATT&CK 知识库被用作在私营部门、政府以及网络安全产品和服务社区中开发特定威胁模型和方法的基础。2022年10月25日发布的ATT&CK v12版本更新了适用于企业、移动设备和 ICS(工业控制系统)框架的技术、组和软件。v12最大的变化是在ATT&CK中增加了ICS的检测,描述了检测各种ICS技术的方法,每种方法都与特定的数据源和数据组件相关联,检测功能既利用了传统的主机和基于网络的采集,也利用了ICS特定的来源,如资产和运营数据库等。ATT&CK v12 for Enterprise包含14个战术、193个技术、401个子技术、135个组织、718个软件。
ATT&CK战术全景图(红框为提权战术)
三、提权战术
3.1 概述
权限升级是攻击者用来在系统或网络上获得更高级权限的技术。常见的方法是利用系统弱点、错误配置和漏洞。提升访问的示例包括:system/root账号、本地管理员、具有类似管理员访问权限的用户帐户、访问特定系统或功能的用户帐户。提权战术包括13种技术,上期介绍了前6种技术,本期介绍剩余7种技术,逐一介绍如下:
3.2 容器逃逸(T1611)
攻击者可能会跳出容器以访问底层主机。原则上,容器化资源应提供应用程序功能的明确分离,并与主机环境隔离。攻击者可以通过多种方式逃到宿主环境中,包括创建一个容器,配置为使用bind参数挂载主机的文件系统,该参数允许攻击者在主机上执行控制程序;利用特权容器在底层主机上运行命令或加载恶意内核模块;或利用unshare和keyctl等系统调用来升级特权。
3.2.1 缓解措施
ID | 缓解措施 | 描述 |
M1048 | 应用隔离和沙箱 | 限制容器对主机进程命名空间、主机网络和主机文件系统的访问。 |
M1038 | 执行防御 | 使用只读容器、只读文件系统,防止运行命令。 |
M1026 | 特权账户管理 | 确保容器默认不以root身份运行。 |
3.2.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0032 | 容器 | 容器创建 | 监控新建的容器,特别是以root身份运行的容器。 |
DS0008 | 内核 | 内核模块加载 | 监控安装的内核模块。 |
DS0009 | 进程 | OS API执行 | 监控异常的系统调用,可能表明从特权容器逃逸到主机。 |
进程创建 | 监控在容器外或主机上产生的异常进程。 | ||
DS0034 | 卷 | 卷修改 | 监控修改容器卷配置相关的行为。 |
3.3 事件触发执行(T1546)
攻击者可利用基于特定事件触发执行的系统机制建立持久性或提升特权。操作系统可监控登录或其他用户活动,云环境还可以监控特定云事件调用等。攻击者利用这些机制,在获得对受害系统的访问权限后,通过创建或修改事件触发器以指向恶意代码,每当调用事件触发器时都会执行恶意代码。事件触发执行包含16项子技术,介绍如下:
3.3.1 更改默认文件关联(T1546.001)
攻击者可以通过执行由文件关联触发的恶意内容来建立持久性。打开文件时,将检查打开文件的默认程序(也称为文件关联程序)。文件关联存储在Windows注册表中,应用程序可以修改给定文件扩展名的文件关联,以便在打开具有给定扩展名的文件时调用任意程序。攻击者可以修改注册表值以持续执行任意命令。
3.3.2 屏幕保护程序(T1546.002)
攻击者可以通过将屏幕保护程序设置为在用户不活动的某个时间段后运行恶意软件来建立持久性。屏幕保护程序设置存储在注册表(HKCU\Control Panel\Desktop\)中:
SCRNSAVE.exe-设置为恶意PE路径
屏幕保护程序-设置为"1"以启用屏幕保护程序
ScreenSaverIsSecure-设置为'0'不需要密码来解锁
ScreenSaveTimeout-在屏幕保护程序执行之前设置用户无效超时
3.3.3 WMI事件订阅(T1546.003)
攻击者可以使用WMI的功能订阅事件并在事件发生时执行任意代码,从而在系统上提供持久性。WMI订阅执行由WMI提供程序主机进程(WmiPrvSe)代理,从而可能导致系统特权提升。
3.3.4 Unix Shell配置修改(T1546.004)
攻击者可以通过执行由用户的shell触发的恶意命令来建立持久性。例如,当用户打开命令行界面或SSH远程登录时,将启动登录shell。启动时,系统上的所有登录shell都使用/etc/profile。这些配置脚本在其目录的权限级别运行,通常用于设置环境变量、创建别名和自定义用户的环境。攻击者可通过将命令插入shell自动执行的脚本来建立持久性。
3.3.5 Trap(T1546.005)
Trap命令允许程序和shell指定将在接收中断信号时执行的命令。攻击者可以使用它来注册当shell遇到特定中断时要执行的代码。
3.3.6 LC_LOAD_DYLIB添加(T1546.006)
MACH-O二进制文件中的LC_LOAD_DYLIB告诉macOS和OS X在执行期间加载哪些动态库(dylib)。只要对其余字段和依赖项进行调整,就可以将它们临时添加到已编译的二进制文件中。攻击者可以修改mach-O二进制文件,以便在每次执行二进制文件时加载和执行恶意dylib。
3.3.7 Netsh Helper DLL(T1546.007)
攻击者可通过执行由Netsh Helper DLL触发的恶意内容来建立持久性。netsh.exe是命令行脚本程序,用于与系统的网络配置进行交互。在HKLM \ Software \ Microsoft \ netsh上输入了注册Netsh Helper DLL的路径。
3.3.8 辅助功能(T1546.008)
攻击者可以通过执行由辅助功能触发的恶意内容来提升权限。Windows包含可在用户登录之前使用组合键启动的辅助功能。攻击者可以修改这些程序的启动方式,以获得命令提示符或后门,而无需登录到系统。
3.3.9 AppCert Dlls进程注入(T1546.009)
攻击者可以通过执行加载到进程中的AppCert Dll触发的恶意内容来提升权限。与进程注入类似,恶意AppCertDLLs还可以通过API活动持续触发来提供持久性。
3.3.10 APPInit Dlls进程注入(T1546.010)
攻击者可以通过执行加载到进程中的AppInit Dll触发的恶意内容来提升特权。与进程注入类似,恶意AppInit Dll也可能通过API活动持续触发来提供持久性。
3.3.11 应用兼容程序(T1546.011)
攻击者可以通过执行应用兼容程序触发的恶意代码来建立持久性或提升特权。创建应用兼容程序是为了在操作系统代码库随时间变化时允许软件的向后兼容性,充当程序和Windows操作系统之间的缓冲区。为了保证应用兼容程序的安全,Windows将它们设计为在用户模式下运行,这样它们就不能修改内核,必须具有管理员权限才能安装应用兼容程序。但是,某些兼容程序可用于绕过用户帐户控制(UAC和RedirectEXE),将Dll注入进程(InjectDLL)等,利用这些应用兼容程序可能允许攻击者执行一些恶意行为,例如提升特权,安装后门,禁用windows Defender等防御措施。
3.3.12 IFEO注入(T1546.012)
攻击者可以通过执行由映像文件执行选项(IFEO)调试器触发的恶意代码来提升权限。IFEOs使开发人员能够将调试器附加到应用程序。创建进程时,应用程序的IFEO中存在的调试器将被添加到应用程序的名称前面,从而有效地在调试器下启动新进程。恶意软件还可能使用IFEO通过注册无效的调试器来破坏防御,这些调试器重定向并有效地禁用各种系统和安全应用程序。
3.3.13 PowerShell配置文件(T1546.013)
攻击者可以通过执行PowerShell配置文件触发的恶意代码来提升权限。PowerShell配置文件(profile.ps1)是在PowerShell启动时运行的脚本,可用作自定义用户环境的登录脚本。攻击者可以修改这些配置文件,包含任意命令、函数、模块或PowerShell驱动器等,当用户打开PowerShell会话时,修改后的脚本将被执行。
3.3.14 Emond(T1546.014)
攻击者可以通过执行事件监视器守护程序(emond)触发的恶意代码来提升特权。Emond是一个启动守护程序,它接受来自各种服务的事件,通过简单的规则引擎运行它们并采取行动。规则文件采用plist格式,并定义要执行的名称、事件类型和操作,包括系统启动,用户身份验证,运行系统命令或发送电子邮件等。攻击者可能会通过编写规则来利用此服务,以便在发生定义的事件(例如系统启动或用户身份验证)时执行命令。
3.3.15 组件对象模型劫持(T1546.015)
攻击者可以通过执行由对组件对象模型(COM)的劫持引用触发的恶意代码来提升权限。COM是Windows中的一个系统,通过操作系统启用软件组件之间的交互,对各种COM对象的引用存储在注册表中。攻击者可以使用COM系统插入恶意代码,这些恶意代码可以通过劫持COM引用和关系来代替合法软件,劫持COM对象需要更改注册表以替换对合法系统组件的引用。
3.3.16 安装程序包(T1546.016)
攻击者可以通过使用安装程序来触发恶意代码的执行来提升权限。安装程序包包含操作系统在系统上安装应用程序所需的资源,包括在安装之前以及安装完成之后运行的脚本。开发人员经常使用这些脚本来准备安装环境,检查需求,下载依赖关系,并在安装后删除文件。攻击者在应用程序中修改了安装程序脚本,以执行恶意代码。攻击者可以使用这些脚本执行恶意文件或安装其他恶意组件(如启动守护程序)以提升权限。
3.3.17 检测
ID | 数据源 | 数据组件 | 检测 |
DS0025 | 云服务 | 云服务修改 | 监控云资源的创建和修改 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数 |
DS0022 | 文件 | 创建文件 | 监控新创建的文件。 |
文件元数据 | 监控文件的上下文数据,包括名称、内容、用户、权限等信息。 | ||
文件修改 | 监控修改的文件 | ||
DS0011 | 模块 | 模块加载 | 通过进程监控DLL加载,查找无法识别或通常未加载到进程中的Dll,监控由于加载恶意DLL的进程导致的异常进程行为。 |
DS0009 | 进程 | 进程创建 | Sysinternals Autoruns等工具可用于检测执行触发器的更改及异常进程调用。 |
DS0024 | Windows注册表 | Windows注册表项修改 | 监控对windows注册表项做的修改 |
DS0005 | WMI | WMI创建 | 监控新建的WMI对象 |
3.4 利用漏洞提权(T1068)
攻击者可利用软件漏洞来提升权限,利用程序、服务或操作系统软件或内核本身中的编程错误来执行恶意代码。漏洞通常存在于通常以较高权限运行的操作系统组件和软件中,可以利用这些漏洞在系统上获得更高级别的访问权限。攻击者可能会将签名的易受攻击的驱动程序带到受损的机器上,以便他们可以利用该漏洞在内核模式下执行代码。
3.4.1 缓解措施
ID | 缓解措施 | 描述 |
M1048 | 应用隔离和沙箱 | 通过应用隔离部署降低漏洞风险,通过沙箱检测隐蔽漏洞。 |
M1038 | 执行防御 | 阻止执行易受攻击的驱动程序。 |
M1050 | 利用保护机制 | 开启安全应用程序和控制流完整性检查。 |
M1019 | 威胁情报 | 通过威胁情报系统关联识别漏洞风险。 |
M1051 | 更新软件 | 定期更新软件确保没有存在漏洞的软件版本。 |
3.4.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0027 | 驱动 | 驱动负载 | 监控异常行为以及易受攻击的驱动程序加载事件(例如:Sysmon事件ID6)。 |
DS0009 | 进程 | 进程创建 | 监控新创建的进程。 |
3.5 执行流程劫持(T1574)
攻击者可通过劫持操作系统运行程序的方式来执行自己的恶意代码。攻击者可利用这些机制来提升特权或逃避防御,例如应用程序控制或其他执行限制。攻击者可以通过多种方式劫持执行流程,包括操纵操作系统定位要执行的程序。操作系统定位程序要使用的库也可以被拦截,文件目录或注册表等都可以被恶意篡改。执行流程劫持技术包含12项子技术,介绍如下:
3.5.1 DLL搜索顺序劫持(T1574.001)
攻击者可通过劫持加载Dll的搜索顺序来执行恶意代码,以建立持久性或提升权限。攻击者可通过多种方式劫持DLL加载。攻击者可能会在程序将要请求的合法库的位置之前搜索的目录中放置特洛伊木马动态链接库文件,导致windows在受害者程序调用时加载其恶意库。攻击者还可以执行DLL预加载,也称为二进制植入攻击,将一个恶意DLL放在Windows在合法DLL之前搜索的位置,通常这个位置是程序的当前工作目录。当程序在加载DLL之前将其当前目录设置为远程位置时,就会发生远程DLL预加载攻击。攻击者也可通过DLL重定向直接修改搜索顺序。
3.5.2 DLL侧加载(T1574.002)
攻击者可以通过侧加载Dll来执行恶意代码。侧加载利用加载程序使用的DLL搜索顺序,将受害应用程序和恶意载荷彼此定位。攻击者可能使用侧加载掩盖他们在合法、可信的系统或软件进程下执行的动作。用于侧加载载荷的良性可执行文件在执行期间可能不会被标记。攻击者载荷也可以被加密或以其他方式混淆,直到加载到可信进程的内存中为止。
3.5.3 Dylib劫持(T1574.004)
攻击者可以通过在应用程序运行时搜索的路径中放置恶意动态库(dylib)来攻击。动态加载器将尝试根据搜索路径的顺序查找Dylibs。Dylibs的路径可以以@rpath作为前缀,@RPath允许开发人员使用相对路径根据可执行文件的位置指定运行时使用的搜索路径数组。攻击者可通过在识别的路径中插入带有缺失dylib名称的恶意dylib来执行。Dylib被加载到应用程序的地址空间中,允许恶意dylib继承应用程序的特权级别和资源。
3.5.4 可执行安装程序文件权限弱点(T1574.005)
攻击者可以通过劫持安装程序使用的二进制文件来执行恶意代码。如果二进制文件本身或上级目录权限设置不正确,则可能会被另一个二进制文件覆盖,并由原始进程执行。在安装过程中,安装程序通常使用%TEMP%目录中的子目录来解压缩Dll、EXEs或其他有效负载等二进制文件。当安装程序创建子目录和文件时,通常不会设置适当的权限来限制写访问,攻击者可以使用此技术将合法二进制文件替换为恶意二进制文件,作为在更高权限级别执行代码的手段。
3.5.5 动态链接器劫持(T1574.006)
攻击者可通过劫持动态链接器加载共享库的环境变量来执行恶意代码。在程序的执行准备阶段,动态链接器从环境变量和文件加载共享库的指定绝对路径,首先加载环境变量中指定的库,优先于具有相同函数名的系统库。这些变量经常被开发人员用来调试二进制文件,而无需重新编译,并在不改变原始库的情况下实现自定义函数。
3.5.6 PATH环境变量的路径拦截(T1574.007)
攻击者可以通过劫持用于加载库的环境变量来执行恶意代码。攻击者可能会将程序放在PATH环境变量存储的目录列表中的历史条目中,然后在Windows通过该路径列表中顺序搜索时将执行该程序,以搜索从脚本或命令行调用的二进制文件。
3.5.7 搜索顺序劫持的路径拦截(T1574.008)
攻击者可通过劫持用于加载其他程序的搜索顺序来执行恶意代码。由于某些程序不使用完整路径调用其他程序,对手可能会将自己的文件放在调用程序所在的目录中,导致操作系统由于调用程序的请求启动其恶意软件。当攻击者利用Windows搜索未给定路径的程序的顺序时,就会发生搜索顺序劫持。
3.5.8 未引用路径的路径拦截(T1574.009)
攻击者可通过劫持易受攻击的文件路径引用来执行恶意代码。方法是将可执行文件放在路径内的较高级别的目录中,以便Windows选择要启动的恶意可执行文件。如果定期调用可执行文件,此技术可用于持久性,如果拦截的可执行文件由较高特权进程启动,则可用于特权升级。
3.5.9 服务文件权限弱点(T1574.010)
攻击者可以通过劫持服务使用的二进制文件来执行恶意代码。攻击者可能会利用Windows服务权限中的弱点来替换在服务启动时执行的二进制文件。这些服务进程可以自动执行特定的二进制文件,攻击者可以使用此技术将合法二进制文件替换为恶意二进制文件,作为在更高权限级别执行代码的手段。
3.5.10 服务注册权限弱点(T1574.011)
攻击者可以通过劫持服务使用的注册表项来执行恶意代码,利用服务相关的注册表项的权限中的弱点,从最初指定的可执行文件重定向到他们控制的可执行文件,以便在服务启动时执行恶意代码。Windows将本地服务配置信息存储在HKLM\SYSTEM\CurrentControlSet\Services下的注册表中。存储在服务注册表项下的信息可以通过服务控制器sc等工具来操作以修改服务的执行参数。如果未正确设置用户和组的权限并允许访问服务的注册表项,则攻击者可能会更改服务的binPath/ImagePath以指向恶意可执行文件。攻击者还可以为其恶意服务添加Parameters键或其他自定义子键,以建立持久性。
3.5.11 COR_PROFILER环境变量劫持(T1574.012)
攻击者可以利用COR_PROFILER环境变量劫持加载.NET CLR的程序的执行流。COR_PROFILER是一个.NET Framework功能,允许开发人员指定要加载到CLR的每个.NET进程中的分析DLL。攻击者可利用COR_PROFILER来建立持久性,以便在每次调用CLR时在所有.NET进程的上下文中执行恶意DLL。
3.5.12 内核回调注入(T1574.013)
攻击者可能会使用kernelcallbacktable通过将原始回调函数替换为恶意代码来劫持进程的执行流,例如反射代码加载或进程注入到另一个进程中。被篡改的函数通常使用Windows消息调用。在进程被劫持并执行恶意代码后,kernelcallbacktable也可能被恶意代码的其余部分恢复到原始状态。
3.5.13 缓解措施
ID | 缓解措施 | 描述 |
M1013 | 应用开发者指南 | 在清单文件中包含哈希值,以帮助防止恶意库的侧加载 |
M1047 | 审计 | 通过审计工具检查侧加载漏洞、程序配置文件、脚本、PATH环境变量、服务和快捷方式中的路径拦截弱点,使用绝对路径指定搜索顺序。 卸载软件时清理旧的Windows注册表项,以避免没有关联的合法二进制文件的密钥。 |
M1040 | 端点行为防御 | 通过端点防御来阻止与进程注入或内存篡改相关的某些类型的行为。 |
M1038 | 执行预防 | 通过应用程序控制解决方案,识别并阻止通过劫持执行的潜在恶意软件。 |
M1022 | 限制文件和目录权限 | 设置目录访问控制,以防止在运行应用程序的文件夹和标准库文件夹中的应用程序的搜索路径中写入文件。 |
M1044 | 限制库加载 | 不允许加载远程Dll,启用安全DLL搜索模式 |
M1024 | 限制注册表权限 | 注册表权限控制 |
M1051 | 更新软件 | 定期更新软件以修复DLL侧加载漏洞的补丁。 |
M1052 | 用户账户控制 | 关闭UAC对标准用户的权限提升 |
M1018 | 用户账户管理 | 限制用户帐户和组的权限,以便只有授权管理员才能与服务更改和服务二进制目标路径位置进行交互。 |
3.5.14 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数,这些命令和参数可能通过劫持操作系统运行程序的方式来执行恶意代码。 |
DS0022 | 文件 | 文件创建 | 监控新创建的文件。 |
文件修改 | 监控用于移动,重命名,更换或修改DLL的文件系统。监控与已知软件,补丁等不相关的过程加载的可疑DLL的变化。 监控对与软件更新无关的.manifest和.Local重定向文件的修改或创建。 | ||
DS0011 | 模块 | 模块加载 | 监控加载到一个进程中的DLL并检测具有相同文件名但异常路径的DLL。 |
DS0009 | 进程 | 进程创建 | 监控新创建的进程 |
DS0019 | 服务 | 服务元数据 | 监控在软件更新期间发生的二进制文件和服务可执行文件的更改。 |
DS0024 | Windows注册表 | Windows注册表修改 | 监控对windows注册表项所做的更改。 |
3.6 进程注入(T1055)
攻击者可以将代码注入到进程中来提升特权。进程注入是一种在单独的活动进程的地址空间中执行任意代码的方法。进程注入技术包含12项子技术,介绍如下:
3.6.1 动态链接库注入(T1055.001)
攻击者可以将动态链接库Dll注入到进程中,DLL注入通常通过在调用新进程加载DLL之前将路径写入目标进程的虚拟地址空间中的DLL来执行。
3.6.2 可执行文件注入(T1055.002)
攻击者可将可执行文件PE注入到进程中,PE注入在通过新进程调用目标进程之前将代码复制到目标进程的虚拟地址空间来执行的。
3.6.3 线程执行劫持(T1055.003)
攻击者可能会将恶意代码注入被劫持的进程中来提升特权。线程执行劫持通常通过挂起现有进程,然后取消映射其内存来执行,然后可以用恶意代码或DLL的路径替换。
3.6.4 异步进程调用(T1055.004)
攻击者可以通过异步进程调用APC队列向进程注入恶意代码,排队的APC函数在进程进入可更改状态时执行。
3.6.5 线程本地存储(T1055.005)
攻击者可以通过线程本地存储(TLS)回调将恶意代码注入进程,TLS回调注入涉及操纵可移植可执行文件PE中的指针,以便将进程重定向到恶意代码。TLS回调通常由操作系统用于设置或清理线程使用的数据。
3.6.6 Ptrace系统调用(T1055.008)
攻击者可以通过ptrace进程跟踪系统调用将恶意代码注入进程,Ptrace系统调用注入涉及修改正在运行的进程。Ptrace系统调用使调试进程能够观察和控制另一个进程以及每个单独的线程,包括更改内存和寄存器值。
3.6.7 Proc内存(T1055.009)
攻击者可以通过proc文件系统向进程注入恶意代码,通过使用proc文件系统提供的内存映射覆盖目标进程的堆栈来执行。
3.6.8 EWM注入(T1055.011)
攻击者可以通过EWM将恶意代码注入进程,在创建窗口之前,基于windows的图形化进程必须注册一个windows类,新windows类的注册可以包括请求将最多40字节的EWM追加到该类的每个实例的分配内存中。EWM旨在存储特定于该窗口的数据,并具有特定的应用程序编程接口(API)函数来设置和获取其值。
3.6.9 Process Hollowing(T1055.012)
攻击者可能会将恶意代码注入暂停的进程中, 进程挖空通常是通过创建一个处于暂停状态的进程,取消映射它的内存来执行的,然后可以用恶意代码替换它。
3.6.10 Process Doppelgänging(T1055.013)
Process doppelgänging是一种在单独活动进程的地址空间中执行任意代码的方法。Process Doppelgänging分4步实现:
使用合法的可执行文件创建TxF事务,然后用恶意代码覆盖该文件。
创建内存的共享部分并加载恶意可执行文件。
撤消对原始可执行文件的更改,有效地从文件系统中删除恶意代码。
从内存的受污染部分创建一个进程并启动执行。
3.6.11 VDSO劫持(T1055.014)
攻击者可以通过vdso劫持向进程注入恶意代码,VDSO劫持涉及将调用重定向到动态链接的共享库。攻击者可能会劫持从vdso共享对象映射到进程的syscall接口代码存根,以执行syscall以打开和映射恶意共享对象。然后,可以通过通过存储在进程全局偏移表(存储映射库函数的绝对地址)中的修补内存地址引用重定向进程的执行流来调用此代码。
3.6.12 ListPlanting(T1055.015)
攻击者可利用列表视图控件将恶意代码注入被劫持的进程中,ListPlanting可以通过将代码复制到使用列表视图控件的进程的虚拟地址空间中来执行,使用该代码作为自定义回调来对列出的项目进行分类,然后可以执行邮件攻击。
3.6.13 缓解措施
ID | 缓解措施 | 描述 |
M1040 | 端点行为防御 | 在Windows10上,攻击面减少(ASR)规则可能会阻止Office应用程序进行代码注入。 |
M1026 | 特权账户管理 | 将ptrace的使用限制为特权用户来减轻基于ptrace的进程注入。其他控制涉及安全内核模块的部署,这些模块提供高级访问控制和进程限制,如SELinux,grsecurity和AppArmor。 |
3.6.14 检测
ID | 数据源 | 数据组件 | 检测 |
DS0022 | 文件 | 文件元数据 | 监控文件的标题,内容,所有者等信息。 |
文件修改 | 监控修改文件的事件。 | ||
DS0011 | 模块 | 模块加载 | 监控DLL/PE文件事件,特别是这些二进制文件的创建以及将Dll加载到进程中,查找无法识别或未加载到进程中的Dll。 |
DS0009 | 进程 | OS API执行 | 监控Windows API调用可能会生成大量数据,监控Linux特定的调用,如ptrace系统调用。 |
进程访问 | 监控进程访问事件。 | ||
进程元数据 | 监控进程和内存是否一致。 | ||
进程修改 | 监控进程修改事件。 |
3.7 利用计划任务/工作(T1053)
攻击者可能会利用计划任务功能在系统启动时或定期重复执行恶意代码以实现持久性。利用计划任务技术包含5项子技术,介绍如下:
3.7.1 At(T1053.002)
攻击者可能会利用at程序来执行任务调度,以初始或重复执行恶意代码。At程序用于在指定的时间和日期调度任务。
3.7.2 Cron(T1053.003)
攻击者可能会利用cron程序来执行任务调度,以初始或重复执行恶意代码来实现持久性。cron程序是基于时间的作业调度程序,Crontab文件包含要运行的cron条目的时间表和指定的执行时间。
3.7.3 计划任务(T1053.005)
攻击者可能会利用Windows任务计划程序来执行任务计划,以初始或重复执行恶意代码来实现持久性。有多种方法可以访问Windows中的任务计划程序:Schtasks程序可以直接在命令行上运行;也可以通过控制面板的管理员工具部分内的GUI打开任务计划程序;攻击者使用Windows任务计划程序的.NET包装器;攻击者使用Windows netapi32库创建计划任务。攻击者还可能创建"隐藏"计划任务,这些任务可能对用于枚举任务的defender工具和手动查询不可见。具体来说,攻击者可以通过删除关联的安全描述符(SD)注册表值从schtasks或查询和任务计划程序中隐藏任务,也可以使用其他方法来隐藏任务,例如更改关联注册表项中的元数据等。
3.7.4 SystemD计时器(T1053.006)
攻击者可能会利用systemd计时器来执行任务调度,以初始或重复执行恶意代码。Systemd定时器是控制服务的定时器,Systemd计时器可以通过systemctl命令行实用程序远程激活,程序通过SSH运行。攻击者可以使用systemd计时器在系统启动时或按计划执行恶意代码以实现持久性。使用特权路径安装的计时器可用于维护根级别持久性。攻击者还可以安装用户级计时器以实现用户级持久性。
3.7.5 容器编排任务(T1053.007)
攻击者可能会利用容器编排工具(如Kubernetes)提供的任务调度功能部署带有恶意代码的容器。容器编排任务在特定的日期和时间运行这些自动化任务。在Kubernetes中,CronJob可用于调度运行一个或多个容器以执行特定任务的任务。因此,攻击者可以利用CronJob来计划在集群内的各个节点中执行恶意代码任务的部署。
3.7.6 缓解措施
ID | 缓解措施 | 描述 |
M1047 | 审计 | 审计计划任务中可用于特权升级的权限漏洞。 |
M1028 | 操作系统配置 | 配置计划任务的设置,以强制任务在经过身份验证的帐户下运行。 |
M1026 | 特权账户管理 | 将"增加调度优先级"选项配置为仅允许管理员组调度优先级进程的权限。 |
M1018 | 用户账户管理 | 限制用户帐户的权限,只有授权管理员才能在远程系统上创建计划任务。 |
3.7.7 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控已执行命令和参数。 |
DS0032 | 容器 | 容器创建 | 监控新创建的容器。 |
DS0022 | 文件 | 文件创建 | 监控新创建的文件。 |
文件修改 | 监控对文件所做的更改。 | ||
DS0009 | 进程 | 进程创建 | 监控新创建的进程。 |
DS0003 | 计划任务 | 计划任务创建 | 监控新建的计划任务。 |
3.8 利用有效账户(T1078)
攻击者可以获取和利用现有帐户的凭据,作为获得初始访问、持久性、特权升级或逃避防御的手段。泄露的凭据可用于绕过访问控制,用于持久访问远程系统和外部可用服务,受威胁的凭据也可能授予攻击者对特定系统的更多特权。在系统网络中,本地、域和云帐户的权限重叠是值得关注的,因为攻击者可能跨帐户和系统访问,以达到较高的访问级别。利用有效账户技术包含4项子技术,介绍如下:
3.8.1 默认账户(T1078.001)
攻击者可获取并利用默认帐户的凭据,作为获得初始访问、持久性、特权升级或防御逃避的手段。默认帐户是操作系统或其他设备内置的帐户,预置用户名和密码不修改的话很容易成为攻击者的目标。
3.8.2 域账户(T1078.002)
攻击者可获取并利用域帐户凭据,作为获得初始访问、持久性、特权升级或逃避防御的手段。域帐户是由Active Directory域服务管理的帐户,其中访问和权限是跨属于该域的系统和服务配置的。域帐户可以覆盖用户、管理员和服务。
3.8.3 本地账户(T1078.003)
攻击者可获取并利用本地帐户的凭据,作为获得初始访问、持久性、特权升级或防御逃避的手段。本地帐户是由组织配置的帐户,供用户、远程支持、服务在系统上管理。
3.8.4 云账户(T1078.004)
攻击者可获取并利用云帐户的凭据,作为获得初始访问、持久性、特权升级或防御逃避的手段。云帐户是由组织创建和配置的帐户,供用户、远程支持、服务、云服务提供商或SaaS应用程序内的资源管理使用。云帐户的受损凭据可用于从在线存储帐户和数据库中获取敏感数据。与域帐户类似,对云帐户的入侵可能使攻击者更容易在环境中横向移动。
3.8.5 缓解措施
ID | 缓解措施 | 描述 |
M1013 | 应用开发者指南 | 确保应用程序不会明文存储敏感数据或凭据。 |
M1027 | 密码策略 | 使用默认用户名和密码的应用程序和设备应在安装后立即更改,并在部署到生产环境之前更改。 |
M1026 | 特权账户管理 | 定期审核域和本地帐户及其权限级别,包括是否启用了默认帐户,或者是否创建了未经授权的新本地帐户。 |
M1018 | 用户账户管理 | 定期审核用户帐户的活动,并停用或删除任何不再需要的帐户。 |
M1017 | 用户培训 | 加强安全意识,启用多因素身份验证。 |
3.8.6 检测
ID | 数据源 | 数据组件 | 检测 |
DS0028 | 登录会话 | 登录会话创建 | 监控新增的登录行为。 |
登录会话元数据 | 异常登录行为监控,包括:异常账号、异常时间、异常地点等登录异常。 | ||
DS0002 | 用户账户 | 用户账户身份验证 | 监控用户帐户凭据。 |
四、总结
本期主要介绍了提权战术(二)及技术/子技术原理,下期将给大家介绍提权战术覆盖的实战型场景验证过程及行之有效的检测规则、防御措施等。敬请关注。