Search
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Search
es una máquina Windows de dificultad alta que se centra en las técnicas de enumeración y explotación de Active Directory. Se obtiene un punto de apoyo al encontrar credenciales expuestas en una página web, enumerar usuarios de AD, ejecutar un ataque Kerberoast
para obtener un hash descifrable para una cuenta de servicio y rociar la contraseña contra un subconjunto de las cuentas descubiertas, obteniendo acceso a un recurso compartido SMB
donde se encuentra un archivo XLSX protegido que contiene datos de usuario. Desproteger el archivo conduce a un segundo conjunto de credenciales, que da acceso a otro recurso compartido donde se pueden descargar certificados PKCS#12
.
Después de importar los certificados a un navegador web, se puede utilizar Windows PowerShell Web Access
para obtener un shell interactivo en el sistema. Debido a las ACL
mal configuradas, el usuario puede recuperar la contraseña de una cuenta de servicio administrada por un grupo que puede cambiar la contraseña de un usuario administrativo, lo que resulta en un acceso con privilegios elevados al sistema a través de wmiexec
o psexec
.
Realizaremos un reconocimiento con nmap para ver los puertos que están expuestos en la máquina Search.
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.
Comprobaremos el nombre del dominio que nos enfrentamos, el nombre del equipo y que tipo de máquina nos enfrentamos.
Procederemos a añadir la entrada en nuestro archivo /etc/hosts
A través de la herramienta de whatweb verificaremos las tecnologías y frameworks que se utilizan en la página web. Comprobamos que se trata de un IIS.
Entre las imágenes que aparecen en los sliders, comprobamos una imagen algo inusualnla cual al parecer contiene una contraseña de un usuario nombrado como "Hope Sharp".
Al parecer aparece una contraseña mencionada como: IsolationIsKey?
Guardaremos en un archivo "users.txt" el nombre encontrado Hope Sharp y a través de la herramienta username-anarchy crearemos posibles nombres de usuarios y los guardaremos en el archivo "generated-unames.txt".
Procederemos a validar a través de netexec si alguno de estos usuarios generados la contraseña encontrada es válida. Verificamos que efectivamente, para el usuario "hope.sharp" su contraseña es la encontrada en la imagen de la página web.
Comprobamos que hemos podido enumerar toda la lista de usuarios del dominio, nos guardaremos los usuarios en un archivo "users.txt".
Verificaremos que disponemos de un total de 105 usuarios del dominio, debido que disponemos de una lista potencial de usuarios del dominio nos plantareamos en realizar un AS-REP Roast Attack para intentar obtener un TGT (Ticket Granting Ticket) para obtener el hash de un usuario que disponga del (DONT_REQ_PREAUTH) de Kerberos y posteriormente crackear su hash de manera offline.
Verificamos que no encontramos ningún usuario con esa condición.
Con ldapdomaindump dumpearemos toda la información del LDAP a través del usuario y contraseña que disponemos. Nos generará los resultados en distintos formatos.
Revisando el archivo "domains_groups.html" verificamos que los miembros del grupo "ITSec" forman parte del grupo "Remote Management Users".
El grupo de "ITSec" dispone de varios grupos al parecer dividido por ciudades.
Revisando los miembros de los subgrupos del grupo "ITSec" verificamos usuarios que como son miembros del grupo principal, disponen de permisos de "Remote Management Users".
También verificamos que existen dos usuarios Administradores del dominio, pero el único activo es el de "Tristan.Davies".
Realizaremos una enumeración con BloodHound a través de bloodhound-python.
A medida de que vayamos encontrando usuarios que disponamos de sus credenciales, iremos marcándolos como "Owned" para posteriormente intentar buscar posibles vectores para escalar nuestros privilegios.
Dado que tenemos credenciales de un usuario válido del dominio, procederemos a realizar un Kerberoasting Attack para intentar obtener un TGS (Ticket Granting Service) para posteriormente crackear de manera offline el hash obtenido.
Verificamos que obtenemos un TGS del usuario "web_svc".
Procederemos a crackear el hash del TGS obtenido. Verificamos que hemos logrado crackear el hash y obtener la contraseña en texto plano.
Verificaremos que las credenciales son válidas para el usuario web_svc a través de netexec.
Procederemos a realizar un Password Spray Attack con la contraseña validada anteriormente sobre la lista de usuarios del dominio que disponemos para verificar si la contraseña es reutilizada en algún otro usuario.
Verificamos que efectivamente el usuario (edgar.jacobs) dispone de la misma contraseña.
Nos guardaremos en el archivo "credentials.txt" todas las credenciales de los usuarios válidos que disponemos.
A través de la herramienta de netexec y el módulo de (spider_plus), nos crearemos un esquema en formato JSON de la estructura del SMB para verificar archivos interesantes, directorios, etc.
Verificando el archivo JSON generado con netexec, comprobamos que hay un Excel interesante nombrado "Phishing_Attempt.xlsx" en el escritorio del usuario "edgar.jacobs" el cual disponemos sus credenciales de acceso.
A través de la herramienta de smbmap procederemos a descargarnos el archivo mencionado.
Abriendo el archivo (.xlsx) encontrado en el SMB, verificamos que se trata de un archivo donde se disponen de nombres de usuarios que al parecer han sufrido un ataque de phishing.
También comprobamos que la columna "C" aparece protegida, no la podemos visualizar.
Debido que esto a final de cuentas este archivo es un comprimido, procederemos a descromprimirlo para revisar la estructura de este mismo.
Revisando el archivo "sheet2.xml" verificamos que es el que contiene el campo protegido, ya que contiene un apartado mencionado como "sheetProtection". Procederemos a editar el archivo en cuestión.
Procederemos a eliminar el contenido a partir de la etiqueta "<sheetProtecion>" hasta su cierre de la etiqueta. Guardaremos nuevamente el archivo.
Volveremos al directorio principal donde están todos los archivos, procederemos a volver a comprimir todos los archivos a uno nuevo llamado "Document.xlsx".
Abriremos este nuevo comprimido (Document.xlsx) y verificaremos que hemos podido quitar la protección del Excel y podemos visualizar el contenido, el cual se trata de contraseñas.
Guardaremos estas contraseñas en un archivo llamado "passwords.txt" y los nombres de los usuarios en "phishing_users.txt".
Procederemos a realizar un Password Spray Attack para validar si de la lista de usuarios y contraseñas son válidas o no. En este caso, no realizaremos fuerza bruta, por lo que irá probando de manera paralela el usuario y contraseña.
Verificamos que encontramos unas nuevas credenciales del usuario "Sierra.Frye".
Procederemos a realizar una enumeración a través de SMB sobre la carpeta del usuario, y verificamos que hemos encontrado la flag user.txt.
Revisando los recursos copartidos del nuevo usuario "Sierra.Frye" revisamos que en la carpeta de "Downloads" hay una carpeta llamado Backups" que dispone de 2 archivos PFX que se tratan de certificados de navegador.
Procederemos a descargar estos dos archivos a través de smbmap y a renombrarlos.
Si probamos de importar estos certificados a nuestro navegador, nos pide credenciales.
Debido que estos archivos disponen de credenciales que no disponemos, procederemos a través de pfx2john de guardarnos el hash de las contraseñas de estos archivos.
Procederemos a crackear estos hashes y verificamos que hemos podido lograr crackear el hash y obtener las contraseñas en texto plano.
Importaremos estos certificados en nuestro navegador.
Enumerando nuevamente la página web en busca de directorios, nos encontramos que hay un directorio llamado "staff" que nos devuelve un código 403 Forbidden.
Verificamos que se nos carga la siguiente página en la cual parece una página de acceso que otorga un entorno web de PowerShell sobre un equipo.
Probaremos de conectarnos a través de estas credenciales del usuario "Sierra.Frye" que anteriormente habíamos comprobado que formaba parte del grupo "ITSec" y los miembros de dicho grupo forman parte del grupo "Remote Management Users".
Accederemos al DC que tiene de nombre "RESEARCH" tal y como comprobamos en la enumeración inicial.
Verificamos que ganamos acceso a una PowerShell Web sobre el DC con el usuario "Sierra.Frye".
Revisando maneras de escalar nuestros privilegios, tal y como hemos ido seleccionando a los usuarios que disponíamos de sus credenciales como "Owned" en BloodHound, ingresando a "Shortest Path Domain Admins from Owned Principals" encontramos una vía potencial para convertirnos en Domain Admins.
El usuario que disponemos (sierra.frye@search.htb) forma parte del grupo "birmingham-itsec@search.htb" , los miembros de dicho grupo a la vez forman parte del grupo "itsec@search.htb" que tienen privilegios de ReadGMSAPassword sobre "bir-adfs-gmsa$@search.htb".
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.
Procederemos a recuperar la contraseña del gMSA a través de la herramienta gMSADumper.py con las credenciales del usuario "Sierra.Frye".
Una vez obtengamos el hash NTLM del gMSA, validaremos con netexec de que es válido.
Revisando nuevamente en BloodHound, verificamos que a través del gMSA que disponemos su hash NTLM (BIR-ADFS-GMSA$@search.htb) dispone de privilegios de GenericAll sobre el usuario (tristan.davies@search.htb) que si bien recordamos es un usuario Administrador del dominio.
A través de estos privilegios (GenericAll) podemos forzar a realizar el cambio de contraseña del usuario (tristan.davies@search.htb).
En este caso, utilizaremos la herramienta de pth-net para realizar un PassTheHash con el hash NTLM obtenido del ataque anterior.
Realizaremos el cambio de la contraseña haciendo PassTheHash a través de pth-net y validaremos que se ha modificado correctamente las credenciales del Domain Admin, también verificamos que nos aparece como Pwn3d.
Accederemos a través de wmiexec.py al Domain controller con las credenciales del Domain Admin y comprobaremos la flag de root.txt.
Accederemos a y comprobaremos el resultado en un formato más cómodo para su análisis.
Probando de acceder a verificamos la siguiente página web.
Procederemos a enumerar el dominio a través del protocolo RPC con la herramienta de .
Probando de acceder a través de HTTPS a comprobamos que nos requiere los certificados que hemos importado anteriormente.