在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行战术知识,本期我们为大家介绍ATT&CK 14项战术中持久化战术前6项技术,后续会陆续介绍持久化战术其他技术内容,敬请关注。
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战术全景图(红框为持久化战术)
持久化包括攻击者用来在重新启动、更改凭据和其他中断期间保持对系统的访问的技术,例如替换或劫持合法代码或添加启动代码。
持久化战术包括19种技术,本期为大家逐一介绍前6种技术。
攻击者可能会操纵帐户以保持对受害者系统的访问,包括保留攻击者对已泄露帐户的访问权限的任何操作,例如修改凭据,权限组或密码,提权等。
操纵账户技术包括5个子技术,介绍如下:
攻击者可将控制的凭据添加到云帐户中,以维持对受害者帐户和环境中实例的持续访问。
攻击者可向邮箱添加权限,以保持对攻击者已控制的电子邮件帐户的持久访问。
攻击者还可通过单个文件夹权限或角色分配邮箱文件夹权限,利用租户中的任何其他帐户来保持对目标用户的邮件文件夹的持久访问。
攻击者可以向控制的云帐户添加其他角色或权限,以保持对租户的持久访问。此帐户修改可在创建帐户或其他恶意帐户活动之后立即进行,攻击者也可以修改他们已经入侵的现有有效帐户。
攻击者可以修改SSH密钥文件以保持对受害者主机的持久访问。Linux发行版和macOS通常使用基于密钥的身份验证来保护SSH会话以进行远程管理。
攻击者可以直接使用脚本或shell命令修改SSH密钥文件。在云环境中,攻击者可通过命令行界面或rest API修改特定虚拟机的SSH密钥文件。如果攻击者向特权较高的用户添加密钥,则可能会在目标虚拟机上实现特权升级。
攻击者可将设备注册到攻击者控制的帐户。设备可以在多因素身份验证系统中注册,该系统处理对网络的身份验证,或者在设备管理系统中注册,该系统处理设备访问和合规性。
ID | 缓解措施 | 描述 |
M1032 | 多因素认证 | 对用户和特权帐户使用多重身份验证。 |
M1030 | 网络分割 | 配置访问控制和防火墙以限制对关键系统和域控制器的访问。 大多数云环境支持单独的虚拟私有云(VPC)实例,可以进一步细分云系统。 |
M1028 | 操作系统配置 | 通过确保关键服务器的正确安全配置来保护域控制器,以限制可能不必要的协议和服务(如SMB文件共享)的访问。 |
M1026 | 特权账户管理 | 不要用域管理员帐户进行日常操作,可能会增加账户泄露风险。 |
M1018 | 用户账户管理 | 确保低权限用户帐户没有修改帐户或帐户相关策略的权限。 |
ID | 数据源 | 数据组件 | 检测 |
DS0026 | Active Directory | Active Directory对象修改 | 监控对日志的更改,以获取服务和应用程序的修改。 |
DS0017 | 命令 | 命令执行 | 监控已执行的命令和可疑命令的参数,这些命令可能指示修改相关服务设置的权限。 |
DS0022 | 文件 | 文件修改 | 监控对与帐户设置相关的文件所做的更改,例如系统上每个用户的/etc/ssh/sshd_config和authorized_keys文件。 |
DS0036 | 组 | 组修改 | 监控系统和域上的帐户对象权限更改的事件,例如事件ID 为4738、4728和4670。 |
DS0009 | 进程 | 进程创建 | 监控修改帐户设置的新进程,例如修改authorized_keys或/etc/ssh/sshd_config文件的进程。 |
DS0002 | 用户账号 | 用户账号修改 | 监控可疑的帐户修改,包括异常时间,异常系统,异常权限或密码的更改。 |
攻击者利用BITS任务来持久执行代码和各种后台任务。BITS利用组件对象模型(COM)公开的低带宽异步文件传输机制。BITS通常由更新程序和其他在后台运行的应用程序使用,而不会中断其他联网应用程序。文件传输任务作为BITS任务实现,BITS任务包含一个或多个文件操作的队列。
可以通过PowerShell和BITSAdmin工具访问创建和管理BITS任务的界面。
攻击者利用BITS下载,执行,运行并清理恶意代码。BITS任务无需新文件或注册表修改,由主机防火墙放行。BITS还可以通过创建长期任务或调用任意程序来保持持久性。
BITS上传功能也可用于过滤协议。
ID | 缓解措施 | 描述 |
M1037 | 过滤网络流量 | 修改网络或主机防火墙规则以及其他网络控制,仅允许合法的BITS流量。 |
M1028 | 操作系统配置 | 请考虑减少组策略中的默认BITS任务生存期,或通过编辑注册表值来减少默认BITS任务生存期。 |
M1018 | 用户账户管理 | 考虑将对BITS接口的访问限制为特定用户或组。 |
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控BITSAdmin工具执行的命令和参数; 管理PowerShell日志和BITS活动的Windows事件日志; 分析BITS任务数据库任务详情。 |
DS0029 | 网络流量 | 网络连接创建 | 监控异常的网络连接, BITS任务使用HTTP(S)和SMB进行远程连接,并与创建用户绑定,并且仅在该用户登录时才会起作用。 |
DS0009 | 进程 | 进程创建 | 使用BITSAdmin工具监控要新建的BITS任务。 |
DS0019 | 服务 | 服务元数据 | 监控异常的服务运行。 |
攻击者可在系统登录期间自动执行程序,以保持持久性或获得更高特权。这些机制可能包括自动执行指定目录(如Windows注册表)的程序。
利用自动启动执行引导或登录技术包含14项子技术,介绍如下:
攻击者可以通过将程序添加到启动文件夹或使用注册表运行项引用它来实现持久性。在注册表或启动文件夹中添加条目将导致引用的程序在用户登录时执行。这些程序将在用户的上下文下执行,并具有帐户的相关权限级别。
攻击者可以使用这些配置执行恶意软件(如远程访问工具),以通过系统重新启动来保持持久性。攻击者也可以使用伪装来使注册表项看起来好像它们与合法程序相关联。
当系统启动时,攻击者可能会利用身份验证包来执行Dll。Windows身份验证包Dll由本地安全机构(LSA)进程在系统启动时加载。它们为操作系统的多个登录进程和多个安全协议提供支持。
攻击者可以使用LSA身份验证包提供的自动启动机制进行持久化,方法是在windows注册表位置HKLM\SYSTEM\CurrentControlSet\Control\Lsa\中放置对二进制文件的引用,其键值为"Authentication Packages"=<target binary>。然后,系统将在加载身份验证包时执行二进制文件。
当系统启动时,攻击者可能会利用时间提供程序来执行Dll。Windows时间服务(W32Time)启用跨域和域内的时间同步。W32Time时间提供程序负责从硬件/网络资源中检索时间戳,并将这些值输出到其他网络客户端。时间提供程序实现为在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\W32Time\TimeProviders\的子项中注册的动态链接库(Dll)。时间提供程序管理器由服务控制管理器指导,在系统启动或更改参数时加载并启动程序。
攻击者可能会利用此体系结构来建立持久性,特别是通过注册并启用恶意DLL作为时间提供程序。时间提供程序注册需要管理员权限,执行将在本地服务帐户的上下文中运行。
当用户登录时,攻击者可能会利用Winlogon的功能来执行Dll或可执行文件。温洛贡。Winlogon.exe是负责登录/注销时的操作以及由Ctrl-Alt-Delete触发的安全注意序列(SAS)的Windows组件。HKLM\Software[\Wow6432Node\]\Microsoft\Windows NT\CurrentVersion\Winlogon\和HKCU\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\中的注册表项用于管理支持Winlogon的其他帮助程序和功能。
对这些注册表项的恶意修改可能会导致Winlogon加载和执行恶意Dll或可执行文件。具体来说,已知以下子项可能容易被利用:
Winlogon\Notify-指向处理Winlogon事件的通知包Dll;
Winlogon\Userinit-指向用户登录时执行的用户初始化程序userinit.exe;
Winlogon\Shell-指向用户登录时执行的系统shell explorer.exe;
攻击者可能会利用这些特性来重复执行恶意代码并建立持久性。
当系统启动时,攻击者可能会利用安全支持提供程序(Ssp)来执行Dll。Windows SSP Dll在系统启动时加载到本地安全机构(LSA)进程中。一旦加载到LSA中,SSP Dll就可以访问存储在Windows中的加密和明文密码,例如任何登录用户的域密码或智能卡Pin。
SSP配置存储在两个注册表项中:HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages和HKLM\SYSTEM\CurrentControlSet\Control\Lsa\OSConfig\Security Packages。攻击者可能会修改这些注册表项以添加新的Ssp,这些Ssp将在下次系统引导时或调用AddSecurityPackage Windows API函数时加载。
攻击者可能会修改内核以在系统引导时自动执行程序。可加载内核模块(LKMs)是可以根据需要加载和卸载到内核中的代码片段。它们扩展了内核的功能,而不需要重新启动系统。
恶意使用时,LKMs可以是一种以最高操作系统特权(环0)运行的内核模式Rootkit。功能包括:隐藏文件,进程和网络活动,日志篡改,提供身份验证的后门,允许对非特权用户进行root访问等。
攻击者可以修改plist文件,以便在用户登录时自动运行应用程序。当用户通过macOS图形用户界面(GUI)注销或重新启动时,会向用户提供一个提示,其中包含"重新登录时重新打开windows"的复选框。选中后,当前打开的所有应用程序都会添加到名为com的属性列表文件中。此文件中列出的应用程序会在用户下次登录时自动重新打开。
攻击者可以通过添加恶意应用程序路径来建立持久性。plist文件用于在用户登录时执行有效载荷。
攻击者可以修改或添加LSASS驱动程序以获得对受损系统的持久性。Windows安全子系统是一组组件,可管理和执行计算机或域的安全策略。LSA是负责本地安全策略和用户身份验证的主要组件,LSA包括与各种其他安全功能相关联的多个动态链接库(Dll),所有这些都在LSA子系统服务(LSASS)的上下文中运行。
攻击者可以LSASS驱动程序为目标以获得持久性。通过替换或添加非法驱动程序,通过LSA操作来持续执行恶意载荷。
攻击者可以创建或修改可以在系统引导或用户登录期间执行程序的快捷方式。
攻击者可利用启动文件夹中的快捷方式来执行他们的工具并实现持久性。攻击者可以编辑目标路径或完全替换现有的快捷方式,以便他们的恶意软件将被执行,而不是预期的合法程序。
攻击者可以使用端口监视器在系统启动期间运行恶意DLL,以获得持久性或特权升级。
攻击者可以使用此技术在启动时加载恶意代码,这些代码将在系统重新启动时持续存在并执行。
攻击者可能会利用打印处理器在系统启动期间运行恶意DLL以实现持久性或特权升级。打印处理器是由打印后台处理程序服务spoolsv.exe在启动过程中加载的DLL。
攻击者可以修改XDG自动启动条目以在系统启动期间执行程序或命令,通过在桌面环境启动期间执行恶意命令和有效负载(如远程访问工具)来保持持久性。攻击者也可以使用伪装来使XDG自动启动条目看起来好像它们与合法程序相关联。
攻击者可以通过将注册表项添加到本地计算机的活动设置来实现持久性。Active Setup是一种Windows机制,用于在用户登录时执行程序。存储在注册表项中的值将在用户登录到计算机后执行。
攻击者可能会通过在HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\下创建密钥并为StubPath设置恶意值来利用活动设置,该值将作为用户登录计算机时将执行的程序。
攻击者可在用户登录时添加登录项执行,以获得持久性或权限升级。登录项是用户登录时自动启动的应用程序、文档、文件夹或服务器连接,可以通过共享文件列表或服务管理框架添加登录项目。共享文件列表登录项可以使用脚本语言设置,而服务管理框架使用API调用SMLoginItemSetEnabled。
ID | 缓解措施 | 描述 |
M1025 | 特权进程完整性 | Windows8.1、Windows Server2012R2和更高版本可能会通过设置注册表项HKLM\SYSTEM\CurrentControlSet\Control\Lsa\RunAsPPL使LSA作为受保护的进程运行,该注册表项要求Lsa、SSP Dll加载的所有Dll都由Microsoft签名。 |
M1022 | 限制文件和目录权限 | 考虑使用组策略来配置修改W32Time Dll; 将对XDG自动启动条目的写访问限制为仅选择特权用户。 |
M1024 | 限制注册表权限 | 请考虑使用组策略来配置对注册表中的W32Time参数的修改 |
M1038 | 执行预防 | 通过应用程序控制工具来识别和阻止可能通过Winlogon进程执行的潜在恶意软件,能够审计阻止未知Dll。 应用程序控制和软件限制工具(如SELinux、LSPP、grsecurity MODHARDEN和Linux kernel tuning)可以帮助限制内核模块加载。 |
M1018 | 用户账户管理 | 限制用户帐户的权限,以便只有授权的管理员才能执行Winlogon。 使用MDM禁用用户安装或批准内核扩展的功能,并确保所有批准的内核扩展与com中指定的策略保持一致。 限制谁可以在Windows中创建符号链接到适当的组权限。 通过禁用SeLoadDriverPrivilege来限制可以加载或卸载设备驱动程序的用户帐户。 限制用户帐户的权限,因此只有授权的特权用户才能创建和修改XDG自动启动条目。 |
M1049 | 防病毒/反恶意软件 | 用于检测Linux rootkit的常用工具包括:rkhunter,chrootkit。 |
M1026 | 特权账户管理 | 通过适当的权限分离和限制权限升级机会,限制对根帐户的访问,并防止用户加载内核模块和扩展。 |
M1042 | 禁用或删除功能或程序 | 可以使用以下终端命令完全禁用此功能:defaults write-g ApplePersistence-bool no。 |
M1017 | 用户培训 | 登录时按住Shift键可防止应用程序自动打开 |
M1043 | 凭证存取保护 | 在Windows10和Server2016上,启用Windows Defender Credential Guard以在没有任何设备驱动程序的隔离虚拟化环境中运行lsass.exe。 |
M1044 | 限制库加载 | 确保已启用安全dll搜索模式以减轻lsass.exe加载恶意代码库的风险。 |
M1033 | 限制软件安装 | 将软件安装在受信任的存储库中,并谨慎对待孤立的软件包。 |
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控已执行的命令和参数,这些命令和参数可以将系统设置配置为在系统登录期间自动执行程序。 |
DS0027 | 驱动 | 驱动负载 | 监控不寻常的内核驱动程序安装活动,该活动可能会配置系统设置以在系统登录过程中自动执行程序。 |
DS0022 | 文件 | 文件创建 | 监控新建立的文件。 |
文件修改 | 监控对文件所做的更改。 | ||
DS0008 | 内核 | 内核模块加载 | 监控不寻常的内核驱动程序安装活动。 |
DS0011 | 模块 | 模块负载 | 通过进程监控异常DLL加载。 |
DS0009 | 进程 | OS API执行 | 监控API调用 |
进程创建 | 监控异常的进程创建 | ||
DS0024 | Windows注册表 | Windows注册表项创建 | 监控新建的注册表 |
Windows注册表项修改 | 监控修改的注册表 |
攻击者可以通过登录初始化时自动执行脚本来建立持久性。初始化脚本可用于执行管理功能,包括执行其他程序或将信息发送到内部日志记录服务器。
攻击者可使用脚本在单个系统上保持持久性。根据登录脚本的访问配置,可能需要本地凭据或管理员帐户。
由于某些启动或登录初始化脚本要以更高的权限运行,因此攻击者也可以升级其权限。
利用初始化脚本引导或登录包含5项子技术,介绍如下:
攻击者在登录初始化时自动执行Windows登录脚本来建立持久性。Windows允许特定用户或用户组登录系统时运行登录脚本,这是通过将脚本路径添加到HKCU\Environment\UserInitMprLogonScript注册表项来完成的。
攻击者可以使用登录钩子来建立在用户登录时执行的持久性。登录钩子是一个plist文件,它指向一个特定的脚本,在用户登录时以root权限执行。Plist文件位于/Library/Preferences/com中,需要管理员权限才能修改或创建钩子。
攻击者可以在com中添加或插入恶意脚本的路径,恶意脚本将在下次用户登录时执行。如果登录钩子已经存在,攻击者可以向现有的登录钩子添加其他命令。一个系统上一次只能有一个登录和注销钩子。
攻击者可以使用在登录初始化时自动执行的网络登录脚本来建立持久性。可以使用Active Directory或组策略对象分配网络登录脚本。这些登录脚本以分配给它们的用户的特权运行,根据登录脚本的访问配置,可能需要本地凭据或管理员帐户。
攻击者可以通过修改RC脚本来建立持久性,RC脚本是在Unix样系统的启动过程中执行的,这些文件允许系统管理员以不同的运行级别映射和启动自定义服务。RC脚本需要root权限才能修改。
攻击者可以向RC.Local,rc.common和其他RC脚本添加恶意二进制路径或命令,重新启动后,系统以root身份执行脚本的内容,从而产生持久性。
攻击者可在登录初始化时自动执行启动项来建立持久性。启动项在启动过程的最后阶段执行,并包含shell脚本或其他可执行文件以及启动项执行顺序的配置信息。
ID | 缓解措施 | 描述 |
M1022 | 限制文件和目录权限 | 将登录脚本的写入访问权限限制为特定管理员。 |
M1024 | 限制注册表权限 | 确保为注册表设置适当的权限,防止用户修改可能导致持久性的登录脚本的密钥。 |
ID | 数据源 | 数据组件 | 检测 |
DS0026 | 活动目录 | 活动目录对象修改 | 监控活动目录中所做的更改 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数,这些命令和参数可能由登录脚本组成,用于异常用户或在异常时间进行异常访问 |
DS0022 | 文件 | 文件创建 | 监控新建立的文件 |
文件修改 | 监控对文件所做的更改 | ||
DS0009 | 进程 | 进程创建 | 监视新创建的进程 |
DS0024 | Windows注册表 | Windows注册表项创建 | 监控新建的Windows注册表项 |
攻击者可能会利用互联网浏览器扩展插件来建立对受害者系统的持久访问。
恶意扩展插件可以通过伪装成合法插件安装到浏览器中,根据浏览器的不同,攻击者还可以操纵扩展的更新url从攻击者控制的服务器安装更新,或者操纵移动配置文件以静默方式安装其他扩展。也有僵尸网络通过恶意Chrome扩展使用持久后门的例子。
ID | 缓解措施 | 描述 |
M1047 | 审计 | 确保安装的扩展插件是预期有意义的,因为许多恶意扩展插件将伪装成合法的。 |
M1038 | 执行预防 | 设置浏览器扩展插件允许或拒绝列表。 |
M1033 | 限制软件安装 | 仅从可验证的可信来源安装浏览器扩展。 |
M1051 | 更新软件 | 确保操作系统和浏览器使用的是最新版本。 |
M1017 | 用户培训 | 使用完毕后关闭所有浏览器会话,以防止任何潜在的恶意扩展继续运行。 |
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数 |
DS0022 | 文件 | 文件创建 | 监控新建的文件 |
DS0029 | 网络流量 | 网络连接创建 | 监控由不受信任的主机发送或接收的新建的网络连接。 |
DS0009 | 进程 | 进程创建 | 监控新执行的进程,这些进程可用于internet浏览器扩展以建立持久性。 |
DS0024 | Windows注册表 | Windows注册表项创建 | 监控写入注册表的任何新项目或写入磁盘的PE文件。 |
攻击者可以修改客户端软件二进制文件以建立对系统的持久访问。常见的客户端软件类型是SSH客户端、FTP客户端、电子邮件客户端和web浏览器。攻击者可以复制客户端软件的源代码,添加后门,为目标编译,并用后门替换合法的应用程序二进制文件。由于这些应用程序可能常规由用户执行,因此攻击者可以利用它来持久访问主机。
ID | 缓解措施 | 描述 |
M1045 | 代码签名 | 确保所有应用程序组件二进制文件都由正确的应用程序开发人员签名。 |
ID | 数据源 | 数据组件 | 检测 |
DS0022 | 文件 | 文件创建 | 监控新建的客户端软件二进制文件 |
文件删除 | 监控删除的客户端软件二进制文件 | ||
文件元数据 | 收集和分析签名证书元数据,并检查在环境中执行的软件的签名有效性 | ||
文件修改 | 监控与已知软件或补丁周期无关的客户端软件的更改。 |
本期主要介绍了持久化战术前6项子技术理论知识,下期将给大家介绍持久化战术其他子技术。敬请关注。