
ZerologonのPoC - すべての研究クレジットはSecuraのTom Tervoortに帰属します
最新の impacket を GitHub から入手し、netlogon 構造体が追加されている必要があります。
デフォルトでは、これによりドメインコントローラアカウントのパスワードが変更されることに注意してください。確かにこれによりDCSyncが可能になりますが、他のドメインコントローラとの通信も切断されるため、注意して使用してください!
詳細情報とオリジナルの研究はこちら
Python 3.6以降でのみ動作します!OSにimpacketがプリインストールされている場合(Kaliなど)、まず既存のインストールをすべて削除してください。その後もインポートエラーが発生する場合は、virtualenv または pipenv から実行してください。
cve-2020-1472-exploit.py をDCのIPアドレスとNetBIOS名を指定して実行-just-dc と -no-pass または空のハッシュと DCHOSTNAME$ アカウントを使用2020年9月15日以降に更新されたGitHub版のimpacketをインストールした場合、secretsdumpはローカルレジストリのシークレットをダンプする際に、平文のマシンパスワード(16進数エンコード)を自動的にダンプします。これはDCSyncとは異なります。DCSyncはマシンアカウントを使用しますが、レジストリのダンプには、ドメイン管理者(ビルトインのAdministratorアカウントなど)としてsecretsdumpをドメインコントローラに対して実行する必要があります。
あるいは、やや古いバージョンのsecretsdumpでは、まずレジストリハイブを抽出し、その後secretsdumpをオフラインで実行することで同じパスワードをダンプできます(その場合、Kerberosハッシュを計算できないため、常に平文のキーが出力されます)。
この平文パスワードを使用して、restorepassword.py を -hexpass パラメータで実行できます。これにより、まず空のパスワードで同じDCに対して認証し、その後パスワードを元のものに戻します。ターゲットとしてNetBIOS名とIPを再度指定する必要があります。例:
python restorepassword.py testsegment/s2016dc@s2016dc -target-ip 192.168.222.113 -hexpass e6ad4c4f64e71cf8c8020aa44bbd70ee711b8dce2adecd7e0d7fd1d76d70a848c987450c5be97b230bd144f3c3...etc