AD Enuming
实验环境:https://tryhackme.com/jr/adenumeration
枚举AD
在次实验中,我们主要将介绍以下几种用于枚举AD的技巧:
- Microsoft管理控制台的AD snap-ins(管理单元)。
- 命令提示符界面(CMD)中的
net
命令。 - PowerShell的
AD-RSAT
cmdlet。 - Bloodhound。
实验环境:
0x02凭据注入
Runas
假设现在我们没有方法或权限来创建一个新的加入目标域的机器,那么,我们就需要在我们自己的Windows计算机上尝试更好地使用已经获得的AD凭据,比如执行凭据注入技术。
我们可以使用Runas注入凭据,Runas是一个合法的Windows二进制文件,它能够将我们已知的AD凭据注入到内存中,Runas的常用命令如下所示:
runas.exe /netonly /user:<domain>\<username> cmd.exe
-
/netonly
- 我们希望加载用于网络身份验证的AD凭据,而不直接针对目标域控制器进行身份验证;此命令参数表示仅对网络会话使用已注入的凭据,所有其他命令都会在本地主机上的当前用户会话中运行。 -
/user
- 提供目标域和用户名的详细信息,此处使用完全限定域名(FQDN)而不仅仅是域的NetBIOS名称是一个更好的选择,因为这将有助于进行DNS解析。 -
cmd.exe
- 指定注入AD凭据后将要执行的程序,我们可以将其更改为其他任何内容,但是此处最好的选择是指定执行cmd.exe程序。
运行上述命令后,系统将提示我们提供密码。请注意,由于我们添加了/netonly
参数,因此域控制器并不会直接开始验证凭据,我们只需确认我们所注入的网络凭据能够成功且正确地被加载即可。
注意:如果我们使用的是自己的Windows机器,应该确保以管理员身份运行来运行以上Runas命令,这将在CMD程序中注入一个管理员用户令牌。
如果我们将要运行的其他工具需要使用由执行Runas命令而产生的CMD的本地管理员权限,那么相关的管理员令牌在我们完成注入后其实已经处于可用状态;虽然这不会为我们提供针对整个目标网络的管理员权限,但可以确保我们所执行的任何本地命令都将以AD凭据所关联的管理员权限运行。
验证凭据有效性
注意:只有在使用我们自己的Windows计算机进行操作时,我们才需要执行以下步骤,这些步骤可能对于红队演练有所帮助。
在我们为执行Runas命令提供相关的密码之后,将会自动打开一个新的CMD窗口。现在,我们需要验证我们所使用的凭据能否正常工作,我们可以尝试列出SYSVOL目录,因为任何AD帐户(即使是最低权限的AD帐户)都可以读取SYSVOL目录的内容。
SYSVOL是一个存在于所有域控制器上的文件夹,而且是一个共享文件夹,它可用于存储组策略对象(GPO)和信息以及任何其他与域相关的脚本。SYSVOL是Active Directory的重要组件之一,它能够将GPO交付给域中的所有计算机,而连接到域的计算机也可以读取GPO以及应用一些可应用的GPO,并且能够从域的中央位置针对域范围内的配置进行更改。
列举该目录的内容本身也许对我们十分有益,因为SYSVOL目录中可能会存在一些其他的AD凭据。
注意:
在枚举SYSVOL目录时,选择执行dir \\za.tryhackme.com\SYSVOL
命令与执行dir \\<DC IP>\SYSVOL
命令有什么区别呢?为什么我们要配置DNS呢?
在枚举命令中使用主机名与使用IP地址确实有很大不同,归结起来就是会导致系统采用不同的身份验证方法。当我们在命令中提供主机名时,目标网络会首先尝试执行Kerberos身份验证方法,因为Kerberos的票据中直接引用了服务的FQDN(完全限定域名)信息;当我们在命令中提供IP地址时,则会强制使用NTLM作为身份验证类型。
使用已注入的凭据
此时,我们已经将我们获得的AD凭据注入到了内存中。因为我们在Runas命令中使用了/netonly
参数,所以所有网络通信都可以使用已注入的凭据进行身份验证,这包括了在CMD窗口中已执行的应用程序的所有网络通信。
假设现在有一个MS SQL数据库目标,应用的是Windows身份验证机制,如果我们没有办法或权限新建一个加入到域中的机器,那么我们就可以使用执行Runas命令之后所得到的CMD窗口来启动MS SQL Studio程序;即使MS SQL程序所显示的可能为我们的本地用户名,我们也可以直接点击Log In按钮,然后MS SQL程序就会在后台使用我们所注入的AD凭据来进行身份验证。
0x03Microsoft管理控制台(MMC)
MMC
在本小节,我们将使用带有远程服务器管理工具(RSAT)中的AD Snap-Ins(管理单元)的Microsoft管理控制台(MMC)来进行AD枚举,在我们要选择使用的跳板主机(THMJMP1
)上已经安装好了MMC。
在实际环境中,我们可能会需要在我们自己的Windows机器上执行以下步骤来安装AD Snap-Ins(管理单元):
- 点击Windows计算机的"Start(开始)"按钮
- 搜索并选择"Apps & Features(应用程序和功能)" 然后按下回车键
- 单击Manage Optional Features(管理可选功能)
- 单击Add a feature(添加功能)
- 搜索"RSAT"
- 选择"RSAT: Active Directory Domain Services and Lightweight Directory Tools(RSAT:AD域服务和轻量级目录工具)" 然后单击Install(安装)
注意,上述步骤在不同版本的Windows机器上可能存在差别,并且我们只能在专业版或者企业版的Windows操作系统上才能安装RSAT。
登录跳板机:
xfreerdp /d:za.tryhackme.com /u:'kenneth.davies' /p:'Password1' /v:thmjmp1.za.tryhackme.com /drive:.,kali-share +clipboard /smart-sizing
加smart-sizing参数即可调整窗口大小
drive:.,kali-share:此参数选项将允许我们在RDP会话中将当前工作目录作为网络驱动器挂载,以便我们可以上传和下载文件。
clipboard:此参数选项允许我们在不同主机之间进行复制和粘贴操作。
win+r输mmc启动mmc,在MMC(Microsoft管理控制台)中,我们可以手动附加目标AD的RSAT Snap-In(管理单元):
- 依次点击File(文件) -> Add/Remove Snap-in (添加/删除管理单元)
- 选择并添加(Add)所有三个Active Directory管理单元(Snap-ins)
- 单击忽略任何错误和警告提示
- 右键单击Active Directory Domains and Trusts (AD域和信任)并选择Change Forest(更改森林)
- 输入za.tryhackme.com作为Root domain (根域)然后点击OK(确定)
- 右键单击Active Directory Sites and Services (AD站点和服务)并选择Change Forest (更改森林)
- 输入za.tryhackme.com作为Root domain (根域)然后点击OK(确定)
- 右键单击Active Directory Users and Computers (AD用户和计算机)并选择Change Domain (更改域)
- 输入za.tryhackme.com作为Domain(域)然后点击OK(确定)
- 右键单击左侧窗格中的Active Directory Users and Computers (AD用户和计算机)
- 依次点击View(查看) -> Advanced Features(高级功能)
完成上述设置之后,我们的MMC(Microsoft管理控制台)应该会指向目标域并能对域进行身份验证。
枚举Users和Computers
现在,让我们查看一下目标域的AD结构,在此我们将重点关注AD域中的Users and Computers(用户和计算机)部分:
让我们继续查看People目录,在这里,我们能够看到用户会根据Department(部门) OUs进行划分,我们单击具体的OU(组织单元)则会显示属于该部门的用户:
随意双击上图中的任何一个用户,我们都可以查看指定用户的所有属性和特征,而且我们还可以看到这些用户属于哪些组:
我们还可以使用MMC(Microsoft管理控制台)在目标AD环境中查找主机,只要我们在MMC中点击服务器(Servers)或工作站(Workstations),就能查看连接到目标域的机器列表。
如果我们具有相关的权限,我们还可以使用MMC直接对目标AD进行更改,例如更改用户的密码或者向特定的组添加帐户。使用MMC可以更好地帮助我们理解AD域结构,我们也能够在MMC中利用搜索功能快速查找目标对象。
优缺点
MMC的优点
- Microsoft管理控制台的GUI界面为我们提供了一种很好的方法来获得关于目标AD环境的整体视图。
- 通过使用MMC,我们可以对不同的目标AD对象进行快速搜索。
- MMC为我们提供了一个可以查看目标AD对象的特定更新情况的直接方法。
- 如果我们有足够的权限,我们就可以直接更新目标AD域中现有的AD对象或者向目标域中添加新的对象。
MMC的缺点
- Microsoft管理控制台是GUI界面,这将会要求我们必须使用RDP来访问执行MMC程序的目标机器。
- 虽然在Microsoft管理控制台中搜索AD对象的速度很快,但是MMC仍然无法收集所有AD范围内的属性或特征信息。
0x04CMD枚举
CMD
当我们不能通过RDP访问目标系统、防御方正在监控PowerShell的使用时,我们可以尝试使用CMD并通过远程访问木马(RAT-Remote Access Trojan)来执行AD枚举操作。
CMD有一个内置的命令,我们可以使用它来枚举关于AD的信息,这个内置的命令就是net
,net
命令可以用来枚举有关本地系统和AD的信息,我们可以使用它来列举很多内容,但是我们所得到的这些内容仍然不是一个完全详尽的信息列表。
枚举Users
net user /domain
执行以上命令将为我们返回域中的所有AD用户,能够帮助我们确定目标域的规模。我们可以继续使用user
子选项来列出单个用户帐户的更详细信息:
注意:如果指定用户属于几个(最多十个)AD组的一部分,那么上述命令将能够为我们显示该用户帐户的组成员关系;但是,在用户属于十个以上AD组的成员时,上述命令将无法再列出该用户帐户的所有组成员关系。
枚举Groups
net group /domain
以上信息可以帮助我们找到特定的组,然后我们还可以继续使用group
子选项来列出指定组的更详细信息(例如组中的成员信息):
枚举密码策略
net accounts /domain
这将为我们提供一些有用的信息,例如:
- 所保存的密码历史的长度,这意味着用户必须提供多少个唯一的密码才能重用旧密码。
- 不正确的密码验证尝试的锁定阈值(多少次失败的密码验证会导致帐户被锁定)以及对应帐户将被锁定的时间(account lockout duration)。
- 密码的最小长度。
- 密码允许达到的最长有效期,该有效期会指示是否必须定期轮换密码、何时不得不更换密码。
以上信息可以帮助我们针对已经列举的其他用户帐户进行密码喷洒攻击。通过查看密码策略信息,我们能够更好地猜测应该在密码攻击中使用什么样的单个密码(应该使用符合密码策略的密码),以及在目标锁定帐户之前可以执行多少次密码攻击(不应该执行盲目的密码喷洒攻击,否则会导致用于验证密码的帐户被锁定)。
优缺点
使用CMD进行枚举的优点
- 在使用CMD时,我们不需要借助额外的或外部的工具,并且通过执行简单的CMD命令来枚举信息的行为通常不会被网络安全蓝队所监控。
- 通过使用CMD,我们可以不需要基于GUI界面来完成AD枚举。
- 常用于网络钓鱼攻击有效载荷的VBScript和其他宏语言本身也会支持一些CMD命令,因此我们可以使用它们来枚举关于目标AD域的初始信息,然后再制作更具体的有效载荷。
使用CMD进行枚举的优点
-
net
命令必须在已经加入到域的机器上执行才能成功枚举目标域的信息,如果执行net命令的计算机并不是域内主机,则默认可枚举的是WORKGROUP域的信息。 - 执行
net
命令可能并不会显示所有信息,例如,如果有一个域内用户属于十个以上AD组的成员,那么相关的net命令的输出结果将不会显示此用户的所有组信息。
0x05Poweshell枚举
Powershell
虽然PowerShell具有CMD可提供的所有标准功能,但是它还能够让我们访问并使用cmdlet(Command-lets),这些cmdlet是用于执行特定函数的.NET类。虽然我们可以像PowerView的创建者那样编写自己的cmdlet,但是使用PowerShell内置的cmdlet已经足够我们针对目标AD执行信息枚举操作。
如果我们在上文的第三小节中安装了AD-RSAT工具,那么它将会自动为我们安装和AD相关的cmdlet(大概有50多个cmdlet),我们在本小节中将研究其中的一些。
ssh za.tryhackme.com\\graeme.williams@thmjmp1.za.tryhackme.com
#Password: hJnlKuLBa2
我们可以借助跳板主机使用Get-ADUser
cmdlet来枚举目标AD用户:
Get-ADUser -Identity gordon.stevens -Server za.tryhackme.com -Properties *
对于大多数cmdlet,我们还可以在命令中使用-Filter
参数,该参数允许我们控制信息枚举的输出结果,并且我们还能使用Format-Table
cmdlet来整洁地显示枚举结果:
Get-ADUser -Filter 'Name -like "*stevens"' -Server za.tryhackme.com | Format-Table Name,SamAccountName -A
枚举Groups
我们可以借助跳板主机使用Get-ADGroup
cmdlet来枚举目标AD组:
Get-ADGroup -Identity Administrators -Server za.tryhackme.com
我们还可以使用Get-ADGroupMember
cmdlet进一步枚举组成员信息:
Get-ADGroupMember -Identity Administrators -Server za.tryhackme.com
枚举对象
使用Get-ADObject
cmdlet来对目标域中的AD对象做常规搜索,例如,我们可以使用以下命令来寻找所有在特定日期之后被更改的AD对象:
如果想在不锁定帐户的情况下执行密码喷洒攻击,我们可以使用Get-ADObject
枚举badPwdCount大于零的帐户,以避免这些帐户出现在我们的密码攻击中:
Get-ADObject -Filter 'badPwdCount -gt 0' -Server za.tryhackme.com
枚举域
使用Get-ADDomain
来检索关于特定域的附加信息:
修改对象
AD-RSAT cmdlet的强大之处在于,一些cmdlet命令能够允许我们在AD域中创建新的AD对象或者更改现有的AD对象;但是,我们在本文的实验网络中重点关注的是枚举AD信息的操作。创建新AD对象或者修改现有AD对象将被视为针对目标AD进行漏洞利用的过程,我们在本实验中不作过多讨论。
示例:我们可以使用Set-ADAccountPassword
cmdlet强制更改AD用户的密码。
Set-ADAccountPassword -Identity gordon.stevens -Server za.tryhackme.com -OldPassword (ConvertTo-SecureString -AsPlaintext "old" -force) -NewPassword (ConvertTo-SecureString -AsPlainText "new" -Force)
优缺点
使用PowerShell进行枚举的优点
- 使用PowerShell cmdlet可以得到比使用命令提示符(CMD)中的
net
命令多得多的信息。 - 我们可以在没有加入到目标域的计算机上使用runas来指定目标服务器和目标域来执行这些枚举命令。
- 我们可以创建自己的cmdlet来枚举特定信息。
- 我们可以使用AD-RSAT cmdlet直接更改AD对象,例如重置用户密码或将某个用户添加到特定组中。
使用PowerShell进行枚举的缺点
- 与使用命令提示符(CMD)相比,网络安全蓝队通常会更多地监视PowerShell的使用情况。
- 我们必须安装AD-RSAT工具(这将我们提供一些可用于AD枚举的cmdlet),或者使用其他PowerShell枚举脚本。
0x06Bloodhound枚举
Bloodhound
在相当长的一段时间里,红队(还有恶意攻击者)在网络安全领域占据了上风,以至于微软在其高级威胁防护(Advanced Threat Protection)解决方案中集成了属于自己版本的Bloodhound,微软这样做的原因可以用下面这句话来归结:“防守者用列表思考,而攻击者用图表思考”。
Bloodhound允许网络攻击者以及防守者以图形格式显示具有相互连接节点的AD环境。Bloodhound图形中的每个连接都是一个可能的攻击路径,攻击者可以利用这些路径来达到行动目标;而防御者则可以使用Bloodhound图形所附带的列表来分析AD环境信息,比如查看域管理员列表或者查看AD环境中所有主机的列表。
Sharphound操作
我们经常会交替使用Sharphound和Bloodhound,然而,它们是不一样的。Sharphound是用于向Bloodhound导入AD数据的枚举工具,经过它枚举所得到的AD信息可以在Bloodhound中直观地显示,Bloodhound是用来显示AD攻击图表的实际GUI应用程序。因此,我们首先需要学习如何使用Sharphound来枚举AD信息,然后我们才能直观地看到使用Bloodhound所显示的图形化AD信息。
我们可以使用三种不同的Sharphound收集器:
- Sharphound.ps1:用于运行Sharphound的PowerShell脚本,这种Sharphound很适合配合RAT(远程访问木马)使用,因为相关的ps1脚本可以直接加载到内存中,这在一定程度上能够避免脚本被目标机磁盘上的AV(杀毒软件)扫描到。
- Sharphound.exe:用于运行Sharphound的Windows可执行版本。
- AzureHound:用于针对Azure(微软云计算服务)实例的Sharphound版本,Bloodhound可以基于AzureHound从Azure中获取被枚举的数据,并找到与Azure的身份验证和访问管理配置相关的攻击路径。
注意:我们所使用的Bloodhound和Sharphound的版本必须互相匹配才能得到最佳结果。如果Bloodhound有所更新,那么这就意味着旧的Sharphound所枚举的信息不能被Bloodhound成功导入。在本文的实验网络中我们将使用Bloodhound v4.1.0版本。
除此以外,当我们在网络安全评估中使用上述Sharphound收集器时,目标机很有可能会将这些文件识别为恶意软件,并会向蓝队发出警报。我们能够使用没有加入到目标域中的Windows机器来进行枚举,这可以通过执行runas
命令注入AD凭据并将Sharphound指向目标域控制器来实现,由于我们能够控制自己的Windows机器,所以我们可以选择禁用AV(反病毒软件)或者为特定的文件或文件夹创建异常处理情况。
以Sharphound.exe为例,我们可以使用以下命令来运行Sharphound:
Sharphound.exe --CollectionMethods <Methods> --Domain za.tryhackme.com --ExcludeDCs
参数解析:
-
CollectionMethods
:此参数用于确定Sharphound将收集什么类型的数据,最常见的选项是Default或All;此外,由于Sharphound会缓存经过枚举得到的信息,所以一旦第一次完成Sharphound的运行,我们就只能使用Session(会话)收集方法才能检索新的用户会话,这会加快枚举信息的处理速度。 -
Domain
:该参数将指定要枚举的目标域,有时候,我们可能希望枚举与现有域具有信任关系的父域或其他域的信息,我们可以通过更改这个参数来告诉Sharphound应该枚举哪个域。 -
ExcludeDCs
:该参数将指定Sharphound不要直接接触域控制器,这将降低Sharphound运行时引发警报的可能性。
实验:
ssh za.tryhackme.com\\rachel.dunn@thmjmp1.za.tryhackme.com
#Password: Bmlj9838
copy C:\Tools\Sharphound.exe ~\Documents\
cd ~\Documents\
我们将使用All
和Session
收集方法来运行Sharphound:
.\SharpHound.exe --CollectionMethods All --Domain za.tryhackme.com --ExcludeDCs
我们大概需要运行Sharphound并等待1分钟左右完成枚举操作。在较大的企业组织网络中,第一次执行Sharphound可能需要更长的时间,甚至需要花费几个小时。
一旦我们完成了初次的Sharphound运行,我们将在执行Sharphound的文件夹下得到一个带有时间戳的ZIP文件,接下来我们就可以使用Bloodhound导入执行Sharphound所得到的ZIP文件,这将向我们显示关于目标AD的攻击路径。
Bloodhound操作
如前所述,Bloodhound是一个GUI应用程序,它允许我们导入Sharphound所捕获的AD数据,并能将其可视化为相关的AD攻击路径。Bloodhound会使用Neo4j作为其后端数据库和图形化数据系统。
导入数据
做准备工作,初始化Neo4j和bloodhound:
neo4j start
./BloodHound --no-sandbox
#neo4j:123456
将Sharphound所生成的AD枚举结果scp到本地,之后将ZIP文件拖放到Bloodhound的GUI中,以完成AD枚举信息的导入。
scp rachel.dunn@THMJMP1.za.tryhackme.com:C:/Users/rachel.dunn/Documents/20240804034956_BloodHound.zip .
#Password: Bmlj9838
查看攻击路径
现在我们可以在Bloodhound中点击“Search for a node-搜索节点”旁边的三条条纹,这将显示一些选项,其中的ON-PREM OBJECTS选项卡可以向我们显示当前已经导入的AD枚举信息。
请注意,如果我们又导入了重新运行Sharphound所得到的枚举结果,上述界面中的信息数量会有所增加。我们可以点击Node Info,这将允许我们查看关于AD帐户的信息,我们可以单击node(节点)来刷新信息视图,此外,我们还可以通过点击鼠标左键(LeftCtrl)来更改标签方案。
我们可以在Bloodhound中看到大量信息,上图中的每个信息类别所包含的内容如下所示:
- Overview(概述):提供一个大概的总体信息,例如AD帐户所拥有的活动会话数量(这将告诉攻击者能否通过这些会话到达高价值目标)。
- Node Properties(节点属性):显示关于AD帐户的信息,如显示AD帐户的名称和标题。
- Extra Properties(额外属性):提供更详细的AD信息,例如专有名称(标识名)和AD帐户的创建时间。
- Group Membership(组成员):显示有关AD帐户所属组的信息。
- Local Admin Rights(本地管理权限):提供有关加入到目标域中的主机的信息,其中的AD帐户具有管理权限。
- Execution Rights(执行权限):提供有关特殊权限的信息,如通过RDP连接到其他计算机的能力。
- Outbound Control Rights(出站控制权限):显示有关AD对象的信息,对应的帐户具有修改其属性的权限。
- Inbound Control Rights(入站控制权限):提供关于可以修改对应帐户属性的AD对象的信息。
如果想查看上述这些信息类别中的更多信息,我们可以点击info(information-信息)旁边的数字序号。例如,我们可以查看与指定AD帐户相关联的组成员关系,通过点击“First Degree Group Membership-一级组成员”旁边的数字序号,我们可以看到该AD帐户是两个AD组的成员。
接下来我们将查看Bloodhound中的Analysis,此处包含Bloodhound的创建者所编写的查询功能,可用来列举一些有用的信息。
其中的“Domain Information-域信息”部分下,我们可以运行“Find all Domain Admins-查找所有域管理员”查询。
Bloodhound中的图标被称为节点,而直线则被称为边界线。
每个AD对象都可以是Bloodhound中的一个节点,并且每个AD对象都会有一个不同的图标来描述AD对象的类型。如果我们想要制定一个攻击路径,我们需要查看有关我们的当前位置和我们所拥有的权限以及我们想要到达的地方的可用边界线。
Bloodhound中有各种可用的边界线,我们可以通过使用过滤器(filter)图标访问这些边界线:
我们可在Bloodhound上列举攻击路线,只要输入开始和结尾节点,然后点击路径(path)图标以允许进行路径搜索即可。
我们的开始节点(上图中的Start Node)将是我们的AD用户名,我们的结束节点(上图中的Target Node)将会是Tier 1 ADMINS组,因为这个目标组对目标服务器具有管理权限。
如果使用选定的边界线过滤器没有找到可用的攻击路径,那么Bloodhound将会显示“No Results Found-无结果发现”。
注意:Bloodhound无路径结果也可能是由于Bloodhound/Sharphound的版本不匹配,这意味着我们的枚举信息没有被正确导入。
如上图的示例所示, Bloodhound成功地为我们显示了一条AD攻击路径,这条攻击路径所显示的目标是TIER 1 ADMINS
组,我们可以通过使用相关的初始凭据对THMJMP1
(跳板主机)进行身份验证,然后尝试使用跳板主机实现攻击目标,此外,上图中的攻击路径还显示了任何属于DOMAIN USERS
组的用户(包括我们的跳板机AD帐户)都能够通过RDP连接到THMJMP1主机。
我们可以利用Bloodhound所显示的攻击路径(见上图):
- 使用我们的初始AD凭据通过RDP连接到
THMJMP1
跳板主机。 - 在跳板主机上寻找权限提升向量,以便为我们提供管理员访问权限。
- 基于管理员访问权限,我们可以使用诸如
Mimikatz
之类的凭据获取技术和工具。 - 由于
T1 Admin
帐户在THMJMP1
(跳板主机)上有一个活动会话,我们可以尝试获取T1 Admin
帐户的NTLM哈希进而获得TIER 1 ADMINS
组的权限。
更新会话
在大型的企业组织网络中,AD域的结构通常不会经常改变,虽然可能会有几个新员工帐户被添加到AD域中,但是目标AD域所常用的OUs(组织单元)、组、用户和权限的总体结构将保持不变。
然而,在AD域中的活动会话和LogOn事件会不断变化。由于运行Sharphound会创建目标AD域结构在某个时间点的快照,因此我们所获取的活动会话数据并不总是准确的,因为一些用户可能已经注销了他们的会话,或者新用户可能已经建立了新的会话。这是我们需要注意的重要事项,也是我们希望定期执行Sharphound的原因。
一个好的方法是在网络安全评估开始时使用“All
”收集方法来执行Sharphound,然后使用“Session
”收集方法至少执行两次Sharphound。这将为我们提供新的会话数据,并且Sharphound会运行的更快,因为它不会再次枚举整个AD结构。
在导入新的Sharphound数据之前,我们可以通过在Bloodhound中单击“ Clear Session Information-清除会话信息”选项卡,以便清除Database Info(数据库信息)标签所表示的在Bloodhound中停滞的会话(Session)数据。
优缺点
Bloodhound的优点
- 可以提供用于执行AD枚举的GUI应用程序。
- 能够直观地显示与被枚举的AD信息相关的攻击路径。
- 通常需要我们进行手动查询才能查看AD对象的信息,这能够让我们更好地理解AD结构。
Bloodhound的缺点
- 使用Bloodhound之前需要先执行Sharphound,这往往会被目标网络所部署的AV(反病毒软件)或EDR(端点检测与响应)解决方案所检测到。