一、引言
在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究、部分防御规避战术,本期我们为大家介绍ATT&CK 14项战术中防御规避战术第19-24种子技术,后续会介绍防御规避其他子技术,敬请关注。
二、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 概述
防御逃避包括攻击者在攻击过程中用来避免被发现的技术,包括禁用安全软件、加密数据和脚本、利用可信进程来隐藏或伪装恶意软件。
防御规避战术包括42种技术,本期介绍第19-24种技术,逐一介绍如下:
3.2 修改身份验证过程(T1556)
攻击者可以修改身份验证机制和流程,以访问用户凭据或启用不必要的对账户的访问。身份验证过程通过机制处理,例如Windows上的本地安全身份验证服务器(LSASS)进程和安全帐户管理器(SAM)等。
攻击者可能会恶意篡改身份验证过程,以泄露凭据或绕过身份验证机制。泄露的凭据可用于绕过访问控制,并持续访问远程系统和外部可用服务。
修改身份验证过程技术包含7项子技术,介绍如下:
3.2.1 域控制器验证(T1556.001)
攻击者可能会修改域控制器上的身份验证过程,以绕过典型的身份验证机制访问账户。
恶意软件可用于在域控制器上的身份验证过程中注入虚假凭据,目的是创建用于访问任何用户的帐户或凭据的后门。经过身份验证的访问可以实现对单因素身份验证环境中的主机或资源的无限制访问。
3.2.2 密码过滤器DLL(T1556.002)
攻击者可能会将恶意密码过滤器动态链接库(Dll)注册到身份验证过程中,以便在验证用户凭据时获取这些凭据。
Windows密码过滤器是域和本地帐户的密码策略强制机制。过滤器作为Dll实现,其中包含根据密码策略验证潜在密码的方法。
攻击者可以注册恶意密码过滤器,以从本地计算机或整个域获取凭据。要执行正确的验证,过滤器必须从LSA接收纯文本凭据。每次发出密码请求时,恶意密码过滤器都会收到这些纯文本凭据。
3.2.3 可插入的身份验证模块(T1556.003)
攻击者可修改可插入的身份验证模块(PAM)以访问用户凭据或非法访问帐户。PAM是一个由配置文件、库和可执行文件组成的模块化系统,用于指导许多服务的身份验证。
攻击者可能会修改PAM系统的组件以创建后门。对PAM系统的恶意修改也可被利用以窃取凭据。
3.2.4 网络设备认证(T1556.004)
攻击者可以使用补丁系统镜像来硬编码操作系统中的密码,从而绕开网络设备上本地帐户的本地身份验证机制。在验证尝试时,插入的代码将首先检查用户输入的是否是密码。如果是,则授予访问权限。否则,植入的代码将传递凭据以验证潜在有效的凭据。
3.2.5 可逆加密(T1556.005)
攻击者可能会利用Active Directory身份验证加密属性以访问windows系统上的凭据。可逆密码加密属性指定是启用还是禁用帐户的可逆密码加密。默认情况下,此属性处于禁用状态。如果启用该属性,则攻击者可能会创建或更改的密码的明文。攻击者需要如下四个组件可以解密密码:
- 来自Activedirectory用户结构用户参数的加密密码(G$RADIUSCHAP)
- 也来自userParameters的16字节随机生成的值(G$RADIUSCHAPKEY)
- 全球LSA秘密(G$MSRADIUSCHAPKEY)
- 远程访问子身份验证DLL(RASSFM)中硬编码的静态密钥。
- 攻击者可以通过本地组策略编辑器、用户属性、细粒度密码策略(FGPP)或ActiveDirectory PowerShell模块设置此属性。
3.2.6 多因素认证(T1556.006)
攻击者可能会禁用或修改多因素身份验证(MFA)机制,以启用对帐户的持久访问。
根据攻击者的范围、目标和权限,可能会对单个帐户或与较大组关联的所有帐户(例如受害者网络环境中的所有域帐户)禁用MFA防御。
3.2.7 混合身份(T1556.007)
攻击者可能会修改与本地用户身份相关联的云身份验证过程,以绕过典型的身份验证机制、访问凭据并持久访问帐户。
许多组织维护在内部部署和基于云的环境之间共享的混合用户和设备身份。通过修改绑定到混合身份的身份验证过程,攻击者可以建立对云资源的持久特权访问。
3.2.8 缓解措施
ID | 缓解措施 | 描述 |
M1047 | 审计 | 检查身份验证日志以确保MFA强制等机制按预期运行。 |
M1032 | 多因素身份认证 | 通过多因素身份验证(MFA)降低攻击者获得有效凭据控制权的风险,限制对云资源和Api的访问。 |
M1028 | 操作系统配置 | 确保仅注册有效的密码过滤器。 |
M1027 | 密码策略 | 确保AllowReversiblePasswordEncryption属性设置为disabled,除非有应用程序要求。 |
M1026 | 特权账户管理 | 审计域和本地帐户,限制对根帐户的访问, 限制本地账户。 |
M1025 | 特权进程完整性 | LSA的启用功能 |
M1022 | 限制文件和目录权限 | 限制对/library/security/securityagentplugins目录的写入访问权限。 |
M1018 | 用户账户管理 | 确保实施适当的策略,保障用户帐户的身份验证机制的安全注册和停用。 |
3.2.9 检测
ID | 数据源 | 数据组件 | 检测 |
DS0026 | 活动目录 | 活动目录对象对象 | 监控对与MFA登录要求相关的AD安全设置所做的更改。 |
DS0015 | 应用日志 | 应用日志内容 | 启用安全审核收集日志,例如,监控Azure AD应用程序代理连接器的登录,这些登录通常仅在添加新的通过身份验证(PTA)代理时生成。 如果AD FS正在使用中,查看事件ID501的日志,该日志指定声明的所有EKU属性,并对环境中未配置的任何值发出警报。 |
DS0022 | 文件 | 文件创建 | 监视/Library/Security/SecurityAgentPlugins目录中的可疑添加。 |
文件修改 | 监控与身份验证过程相关的文件的可疑修改,例如配置文件和模块路径(例如/etc/pam) | ||
DS0028 | 登录会话 | 登录会话创建 | 监控异常登录行为,包括:一个账号同时登录到多个系统;单账号多IP同时登录,异常时间或异常地点登录等行为。 |
DS0011 | 模块 | 模块加载 | 监控写入域控制器或本地计算机的新增DLL文件。 |
DS0009 | 进程 | OS API执行 | 监控域控制器上的进程或者跟身份验证机制相关的DLL的修改。 |
进程访问 | 监控与身份验证机制交互的未知进程。 | ||
DS0002 | 用户账户 | 用户账户认证 | 监控未提供MFA凭据的帐户身份验证。 |
用户账户修改 | 使用无需MFA凭据即可成功登录的设备和用户帐户的注册。 | ||
DS0024 | Windows注册表 | Windows注册表修改 | 监控对密码过滤器的注册表值的修改,分析这些文件引用的DLL文件。 |
3.3 修改云计算基础架构(T1578)
攻击者可能会尝试修改云帐户的计算服务基础架构以逃避防御,包括创建、删除或修改一个或多个组件,例如计算实例、虚拟机和快照。
修改云计算基础架构技术包含4项子技术,介绍如下:
3.3.1 创建快照(T1578.001)
攻击者可以在云帐户中创建快照或数据备份以逃避防御。攻击者可以利用权限创建快照,以绕过阻止访问基础设施的限制,在还原云实例中,攻击者可以恢复到快照以逃避检测并删除其存在的证据。
3.3.2 创建云实例(T1578.002)
攻击者可能会在云帐户的计算服务中创建新实例或虚拟机以逃避防御。创建新实例可允许攻击者绕过当前驻留在帐户内的实例上存在的防火墙规则和权限。攻击者可以为帐户中的一个或多个卷创建快照,创建新实例,装入快照,然后应用限制较小的安全策略从本地系统收集数据或进行远程数据暂存。
创建新实例还可能允许攻击者在环境中执行恶意活动,而不会影响当前正在运行的实例。
3.3.3 删除云实例(T1578.003)
攻击者可能会在执行恶意活动并删除其存在的证据后删除云实例。如果实例不可恢复,删除实例或虚拟机可以删除有价值的可疑行为的取证证据。
3.3.4 恢复云实例(T1578.004)
攻击者可能会在执行恶意活动后恢复对云实例所做的更改,试图逃避检测并删除其存在的证据。
大多数云提供商提供各种类型的存储,包括持久存储、本地存储和临时存储,临时存储类型通常在vm停止或重新启动时重置。攻击者可利用临时存储重置特性恢复对云实例所做的修改。
3.3.5 缓解措施
ID | 缓解措施 | 描述 |
M1047 | 审计 | 定期监控用户权限,以确保只有授权用户能够修改云计算基础设施组件。 |
M1018 | 用户账户管理 | 根据最小化授权原则,创建、删除和更改计算机组件的权限。 |
3.3.6 检测
ID | 数据源 | 数据组件 | 检测 |
DS0030 | 实例 | 实例创建 | 监控新创建的实例。 |
实例删除 | 监控删除的实例。 | ||
实例元数据 | 定期基线实例,通过基线核查发现异常行为。 | ||
实例修改 | 监控对实例的异常修改。 | ||
实例启动 | 建立实例活动的集中日志记录,监控实例启动事件。 | ||
实例停止 | 监控实例停止事件。 | ||
DS0020 | 快照 | 快照创建 | 监控新创建的快照。 |
快照删除 | 监控删除的快照。 | ||
快照元数据 | 定期基线快照以识别恶意修改或添加。 | ||
快照修改 | 监控修改快照事件。 | ||
DS0034 | 卷 | 卷创建 | 监控云存储卷的意外创建或存在。 |
卷删除 | 监控云存储卷的意外删除。 | ||
卷元数据 | 定期基线云存储卷以识别恶意修改或添加。 | ||
卷修改 | 监控云存储卷的意外更改。 |
3.4 修改注册表(T1112)
攻击者可以与Windows注册表交互,以隐藏注册表项中的配置信息,删除信息以清理痕迹。
对注册表特定区域的访问取决于帐户权限,有些需要管理员级别的访问权限。内置的Windows命令行程序Reg可用于本地或远程注册表修改,也可基于远程访问工具通过Windows API修改注册表。
注册表修改还可能包括隐藏键的操作,例如在键名前加上空字符, 攻击者可能会利用这些伪隐藏键来隐藏恶意命令。
3.4.1 缓解措施
ID | 缓解措施 | 描述 |
M1024 | 限制注册表权限 | 确保为注册表配置单元设置了适当的权限,以防止用户修改可能导致特权升级的系统组件的键。 |
3.4.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控已执行的命令和参数。 |
DS0009 | 进程 | OS API执行 | 监控与隐藏注册表项(如Reghide)相关联的API调用。 |
进程创建 | 监控进程和命令行参数。 | ||
DS0024 | Windows注册表 | Windows注册表项创建 | 监控新创建的注册表项。 |
Windows注册表项删除 | 监控意外删除的windows注册表项。 | ||
Windows注册表项修改 | 监视对windows注册表项或值所做的更改。可对windows事件ID4657日志进行采集分析。 |
3.5 修改系统镜像(T1601)
攻击者可能会对嵌入式网络设备的操作系统进行更改,以削弱防御并为自己提供新功能。在这种设备上,操作系统通常是单片的,大多数设备功能包含在一个文件中。要更改操作系统,攻击者通常只需要影响这一个文件,替换或修改它。这可以在系统运行时实时在内存中完成,以便立即生效,也可以在存储中完成,以便在下次启动网络设备时实现更改。
修改系统镜像技术包含2项子技术,介绍如下:
3.5.1 补丁系统镜像(T1601.001)
要更改存储中的操作系统,攻击者通常会通过网络设备上使用的典型协议(如TFTP、FTP、SCP或控制台连接)下载新文件,原始文件可能会被覆盖,或者写入一个新文件,然后重新配置设备以启动镜像。
要更改内存中的操作系统,有两种方法:1.攻击者将在原始未更改的运行操作系统中使用本机调试命令,这些命令允许他们直接修改包含运行操作系统的相关内存地址。通常需要对设备的管理级别访问权限。2.攻击者将使用引导加载程序。引导加载程序是在设备启动时加载的第一个软件,该软件反过来将启动操作系统。攻击者可能使用先前植入引导加载程序的恶意代码,例如通过ROMMONkit方法,直接操纵内存中正在运行的操作系统代码。引导加载程序中的恶意代码为攻击者提供了直接内存操作的能力,允许他们在运行时修补操作系统。
3.5.2 降级系统镜像(T1601.002)
攻击者可能会安装网络设备的旧版操作系统以削弱安全性。网络设备上较旧的操作系统版本通常具有较弱的加密密码,并且通常存在漏洞。
在嵌入式设备上,降级版本通常只需要替换存储中的操作系统文件,然后重新启动设备或等到系统下次重新启动以使其生效。
3.5.3 缓解措施
ID | 缓解措施 | 描述 |
M1046 | 引导完整性 | 提供加密签名,以确保操作系统映像在启动时的完整性。 |
M1045 | 代码签名 | 提供数字签名的操作系统镜像,以验证其平台上使用的软件的完整性。 |
M1043 | 凭证存取保护 | 以纯文本或加密格式存储本地帐户的密码。 |
M1032 | 多因素认证 | 对用户和特权帐户使用多重身份验证。 |
M1027 | 密码策略 | 创建密码策略时,请参阅NIST指南。 |
M1026 | 特权账户管理 | 按照最低权限原则,将管理员帐户限制为尽可能少的个人。 |
3.5.4 检测
ID | 数据源 | 数据组件 | 检测 |
DS0022 | 文件 | 文件修改 | 使用命令查询操作系统的版本号,并将其与相关设备的预期版本进行比较。 |
3.6 网络边界桥接(T1599)
攻击者可能会通过外围网络设备或负责网络分段的内部设备来桥接网络边界,以绕过流量路由的限制。
路由器和防火墙等设备可用于在可信网络和不可信网络之间创建边界,通过限制流量类型来降低连接的安全风险。流量的限制可以通过禁止IP地址、第4层协议端口或通过深度包检测来识别应用来实现。
通过在设备上实现足够的权限,攻击者可以重新配置设备以允许他们想要的流量,从而通过多跳代理进一步实现命令和控制等目标,或者通过流量复制实现数据过滤。
网络边界桥接技术包含1个子技术,介绍如下:
3.6.1 网络地址转换遍历(T1599.001)
攻击者可以通过修改网络设备的网络地址转换(NAT)配置来桥接网络边界。对NAT的恶意修改可能会使攻击者绕过流量路由的限制。
当攻击者获得对网络边界设备的控制权时,他们可以利用现有的NAT配置在两个分离的网络之间发送流量,也可以实现自己设计的NAT配置。在需要NAT功能的网络设计的情况下,这使攻击者克服通常会阻止他们访问边界设备后面的受保护系统的固有路由限制。在不需要NAT的网络设计的情况下,地址转换可以被攻击者用来掩盖他们的活动。
3.6.2 缓解措施
ID | 缓解措施 | 描述 |
M1043 | 凭证存取保护 | 以纯文本或加密格式存储本地帐户的密码。 |
M1037 | 过滤网络流量 | 使用防火墙或未受感染的路由器阻止恶意数据包。 |
M1032 | 多因素认证 | 对用户和特权帐户使用多重身份验证。 |
M1027 | 密码策略 | 创建密码策略时,请参阅NIST指南。 |
M1026 | 特权账户管理 | 按照最低权限原则,将管理员帐户限制为尽可能少的个人。 |
3.6.3 检测
ID | 数据源 | 数据组件 | 检测 |
DS0029 | 网络流量 | 网络流量内容 | 监控异常流量数据包、异常进程执行和与流量模式相关的命令行参数。 |
网络流量 | 监控不常见数据流的网络数据。 |
3.7 混淆文件或信息(T1027)
攻击者可能试图通过加密、编码或以其他方式混淆系统上或传输中的内容来使可执行文件难以被发现或分析。
混淆文件或信息技术包含9项子技术,介绍如下:
3.7.1 二进制填充(T1027.001)
二进制填充有效地改变了文件的校验和,也可用于避免基于哈希的块列表和静态防病毒签名。使用的填充通常由创建垃圾数据的函数生成,然后附加到末尾或应用于恶意软件的部分。增大文件大小可能会降低某些工具和检测功能的有效性,这些工具和检测功能并非设计或配置为扫描大文件。这也可能降低被收集用于分析的可能性。
3.7.2 软件打包(T1027.002)
攻击者可以执行软件打包或虚拟机软件保护以隐藏其代码。软件打包是一种压缩或加密可执行文件的方法,打包可执行文件会更改文件签名,以避免基于签名的检测。虚拟机软件保护将可执行原始代码转换为只有特殊虚拟机才能运行的特殊格式,然后调用虚拟机来运行此代码。
3.7.3 隐写术(T1027.003)
攻击者可能会使用隐写技术,以绕过隐藏信息的检测。隐写技术可用于隐藏数字媒体中的数据,例如图像、音轨、视频剪辑或文本文件。
3.7.4 交付后编译(T1027.004)
攻击者可通过将文件作为未编译的代码传递给受害者来使有效负载难以检测。源代码有效载荷也可以被加密、编码或嵌入到其他文件中,例如作为网络钓鱼传递的文件。
3.7.5 从工具中删除指标(T1027.005)
如果攻击者认为他们的恶意工具被检测或隔离,他们可能会从工具中删除指标。例如当恶意软件检测到文件签名并被防病毒软件隔离时,攻击者可能会修改文件以避免该签名,然后重新使用恶意软件。
3.7.6 HTML Smuggling(T1027.006)
攻击者可以通过利用JavaScript Blob或HTML5下载属性提供有效负载。Web内容过滤器等安全控件可能无法识别HTML/JS文件内的恶意代码,因为内容可能基于典型的合法MIME类型,如text/plain或text/html。恶意文件或数据可以通过数据Url或JavaScript Blob进行模糊处理并隐藏在HTML文件中,并且可以在到达受害者时进行去模糊处理,以绕过内容过滤器。
3.7.7 动态API解析(T1027.007)
恶意软件通常使用操作系统提供的各种本机API函数来执行各种任务,例如涉及进程、文件和其他系统任务。恶意软件调用的API函数可能会在有效负载文件中留下静态数据,例如字符串。
为了避免检测分析,攻击者可能会使用动态API解析来隐藏恶意软件的特性和功能。与软件打包类似,动态API解析可能会更改文件签名并模糊处理恶意API函数调用,直到它们在运行时被解析和调用。
3.7.8 剥离有效载荷(T1027.008)
攻击者可能试图通过删除符号、字符串和其他可读信息来使有效负载难以分析。脚本和可执行文件可能包含帮助开发人员编写代码功能的变量名称和其他字符串。在编译可执行负载时,符号通常由操作系统的链接器创建。逆向工程师使用这些符号和字符串来分析代码并识别有效负载中的功能。
攻击者可能会使用剥离的有效负载来使恶意软件分析变得更加困难。例如,编译器和其他工具可以提供移除或混淆字符串和符号的功能。攻击者还使用剥离的有效负载格式,例如仅运行的AppleScripts的编译和剥离版本,以逃避检测和分析。
3.7.9 嵌入式有效载荷(T1027.009)
攻击者可能会在其他文件中嵌入有效负载,以隐藏恶意内容。例如,将有效载荷嵌入到合法二进制文件中或作为其覆盖。
3.7.10 缓解措施
ID | 缓解措施 | 描述 |
M1049 | 防病毒或反恶意软件 | 防病毒可用于自动检测和隔离可疑文件。 |
M1040 | 端点上的行为预防 | 在Windows10上,启用攻击面减少(ASR)规则以防止执行可能混淆的有效负载。 |
3.7.11 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控已执行的命令和参数。 |
DS0022 | 文件 | 文件创建 | 监控新创建的文件。 |
文件元数据 | 监控有关文件的上下文数据,其中可能包括名称,内容,用户,权限等信息。 | ||
DS0011 | 模块 | 模块加载 | 监控异常加载的模块。 |
DS0009 | 进程 | OS API执行 | 监控和分析与恶意代码混淆相关的函数调用。 |
进程创建 | 监控新创建的进程。 |
四、总结
本期主要介绍了防御规避战术(四)及技术/子技术原理,下期将给大家介绍防御规避战术(五)涉及的技术原理。敬请关注。