了解Active Directory攻击路径,保障企业安全
面包and牛奶 发表于 山东 企业安全 672浏览 · 2024-05-13 01:31

0X00前言


最近在学习应急响应,碰巧在网上阅读了《理解活动目录攻击》这篇文章,结合自己总结的蓝队手册进行验证,于是就有了如下文章。

0X01 Active Directory是什么?


自从Microsoft Active Directory问世以来,它就在Windows网络环境中负责在所有网络节点上分派和施行安全策略。它使得用户能够在网络环境中访问多种多样的资源。随着云安全的发展,微软几年前推出了基于云计算的Active Directory版本即Azure Active Directory,它扩展了传统Active Directory的边界,并为企业提供了一个跨越云端与本地应用的身份即服务解决方案(Identity as a Service,IDaaS)。
但是,不管是传统的Active Directory还是Azure AD,它们对于本地、云基础和混合型生态系统的功能性都是不可或缺的,并且在确保系统正常运作和企业业务连续性方面起到了核心作用。大部分企业依赖这项服务来实行员工认证、访问控制与身份管理,与此同时,它们无疑成为了攻击者突破企业安全防线的关键。

0X02 为什么Active Directory会存在安全问题?


尽管Active Directory非常关键,但是其在企业内的安全状况却非常糟糕。造成这种原因的核心有很多,由于篇幅限制笔者结合下面第四章的案列,列举三个最主要的原因,如下所示:

过度权限:在Active Directory中,有许多不同的用户组,它们都有各自的权限。在实际操作中,某些用户可能被授权过多的权限,这让攻击者有机会利用这些过度的权限进行攻击。
配置不当:Active Directory的配置过程十分复杂,一些错误的配置可能会导致安全性降低。比如,错误配置的防火墙规则可能会暴露Active Directory的服务,增加攻击的可能性。
漏洞未及时修补:Active Directory的更新往往伴随着新的功能和修补安全漏洞。如果不及时进行更新,就可能让Active Directory暴露于攻击者的视线之中。

鉴于这些潜在的威胁,会使攻击者能够访问到敏感的系统,这可能会带来严重的后果。所以,确保以最佳方式管理和配置Active Directory至关重要。一旦攻击者在Active Directory中取得立足点,攻击者可以执行许多不同的恶意行为,如:

隐藏网络中的活动
执行恶意代码
提升权限
进入云环境以危及关键资产

关键是,如果企业不知道企业的Active Directory中正在发生什么,如果企业缺乏适当的流程和安全控制,很可能导致企业安全之门敞开。

0X03 Active Directory的攻击路径


从攻击者的角度来看,Active Directory为进行横向移动提供了极好的机会,因为获得最初的访问权限使他们能够从低权限用户移动到更有价值的目标或甚至完全接管,攻击者通过利用配置错误或过度宽松的权限。现在,让我们来看看三个实际的Active Directory攻击路径的解剖,看看攻击者是如何穿越这个环境的。

密码重置

这是企业内网的环境中,可能面临的一个攻击威胁路径,如下图所示:

随着数字安全的不断演进,各组织不断提升其防护措施,然而,Active Directory (AD) 的安全漏洞往往被人们忽视。通常情况下,经身份验证的用户都有可能因配置不当获得过分的权限,比如在没有适当限制的情况下重置密码的能力。一旦恶意用户利用社交工程手段,如钓鱼攻击,获取了用户的访问权限,他们便能够修改密码,从而控制任何账户,并对企业的整个IT架构构成威胁。

GPO策略

这是我们另一个客户的Active Directory中的一个案例,如下图所示:

我们发现了一条攻击路径,利用认证用户组的权限更改GPO策略的 gPCFileSysPath到一个带有恶意策略的路径。其中一个受影响的对象是AD用户容器,其下有一个子对象是用户,该用户是域管理员组的一部分。域中的任何用户都可以获得域管理员权限,攻击者所需要的只是一个非特权用户成为钓鱼电子邮件的受害者,从而危害整个域。这可能会导致企业的域环境的安全受到毁灭性的打击。

DCSync

接下来,我们再来看一个案列,这就是:

攻击者通过精心设计的钓鱼邮件进入企业网络环境。当企业员工打开这封邮件后,攻击者就会利用其机器上尚未修复的漏洞来执行恶意代码,入侵企业。并且利用一种被称为DCSync的技术,获取Active Directory用户的本地和域认证信息。这些信息会被攻击者用来模仿合法用户访问网络,进一步提升他们在网络中的行动自由度。接着,攻击者利用获取的权限,将自己添加到Active Directory帮助台组当中(这个组具有Active Directory环境中更改其他用户密码的权限),攻击者便能再次提升权限,改变其他用户的密码,尤其是那些已经不再使用,或者未及时更新密码的管理员账户。此时,攻击者可以在Active Directory中为其他用户添加恶意脚本,当这些用户登录时,这些脚本会自动执行,运行攻击者想要执行的命令或程序。

