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 原理

根據文檔,它使用了NetrDfsRemoveStdRootNetrDfsAddStdRoot 的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。

設定的環境比較苛刻:

  • 由於這個工具使用了NetrDfsRemoveStdRootNetrDfsAddStdRoot,所以要在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

  1. 首先先跟著這篇文章設置,下面的Login in a normal user開始不需要理會。

  2. 上面設置好了只需要設置這篇文章配置证书模板,其他的請不要設置,包括下面的激活證書服務

如果遇到灰色的,請換 Enterprise AdminsDomain 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:

參考

GitHub - Wh04m1001/DFSCoerce

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

大佬們的推特:

@wdormann

@filip_dragovic

Comments