一、引言
在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术、防御规避部分理论知识及实战研究,本期我们为大家介绍ATT&CK 14项战术中防御规避战术技术第13-18种技术,后续会介绍防御规避其他子技术,敬请关注。
二、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种技术,本期介绍第13-18种技术,逐一介绍如下:
3.2 隐藏行为(T1564)
操作系统具有隐藏行为的功能,例如重要的系统文件和管理任务执行,以避免中断用户工作环境并防止用户更改系统上的文件或功能。攻击者利用这些功能来隐藏文件、目录、用户帐户或其他系统活动,以逃避检测。
攻击者还可能试图通过创建与常见安全检测相隔离的计算区域(例如通过使用虚拟化技术)来隐藏恶意行为。
隐藏行为技术包含10项子技术,介绍如下:
3.2.1 隐藏文件和目录(T1564.001)
攻击者可能会将文件和目录设置为隐藏,以逃避检测机制。为了防止普通用户意外更改系统上的特殊文件,大多数操作系统都有"隐藏"文件的概念。当用户使用GUI浏览文件系统或在命令行上使用正常命令时,这些文件不会显示。用户必须通过一系列图形用户界面提示或命令行开关(Windows的dir/a和linux和macOS的ls–a)明确要求显示隐藏文件。
攻击者可以利用这一点来隐藏系统上任何位置的文件和文件夹,并逃避调查分析。
3.2.2 隐藏用户(T1564.002)
攻击者可隐藏他们创建或修改的用户帐户。
隐藏Windows中的用户帐户:攻击者可以为特定用户将HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList注册表项值设置为0,以防止该用户在登录屏幕上列出。
Linux系统上隐藏用户帐户:例如,在使用GNOME显示管理器(GDM)的Ubuntu系统上,可以使用gsettings命令(ex:sudo-u gdm gsettings set org)隐藏帐户。
3.2.3 隐藏窗口(T1564.003)
攻击者可能会使用隐藏的窗口来隐藏恶意活动。在应用程序执行操作时显示的窗口可以隐藏。系统管理员可以利用这一点来避免在执行管理任务时中断用户的工作环境。
在Windows上,例如PowerShell,Jscript和Visual Basic等可以隐藏窗口。
3.2.4 NTFS文件属性(T1564.004)
攻击者可以使用NTFS文件属性来隐藏其恶意数据以逃避检测。每个文件系统(NTFS)格式化的分区都包含一个主文件表(MFT),该表维护分区上每个文件或目录的记录。
攻击者可能会将恶意数据或二进制文件存储在文件属性元数据中,而不是直接存储在文件中,为了逃避一些防御措施,例如静态指标扫描工具和防病毒。
3.2.5 隐藏文件系统(T1564.005)
攻击者可能会使用隐藏的文件系统来隐藏恶意活动。标准文件系统包括FAT、NTFS、ext4和APFS。
攻击者可以使用他们自己的抽象文件系统,与受感染系统上存在的标准文件系统分开。隐藏文件系统,也称为虚拟文件系统,可以通过多种方式实现。一种实现是将文件系统存储在标准文件系统分区未使用的磁盘空间中。另一种实现方式是让攻击者将自己的可移植分区镜像作为文件放在标准文件系统之上。攻击者也可能以非标准方式在现有文件系统结构中分割文件。
3.2.6 运行虚拟实例(T1564.006)
攻击者可能使用虚拟实例进行恶意操作以避免被检测。通过在虚拟实例内部运行恶意代码,攻击者可以从无法监控虚拟实例内部活动的安全工具中隐藏与其行为。此外,虚拟实例生成的网络流量可能难以追溯到受损主机,因为IP地址和主机名可能与已知值不匹配。
运行虚拟实例后,攻击者创建一个共享文件夹,其权限使虚拟实例能够与主机文件系统交互。
3.2.7 VBA stomping(T1564.007)
VBA stomping 是指破坏 Microsoft Office 文档中的 VBA 源代码,只在文档文件中留下称为 p-code 的宏代码的编译版本。攻击者可以通过良性代码或随机字节,覆盖VBA源代码位置,同时通过保留先前编译的恶意p-code,隐藏恶意VBA代码。
3.2.8 邮件隐藏规则(T1564.008)
许多电子邮件客户端允许用户为各种电子邮件功能创建收件箱规则,包括将电子邮件移动到其他文件夹,将电子邮件标记为已读或删除电子邮件。
攻击者可能会利用受损用户邮箱中的电子邮件规则来删除或将电子邮件移动到不太明显的文件夹中。恶意规则通常会根据邮件正文和主题行中的关键词(如恶意软件、可疑、网络钓鱼和黑客)过滤电子邮件。
3.2.9 资源分支(T1564.009)
资源分支为应用程序提供了一种结构化的方式来存储资源,如缩略图图像、菜单定义、图标、对话框和代码。攻击者可能会利用资源分支来隐藏恶意代码或可执行文件,以逃避检测并绕过安全应用程序。攻击者可以在指定的偏移量处使用附加的资源分支执行内容,资源分支内容也可能被混淆或加密,移动到可执行位置,然后调用执行。
3.2.10 进程参数欺骗(T1564.010)
攻击者可能会尝试通过覆盖进程内存来隐藏进程命令行参数。进程命令行参数存储在进程环境块(PEB)中,该数据结构由Windows用于存储进程使用的各种信息。
攻击者可能会重写PEB以修改命令行参数,然后使用恶意参数恢复进程执行。
3.2.11 检测
ID | 数据源 | 数据组件 | 检测 |
DS0015 | 应用日志 | 应用日志内容 | 监控第三方应用程序日志记录。 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数。 |
DS0022 | 文件 | 文件创建 | 监控新创建的异常文件。 |
文件元数据 | 监控文件的上下文数据,包括名称、内容、所有者、权限等信息。 | ||
文件修改 | 监控对文件做的异常修改。 | ||
DS0001 | 固件 | 固件修改 | 监控对防火墙规则所做的异常更改。 |
DS0009 | 进程 | OS API执行 | 监控异常的API调用。 |
进程创建 | 监控新创建的异常进程。 | ||
DS0012 | 脚本 | 脚本执行 | 监控非常见或不常用的脚本执行行为。 |
DS0019 | 服务 | 服务创建 | 监控新创建的服务。 |
DS0002 | 用户账户 | 用户账户创建 | 监控新创建的用户帐户。 |
用户账户元数据 | 监控有关帐户的上下文数据,包括用户名,用户ID等数据。 | ||
DS0024 | Windows注册表 | Windows注册表项修改 | 监控对windows注册表项所做的更改。 |
3.3 执行流程劫持(T1574)
攻击者可通过劫持操作系统运行程序的方式来执行自己的恶意代码。攻击者可利用这些机制来提升特权或逃避防御,例如应用程序控制或其他执行限制。
攻击者可以通过多种方式劫持执行流程,包括操纵操作系统定位要执行的程序。操作系统定位程序要使用的库也可以被拦截,文件目录或注册表等都可以被恶意篡改。
执行流程劫持技术包含12项子技术,介绍如下:
3.3.1 DLL搜索顺序劫持(T1574.001)
攻击者可通过劫持加载Dll的搜索顺序来执行恶意代码,以建立持久性或提升权限。
攻击者可通过多种方式劫持DLL加载。攻击者可能会在程序将要请求的合法库的位置之前搜索的目录中放置特洛伊木马动态链接库文件,导致windows在受害者程序调用时加载其恶意库。攻击者还可以执行DLL预加载,也称为二进制植入攻击,将一个恶意DLL放在Windows在合法DLL之前搜索的位置,通常这个位置是程序的当前工作目录。当程序在加载DLL之前将其当前目录设置为远程位置时,就会发生远程DLL预加载攻击。攻击者也可通过DLL重定向直接修改搜索顺序。
3.3.2 DLL侧加载(T1574.002)
攻击者可以通过侧加载Dll来执行恶意代码。侧加载利用加载程序使用的DLL搜索顺序,将受害应用程序和恶意载荷彼此定位。攻击者可能使用侧加载掩盖他们在合法、可信的系统或软件进程下执行的动作。用于侧加载载荷的良性可执行文件在执行期间可能不会被标记。攻击者载荷也可以被加密或以其他方式混淆,直到加载到可信进程的内存中为止。
3.3.3 Dylib劫持(T1574.004)
攻击者可以通过在应用程序运行时搜索的路径中放置恶意动态库(dylib)来攻击。动态加载器将尝试根据搜索路径的顺序查找Dylibs。Dylibs的路径可以以@rpath作为前缀,@RPath允许开发人员使用相对路径根据可执行文件的位置指定运行时使用的搜索路径数组。
攻击者可通过在识别的路径中插入带有缺失dylib名称的恶意dylib来执行。Dylib被加载到应用程序的地址空间中,允许恶意dylib继承应用程序的特权级别和资源。
3.3.4 可执行安装程序文件权限弱点(T1574.005)
攻击者可以通过劫持安装程序使用的二进制文件来执行恶意代码。如果二进制文件本身或上级目录权限设置不正确,则可能会被另一个二进制文件覆盖,并由原始进程执行。
在安装过程中,安装程序通常使用%TEMP%目录中的子目录来解压缩Dll、EXEs或其他有效负载等二进制文件。当安装程序创建子目录和文件时,通常不会设置适当的权限来限制写访问,攻击者可以使用此技术将合法二进制文件替换为恶意二进制文件,作为在更高权限级别执行代码的手段。
3.3.5 动态链接器劫持(T1574.006)
攻击者可通过劫持动态链接器加载共享库的环境变量来执行恶意代码。在程序的执行准备阶段,动态链接器从环境变量和文件加载共享库的指定绝对路径,首先加载环境变量中指定的库,优先于具有相同函数名的系统库。这些变量经常被开发人员用来调试二进制文件,而无需重新编译,并在不改变原始库的情况下实现自定义函数。
3.3.6 PATH环境变量的路径拦截(T1574.007)
攻击者可以通过劫持用于加载库的环境变量来执行恶意代码。攻击者可能会将程序放在PATH环境变量存储的目录列表中的历史条目中,然后在Windows通过该路径列表中顺序搜索时将执行该程序,以搜索从脚本或命令行调用的二进制文件。
3.3.7 搜索顺序劫持的路径拦截(T1574.008)
攻击者可通过劫持用于加载其他程序的搜索顺序来执行恶意代码。由于某些程序不使用完整路径调用其他程序,对手可能会将自己的文件放在调用程序所在的目录中,导致操作系统由于调用程序的请求启动其恶意软件。
当攻击者利用Windows搜索未给定路径的程序的顺序时,就会发生搜索顺序劫持。
3.3.8 未引用路径的路径拦截(T1574.009)
攻击者可通过劫持易受攻击的文件路径引用来执行恶意代码。方法是将可执行文件放在路径内的较高级别的目录中,以便Windows选择要启动的恶意可执行文件。
如果定期调用可执行文件,此技术可用于持久性,如果拦截的可执行文件由较高特权进程启动,则可用于特权升级。
3.3.9 服务文件权限弱点(T1574.010)
攻击者可以通过劫持服务使用的二进制文件来执行恶意代码。攻击者可能会利用Windows服务权限中的弱点来替换在服务启动时执行的二进制文件。这些服务进程可以自动执行特定的二进制文件,攻击者可以使用此技术将合法二进制文件替换为恶意二进制文件,作为在更高权限级别执行代码的手段。
3.3.10 服务注册权限弱点(T1574.011)
攻击者可以通过劫持服务使用的注册表项来执行恶意代码,利用服务相关的注册表项的权限中的弱点,从最初指定的可执行文件重定向到他们控制的可执行文件,以便在服务启动时执行恶意代码。Windows将本地服务配置信息存储在HKLM\SYSTEM\CurrentControlSet\Services下的注册表中。存储在服务注册表项下的信息可以通过服务控制器sc等工具来操作以修改服务的执行参数。
如果未正确设置用户和组的权限并允许访问服务的注册表项,则攻击者可能会更改服务的binPath/ImagePath以指向恶意可执行文件。攻击者还可以为其恶意服务添加Parameters键或其他自定义子键,以建立持久性。
3.3.11 COR_PROFILER环境变量劫持(T1574.012)
攻击者可以利用COR_PROFILER环境变量劫持加载.NET CLR的程序的执行流。COR_PROFILER是一个.NET Framework功能,允许开发人员指定要加载到CLR的每个.NET进程中的分析DLL。
攻击者可利用COR_PROFILER来建立持久性,以便在每次调用CLR时在所有.NET进程的上下文中执行恶意DLL。
3.3.12 内核回调注入(T1574.013)
攻击者可能会使用kernelcallbacktable通过将原始回调函数替换为恶意代码来劫持进程的执行流,例如反射代码加载或进程注入到另一个进程中。
被篡改的函数通常使用Windows消息调用。在进程被劫持并执行恶意代码后,kernelcallbacktable也可能被恶意代码的其余部分恢复到原始状态。
3.3.13 缓解措施
ID | 缓解措施 | 描述 |
M1013 | 应用开发者指南 | 在清单文件中包含哈希值,以帮助防止恶意库的侧加载 |
M1047 | 审计 | 通过审计工具检查侧加载漏洞、程序配置文件、脚本、PATH环境变量、服务和快捷方式中的路径拦截弱点,使用绝对路径指定搜索顺序。 卸载软件时清理旧的Windows注册表项,以避免没有关联的合法二进制文件的密钥。 |
M1040 | 端点行为防御 | 通过端点防御来阻止与进程注入或内存篡改相关的某些类型的行为。 |
M1038 | 执行预防 | 通过应用程序控制解决方案,识别并阻止通过劫持执行的潜在恶意软件。 |
M1022 | 限制文件和目录权限 | 设置目录访问控制,以防止在运行应用程序的文件夹和标准库文件夹中的应用程序的搜索路径中写入文件。 |
M1044 | 限制库加载 | 不允许加载远程Dll,启用安全DLL搜索模式 |
M1024 | 限制注册表权限 | 注册表权限控制 |
M1051 | 更新软件 | 定期更新软件以修复DLL侧加载漏洞的补丁。 |
M1052 | 用户账户控制 | 关闭UAC对标准用户的权限提升 |
M1018 | 用户账户管理 | 限制用户帐户和组的权限,以便只有授权管理员才能与服务更改和服务二进制目标路径位置进行交互。 |
3.3.14 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数,这些命令和参数可能通过劫持操作系统运行程序的方式来执行恶意代码。 |
DS0022 | 文件 | 文件创建 | 监控新创建的文件。 |
文件修改 | 监控用于移动,重命名,更换或修改DLL的文件系统。监控与已知软件,补丁等不相关的过程加载的可疑DLL的变化。 | ||
DS0011 | 模块 | 模块加载 | 监控加载到一个进程中的DLL并检测具有相同文件名但异常路径的DLL。 |
DS0009 | 进程 | 进程创建 | 监控新创建的进程 |
DS0019 | 服务 | 服务元数据 | 监控在软件更新期间发生的二进制文件和服务可执行文件的更改。 |
DS0024 | Windows注册表 | Windows注册表修改 | 监控对windows注册表项所做的更改。 |
3.4 削弱防御机制(T1562)
攻击者可能会恶意修改受害者环境的组件,以禁用防御机制,涉及破坏防火墙和防病毒、恶意行为审计等安全防御。
削弱防御机制技术包含9项子技术,介绍如下:
3.4.1 禁用或修改工具(T1562.001)
攻击者可以修改或禁用安全工具,以绕过检测,例如杀死安全软件进程或服务,修改或删除注册表项或配置文件以使工具无法正常运行,干扰安全工具扫描,禁用更新,以防止最新的安全补丁到达受害者系统上的工具。攻击者会利用合法rootkit删除工具包等工具来禁用这些安全防御工具,利用防病毒软件中的合法驱动程序来访问内核空间(即利用特权升级),以绕过防篡改功能。
3.4.2 禁用Windows事件日志记录(T1562.002)
Windows事件日志记录用户和系统活动,如登录尝试、进程创建等。这些数据被安全工具和分析师用来生成检测。攻击者可能会禁用Windows事件日志记录,以限制可用于检测和审核的数据。
攻击者可使用以下PowerShell行禁用EventLog服务:Stop-Service-Name EventLog,可以在命令提示符中使用auditpol及其子命令来禁用审计或清除审计策略。
3.4.3 破坏命令历史记录记录(T1562.003)
攻击者可能会破坏命令历史记录以隐藏他们在受损系统上运行的命令。各种命令解释器跟踪用户在其终端中键入的命令,以便用户可以追溯他们所做的事情。
攻击者可以清除历史记录环境变量或将命令历史记录大小设置为零,以防止记录命令。攻击者还可以利用网络设备上的CLI来禁用历史命令日志记录。
3.4.4 禁用或修改系统防火墙(T1562.004)
攻击者可以通过命令行、编辑Windows注册表项和Windows控制面板禁用或修改系统防火墙特定规则,以绕过限制网络使用的控制。
3.4.5 指标阻塞(T1562.006)
攻击者可能通过恶意重定向或禁用基于主机的传感器来阻止由传感器捕获的指标或事件被收集和分析。
实现方式包括修改注册表、阻断流量、禁用或重新配置syslog或nxlog等日志处理工具,以抑制检测和监控功能。
3.4.6 禁用或修改云防火墙(T1562.007)
攻击者可以禁用或修改云环境中的防火墙,以绕过限制对云资源访问的控制。
云环境通常使用限制性安全组和防火墙规则,这些规则仅允许通过特定端口和协议从受信任的IP地址通讯。攻击者可能会引入新的防火墙规则或策略,以允许访问目标云环境。例如,攻击者可以使用脚本或程序在现有安全组中创建新的入口规则,以允许任何TCP/IP连接。
3.4.7 禁用云日志(T1562.008)
云环境允许收集和分析审计和应用程序日志,从而深入了解用户在环境中执行的活动。攻击者可能会禁用云日志记录功能,以防止被收集数据和检测。
3.4.8 安全模式启动(T1562.009)
攻击者可能会利用Windows安全模式来禁用端点防御。EDR工具等第三方安全软件在以安全模式引导Windows后可能无法启动。
攻击者还可以通过修改相关注册表值将其恶意应用程序添加到以安全模式启动的最小服务列表中,恶意组件对象模型也可以在安全模式下注册和加载。
3.4.9 降级攻击(T1562.010)
攻击者可能会降级使用易受攻击或不支持更新的系统功能版本。例如,PowerShell版本5+包含脚本块日志记录(SBL),可记录执行的脚本内容。但是攻击者可能会尝试执行不支持SBL的早期版本的PowerShell,以绕过检测。
3.4.10 缓解措施
ID | 缓解措施 | 描述 |
M1038 | 执行预防 | 确保仅在企业系统上使用和运行经批准的安全应用程序。 |
M1022 | 限制文件和目录权限 | 限制进程和文件权限,以防止攻击者禁用日志记录服务。 |
M1024 | 限制注册表权限 | 限制注册表权限,以防止攻击者禁用日志记录服务。 |
M1018 | 用户账户管理 | 确保适当的用户权限,以防止攻击者禁用日志记录服务。 |
3.4.11 检测
ID | 数据源 | 数据组件 | 检测 |
DS0025 | 云服务 | 云服务禁用 | 监控API调用的日志以及禁用日志记录。 |
云服务修改 | 监控对云服务所做的更改。 | ||
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数。 |
DS0027 | 驱动 | 驱动负载 | 监控异常的驱动程序活动。 |
DS0018 | 防火墙 | 防火墙禁用 | 监控系统防火墙状态的更改,例如Windows安全审核事件5025(Windows防火墙服务已停止)和5034(Windows防火墙驱动程序已停止)。 |
防火墙规则修改 | 监控对防火墙规则所做的更改。 | ||
DS0009 | 进程 | 进程创建 | 监控新执行的进程。 |
进程终止 | 监控正在运行的进程(例如:Sysmon EID5或Windows EID4689)的意外终止。 | ||
DS0012 | 脚本 | 脚本执行 | 监控试图启用在系统上运行的非常用脚本。 |
DS0013 | 传感器健康 | 主机状态 | 监控日志记录、消息传递和其他主机传感器运行状况的指标,缺少日志事件是可疑的。 |
DS0019 | 服务 | 服务元数据 | 监控有关服务或守护进程的上下文数据,包括名称、服务可执行文件、启动类型等信息。 |
DS0024 | Windows注册表 | Windows注册表项删除 | 监控windows注册表项的意外删除。 |
Windows注册表项修改 | 监控注册表编辑修改行为。 |
3.5 删除主机中的信标(T1070)
攻击者可以删除与监控事件相关的防御指标,例如来自下载文件的字符串,从用户操作生成的日志以及防御者分析的其他数据,从而干扰事件收集、报告及检测。
删除主机中的信标技术包含9项子技术,介绍如下:
3.5.1 清除Windows事件日志(T1070.001)
攻击者可以清除Windows事件日志以隐藏入侵的活动。Windows事件日志是计算机警报和通知的记录。有三个系统定义的事件源:系统、应用程序和安全性,有五种事件类型:错误、警告、信息、成功审核和失败审核。
可通过程序命令、事件查看器GUI或PowerShell清除Windows事件日志。
3.5.2 清除Linux或Mac系统日志(T1070.002)
攻击者可以清除系统日志以隐藏入侵的证据。macOS和Linux都通过系统日志跟踪系统或用户启动的操作。大多数本机系统日志记录存储在/var/log/目录下。
3.5.3 清除命令历史记录(T1070.003)
除了清除系统日志之外,攻击者还可以清除被入侵帐户的命令历史记录,以隐藏在入侵期间所采取的行动。
3.5.4 文件删除(T1070.004)
攻击者可能会删除因其入侵活动的操作而留下的文件。恶意软件、工具或其他由攻击者丢弃或在系统上创建的非本机文件可能会留下痕迹,删除这些文件防止被检测分析。
3.5.5 网络共享连接删除(T1070.005)
攻击者可能会删除不再有用的共享连接,以便清理其操作痕迹。Windows共享驱动器和SMB/Windows管理员共享连接可以在不再需要时删除。
3.5.6 时间戳(T1070.006)
攻击自合可以修改文件时间属性以隐藏对现有文件的更改。时间戳可以与文件名伪装一起使用,以隐藏恶意软件和工具。
3.5.7 清除网络连接历史记录和配置(T1070.007)
攻击者可以清除或删除恶意网络连接的证据,以清理其操作痕迹。
网络连接历史可以存储在系统上的各个位置。例如,RDP连接历史记录可能存储在Windows注册表值中。恶意网络连接还可能需要更改网络配置设置,例如禁用或修改系统防火墙或篡改以启用代理。
3.5.8 清除邮箱数据(T1070.008)
攻击者可以修改邮件应用程序数据以删除其活动证据。电子邮件应用程序允许用户和其他程序通过命令行工具或使用Api导出和删除邮箱数据。邮件应用程序数据可以是应用程序或操作系统生成的电子邮件或日志。
3.5.9 清除持久性(T1070.009)
攻击者可以清除与主机系统上先前建立的持久性相关的内容,以删除其活动证据。例如删除服务,删除可执行文件,修改注册表,Plist文件修改或其他清理方法,以防止防御者收集其持久化证据。
3.5.10 缓解措施
ID | 缓解措施 | 描述 |
M1041 | 加密敏感信息 | 在本地和传输过程中加密事件文件。 |
M1029 | 远程数据存储 | 自动实时将事件转发到日志服务器或数据存储库,以防止攻击者可以在本地系统上定位和操作数据。 |
M1022 | 限制文件和目录权限 | 按照最小化授权原则限制文件和目录权限。 |
3.5.11 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数。 |
DS0022 | 文件 | 文件删除 | 监控异常文件删除行为。 |
文件元数据 | 监控文件元数据,包括日志或捕获的文件(如隔离的恶意软件)。 | ||
文件修改 | 监控对文件所做的更改。 | ||
DS0018 | 防火墙 | 防火墙规则修改 | 监控对防火墙规则所做的更改。 |
DS0029 | 网络流量 | 网络流量内容 | 监控异常流量,异常进程,异常行为。 |
DS0009 | 进程 | OS API执行 | 监控异常API调用,包括日志或捕获的文件,如隔离的恶意软件。 |
进程创建 | 监控新创建的进程。 | ||
DS0003 | 计划任务 | 计划任务修改 | 监控对计划任务的修改。 |
DS0002 | 用户账户 | 用户账户认证 | 监控异常的用户账户认证。 |
DS0024 | Windows注册表 | Windows注册表项删除 | 监控windows注册表项的删除。 |
Windows注册表项修改 | 监控对windows注册表项的修改。 |
3.6 间接执行命令(T1202)
攻击者可利用允许执行命令的程序来绕过限制命令行解释器的安全策略。各种Windows程序可用于执行命令,可能无需调用cmd。攻击者可利用这些功能进行防御规避,特别是执行任意执行,这些控制阻止cmd或文件扩展名的使用通常与恶意有效载荷关联。
3.6.1 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 检测异常进程调用行为。 |
DS0009 | 进程 | 进程创建 | 监控新创建的进程。 |
3.7 仿冒(T1036)
当一个合法或恶意的对象名称或位置被操纵用以逃避防御时,就会发生仿冒。这可能包括操纵文件元数据,欺骗用户错误识别文件类型,以及提供合法的任务或服务名称。
仿冒技术包含7项子技术,介绍如下:
3.7.1 无效代码签名(T1036.001)
攻击者可能会尝试模仿有效代码签名的功能,以增加欺骗用户机会。攻击者可以从已签名程序复制元数据和签名信息,然后将其用作未签名程序的模板。具有无效代码签名的文件将无法通过数字签名验证检查,但它们对用户来说可能看起来更合法,安全工具可能会不正确地处理这些文件。
3.7.2 RTLO文件名反转(T1036.002)
攻击者可利用从RTLO字符Unicode码202E来伪装字符串或文件名,使其看起来合法。RTLO是一个非打印Unicode字符,它会导致后面的文本反向显示。这种技术的一个常见用途是使用钓鱼邮件附件,因为它可以欺骗最终用户和防御者如何显示和呈现RTLO字符。
3.7.3 重命名系统程序(T1036.003)
攻击者可以重命名合法的系统程序,以试图逃避安全机制。通过在使用之前重命名程序(例如:重命名rundll32),或者是将合法程序复制或移动到不同的目录并重命名,以避免检测。
3.7.4 伪装任务或服务(T1036.004)
攻击者可能试图操纵任务或服务的名称,使其看起来合法。由任务调度器或systemd执行的任务或服务将被赋予名称或描述。
3.7.5 匹配合法名称或位置(T1036.005)
为了规避防御,在命名或放置合法文件时,攻击者可能与合法文件的名称或位置高度接近。可通过将可执行文件放在通常受信任的目录(例如:在System32下)或给它一个合法的,受信任的程序的名称。攻击者也会用试图模仿文件的相同图标。
3.7.6 文件名后的空格(T1036.006)
攻击者可以通过更改文件的扩展名来隐藏程序的真实文件类型。对于某些文件类型,在文件名的末尾追加一个空格将改变操作系统对文件的处理方式。
攻击者可以使用此功能诱骗用户双击任何格式的文件,并最终执行恶意操作。
3.7.7 双文件扩展名(T1036.007)
攻击者可能会利用文件名中的双重扩展名来伪装真正的文件类型。第二个扩展名是真正的文件类型,它决定了文件的打开和执行方式。
3.7.8 缓解措施
ID | 缓解措施 | 描述 |
M1045 | 代码签名 | 需要签名的二进制文件。 |
M1038 | 执行预防 | 通过工具限制文件名以外的属性执行程序。 |
M1022 | 限制文件和目录权限 | 使用文件系统访问控制来保护文件夹。 |
3.7.9 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数。 |
DS0022 | 文件 | 文件元数据 | 收集文件哈希值,与预期哈希值不匹配的文件名是可疑的。 执行文件监控,具有已知名称但在不寻常位置的文件是可疑的。查找异常字符,例如作为文件名最后一个字符的空格或从右到左的复盖字符"\u202E"、"[U+202E]"和"%E2%80%AE"。 |
文件修改 | 监控更新或修复程序之外的文件所做的修改。 | ||
DS0007 | 图片 | 图片元数据 | 收集二进制文件的磁盘和资源文件名。 |
DS0009 | 进程 | 进程元数据 | 监控磁盘上的文件名与二进制PE元数据的文件名不匹配的文件名,这可能是二进制文件编译后重命名的指标。 |
DS0003 | 计划任务 | 计划任务元数据 | 监控有关计划任务的上下文数据,其中可能包括名称、时间、命令等信息。 |
计划任务修改 | 监控对计划任务所做的修改。 | ||
DS0019 | 服务 | 服务创建 | 监控新创建的服务或守护进程。 |
服务元数据 | 监控有关服务或守护进程的上下文数据,这些数据可能包括名称、服务可执行文件、启动类型等信息。 |
四、总结
本期主要介绍了防御规避战术(三)及技术/子技术原理,下期将给大家介绍防御规避战术(四)涉及的技术原理。敬请关注。