
Zerologon 自動エクスプロイトツール | CVE-2020-1472
脆弱な暗号化プロトコルが、Netlogonプロトコルの認証メカニズムの代わりに実装されています。認証されていない攻撃者は、Zerologon脆弱性を悪用して、ドメインコントローラー(Domain Controller)マシンのコンピュータアカウントパスワードを空(null)に設定できます(NTハッシュ = 31d6cfe0d16ae931b73c59d7e0c089c0)。これにより、攻撃者は作成した資格情報を使用してドメインコントローラーマシンにアクセスし、他のユーザーの資格情報を取得できます。正当なユーザーの資格情報を取得することで、ドメインコントローラーマシン上で高い権限でセッションを確立できます。
python3 -m venv env
source env/bin/activate
pip install -r requirements.txt
python3 ADZero.py dc_ip
Privia Securityチームによって開発されたADZeroツールを使用して、Zerologon脆弱性が存在するドメインコントローラーマシン上で、nt authority\system権限でコマンドプロンプト(Command Prompt)セッションを取得できます。
python3 ADZero.py dc_ipコマンドを実行することで、dc_ip IPアドレスを持つドメインコントローラーマシン上でCommand Promptセッションが取得されます。
ADZeroツールは、対象のドメインコントローラーマシンのdc_name(コンピュータ名)とdom_name(ドメイン名)情報を取得するために、資格情報がnullのSMBログイン要求を送信します。受信した応答から、ドメインコントローラーマシンのdc_name(コンピュータ名)とdom_name(ドメイン名)情報を取得できます。
dc_name(コンピュータ名)、com_name(コンピュータ名の末尾に$記号を付加して作成されるコンピュータアカウント)、およびdc_ip(ドメインコントローラーIPアドレス)の情報を使用して脆弱性がトリガーされます。Netlogon Remoteプロトコルへの要求の結果として脆弱性がトリガーされることにより、com_name(コンピュータアカウント)のパスワードが空に設定されます(NTハッシュ = 31d6cfe0d16ae931b73c59d7e0c089c0)。
Impacketモジュールの1つであるsecretdump.pyモジュールを使用して、com_name(コンピュータアカウント)、dom_name、dc_ip、およびcom_name用に作成された空のパスワード情報を用いて、ドメインコントローラーマシンからAdministratorユーザーのパスワード情報がLM:NTLMハッシュとしてダンプされます。また、ダンプ処理中に取得されたLM:NTLMハッシュは、outという名前のファイルに書き込まれます。
取得されたLM:NTLMハッシュをImpacketモジュールのsmbexec.pyモジュールで使用することで、ドメインコントローラーマシン上でCommand Promptセッションが取得されます。LM:NTLMハッシュ値をパスワードとして使用する手法はPass The Hashと呼ばれます。ドメインコントローラーマシン上でのmeterpreterセッションは、outファイルに書き込まれたLM:NTLMハッシュ値をMetasploit Framework内のexploit/windows/smb/psexecエクスプロイトモジュールで使用することで取得できます。