以上,这些只是攻击者穿越Active Directory环境的一些相对简单的方法。通过了解这些实际的攻击路径,企业可以开始从攻击者的角度了解他们的Active Directory和AD Azure环境的样子,以达到知己知彼的目的,更好的构建企业防御措施。

0X04 Active Directory攻击的应急措施


针对上述Active Directory攻击路径的描述,我们作为蓝队就需要做好应急响应的准备。企业可能拥有弱 AD 集成遗留应用程序,这些应用程序使用硬编码凭据、弱加密、弱网络安全协议或其他有风险的软件架构。这些都可能为攻击者入侵Active Directory提供机会。但是,修复遗留的关键业务应用程序可能需要数月或更长时间,这个时候,我们可以利用如下常用命令来进行应急响应操作:

列出所有OUs: 
C:\> dsquery ou DC=<DOMAIN>,DC=<DOMAIN EXTENSION>

列出域中的工作站:
C:\> netdom query WORKSTATION

列出域中的服务器:
C:\> netdom query SERVER

列出域控制器:
C:\> netdom query DC

列出指定用户可以创建的机器对象:
C:\> netdom query OU

列出主域控制器:
C:\> netdom query PDC

列出域信任:
C:\> netdom query TRUST

列出域中当前FSMO所有者:
C:\> netdom query FSMO

列出Active Directory中的所有计算机:
C:\> dsquery COMPUTER "OU=servers,DC=<DOMAIN NAME>,DC=<DOMAIN EXTENSION>" -o rdn -limit 0 > C:\machines.txt

列出超过三周不活跃的用户账户:
C:\> dsquery user domainroot -inactive 3

列出使用时间戳格式查找在UTC日期创建的任何内容(或用户):
C:\> dsquery * -filter "(whenCreated>=20201022083730,0Z)"
C:\> dsquery * -filter "((whenCreated>=20201022083730.0Z)&(objectClass=user ) )"

C:\> ldifde -d ou=<OU NAME>,dC=<DOMAIN NAME>,dc=<DOMAIN EXTENSION> -l whencreated, whenchanged -p onelevel -r "(ObjectCategory=user)" -f <OUTPUT FILENAME>

列出最后登录时间戳格式(UTC):
C:\> dsquery * dc=<DOMAIN NAME>,dc=<DOMAIN
EXTENSION> -filter "(&(objectCategory=Person) (objectClass=User)(whenCreated>=20151001000000.0Z))"

C:\> adfind -csv -b dc=<DOMAIN NAME>,dc=<DOMAIN EXTENSION> -f "(&(objectCategory=Person (objectClass=User) (whenCreated>=20151001000000.0Z))"

列出使用PowerShell,转储过去90天内的新Active Directory账户:
PS C:\> import-module activedirectory
PS C:\> Get-QADUser -CreatedAfter (Get.Date).AddDays(-90)

PS C:\> Get-ADUser -Filter * -Properties whenCreated I Where-Object {$_.whenCreated -ge ((Get.Date).AddDays(-90)).Date}

