Enumeración
Identificación de hosts
Fping
Parámetros utilizados:
a
para mostrar los objetivos que están activoss
imprimir estadísticas al final de la exploracióng
para generar una lista de destinos a partir de la red CIDRq
para no mostrar resultados por objetivo
Con el escaneo realizado anteriormente con fping
podemos armar una lista de hosts activos.
Nmap
También, podemos realizar el descubrimiento de host - a través de un Ping Scan con nmap
.
-sn
Esta opción le dice a Nmap que no haga un escaneo de puertos después del descubrimiento de hosts y que sólo imprima los hosts disponibles que respondieron a la traza icmp.
Ahora que tenemos una lista de hosts activos dentro de nuestra red, podemos enumerarlos más detalladamente. Queremos determinar qué servicios está ejecutando cada host, identificar hosts críticos como controladores de dominio y servidores web, e identificar hosts potencialmente vulnerables para sondearlos más tarde. Con nuestro enfoque en AD, después de hacer un barrido amplio, sería prudente centrarnos en los protocolos estándar que suelen acompañar a los servicios AD, como DNS, SMB, LDAP y Kerberos, por nombrar algunos. A continuación se muestra un ejemplo rápido de un simple escaneo Nmap.
Identificación de Usuarios
Si no tenemos un usuario con el que empezar las pruebas (que suele ser el caso), tendremos que encontrar una manera de establecer un punto de apoyo en el dominio, ya sea obteniendo credenciales en texto claro o un hash de contraseña NTLM para un usuario, un shell SYSTEM en un host unido al dominio, o un shell en el contexto de una cuenta de usuario de dominio. Obtener un usuario válido con credenciales es crítico en las primeras etapas de una prueba de penetración interna. Este acceso (incluso al nivel más bajo) abre muchas oportunidades para realizar enumeraciones e incluso ataques.
Kerbrute
Kerbrute puede ser una opción más sigilosa para la enumeración de cuentas de dominio. Se aprovecha del hecho de que los fallos de pre-autenticación Kerberos a menudo no activan registros o alertas. Utilizaremos Kerbrute junto con las listas de usuarios como pueden ser jsmith.txt o jsmith2.txt de Insidetrust. Este repositorio contiene muchas listas de usuarios diferentes que pueden ser extremadamente útiles cuando se intenta enumerar usuarios cuando se comienza desde una perspectiva no autenticada. Podemos apuntar Kerbrute al DC y alimentarlo con una lista de palabras. La herramienta es rápida, y se nos proporcionarán resultados que nos permitirán saber si las cuentas encontradas son válidas o no, lo cual es un gran punto de partida para lanzar ataques como el de Password Spraying.
Por medio de una lista de usuarios, como puede ser las mencionadas anteriormente podemos ver usuarios válidos a nivel de dominio gracias a los fallos de pre-autenticación Kerberos
Puede haber veces que un usuario tenga de contraseña su mismo nombre de usuario:
SMB
Con credenciales validas del dominio podemos realizar distintas enumeraciones.
Netexec
Enumerar equipos del dominio para comprobar si tiene el SMB firmado.
Validar las credenciales.
Comprobar en que equipos las credenciales son validas para poder conectarnos.
Enumerar recursos compartidos.
Enumerar usuarios.
Enumerar grupos.
Módulo spider_plus
Listar usuarios conectados.
Si tenemos credenciales de un usuario que pertenece a al grupo Administradores podemos volcar (dumpear) el LSA o el NTDS.
En este caso, LSA nos podría proporcionar la contraseña del Administrador en texto claro.
El NTDS nos proporcionará todos los hashes del dominio.
Enumerar politicas de contraseña.
Podemos hacer esto mismo usando rpcclient
.
Password Spraying
Otro aspecto destacable es el ataque conocido como Password Spraying. Para contextualizar, imaginemos que disponemos de unas credenciales como pparker.MyPassword$123
. Una táctica común en este escenario es conectarse al Protocolo de Llamada a Procedimientos Remotos (RPC) - para extraer una lista de todos los usuarios del dominio. Esta lista se guarda en un archivo, por ejemplo users.txt
, y luego se proporciona como entrada a herramientas como el propio netexec
, junto con la contraseña antes mencionada. Este proceso permite intentar el acceso a múltiples cuentas del dominio, aprovechando la débil seguridad de la contraseña utilizada.
Por otra parte, si contamos con una lista de contraseñas también podemos utilizarlas.
El argumento --no-bruteforce
se emplea para evitar la prueba de todas las contraseñas disponibles para cada usuario, en su lugar, se prueba el usuario de la línea 1 con la contraseña de la línea 1, el usuario de la línea 2 con la contraseña de la línea 2, y así sucesivamente.
Si hemos logrado comprometer el entorno y buscamos una interfaz gráfica, la mejor opción es acceder a través de RDP (Protocolo de Escritorio Remoto). Sin embargo, antes de hacerlo, necesitaremos habilitar esta función.
Luego, ya podemos utilizar xfreerdp
y conectarnos.
Una alternativa a moverse a través de smbclient
es montar el recurso compartido.
SMBMap
Comprobar el acceso
Listar de forma recursiva un directorio compartido.
Descargamos un archivo del recurso compartido.
SMB desde Windows
Recursos compartidos comunes en Windows:
C$
corresponde a C:/ADMIN$
se asigna a C:/WindowsIPC$
se utiliza para RPCPrint$
aloja controladores para impresoras compartidasSYSVOL
sólo en DCsNETLOGON
sólo en los DC
Listar recursos compartidos
Montar el recurso compartido
Desmontar el recurso compartido
/all
nos permite ver los recursos compartidos administrativos (que terminan en '$'). Puede usarse IP o nombre de host para especificar el host.
Con el comando net
, podemos especificar el recurso compartido de red queremos utilizar.
Listar el recurso compartido SYSVOL
.
Smbclient
impacket-smbclient
RPCClient
Rpcclient es una utilidad que forma parte del conjunto de herramientas Samba. Se utiliza para interactuar con el protocolo Remote Procedure Call (RPC) de Microsoft, que se utiliza para la comunicación entre los sistemas basados en Windows y otros dispositivos. Rpcclient se utiliza principalmente para fines de depuración y pruebas, y se puede utilizar para consultar y manipular sistemas remotos. El protocolo SMB se utiliza principalmente para compartir archivos, impresoras y otros recursos en una red, pero también puede aprovechar RPC para ciertas funcionalidades y operaciones específicas.
Por ejemplo, cuando accedes a recursos compartidos en una red Windows, como carpetas compartidas o impresoras, estás utilizando el protocolo SMB. Sin embargo, para algunas operaciones administrativas y de gestión, como enumerar usuarios y grupos, modificar permisos de archivos o impresoras, o acceder a la configuración del sistema remoto, SMB puede utilizar RPC para realizar estas tareas.
Cuando utilizas herramientas como rpcclient
para interactuar con un sistema remoto que ejecuta servicios SMB, estás esencialmente aprovechando el protocolo RPC subyacente que forma parte de la implementación de SMB en ese sistema. De esta manera, rpcclient
puede actuar como una interfaz para realizar consultas y ejecutar comandos a través del protocolo RPC en el contexto de un servidor SMB.
Enumerar utilizando credenciales validas.
Podemos obtener las descripciones, ya que algunas puden contener información sensible como contraseñas.
Si la null session
está habilitada en el RDP del dominio podemos aprovecharnos de la misma para enumerar.
Obtener información sobre el sistema remoto, como el nombre del servidor, la versión del sistema operativo, el dominio de trabajo, la fecha y la hora del sistema, entre otros detalles.
Enumera los usuarios del dominio
Enumera los grupos del dominio
Obtiene el SID del usuario en base a su nombre
Se utiliza para enumerar los SID (Security Identifiers) asignados a los grupos en un servidor remoto. Es útil para obtener información sobre los grupos de seguridad disponibles en un sistema y sus respectivos SID.
Enumerar impresoras
BloodHound
Opción 1
La primera forma de enumerar con Bloodhound, es hacerlo desde la máquina atacante utilizando bloodhound.py
.
Opción 2
La segunda manera, consta de los siguientes pasos.
Descargar
SharpHound.ps1
:
Subirlo a la máquina víctima ya sea con un servidor de
SMB
oupload
deevil-winrm
.Importar el módulo:
Invocar a
BloodHound
Ahora queda descargar el zip
y meterlo en BloodHound
.
Opción 3
Otra alternativa es utilizar SharpHound.exe.
Por ultimo, descargarmos el archivo zip
nuevamente y los subimos en BloodHound
.
ldapsearch
Para enumerar a través del protoclo LDAP, podemos usar la herramienta ldapsearch
:
-H ldap://172.16.0.1
: Especifica el URI del servidor LDAP al que se va a conectar. En este caso,ldap://172.16.0.1
.-x
: Indica que se utilizará el método de autenticación simple. Esto es comúnmente utilizado para realizar pruebas, pero no es seguro para ambientes de producción.-s base
: Especifica el alcance de la búsqueda. En este caso,base
significa que la búsqueda se realiza en el objeto base especificado.namingContexts
: Especifica el atributo que se desea buscar. En este caso,namingContexts
es el atributo que contiene los contextos de nombres del servidor LDAP.
Podemos seguir enumerando:
Si tenemos credenciales, para ldapsearch
:
Hay que tener en cuenta mirar cada usuario y descripción ya que pueden contener contraseñas.
ldapdomaindump
En caso de tener credenciales válidas podemos hacer uso de ldapdomaindump
:
Esto generará unos archivos json
, grep
, html
que con un servidor web podemos ver en el navegador.
Última actualización