secisland
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
一、引言
在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权战术理论知识及实战研究,本期我们为大家介绍ATT&CK 14项战术中防御规避战术(一),包括防御规避前6项子技术,后续会介绍防御规避其他子技术,敬请关注。二、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个软件。三、防御规避战术
3.1 概述
防御逃避包括攻击者在攻击过程中用来避免被发现的技术,包括禁用安全软件、加密数据和脚本、利用可信进程来隐藏或伪装恶意软件。防御规避战术包括42种技术,本期介绍前6种技术,逐一介绍如下:3.2 利用提升控制权限机制(T1548)
攻击者可能会绕过控制提升权限的机制以获得更高级别的权限。攻击者可用多种方法来利用内置控制机制,以升级系统上的权限。利用提升控制权限机制包含4项子技术,介绍如下:3.2.1 setuid和setgid(T1548.001)如果应用程序设置了setuid或setgid位,则攻击者可能会利用配置,以便运行恶意代码。任何用户都可以指定要为自己的应用程序设置的setuid或setgid标志(即文件和目录权限修改),攻击者可以在他们自己的恶意软件上使用此机制,以确保他们将来能够在提升的上下文中执行。或者可以选择查找和定位已启用setuid或setgid位的易受攻击的二进制文件,二进制文件可能会被利用。
3.2.2 绕过用户帐户控制(T1548.002)Windows用户帐户控制(UAC)允许程序提升其权限,以便在管理员级别权限下执行任务,通过提示用户进行确认。攻击者可能会绕过UAC机制来提升系统上的进程权限。
3.2.3 Sudo和Sudo缓存(T1548.003)攻击者可以执行sudo缓存或使用sudoers文件提升权限。Sudo命令允许系统管理员委派权限,使某些用户能够以root或其他用户身份运行某些命令,同时提供命令及其参数的审计跟踪。/etc/sudoers描述了哪些用户可以从哪些终端运行哪些命令,哪些命令用户可以作为其他用户或组运行。攻击者利用这些机制的不良配置来升级特权,而不需要用户的密码。
3.2.4 带提示的提权执行(T1548.004)攻击者可以利用AuthorizationExecuteWithPrivileges API通过提示用户输入凭据来升级权限。此API的目的是为应用程序开发人员提供一种使用root权限执行操作的简单方法,例如用于应用程序安装或更新。API不会验证请求root权限的程序是否合法。
3.2.5 缓解措施
ID | 缓解措施 | 描述 |
M1047 | 审计 | 检查windows系统上常见的uac绕过弱点 |
M1038 | 执行预防 | 系统设置可以阻止未从合法渠道下载的应用程序运行,不允许运行未签名的应用程序。 |
M1028 | 操作系统配置 | 具有已知漏洞的应用程序不应设置setuid或setgid位,设置setuid或setgid位的程序的数量应该在整个系统中最小化。 |
M1026 | 特权账户管理 | 从系统上的本地管理员组中删除用户。要求用户在每次执行sudo时输入其密码。 |
M1022 | 限制文件和目录权限 | 应该严格编辑sudoers文件,始终需要密码。 |
M1052 | 用户帐户控制 | 使用UAC的最高强制级别,减少DLL搜索顺序劫持等技术绕过机会。 |
3.2.6 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控已执行的命令和参数。 |
DS0022 | 文件 | 文件元数据 | 监控文件系统中设置了setuid或setgid位的文件。 |
文件修改 | sudo能够根据/etc/sudoers文件中的LOG_INPUT和LOG_OUTPUT指令记录所有输入和输出。监控/usr/libexec/security_auth执行,这可能表明正在执行AuthorizationExecuteWithPrivileges。 | ||
DS0009 | 进程 | OS API执行 | 监视执行的OS API回调,可能存在进程注入行为。 |
进程创建 | 监控新创建的进程。 | ||
进程元数据 | 监控正在运行的进程的上下文数据,包括环境变量、用户等信息。 | ||
DS0024 | Windows注册表 | Windows注册表修改 | 监控注册表设置是否存在未经授权的更改。 |
3.3 操纵访问令牌(T1134)
攻击者可以修改访问令牌以在不同的用户或系统下执行操作并绕过访问控制。Windows使用访问令牌来确定正在运行的进程的所有权。攻击者可以使用内置的Windows API函数从现有进程复制访问令牌,这被称为令牌窃取。任何用户都可以使用runas命令和Windows API函数来创建模拟令牌;它不需要访问管理员帐户。还有其他机制,如Activedirectory字段,可用于修改访问令牌。操纵访问令牌技术包含5项子技术,介绍如下:3.3.1 令牌模拟/盗窃(T1134.001)攻击者可能会复制另一个用户的令牌,然后模拟另一个用户的令牌,以升级权限并绕过访问控制。
3.3.2 使用令牌创建进程(T1134.002)攻击者可能会使用不同的令牌创建一个新进程,以升级权限并绕过访问控制。创建具有不同令牌的进程可能需要目标用户的凭据、模拟该用户的特定特权或对要使用的令牌的访问权限。
3.3.3 制作和模拟令牌(T1134.003)攻击者可以制作和模拟令牌以升级特权并绕过访问控制。如果攻击者拥有用户名和密码,但用户未登录到系统,则攻击者可以为用户创建登录会话。
3.3.4 父ID欺骗(T1134.004)攻击者可能会欺骗新进程的父进程标识符(PPID),以提升特权。新进程通常直接从其父进程或调用进程生成。攻击者可能会利用这些机制来逃避防御,例如,攻击者可能会产生一个新进程,并将父进程分配为以系统运行的进程,导致通过继承的访问令牌提权。
3.3.5 SID-History注入(T1134.005)攻击者可以使用SID-History注入来升级权限并绕过访问控制。Windows安全标识符(SID)是标识用户或组帐户的唯一值。Windows security在安全描述符和访问令牌中都使用sid。一个帐户可以在Sid-History Active Directory属性中保存额外的Sid,允许在域之间进行可操作的帐户迁移。这种操作可能导致通过横向移动技术(如远程服务、SMB/Windows管理共享或Windows远程管理)提升对本地资源的访问权限或访问其他无法访问的域。
3.3.6 缓解措施
ID | 缓解措施 | 描述 |
M1026 | 特权账户管理 | 限制权限,以便用户和用户组无法创建令牌。仅为本地系统帐户定义此设置。 |
M1018 | 用户账户管理 | 将用户和帐户限制为所需的最低权限。 |
3.3.7 检测
ID | 数据源 | 数据组件 | 检测 |
DS0026 | Active Directory | Active Directory对象修改 | 监控对AD设置所做的更改 |
DS0017 | 命令 | 命令执行 | 通过审核命令行活动监控已执行命令和参数。 |
DS0009 | 进程 | OS API执行 | 通过分析用户网络活动、检查正在运行的进程以及与其他端点和网络行为的相关性,监控API调用。 |
进程创建 | 监控新创建的进程。 | ||
进程元数据 | 查询系统以获取进程和线程令牌信息,并查找不一致性,例如用户拥有模拟本地系统帐户的进程。 | ||
DS0002 | 用户账户 | 用户账户元数据 | 监控有关帐户的上下文数据,其中可能包括用户名、用户ID、环境数据等。 |
3.4 利用BITS服务(T1197)
攻击者利用BITS任务来持久执行代码和各种后台任务。BITS利用组件对象模型(COM)公开的低带宽异步文件传输机制。BITS通常由更新程序和其他在后台运行的应用程序使用,而不会中断其他联网应用程序。文件传输任务作为BITS任务实现,BITS任务包含一个或多个文件操作的队列。可以通过PowerShell和BITSAdmin工具访问创建和管理BITS任务的界面。攻击者利用BITS下载,执行,运行并清理恶意代码。BITS任务无需新文件或注册表修改,由主机防火墙放行。BITS还可以通过创建长期任务或调用任意程序来保持持久性。BITS上传功能也可用于过滤协议。3.4.1 缓解措施
ID | 缓解措施 | 描述 |
M1037 | 过滤网络流量 | 修改网络或主机防火墙规则以及其他网络控制,仅允许合法的BITS流量。 |
M1028 | 操作系统配置 | 请考虑减少组策略中的默认BITS任务生存期,或通过编辑注册表值来减少默认BITS任务生存期。 |
M1018 | 用户账户管理 | 考虑将对BITS接口的访问限制为特定用户或组。 |
3.4.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控BITSAdmin工具执行的命令和参数; 管理PowerShell日志和BITS活动的Windows事件日志; 分析BITS任务数据库任务详情。 |
DS0029 | 网络流量 | 网络连接创建 | 监控异常的网络连接, BITS任务使用HTTP(S)和SMB进行远程连接,并与创建用户绑定,并且仅在该用户登录时才会起作用。 |
DS0009 | 进程 | 进程创建 | 使用BITSAdmin工具监控要新建的BITS任务。 |
DS0019 | 服务 | 服务元数据 | 监控异常的服务运行。 |
3.5 在主机上建立镜像(T1612)
攻击者可以直接在主机上构建容器镜像,以绕过从公共注册表检索恶意镜像的监控。远程构建请求可以发送到Docker API,攻击者可以利用该构建API在主机上构建自定义镜像,其中包含从其C2服务器下载的恶意软件,然后他们可以使用该自定义镜像部署容器。3.5.1 缓解措施
ID | 缓解措施 | 描述 |
M1047 | 审计 | 审计环境中部署的镜像,以确保它们不包含任何恶意组件。 |
M1035 | 限制通过网络访问资源 | 将与容器服务的通信限制为本地Unix套接字或通过SSH远程访问。在端口2375上禁用对Docker API的未经身份验证的访问,需要安全端口访问才能通过TLS与Api通信。相反,在端口2376上通过TLS与Docker API进行通信。 |
M1030 | 网络分割 | 通过使用网络代理、网关和防火墙拒绝直接远程访问内部系统。 |
M1026 | 特权账户管理 | 确保容器默认不以root身份运行。 |
3.5.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0007 | 镜像 | 镜像创建 | 监控对环境中主机上的Docker守护程序的意外docker镜像构建请求。 |
DS0029 | 网络流量 | 网络连接创建 | 监控已建立的网络通信异常IP,可能表明下载了恶意代码。 |
网络流量内容 | 监控容器镜像下载相关的异常网络流量 | ||
网络流量 | 监控已建立的网络通信与异常未知IP |
3.6 调试器逃避(T1622)
防御者通常使用调试器来跟踪分析潜在恶意软件有效负载的执行情况。攻击者可以使用各种方法来绕过调试器,包括基于调试环境的检查结果来改变行为。与沙盒逃避类似,如果攻击者检测到调试器,他们可能会改变他们的恶意软件或隐藏恶意代码的核心功能。攻击者可以使用从调试器检查中学到的信息来塑造后续行为,也可以通过分离进程或通过循环本机API函数调用产生的消息,将无意义的数据淹没调试日志来逃避调试器。3.6.1 检测
ID | 数据源 | 数据组件 | 检测 |
DS0015 | 应用日志 | 应用日志内容 | 监控调试器日志以查找异常行为。 |
DS0017 | 命令 | 命令执行 | 检测异常进程调用行为。 |
DS0009 | 进程 | OS API执行 | 监控可能创建或修改系统级进程的API调用。 |
进程创建 | 监控新创建的进程。 |
3.7 混淆文件或信息(T1140)
攻击者可以使用混淆的文件或信息来隐藏恶意代码。他们可能需要单独的机制来解码或去模糊这些信息,包括恶意软件的内置功能或使用系统上存在的程序。例如使用certutil来解码已隐藏在证书文件中的远程访问工具可执行文件;使用Windows copy/b命令将二进制片段重新组装为恶意有效负载。3.7.1 检测
ID | 数据源 | 数据组件 | 检测 |
DS0022 | 文件 | 文件修改 | 监控对文件所做的更改。 |
DS0009 | 进程 | 进程创建 | 监控新创建的进程。 |
DS0012 | 脚本 | 脚本执行 | 监控不常用的可疑脚本运行情况。 |
四、总结
本期主要介绍了防御规避战术(一)及技术/子技术原理,下期将给大家介绍防御规避战术(二)涉及的技术原理。敬请关注。如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
