经过上一个房间之后,我们已经得到了多组的 AD
凭据且可以使用他们进行身份验证
由此我们可以枚举需要身份验证才能访问的 AD
设置和结构的详细信息
这通常会导致横向移动或提权。即大多数情况下,枚举后利用,利用后再枚举
在这里会涉及到 AD
的一些枚举办法:
Microsoft
管理控制台的AD
管理单元。- 命令提示符的网络命令
PowerShell
的AD-RSAT cmdlet
Bloodhound
Credential Injection
凭据注入对于拿到
AD
但无法登陆的情况,在Windows
上可以使用Runas
来将凭据注入至内存中:1
runas.exe /netonly /user:<domain>\<username> cmd.exe
/netonly
:因为暂时没有加入域,所以希望加载网络身份验证的凭据,但不针对域控制器进行身份验证。所以任何网络连接都将使用此处指定的账户进行/user
:这里需要提供域和用户名的详细信息,而且需要使用完全限定域名FQDN
而非域的NetBIOS
名称cmd.exe
注入凭据后要执行的程序,使用cmd
是最保险的,因为其可以带着凭据启动任何内容输入命令后需要提供密码,值得注意的是在
/netonly
参数影响下,域控制器不会直接验证凭据,即他会接受任何密码,所以仍需确认是否正确加载凭据最可靠的方法是列出
SYSVOL
,对于任何AD
凭据,无论权限有多低都能读取SYSVOL
目录的内容SYSVOL
是所有域控制器上都存在的一个共享文件夹,存储组策略对象GPO
的信息。是AD
的重要组件,因为其将这些GPO
传递到域中所有计算机,而加入域的计算机可以读取并应用适当的GPO
,从而进行域范围的配置更改而在列出
SYSVOl
前,需要配置DNS
,在Powershell
窗口执行:1
2
3$dnsip = "<DC IP>"
$index = Get-NetAdapter -Name 'Ethernet' | Select-Object -ExpandProperty 'ifIndex'
Set-DnsClientServerAddress -InterfaceIndex $index -ServerAddresses $dnsip可以通过
nslookup za.tryhackme.com
来验证DNS
是否正常工作ip
与hostnames
1
2dir \\za.tryhackme.com\SYSVOL
dir \\<DC IP>\SYSVOL这两条命令的区别?
当提供主机名时,网络身份验证将首先尝试执行
Kerberos
身份验证。由于该身份验证使用嵌在凭据中的主机名,所以如果提供IP
,则可以强制身份验证类型为NTLM
在某些情况下,组织会监控
Overpass
和Pass-the-Hash
攻击,此时强制进行NTLM
身份验证可以避免被检测到
Enumeration through Microsoft Management Console
MMC枚举这是唯一一个需要使用
GUI
的方法,即rdp
远程连接后使用Microsoft
管理控制台MMC
和远程服务器管理工具RSAT
访问 http://distributor.za.tryhackme.com/creds 来获得第一个
ad
凭据sally.cole:Changeme123
这个
ssh
和rdp
都可以登这里用
remmina
登录到THMJMP1
上:由于远程连接的问题,
windows
靶机不能识别Win+R
呼出运行窗口,所以在开始菜单搜run
,然后再启动mmc
在
Files-Add or Remove Snap-ins
中,加入所有三个AD
管理单元然后右键这三个,
change forest
为za.tryhackme.com
,User and Computers
那个要change domain
然后左侧栏右键
User and Computers
,view-advanced features
现在可以在这里枚举内容了:
在
AD
的结构中,我们将重点关注AD
用户和计算机,查看初始组织单位OU
:在
people
文件夹中,看到用户按照部门划分也可以看到用户属于哪个组
在
Servers
中可以找到加入域的计算机的列表Enumeration through Command Prompt
命令行看AD
信息cmd
的内置命令net
用于枚举本地系统和AD
的信息值得注意的是,该命令必须从加入域的计算机执行,且不一定会显示所有信息
net user /domain
该命令将返回所有
AD
用户,其有助于确认域的大小来进行下一步攻击也可以进阶的来枚举单个用户的详细信息:
net user [用户名] /domain
net group /domain
枚举域的组
同样的,指定组以获得更多信息:
net group "[groupname]" /domain
net accounts /domain
这些关于密码设置的信息或许会在爆破中使用
Enumeration through PowerShell
powershell偷看AD
Get-ADUser -Identity [username] -Server za.tryhackme.com -Properties *
枚举用户
Get-ADUser -Filter 'Name -like "*stevens"' -Server za.tryhackme.com | Format-Table Name,SamAccountName -A
也可以对用户名模糊搜索
更进一步,可以用
-Filter
参数进行过更多控制,Format-Table
来整齐显示Get-ADGroupMember -Identity Administrators -Server za.tryhackme.com
枚举组成员身份,这里查找身份为
admin
的组员:Get-ADObject
执行更通用的搜索,以查找特定日期后更改的所有
AD
对象为例:1
2$ChangeDate = New-Object DateTime(2022, 02, 28, 12, 00, 00)
Get-ADObject -Filter 'whenChanged -gt $ChangeDate' -includeDeletedObjects -Server za.tryhackme.com又例如,在爆破密码的时候想避开账户锁定,那么枚举
badPwdCount
次数大于 $0$ 的账户Get-ADObject -Filter 'badPwdCount -gt 0' -Server za.tryhackme.com
Get-ADDomain -Server za.tryhackme.com
检索关于特定域的附加信息
Set-ADAccountPassword -Identity gordon.stevens -Server za.tryhackme.com -OldPassword (ConvertTo-SecureString -AsPlaintext "old" -force) -NewPassword (ConvertTo-SecureString -AsPlainText "new" -Force)
强制更改
AD
用户的密码
Enumeration through Bloodhound
bloodhound
枚举信息bloodhound
是迄今为止最强大的AD
枚举工具其允许攻击者通过互联节点以图形来可视化
AD
环境,其优点在于可以进行两阶段攻击:第一阶段下,红队借助钓鱼的手段等进到
AD
里面进行信息枚举。这一阶段的payload
经常比较嘈杂(?),而且容易被检测到。第二阶段前,
bloodhound
可以离线使用这些枚举到的数据,得到图形化的攻击路径,显示所需的步骤。所以能大大减少第二阶段的攻击时间,来避免被蓝队检测到shapehound
其是
bloodhound
的枚举工具,用于枚举AD
信息并在bloodhound
中直观显示,即bloodhound
是显示AD
攻击图的GUI
在
THMJMP1
中,sharphound
在C:\Tools
下:Sharphound.exe --CollectionMethods <Methods> --Domain za.tryhackme.com --ExcludeDCs
其中
ExcludeDCs
参数用于避免接触域控制器,来降低告警的可能性运行完毕后在
sharphound
文件夹中会有一个zip
如上所述,
Bloodhound
还需要安装Neo4j
来作为图形系统但我这里用的是
AttackBox
啊嗯neo4j console start
启动neo4j
,然后再启动bloodhound
现在还需要把获得的枚举数据传给
bloodhound
:先下到本机scp <AD Username>@THMJMP1.za.tryhackme.com:C:/.../<Sharphound ZIP> .
然后直接拖进去等加载:
导入之后看左侧:
Node info
-输入想查询的AD
用户-点击该用户的GUI
节点比如想看账户关联的组成员身份,可以去
First degree group membership
可以看到是两个组的成员
再去看
analysis
模块:使用
Find all Domain Admins
模块:可以看到一个用户名为
T0_TINUS.GREEN
的AD
用户,其属于组Tier 0 ADMINS
,而该组又属于DOMAIN ADMINS
组,所以Tier 0 ADMINS
组的所有用户都是域管理员DA
对于另一个
AD
用户ADMINISTRATOR
,其也是DA
组的一部分,而考虑到其是内置用户,所以拿权限还是侧重于T0_TINUS.GREEN
每个
AD
对象都是bloodhound
中的一个节点,那么以当前拿到的AD
用户为起点,域管理员组Tier 1 ADMINS
为终点搜索路线:就可以得到一条攻击路径