
CVE-2020-1472 の ZeroLogon エクスプロイトの脆弱性をテストするためのラボ環境です。 このリポジトリには、Impacket ライブラリを使用して脆弱性をテストする Python スクリプトと、ドメインコントローラ(DC)として構成された Windows Server 2019 を搭載した仮想マシン(VM)が含まれています。
このスクリプトは、Netlogon 認証バイパスを試みます。 バイパスに成功すると即座に終了し、Netlogon 操作は一切実行しません。 DC がパッチ適用済みの場合、検出スクリプトは複数ペアの RPC 呼び出しを送信した後に断念し、ターゲットは脆弱ではないと結論付けます(偽陰性の確率は 0.04%)。
オプション
vagrant up と入力するだけで、Vagrant が Windows Server 2019 の脆弱なビルドを VM として読み込みます。
次に、このチュートリアル に従って VM をドメインコントローラとして構成します。
最後に、DC に対して攻撃を実行します(zerologon_tester.py)。
この攻撃は、Docker 版または virtual environment で使用することをお勧めします。
Docker オプション。 実行:
# NOTE: On Windows, you may need to enable the `Hyper-V` Wiwndows feature.
# NOTE2: On Windows, you may need to switch to `Linux Containers`.
$ docker build -f Dockerfile . -t zerologon
# This command run the zerologon test on the DC with domain VAGRANT in the address 192.168.33.10
$ docker run zerologon VAGRANT 192.168.33.10
VirtualEnv オプション。 実行:
$ python3 -m virtualenv zerologon
$ zerologon/Scripts/Activate.ps1
# NOTE: This may give you some issues with your firewall!!
$ pip install git+https://github.com/SecureAuthCorp/impacket
$ pip install -r requirements.txt
$ python zerologon_tester.py VAGRANT 192.168.33.10
この攻撃の出力は次のようになります:

このスクリプトは攻撃の実現可能性をテストするためのものであり、それ以外の方法でサーバーを悪用するものではありません。 このスクリプトは DC に一切の変更を加えません。 PoC 攻撃の実装方法に興味がある場合は、この 解説記事または類似のものを確認してください。
スクリプトのターゲットは、DC またはバックアップ DC を対象にすることができます。読み取り専用 DC に対してもおそらく機能しますが、これはテストされていません。DC 名はその NetBIOS コンピュータ名である必要があります。この名前が正しくない場合、スクリプトはおそらく STATUS_INVALID_COMPUTER_NAME エラーで失敗します。この脆弱性に関するホワイトペーパーはここで公開される予定です。
注記: 問題が発生し
STATUS_INVALID_COMPUTER_NAMEエラーを受け取った場合は、nbtstat -A 192.168.33.10を実行してください。これにより、そのアドレスで何が起きているかがわかります。それ以外にも、ホストからマシンに到達可能かどうかを ping でテストすることもできます(ping 192.168.33.10)。注記2: 攻撃が失敗する場合、マシンにセキュリティパッチが適用されている可能性があります。更新プログラムを確認し、2020年以降の
Security Patchesのように見えるものをすべて削除してください。