Monteverde es una máquina Windows Media que cuenta con Azure AD Connect. Se enumera el dominio y se crea una lista de usuarios. A través de password spraying, se encuentra la cuenta de servicio SABatchJobs que tiene el nombre de usuario como contraseña. Usando esta cuenta de servicio, es posible enumerar los recursos compartidos SMB en el sistema, y se encuentra que el recurso compartido $users es legible por todo el mundo y en el cual encontraremos un archivo XML utilizado para una cuenta Azure AD se encuentra dentro de una carpeta de usuario y contiene una contraseña. Debido a la reutilización de la contraseña, podemos conectarnos al controlador de dominio como mhope utilizando WinRM. La enumeración muestra que Azure AD Connect está instalado. Es posible extraer las credenciales de la cuenta que replica los cambios de directorio a Azure (en este caso el administrador de dominio por defecto).
Enumeración
Iniciamos enumerando los puertos que se encuentra abiertos en la maquina victima, esto con la herramienta de nmap
❯ nmap -p- --open --min-rate 5000 -vvv -Pn -n 10.10.10.172 -oG allportsScan
PORT STATE SERVICE REASON
53/tcp open domain syn-ack
88/tcp open kerberos-sec syn-ack
135/tcp open msrpc syn-ack
139/tcp open netbios-ssn syn-ack
389/tcp open ldap syn-ack
445/tcp open microsoft-ds syn-ack
464/tcp open kpasswd5 syn-ack
593/tcp open http-rpc-epmap syn-ack
636/tcp open ldapssl syn-ack
3268/tcp open globalcatLDAP syn-ack
3269/tcp open globalcatLDAPssl syn-ack
5985/tcp open wsman syn-ack
9389/tcp open adws syn-ack
49667/tcp open unknown syn-ack
49673/tcp open unknown syn-ack
49674/tcp open unknown syn-ack
49675/tcp open unknown syn-ack
49740/tcp open unknown syn-ack
49899/tcp open unknown syn-ack
-p-: especifica que se escaneen todos los puertos (desde el puerto 1 hasta el puerto 65535).
--open: muestra solo los puertos que están abiertos.
--min-rate 5000: establece la tasa mínima de paquetes por segundo en 5000. Esto puede acelerar el escaneo, enviando más paquetes por segundo, aunque también puede aumentar la posibilidad de ser detectado por sistemas de prevención de intrusiones (IPS).
-vvv: establece un nivel de verbosidad muy alto, mostrando una salida muy detallada del escaneo.
-Pn: ignora el descubrimiento de hosts y asume que el objetivo está activo.
-n: evita la resolución DNS inversa para las direcciones IP.
10.10.10.172: es la dirección IP del host que se va a escanear.
-oG allportsScan: genera un archivo de salida en formato "greppable" llamado "allportsScan".
Luego de obtener los puertos abiertos lo que haremos será enumerar los servicios y las versiones de estas en cada uno de los puertos.
❯ nmap -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,49667,49673,49674,49675,49740,49899 -sC -sV -vvv -Pn -n 10.10.10.172 -oN servicesScan
PORT STATE SERVICE REASON VERSION
53/tcp open domain syn-ack Simple DNS Plus
88/tcp open kerberos-sec syn-ack Microsoft Windows Kerberos (server time: 2024-03-29 05:57:49Z)
135/tcp open msrpc syn-ack Microsoft Windows RPC
139/tcp open netbios-ssn syn-ack Microsoft Windows netbios-ssn
389/tcp open ldap syn-ack Microsoft Windows Active Directory LDAP (Domain: MEGABANK.LOCAL0., Site: Default-First-Site-Name)
445/tcp open microsoft-ds? syn-ack
464/tcp open kpasswd5? syn-ack
593/tcp open ncacn_http syn-ack Microsoft Windows RPC over HTTP 1.0
636/tcp open tcpwrapped syn-ack
3268/tcp open ldap syn-ack Microsoft Windows Active Directory LDAP (Domain: MEGABANK.LOCAL0., Site: Default-First-Site-Name)
3269/tcp open tcpwrapped syn-ack
5985/tcp open http syn-ack Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf syn-ack .NET Message Framing
49667/tcp open msrpc syn-ack Microsoft Windows RPC
49673/tcp open ncacn_http syn-ack Microsoft Windows RPC over HTTP 1.0
49674/tcp open msrpc syn-ack Microsoft Windows RPC
49675/tcp open msrpc syn-ack Microsoft Windows RPC
49740/tcp open msrpc syn-ack Microsoft Windows RPC
49899/tcp open msrpc syn-ack Microsoft Windows RPC
Service Info: Host: MONTEVERDE; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| p2p-conficker:
| Checking for Conficker.C or higher...
| Check 1 (port 2859/tcp): CLEAN (Timeout)
| Check 2 (port 32303/tcp): CLEAN (Timeout)
| Check 3 (port 47166/udp): CLEAN (Timeout)
| Check 4 (port 42344/udp): CLEAN (Timeout)
|_ 0/4 checks are positive: Host is CLEAN or ports are blocked
|_clock-skew: -4s
| smb2-time:
| date: 2024-03-29T05:58:43
|_ start_date: N/A
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
-p: especifica los puertos a escanear. En este caso, se están escaneando los puertos 53, 88, 135, 139, 389, 445, 464, 593, 636, 3268, 3269, 5985, 9389, 49667, 49673, 49674, 49675, 49740 y 49899.
-sC: activa la opción de enumeración de scripts predeterminados de Nmap. Esto permite ejecutar una serie de scripts diseñados para detectar vulnerabilidades o características específicas de los servicios.
-sV: realiza una detección de la versión de los servicios que se encuentran en los puertos especificados.
-vvv: establece un nivel de verbosidad muy alto, mostrando una salida muy detallada del escaneo.
-Pn: ignora el descubrimiento de hosts y asume que el objetivo está activo.
-n: evita la resolución DNS inversa para las direcciones IP.
10.10.10.172: es la dirección IP del host que se va a escanear.
-oN servicesScan: genera un archivo de salida en formato normal con el nombre "servicesScan".
Enumeración de usuarios
Enumerando por el servicio ldap encontraremos algunos usuarios:
Luego de tener las credenciales validas podremos acceder por el servicio winrm con la herramienta evil-winrm
Vemos que tenemos un directorio .Azure. Luego de investigar un poco vemos que azure puede almacenar credenciales. Puedes revisar el siguiente post para tener mas información:
Luego subiremos los binarios que necesitaremos para obtener las credenciales que están almacenadas