Support
Last updated
Last updated
En esta maquina podremos fortalecer nuestro conocimiento sobre la explotación de directorio activo y herramientas para la enumeración de ldap
y para la enumeración de escalada de privilegios bloodhound-python
, bloodhound
, ./SharpHound.exe
y impacket-psexec
.
Empezaremos enumerando los puertos abiertos de la maquina victima
Entendamos un poco mas cada parámetro que lanzamos en la herramienta nmap:
-p-
: Escanea todos los puertos (del 1 al 65535).
--open
: Muestra solo los puertos que están abiertos.
--min-rate 5000
: Establece la tasa mínima de paquetes enviados por segundo a 5000, lo que puede acelerar el escaneo al enviar más paquetes por segundo.
-vvv
: Activa la salida detallada muy verbosa para proporcionar una cantidad significativa de información sobre el progreso del escaneo.
-Pn
: Ignora el descubrimiento de hosts y asume que los hosts objetivo están activos.
-n
: Desactiva la resolución de DNS inversa, lo que hace que Nmap no intente resolver las direcciones IP a nombres de host.
10.10.11.174
: Especifica la dirección IP del objetivo del escaneo.
-oG allportsScan
: Guarda la salida del escaneo en formato Greppable en un archivo llamado allportsScan
.
Luego de enumerar los puertos abiertos con la herramienta de nmap
procederemos a realizar un escaneo de los servicios y las versiones que se ejecutan en los puertos abiertos.
-p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49664,49667,49676,49679,49754
: Especifica una lista de puertos a escanear. Estos puertos son comunes para servicios como DNS (53), Kerberos (88), LDAP (389), SMB (139, 445), LDAP SSL (636), RDP (3389), entre otros.
-sC
: Activa la opción de escaneo de scripts de Nmap. Estos scripts son comandos escritos en el lenguaje de scripting de Nmap (Nmap Scripting Engine) que se utilizan para detectar vulnerabilidades, realizar pruebas de seguridad, o recopilar información adicional sobre los servicios encontrados.
-sV
: Habilita la detección de versión de servicios, lo que permite a Nmap intentar determinar la versión de los servicios que se ejecutan en los puertos especificados.
-Pn
: Ignora la detección de hosts y asume que el objetivo está activo.
-n
: Desactiva la resolución de DNS inversa para las direcciones IP, lo que significa que Nmap no intentará resolver las direcciones IP a nombres de host.
10.10.11.174
: Especifica la dirección IP del objetivo del escaneo.
-vvv
: Activa la salida muy verbosa, proporcionando una gran cantidad de información detallada sobre el progreso del escaneo.
-oN servicesScan
: Guarda la salida del escaneo en formato normal en un archivo llamado servicesScan
.
Se encontró un dominio que es support.htb
lo cual debemos de tener en cuenta ya que nos enfrentamos a una maquina de directorio activo.
Seguiremos enumerando con la herramienta de smbmap
con un usuario guest
-H 10.10.11.174
: Especifica la dirección IP del objetivo al que se realizará el escaneo de SMB.
-u 'guest'
: Especifica el nombre de usuario que se utilizará para autenticarse en el servidor SMB. En este caso, se está utilizando el usuario 'guest', que es comúnmente utilizado para intentar acceder a recursos compartidos sin autenticación o con credenciales mínimas.
Encontramos un directorio al cual tenemos permisos de lectura que es support-tools
Enumerando dicho directorio nos encontraremos con binarios los cuales nos descargaremos para poder analizarlos en nuestra maquina local. El binario que enumeraremos es UserInfo.exe
Para hacer un reversing del binario usaremos dnspy
Una función en la que hace una consulta haciendo uso ldap
Un archivo en la que al parecer desencripta la contraseña almacenanda
El código que nos interesa estarán en los archivos getPassword
, enc_password
y key
A continuación se muestran las funciones que se mencionarón:
Para desencriptar la contraseña podemos hacer uso del siguiente script en Python o podemos hacerlo con la misma herramienta de dnSpy
Luego de desencriptar obtendremos la contraseña:
Teniendo una usuario y una contraseña podremos enumerar el ldap
y haciendo uso de ldapdomaindump
podremos enumerar los distintos usuarios y grupos del sistema. Primero debemos de ejecutar la herramienta de la siguiente manera:
Si las credenciales son validas, nos generara archivos como los que se ven en la siguiente imagen:
Haciendo uso de Python para iniciar un servidor u otro de tu preferencia, todo esto lo veremos desde el navegador para una mejor visión.
En este caso tenemos las maquinas que están dentro del dominio
Aquí podemos ver a todos los usuarios del dominio
Lista de usuarios los cuales se pueden conectar remotamente al dominio
Ejecutando lo anterior podremos visualizar lo siguiente:
En el apartado de Info
podremos encontrar algo que parece ser una contraseña que pertenece al usuario support
Luego podremos obtener una lista de usuario con el cual podemos probar a realizar fuerza bruta u otro ataque, pero en mi caso no tuve éxito
Si recordamos la enumeración de ldapdomaindump
tenemos que el usuario support
tiene acceso para conectarse remotamente, con este usuario nos conectaremos con la herramienta de evil-winrm
.
Efectivamente este usuario tiene permisos para conectarse. Ahora seguiremos enumerando el sistema con bloodhound
y para esto tenemos dos maneras de obtener información del dc, uno es haciendo uso de bloodhound-python
y otro es con SharpHound.exe
el cual se debe de subir a la maquina victima y se debe ejecutar en este.
Para este caso solo necesitamos las credenciales y ejecutarlo como se muestra:
Luego deberiamos de obtener un ouput como la siguiente imagen:
Luego de la ejecución obtendremos unos archivos:
Estos archivos debemos de cargarlos con el mismo bloodhound
desde su interfaz grafica, pero antes debemos de configurar neo4j
e iniciarlo.
En este caso debemos de subir SharpHound.exe
a la maquina victima, esto lo haremos con el comando upload
y luego ejecutaremos ./SharpHound.exe -c all
Esto nos generara un archivo .zip
el cual debemos descargarnos a nuestra maquina local
Luego de descargar el .zip
descomprimiremos y luego cargar al bloodhound
Cargando los archivos que obtuvimos con bloodhound-python
o SharpHound.exe
podremos observar que el usuario support
pertenece al grupo shared support accounts
El grupo shared support accounts
tiene privilegios de GenericAll
y si revisamos en la ayuda de bloodhound
Revisando encontramos que podemos realizar un based contrained delegation attack
Para ello investigando encontraremos lo siguiente:
Los siguientes recursos te ayudaran a entender sobre la explotación :
Para poder explotar la maquina con Resource-Based Constrained Delegation attack
usaremos PowerView
y Powermad
Creando un nuevo objeto de computadora
Comprobar si se creo la computadora correctamente y anotar su SID:
Cree un nuevo descriptor de seguridad sin formato para la FAKE01
entidad principal de la computadora:
Modificación del objeto AD de la computadora de destino
Aplicar los bytes del descriptor de seguridad a la DC
máquina de destino:
Podemos probar si el descriptor de seguridad asignado a la computadora dc
en el msds-allowedtoactonbehalfofotheridentity
atributo se refiere a la fake01$
máquina:
Ejecutaremos impacket-getST
con el nombre de la maquina que creamos anteriormente y el usuario que queremos impersonte
Luego debemos configurar la variable de entorno KRB5CCNAME
Para ejecutar impacket-psexec
y asi podremos ingresar a la maquina victima sin proporcionar contraseña y siendo el usuario admistrator
El programa es ta disponible para windows, en este caso lo ejecutaremos bajo un windows10 y cargaremos el binario UserInfo.exe
. Una vez cargado el archivo encontraremos lo siguiente:
Seguiermos enumerando el servicio de ldap
con las credenciales que encontramos, para ello podemos ayudarnos de con el cual podemos enumerar ciertos usuarios e información sensible
Luego de ejecutar todo lo necesario haremos uso de impacket-getST
o