登录脚本滥用:攻击技术与防御策略
操作系统通常具有允许管理员或用户在会话初始化期间自动执行命令的功能,以减轻特定环境中的管理负担。攻击者可以利用这些功能执行自己的命令,以实现初始访问、建立持久性或执行横向移动。
这类攻击在企业 Active Directory 环境中可能最具破坏性。因此,本文将重点讨论 Microsoft Windows 操作系统。然而,管理员和安全分析师应意识到,我们将研究的许多功能在其他操作系统和安装在网络中的供应商设备中同样可用。
在本文中,我将“登录脚本”视为任何支持在用户会话初始化期间自动执行命令的功能。那么,攻击者可能尝试哪些技术来获得基于身份验证的执行?
- 修改注册表项
- 基于本地文件系统的自动执行
- 默认域登录脚本修改
- 组策略修改
- 用户对象属性修改
这当然不是一个详尽的列表,但它包括了最广为人知的技术以及我们在最近的一些项目中遇到的情况。让我们逐一探讨每种技术,以更全面地理解它。
修改注册表项
这种技术历史悠久,且已被防病毒和端点检测与响应(EDR)工具高度检测。Microsoft Windows 注册表包含几个可以在用户登录目标主机时执行内容的键。最广泛讨论的键包括:
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEx
实际上,还有许多其他执行选项,可以在 https://attack.mitre.org/techniques/T1060/ 找到全面的处理方法。
如果攻击者能够成功修改上述键之一,系统将在每次用户进行身份验证时执行目标应用程序。
作为组织,确保您选择的端点保护软件能够识别上述注册表键的修改以防止滥用是一项明智的投资。此外,监控用于此类滥用的新注册表键也是谨慎的做法。
基于本地文件系统的自动执行
当攻击者使用本地文件系统获得“登录脚本”类型的自动执行时,典型的攻击向量是用户或系统的启动文件夹。
- C:\Users<user name>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
- C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
默认情况下,标准用户无法写入系统启动文件夹。然而,一些组织仍然向其用户群体授予本地管理权限。
无论如何,您选择的端点保护软件应识别这些文件夹何时被修改。当发生更改时,应监控和调查文件夹的内容。
默认域登录脚本修改
可能最广泛理解的“登录脚本”功能是使用 \
攻击者可以通过检查用户对象的 Active Directory scriptPath 属性轻松发现目标登录脚本。
此外,攻击者可以搜索 \
一旦发现目标脚本,攻击者可以检查这些位置的写入能力。如果允许写入,攻击者可以使用该脚本攻击任何被分配了该登录脚本的人。如果不允许写入,攻击者可以跟踪执行以确定初始脚本是否调用了其他脚本或二进制文件,并评估这些位置的 NTFS 权限。
因此,组织必须定期确保域登录脚本和任何分支位置上的 NTFS 权限受到适当限制。
组策略修改
在这种情况下,攻击者发现其用户帐户有权修改组策略层次结构中的组策略对象。
拥有修改策略的能力,攻击者有多种选择。其中一个选项是部署自己的登录脚本策略。在最近的一个项目中,这导致了策略应用的所有计算机上的管理访问权限。
BloodHound 是识别此类攻击路径的绝佳方式。当标准域用户在 GPO 上识别出写入访问权限(GenericWrite 或 GenericAll)时,组织应审核以确保权限受到适当限制。
此外,组织应定期审核所有组策略对象的权限,以确保权限正确。
用户对象属性修改
当攻击者控制具有修改 Active Directory 架构中对象属性能力的用户时,会出现类似情况。在本文的上下文中,对象类型将是用户。此向量与前一个类似。然而,攻击者不是修改组策略对象,而是简单地修改可写用户帐户上的 ScriptPath 属性。
登录脚本的默认位置是 \
这是 BloodHound 可以帮助识别可能允许在环境中提升权限的问题的另一个领域。显示此条件的路径将在用户或组节点与另一个用户之间显示 GenericWrite 或 GenericAll。
要编目和审核环境中所有 Active Directory 委派权限,您可以使用 Netwrix 发布的以下 PowerShell 脚本: https://raw.githubusercontent.com/thephoton/activedirectory-delegation-searcher/master/search.ps1
结论
在会话初始化期间自动执行脚本或命令的能力是一个非常强大的功能,可以减轻 IT 人员的管理负担。然而,偶然发现滥用上述技术之一的机会的攻击者可能有重大机会提升权限、横向移动并在环境中持久存在。了解这一点后,组织需要非常密切关注环境中的配置更改,并确保现有的保护措施能够捕获常见的滥用行为。