在前几期文章中我们介绍了ATT&CK中侦察、资源开发、初始访问、执行、持久化、提权、防御规避战术,本期我们为大家介绍ATT&CK 14项战术中凭证访问战术第7-12种子技术,后续会介绍凭证访问其他子技术,敬请关注。
MITRE ATT&CK 是一个全球可访问的基于现实世界观察的攻防战术和技术知识库。ATT&CK知识库被用作在私营部门、政府以及网络安全产品和服务社区中开发特定威胁模型和方法的基础。2023年 4月25日,MITRE ATT&CK 发布了最新版本 V13,最大的变化是为ATT&CK中的一些技术添加了详细的检测指导,用于企业,移动数据源和两种新类型的更改日志(包括一个人类可读的详细更改日志,更具体地显示更新的ATT&CK对象中的更改,以及一个机器可读的JSON更改日志,其格式在ATT&CK的Github中描述)。ATT&CK for Enterprise v13 包含14个战术、196个技术、411个子技术、138个组织和740个软件。
ATT&CK战术全景图(红框为凭证访问战术)
凭证访问包括窃取凭证(如帐户名和密码)的技术。用于获取凭证的技术包括键盘记录或凭证转储,使用合法凭证可以让攻击者访问系统,使其更难检测。3.2 输入捕捉(T1056)攻击者可以捕获用户输入来获取凭据或收集信息。在系统使用期间,用户经常向各种不同的位置提供凭据,例如登录页面或系统对话框。输入捕获机制可能对用户是透明的,或者依赖于欺骗用户提供他们认为是真正服务的输入。输入捕捉包含4项子技术,介绍如下:
3.2.1 键盘记录(T1056.001)当用户键入凭据时,攻击者可能会记录用户击键以拦截凭据。当操作系统凭证转储工作无效时,键盘记录很可能被用来获取新的访问机会的凭证,并且可能需要攻击者在系统上拦截一段时间的击键,然后才能成功捕获凭证。键盘记录是最常见的输入捕获类型,有许多不同的方式实现如下:
1) 用于处理击键的API回调,与凭证API不同,这只关注用于处理击键数据的API函数。
2) 从硬件缓冲区读取原始击键数据。
3) Windows注册表修改。
4) 自定义驱动程序。
5) 修改系统镜像可以为攻击者提供连接到网络设备操作系统的钩子,以读取登录会话的原始击键。
3.2.2 GUI输入捕获(T1056.002)攻击者可能会模仿常见的操作系统GUI组件,以看似合法的提示提示用户输入凭据。当执行的程序需要比当前用户上下文中更多的特权时,操作系统通常会提示用户提供适当的凭据以授权任务的提升特权。
3.2.3 门户网站捕获(T1056.003)攻击者可能会在外部面向门户(如VPN登录页面)上安装代码,以捕获和传输尝试登录服务的用户凭据。例如,受感染的登录页面可能会在将用户登录到服务之前记录所提供的用户凭据。
3.2.4 凭证API挂钩(T1056.004)攻击者可能会通过Windows应用程序编程接口API函数以收集用户凭据。恶意挂钩机制可能会捕获API调用,其中包含揭示用户身份验证凭据的参数。与键盘记录不同,这种技术特别关注包含显示用户凭据的参数的API函数,挂钩涉及将调用重定向到这些函数。
3.2.5 检测
ID | 数据源 | 数据组件 | 检测 |
DS0027 | 驱动 | 驱动负载 | 监控异常的内核驱动程序安装活动 |
DS0022 | 文件 | 文件修改 | 监控对文件所做的更改,以获取对访问权限和属性的意外修改 |
DS0009 | 进程 | OS API执行 | 监控对SetWindowsHook、GetKeyState和GetAsyncKeyState的API调用 |
进程创建 | 监控进行恶意活动的新执行进程 | ||
进程元数据 | 通过将内存中的代码与相应的静态二进制代码进行比较来验证实时进程的完整性,特别是检查跳转和其他重定向代码流的指令。 | ||
DS0024 | Windows注册表 | Windows注册表项修改 | 监控对windows注册表项所做的更改以进行意外修改 |
攻击者可以修改身份验证机制和流程,以访问用户凭据或启用不必要的对账户的访问。身份验证过程通过机制处理,例如Windows上的本地安全身份验证服务器(LSASS)进程和安全帐户管理器(SAM)等。攻击者可能会恶意篡改身份验证过程,以泄露凭据或绕过身份验证机制。泄露的凭据可用于绕过访问控制,并持续访问远程系统和外部可用服务。修改身份验证过程技术包含8项子技术,介绍如下:
3.3.1 域控制器验证(T1556.001)攻击者可能会修改域控制器上的身份验证过程,以绕过典型的身份验证机制访问账户。恶意软件可用于在域控制器上的身份验证过程中注入虚假凭据,目的是创建用于访问任何用户的帐户或凭据的后门。经过身份验证的访问可以实现对单因素身份验证环境中的主机或资源的无限制访问。
3.3.2 密码过滤器DLL(T1556.002)攻击者可能会将恶意密码过滤器动态链接库(Dll)注册到身份验证过程中,以便在验证用户凭据时获取这些凭据。Windows密码过滤器是域和本地帐户的密码策略强制机制。过滤器作为Dll实现,其中包含根据密码策略验证潜在密码的方法。攻击者可以注册恶意密码过滤器,以从本地计算机或整个域获取凭据。要执行正确的验证,过滤器必须从LSA接收纯文本凭据。每次发出密码请求时,恶意密码过滤器都会收到这些纯文本凭据。
3.3.3 可插入的身份验证模块(T1556.003)攻击者可修改可插入的身份验证模块(PAM)以访问用户凭据或非法访问帐户。PAM是一个由配置文件、库和可执行文件组成的模块化系统,用于指导许多服务的身份验证。攻击者可能会修改PAM系统的组件以创建后门。对PAM系统的恶意修改也可被利用以窃取凭据。
3.3.4 网络设备认证(T1556.004)攻击者可以使用补丁系统镜像来硬编码操作系统中的密码,从而绕开网络设备上本地帐户的本地身份验证机制。在验证尝试时,插入的代码将首先检查用户输入的是否是密码。如果是,则授予访问权限。否则,植入的代码将传递凭据以验证潜在有效的凭据。
3.3.5 可逆加密(T1556.005)攻击者可能会利用Active Directory身份验证加密属性以访问windows系统上的凭据。可逆密码加密属性指定是启用还是禁用帐户的可逆密码加密。默认情况下,此属性处于禁用状态。如果启用该属性,则攻击者可能会创建或更改的密码的明文。攻击者需要如下四个组件可以解密密码:来自Activedirectory用户结构用户参数的加密密码(G$RADIUSCHAP)也来自userParameters的16字节随机生成的值(G$RADIUSCHAPKEY)全球LSA秘密(G$MSRADIUSCHAPKEY)远程访问子身份验证DLL(RASSFM)中硬编码的静态密钥。攻击者可以通过本地组策略编辑器、用户属性、细粒度密码策略(FGPP)或ActiveDirectory PowerShell模块设置此属性。
3.3.6 多因素认证(T1556.006)攻击者可能会禁用或修改多因素身份验证(MFA)机制,以启用对帐户的持久访问。根据攻击者的范围、目标和权限,可能会对单个帐户或与较大组关联的所有帐户(例如受害者网络环境中的所有域帐户)禁用MFA防御。
3.3.7 混合身份(T1556.007)攻击者可能会修改与本地用户身份相关联的云身份验证过程,以绕过典型的身份验证机制、访问凭据并持久访问帐户。许多组织维护在内部部署和基于云的环境之间共享的混合用户和设备身份。通过修改绑定到混合身份的身份验证过程,攻击者可以建立对云资源的持久特权访问。
3.3.8 网络提供程序DLL(T1556.008)攻击者可能会注册恶意网络提供程序动态链接库Dll,以便在身份验证过程中捕获明文用户凭据。网络提供程序Dll允许Windows与特定网络协议接口,还可以支持附加凭据管理功能。攻击者的目标是在已知登录活动或管理员登录活动增加的系统(如服务器和域控制器)上植入恶意网络提供程序Dll。
3.3.9 缓解措施
ID | 缓解措施 | 描述 |
M1047 | 审计 | 检查身份验证日志以确保MFA强制等机制按预期运行。 |
M1032 | 多因素身份认证 | 通过多因素身份验证(MFA)降低攻击者获得有效凭据控制权的风险,限制对云资源和Api的访问。 |
M1028 | 操作系统配置 | 确保仅注册有效的密码过滤器。 |
M1027 | 密码策略 | 确保AllowReversiblePasswordEncryption属性设置为disabled,除非有应用程序要求。 |
M1026 | 特权账户管理 | 审计域和本地帐户,限制对根帐户的访问, 限制本地账户。 |
M1025 | 特权进程完整性 | LSA的启用功能 |
M1022 | 限制文件和目录权限 | 限制对/library/security/securityagentplugins目录的写入访问权限。 |
M1024 | 限制注册表权限 | 限制注册表权限以禁止修改敏感注册表项,如HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order。 |
M1018 | 用户账户管理 | 确保实施适当的策略,保障用户帐户的身份验证机制的安全注册和停用。 |
3.3.10 检测
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文件。 |
攻击者可能会针对多因素身份验证(MFA)机制以获得对可用于访问系统、服务和网络资源的凭据的访问权限。如果智能卡用于多因素身份验证,那么在正常使用期间将需要使用键盘记录器来获取与智能卡相关联的密码。通过插入的卡和对智能卡密码的访问,攻击者可以使用受感染的系统连接到网络资源,以使用插入的硬件令牌代理身份验证。攻击者也可以使用键盘记录器来定位其他硬件令牌,例如RSA SecurID。捕获令牌输入可以提供临时访问,并可使攻击者能可靠地预测未来的身份验证值。其他MFA方法可能被拦截并被攻击者用来进行身份验证。一次性代码通常通过电子邮件或短信发送。如果设备或服务不受保护,那么它可能容易受到拦截。服务提供商也可以成为目标:例如,攻击者可能会破坏SMS消息服务,以便窃取发送到用户手机的MFA代码。
3.4.1 缓解措施
ID | 缓解措施 | 描述 |
M1017 | 用户培训 | 不使用时移走智能卡 |
3.4.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0027 | 驱动 | 驱动负载 | 可以通过安装驱动程序来检测键盘活动。 |
DS0009 | 进程 | OS API执行 | 监控与轮询相关联的API调用以拦截击键。 |
DS0024 | Windows注册表 | Windows注册表项修改 | 监控可能针对多因素身份验证机制的windows注册表项的更改,以访问可用于访问系统、服务和网络资源的凭据。 |
3.5 多因素身份验证请求生成(T1621)攻击者可能会尝试绕过多因素身份验证(MFA)机制,并通过生成发送给用户的MFA请求来访问帐户。攻击者可能会利用自动生成推送通知到Mfa服务,让用户授予对其帐户的访问权限。在某些情况下,攻击者可能会不断重复登录尝试,以便用MFA推送通知,SMS消息和电话呼叫轰炸用户,可能导致用户最终接受身份验证请求以响应MFA。
3.5.1 缓解措施
ID | 缓解措施 | 描述 |
M1036 | 帐户使用策略 | 启用帐户限制,以防止从可疑位置或登录尝试的来源服务请求。 使用条件访问策略阻止来自不合规设备或白名单IP范围之外的登录。 |
M1032 | 多因素认证 | 实现更安全的2FA/MFA机制,以取代简单的推送或一键式2fa/MFA选项。 |
M1017 | 用户培训 | 培训用户仅接受来自他们发起的登录尝试的2fa/MFA请求,查看提示2fa/MFA请求的登录尝试的源位置,并报告可疑或未经请求的提示。 |
3.5.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0015 | 应用日志 | 应用日志内容 | 监控应用程序日志中的可疑事件,包括可能表明用户的主要凭据已被泄露的重复MFA故障。 |
DS0028 | 登录会话 | 登录会话创建 | 监控2fa/MFA应用程序日志以查找可疑事件,例如使用有效凭据进行快速登录尝试。 |
登录会话元数据 | 监控2fa/MFA应用程序日志中的可疑事件,例如异常登录尝试源位置、登录尝试位置不匹配以及批准2fa/MFA请求提示。 | ||
DS0002 | 用户账户 | 用户账户认证 | 监控用户帐户日志中的可疑事件:不寻常的登录尝试源位置、登录尝试位置不匹配,以及大量重复登录尝试等。 |
攻击者可以嗅探网络流量以捕获有关环境的信息,包括通过网络传递的身份验证信息。网络嗅探是指使用系统上的网络接口来监控或捕获通过网络发送的信息。攻击者可能会将网络接口置于混杂模式,以便通过网络访问传输中的数据,或者使用span端口捕获更大量的数据。通过这种技术捕获的数据可以包括用户凭证,特别是那些通过不安全的、未加密的协议发送的凭证,也可用于通过将流量重定向到攻击者来捕获到网站、代理和内部系统的凭据。网络嗅探还可以揭示配置细节,例如运行的服务、版本号和后续横向移动或防御规避活动所必需的其他网络特征(例如IP地址、主机名、VLAN Id)。在基于云的环境中,攻击能使用流量镜像服务来嗅探来自虚拟机的网络流量。攻击者可以使用过滤技术,例如将数据传输到云帐户,以访问嗅探的流量。在网络设备上,攻击者可以使用网络设备CLI命令(如监控器捕获)执行网络捕获。
3.6.1 缓解措施
ID | 缓解措施 | 描述 |
M1041 | 加密敏感信息 | 确保所有网络流量都已适当加密,对Kerberos等身份验证协议使用最佳实践,并确保可能包含凭据的web流量受SSL/TLS保护。 |
M1032 | 多因素认证 | 尽可能使用多因素身份验证。 |
M1018 | 用户账户管理 | 在云环境中,确保不向用户授予创建或修改流量镜像的权限。 |
3.6.2 检测
ID | 数据源 | 数据组件 | 检测 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和操作参数,这些操作有助于嗅探网络流量以捕获有关环境的信息,包括通过网络传递的身份验证信息。 |
DS0009 | 进程 | 进程创建 | 监控新执行的进程。 |
攻击者可能会尝试转储凭据,以从操作系统和软件中获取帐户登录和凭据信息,通常以哈希或明文密码的形式存在,凭证可用于执行横向移动和访问受限信息。操作系统凭证转储技术包含8项子技术,介绍如下:
3.7.1 LSASS内存(T1003.001)攻击者可能会尝试访问存储在本地安全机构子系统服务LSASS的进程内存中的凭据。用户登录后,系统会在LSASS进程内存中生成并存储各种凭证。这些凭证可以由管理用户或系统获取,并使用备用认证材料进行横向移动。除了内存技术,LSASS进程内存可以从目标主机转储并在本地系统上进行分析。
3.7.2 安全账户管理(T1003.002)攻击者可能会尝试通过内存技术或通过存储SAM数据库的Windows注册表从Security Account Manager(SAM)数据库中提取凭据。SAM是一个数据库文件,其中包含主机的本地帐户,通常是使用net user命令找到的帐户,枚举SAM数据库需要系统级访问权限。
3.7.3 NTDS(T1003.003)攻击者可能会尝试访问或创建AD域数据库的副本,以便窃取凭据信息,以及获取有关域成员的其他信息。除了在活动域控制器上查找NTDS文件之外,攻击者还可能搜索包含相同或类似信息的备份文件。
3.7.4 LSA密码(T1003.004)具有主机系统访问权限的攻击者可能会尝试访问本地安全机构LSA密码,其中可能包含各种不同的凭据,例如服务帐户的凭据。LSA密码存储在注册表中的HKEY_LOCAL_MACHINE\SECURITY\Policy\Secrets,LSA密码也可以从内存中转储。
3.7.5 缓存域凭证(T1003.005)如果域控制器不可用,攻击者可能会尝试访问缓存的域凭据,该凭据用于允许在域控制器不可用时进行身份验证。在Windows Vista及更高版本上,哈希格式为DCC2(域缓存凭据版本2)哈希,也称为MS-Cache v2哈希。默认缓存凭据的数量各不相同,每个系统都可以更改。此哈希不允许pass-the-hash风格的攻击,而是需要密码破解来恢复明文密码。
3.7.6 DCSync(T1003.006)攻击者可能会尝试通过利用Windows域控制器的应用程序编程接口API来访问凭据和其他敏感信息,使用称为DCSync的技术从远程域控制器模拟复制过程。域控制器上的管理员、域管理员和企业管理组或计算机帐户的成员能够运行DCSync从AD域中提取密码数据,其中可能包括可能有用的帐户的当前和历史哈希。
3.7.7 Proc文件系统(T1003.007)攻击者可能会从Proc文件系统收集凭据。Proc文件系统是一个伪文件系统,用作基于Linux的系统管理虚拟内存的内核数据结构的接口。对于每个过程,/proc//地图文件显示了如何在该过程的虚拟地址空间中映射内存,提供了对流程虚拟地址空间的访问。当使用根特权执行时,攻击者可以在包含指示凭据的模式的系统上搜索这些内存位置, 当没有特权访问的情况下运行时,进程仍然可以查看自己的虚拟内存位置。某些服务或程序可能会在过程内存中的清晰文本中保存凭据。
3.7.8 /etc/passwd和/etc/shadow(T1003.008)攻击者可能会尝试将 /etc /passwd和 /etc /shadow的内容丢弃以启用离线密码破解。大多数Linux操作系统都使用 /etc /passwd和 /etc /Shadow的组合来存储用户帐户信息,包括 /etc /shadow中的密码哈希。默认情况下, /etc /shadow仅由root用户读取。
3.7.9 缓解措施
ID | 缓解措施 | 描述 |
M1015 | 活动目录配置 | 管理复制目录更改的访问控制列表以及与域控制器复制关联的其他权限。考虑将用户添加到AD域安全组,可以帮助限制用户明文凭据的缓存。 |
M1040 | 端点上的行为防御 | 在Windows10上,启用攻击面减少ASR规则以保护LSASS并防止凭据窃取。 |
M1043 | 凭证存取保护 | Windows10实施了新保护措施,以保护可用于通过凭据转储形式获取凭据的LSA密码。 |
M1041 | 加密敏感信息 | 确保正确保护域控制器备份。 |
M1028 | 操作系统配置 | 考虑禁用或限制NTLM,禁用WDigest身份验证 |
M1027 | 密码策略 | 确保本地管理员帐户在网络上的所有系统中具有复杂、唯一的密码。 |
M1026 | 特权帐户管理 | Windows:不要将用户或管理员域帐户放在跨系统的本地管理员组中,限制跨管理层的特权帐户使用。 Linux:从内存中获取密码需要root权限,限制对特权帐户的访问。 |
M1025 | 特权进程完整性 | 为LSA启用受保护的进程指示。 |
M1017 | 用户培训 | 通过培训用户和管理员不要对多个帐户使用相同的密码来限制帐户和系统之间的凭据重叠。 |
3.7.10 检测
ID | 数据源 | 数据组件 | 检测 |
DS0026 | 活动目录 | 活动目录对象访问 | 监控域控制器日志,监控来自未与已知域控制器关联的IP的复制请求。 |
DS0017 | 命令 | 命令执行 | 监控执行的命令和参数,这些命令和参数可能试图转储凭据,以从操作系统和软件中获取帐户登录和凭据材料,通常以哈希或明文密码的形式。 查找调用AuditD或Security Accounts Manager(SAM)的命令行。 远程访问工具可能包含内置功能或合并现有工具,如Mimikatz。PowerShell脚本还存在包含凭据转储功能,例如PowerSploit的Invoke-Mimikatz模块,这可能需要在操作系统中配置额外的日志记录功能,以收集必要的信息进行分析。 |
DS0022 | 文件 | 文件访问 | 监控哈希转储器在本地文件系统(%SystemRoot%/system32/config/SAM)上打开安全帐户管理器(SAM)的行为。 |
DS0029 | 网络流量 | 网络流量内容 | 监控和分析异常流量(例如不属于已建立流的无关数据包、异常流量模式、异常语法或结构)相关的流量模式和数据包检查。考虑与进程监控和命令行的相关性,以检测异常进程执行和与流量模式相关的命令行参数。 |
网络流量 | 监控不常见数据流的网络数据,利用通常不具有网络通信或未知的网络进程是可疑的。 | ||
DS0009 | 进程 | OS API执行 | 监控可能尝试转储凭据的API调用,以从操作系统和软件中获取帐户登录和凭据。 |
进程访问 | 监控与lsass交互的意外进程。常见的凭证转储器(如Mimikatz)通过打开进程、定位LSA secrets密钥并解密内存中存储凭证详细信息的部分来访问LSA子系统服务(LSASS)进程。 监控在proc文件系统中打开异常文件的进程,包括pid,进程名称和参数。 | ||
进程创建 | 监控可能指示凭据转储的新执行进程,监控LSASS的Windows日志。 | ||
DS0024 | Windows注册表 | Windows注册表项访问 | 监控正在访问的SAM注册表项,该项可能试图转储凭据,以从操作系统和软件中获取帐户登录和凭据。 |
本期主要介绍了凭证访问战术(二)及技术/子技术原理,下期将给大家介绍凭证访问战术(三)知识。敬请关注。