DFSCoerce NTLM Relay Attack to Domain Admin
Write by mane, 請勿轉載。
0x0 介紹
近年來 AD 經常被大佬們搞,在今年 5 月份微軟修復的漏洞中,其中最離譜的是 ADCS,CVE-2022-26923,只需要修改 SPN 就可以拿到 Domain Admin 的權限。在這個星期内又爆出了一個針對 RPC 攻擊的工具,DFSCoerce。
現在已經有很多針對 RPC 攻擊的工具,這些工具通常都是做 NTLM Relay 攻擊,NTLM 攻擊可大可小,通常都是視環境而定,有一些工具無需密碼就拿下 Domain Admin。
0x1 DFSCoerce 原理
根據文檔,它使用了 NetrDfsRemoveStdRoot
和 NetrDfsAddStdRoot
的 RPC 接口 MS-DFSNM
來主動請求第三方服務器,這樣可以把第三方服務器設定爲攻擊機,就可以拿到這臺機器的 NTLM,從而做些壞事,RPC 接口具體參考這裏。
0x2 準備環境 && 要求
(隔壁借張圖,具體原理看上面的圖)
有三臺機器:
-
第一個是 AD(我的環境叫 DC:192.168.182.139),做 Domain Controller 。
-
第二個是 CA 機(我的環境叫 MANECA:192.168.182.140),裏面跑 ADCS 服務,join 了上面 AD 的 domain。
-
第三個是 Kali:192.168.182.132。
設定的環境比較苛刻:
-
由於這個工具使用了
NetrDfsRemoveStdRoot
和NetrDfsAddStdRoot
,所以要在 DC 上安裝Distributed File System (DFS): Namespace Management
. -
DC 和 ADCS 要分開兩臺機器,如果把服務都集成在 DC 裏面會攻擊失敗,kali 做中間人攻擊。
-
ADCS 服務器上要跑醜陋的證書注冊網頁,比如:
http://CA/certsrv/
,只能是 HTTP,而且沒有啓用 NTLM 中继保护。 -
如果啓用了 smart card 或者 winrm 的 https 版就可以直接省去後面 Add computer 的動作,懶的話直接用 Certipy 獲取 NT hash。
-
一個在 DC 裏面的低權限的賬號。
備注: 我用的 AD 和 ADCS 都是 Windows Server 2019,3 月份的補丁檔。
神奇的檔案名:en_windows_server_2019_updated_march_2019_x64_dvd_2ae967ab.iso
0x3 在 DC 上安裝 Distributed File System
0x4 在 CA 機上安裝 ADCS
如果遇到灰色的,請換 Enterprise Admins
或 Domain Admins
的用戶去登錄,不要使用 local admin。
0x5 檢查 CA 機上的配置
用 IE 打開 http://127.0.0.1/certsrv
,如果彈出驗證,就説明配置成功了:
或者檢查一下 IIS 有沒有這個文件夾出現:
0x6 在 DC 上創建低權限的賬號
0x7 使用 DFSCoerce 看看 RPC 是否工作
Responder 的結果:
可以看到這個 RPC 是工作的,請求的也是這臺機器的機器賬戶,這個時候就可以使用 NTLMv2 進行 Relay Attack。
0x8 中繼證書
設置監聽器,把收到的 NTLM 馬上轉到 CA 上獲取證書,獲取的證書是 DomainController 證書:
再一次使用 DFSCoerce 攻擊,就獲得了 base64 的證書。
0x9 還原成 pfx 文件
我把上面的 base64 保存到 cert.pfxb64
,然後通過 base64 解碼獲得 cert.pfx
文件:
這個時候如果做 pass the cert 的話,如果對面的機器沒有開啓 smart card 服務或者 HTTPS 版本的 Winrm(5986/TCP) 就沒有辦法直接做 pass the cert,smart card 要通過 GPO 去配置 gettgtpkinit.py
才可以使用,不然就會顯示:
具體原理我也很迷茫,但這個時候有人想到了利用 cert 去攻擊 LDAP,然後獲得最高權限,看這篇文章。
如果開啓了 https 的 winrm 就可以使用 path the cert,把一個 pfx 分成私鑰和公鑰在使用 evil-winrm 去連接就可以了。
0xa 其實不用這麽麻煩,用 certipy 就可以獲得 NT hash 了
懷疑是 gettgtpkinit.py
的脚本問題,於是換了 certipy 去請求 hash,結果神奇的可以了。
經典的 secretsdump:
然後使用 Domain Admin 進行 Pass the hash:
收工!
如何緩解攻擊
微軟終於坐不住了,於是發了這篇文章叫你們好好的使用 HTTPS:
參考
KB5005413: Mitigating NTLM Relay Attacks on Active Directory Certificate Services (AD CS)
使用 PetitPotam 到 NTLM 中继到域管理员 | 九世的博客
[MS-DFSNM]: Distributed File System (DFS): Namespace Management Protocol | Microsoft Docs
Protect Your Windows Network from the PetitPotam Exploit - Ravenswood Technology Group
GitHub - ly4k/Certipy: Tool for Active Directory Certificate Services enumeration and abuse
Authenticating with certificates when PKINIT is not supported
Comments
Post a Comment