在不少大型企业当中,企业运维部门经常使用批处理或VB脚本通过组策略更改本地管理员的密码。这就会导致了许多脚本在脚本文件中存储明文密码。因此Microsoft发布了组策略首选项,帮助系统管理员使用AES-256位加密对SYSVOL上的密码进行哈希处理。但是,许多运维人员似乎都不知道应用补丁KB2962486来防止密码存储在```groups.xml中。为了防止企业因为这种状况被入侵,请安装补丁并删除包含密码的旧XML文件。如下是关于GPO组策略的应急响应命令:

获取并强制执行新政策:
C:\> gpupdate /force

C:\> gpupdate /sync

列出用户的审核成功和失败:
C:\> auditpol /set /user:xx /category:"Detailed Tracking" /include /success:enable/failure:enable 

列出可疑或受感染的用户和计算机:
(:\> dsadd OU <QUARANTINE BAD OU>

将Active Directory用户移动到新组中:
C:\> Move-ADObject 'CN=<USER NAME>,CN=<OLD USER GROUP>,DC=<OLD DOMAIN>,DC=<OLD EXTENSION>' -TargetPath 'OU=<NEW USER GROUP>,DC=<OLD DOMAIN>,DC=<OLD EXTENSION>'

C:\> dsmove "CN=<USER NAME>,OU=<OLD USER OU>,DC=<OLD DOMAIN>,DC=<OLD EXTENSION>" -newparent OU=<NEW USER GROUP>,DC=<OLD DOMAIN>,DC=<OLD EXTENSION>
不允许运行.exe⽂件: 
C:\> reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" /v DisallowRun /t REG_DWORD /d "00000001" /f

C:\> reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun" /v badfile.exe /t REG_SZ /d <BAD FILE NAME>.exe /f

禁用远程桌⾯:
C:\> reg add "HKLM\SYSTEM\Cu rrentCont ro lSet\Cont ro l \ Terminal Server" /f /v fDenyTSConnections /t REG_DWORD /d 1

限制匿名访问:
C:\> reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v restrictanonymous /t REG_DWORD /d 1 /f 

不允许匿名枚举SAM账户:
C:\> reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v restrictanonymoussam /t REG_DWORD /d 1 /f

禁用粘滞键:
C:\> reg add "HKCU\Control Panel\Accessibility\StickyKeys" /v Flags /t REG_SZ /d 506 /f

禁用切换键:
C:\> reg add "HKCU\Control Panel \Accessibility\ ToggleKeys" /v Flags /t REG_SZ Id 58 /f

小提示:可以提取Active Directory攻击的流量作为辅助校验,原因是rubeus和kekeo的till都是20370913024805Z,随机生成的一个数kekeo/mimikatz nonce是12381973,rubeus nonce是1818848256,这些可以用来作为特征检测的一部分。

0X05 Active Directory攻击路径管理


在做完应急响应后,作为企业SOC的运营人员也不能懈怠,这个时候我们可以祭出攻击路径管理这个大杀器,以推动企业安全体系的发展。使用攻击路径管理工具还能帮助企业以数据驱动的方式优化其整体安全策略,企业可以发现潜在的威胁源,预测可能的攻击路径,并基于这些预测改进其防御策略。

那么攻击路径管理是什么呢?
答:攻击路径管理(APM) 是企业可以用来从攻击者的角度洞察企业防御弱点的过程。通过了解企业内的潜在攻击路径,企业SOC可以构建更强大的安全防御,从而在攻击者入侵企业系统和网络之前快速切断这些攻击路径并阻止攻击(这类攻击路径可能存在于本地资产和系统中,以及云环境中)。

这个时候我们可以做一个表来进行统计(参考格式如下所示):

攻击路径管理是对Active Directory(和Azure)攻击路径阻塞点的持续发现、映射和风险评估。企业SOC可以使用APM来消除、缓解和管理攻击路径,最终实现有效的分层管理和最小权限,并显着减少Active Directory向对手提供的攻击面。APM不需要根本性的架构更改,可以帮助企业SOC实现以上功能,从而无需花费大量时间追查错误配置、漏洞和危险的用户行为。
为了达到上述的目的,笔者在这里推荐一款不错的蓝队工具FalconHound,它可以有效的帮助企业SOC运营人员,梳理杂乱无章的日志,提高Active Directory的防御能力。并且由于FalconHound是一个用Go语言编写的程序。这使它能够针对所有主要操作系统和架构进行编译,这使得其运行变得简单快捷。FalconHound的处理流程,如下图所示:

如果将FalconHound这些操作的结果放入Sentinel(或 Splunk),就可以使用它来检测用户到高价值资产的路径,一旦上次运行的结果与当前运行的结果之间存在差异,就会发出警报,并显示差异。

0X06 点评


查看攻击路径可以帮助加固这些可能棘手的环境。通过全面了解Active Directory在本地和云环境中存在的攻击路径,组织可以了解攻击者如何在对其环境有基于上下文的理解的基础上进行横向移动,使企业能够看到问题如何结合起来促进攻击和模仿用户,升级权限,并访问云环境。有了这种理解,企业可以优先考虑真正需要修复的问题,并加强环境,以防止Active Directory的弱点被威胁行为者利用。最后,由于是笔者最近的感悟,所以有点乱希望大家见谅!

参考链接:

https://thehackernews.com/2023/08/understanding-active-directory-attack.html
https://blog.quest.com/understanding-attack-paths-targeting-active-directory/
https://blog.quest.com/8-ways-to-secure-your-active-directory-environment/
https://www.tenable.com/source/attack-path-management
https://blog.quest.com/the-anatomy-of-active-directory-attacks/
https://github.com/FalconForceTeam/FalconHound

0 条评论
某人
表情
可输入 255