Jackdaw Recopilación Información para Dominio
Jackdaw Recopilación Información para Dominio

Jackdaw: Recopilación de Información para un Dominio

Jackdaw está aquí para recoger toda la información de un dominio, almacenarla en una base de datos SQL y mostrarte bonitos gráficos sobre cómo los objetos del dominio interactúan entre sí y cómo un atacante potencial puede explotar estas interacciones. También viene con una característica útil para ayudarte en un proyecto de descifrado de contraseñas, almacenando/mirando/informando sobre hashes/passwords/usuarios.

Comandos de Ejemplo

Enumeración automática – sólo en windows, con el usuario unido al dominio –

No es necesario preiniciar la base de datos, se hará automáticamente. Usando el binario distribuido puedes hacer doble clic en jackdaw.exe

Usando como un script Python:

jackdaw auto

DB init

jackdaw --sql sqlite:////test.db dbinit

Enumeración

Enumeración completa con sspi integrado – sólo windows

jackdaw --sql sqlite:///test.db enum 'ldap+sspi://10.10.10.2' 'smb+sspi-ntlm://10.10.10.2'

Enumeración completa con nombre de usuario y contraseña – independiente de la plataforma

La contraseña es Passw0rd!

jackdaw --sql sqlite:///test.db enum 'ldap://TEST\victim:Passw0rd!@10.10.10.2' 'smb+ntlm-password://TEST\victim:Passw0rd!@10.10.10.2'

Enumeración sólo LDAP con nombre de usuario y contraseña – independiente de la plataforma

La contraseña es Passw0rd!

jackdaw --sql sqlite:///test.db ldap 'ldap://TEST\victim:Passw0rd!@10.10.10.2'

Iniciar la interfaz web interactiva para trazar el gráfico y acceder a características adicionales

jackdaw --sql sqlite:/// nest

Abrir http://127.0.0.1:5000/ui para la API

Por favor, mira la sección Building the UI más abajo para aprender cómo construir la UI. Una vez construida:

Abre http://127.0.0.1:5000/nest para la interfaz gráfica (muestra el gráfico, pero está lejos de funcionar)

Características

Adquisición de datos

vía LDAP

La fase de enumeración de LDAP adquiere datos sobre información de AD, Usuario, Máquina, OU, Objetos de grupo que serán representados como un nodo en el gráfico, y como una tabla separada en la BD. Adicionalmente, el Descriptor de Seguridad de todos los objetos mencionados será analizado y las ACLs para el DACL serán agregadas a la BD. Esto, junto con la información de la membresía se representará como bordes en el garfio. Además, se pueden realizar consultas SQL personalizadas en cualquiera de los tipos de datos mencionados cuando sea necesario.

vía SMB

La fase de enumeración SMB adquiere datos sobre grupos locales, sesiones, datos NTLM mediante la conexión a cada máquina del dominio (que se adquiere mediante LDAP)

vía LSASS dumps (opcional)

El framework permite a los usuarios cargar los volcados de memoria LSASS para almacenar credenciales y ampliar la tabla de información de la sesión. Ambos serán utilizados como bordes adicionales en el gráfico (contraseña compartida y sesión respectivamente). El framework también utiliza esta información para crear un informe de contraseñas sobre credenciales débiles/compartidas/rotas.

vía DCSYNC results (opcional)

El framework permite a los usuarios subir los archivos DCSYNC de impacket para almacenar las credenciales. Esto se utilizará como bordes adicionales en el gráfico (contraseña compartida). El framework también utiliza esta información para crear un informe de contraseñas sobre credenciales débiles/compartidas/rotas.

vía manual upload (opcional)

El framework permite extender manualmente la base de datos disponible en todos los aspectos. Ejemplo: cuando se descubre la información de la sesión de usuario en un ordenador determinado (fuera de la enumeración automática) existe la posibilidad de cargar manualmente estas sesiones, que llenarán la BD y también el gráfico de resultados

Gráfico

El framework puede generar un gráfico utilizando la información disponible en la base de datos y trazarlo a través de la interfaz de usuario de la web (nest). Además, la generación del gráfico y las canculaciones de ruta pueden ser invocadas programáticamente, ya sea utilizando la API web (/ui endpoint) o las funciones del objeto grph.

Detección de anomalías

El framework puede identificar las malas configuraciones comunes de la AD sin necesidad de generar gráficos. Actualmente sólo a través de la API web.

Usuario

La detección de anomalías de usuario implica la detección de permisos UAC inseguros y valores extensos de descripción de usuario. Se espera que este conjunto de características crezca en el futuro a medida que se implementen nuevas características.

Máquina

La detección de anomalías en las máquinas implica la detección de permisos UAC inseguros, singing SMB no obligatorio, versión anticuada del sistema operativo, máquinas fuera del dominio. Se espera que este conjunto de características crezca en el futuro a medida que se implementen nuevas características.

Cracking de Contraseña

El framework no realiza ningún cracking, solo organiza los hashes y los resultados del craqueo actualmente se centran principalmente en los resultados de dcsync de impacket y aiosmb. ¡Solo hashes de NT y LM!

La muestra del proceso es la siguiente:

  1. Recolección de credenciales como archivo de texto a través de impacket/aiosmb o como volcado de memoria del proceso LSASS a través de cualquier herramienta que se considere adecuada.
  2. Subir las credenciales cosechadas (Credential Harvesting) a través de la API
  3. Encuesta de hashes no crackeados través de la API
  4. Crackéalos (hashcat?)
  5. Subir los resultados al framework a través de la API
  6. Generar un informe sobre los usuarios crackeados/no crackeados y la fuerza de la contraseña y el intercambio de contraseñas

Esta característica fue implementada tanto para los atacantes como para los defensores. Personalmente no veo mucho valor añadido en ninguno de los dos lados, ya que en el momento en que uno obtiene el hash NT de un usuario es tan bueno como la contraseña… Sin embargo, cada vez más empresas están realizando ejercicios de fortalecimiento de contraseñas, y esta característica les ayudaría. En cuanto a los atacantes: en este momento sólo se está mostrando, pero adelante. Tal vez asuste a la administración para obtener puntos extras.

Parte Técnica

La base de datos

Jackdaw usa el módulo SQLAlchemy ORM, lo que te da la opción de usar cualquier backend SQL DB que desees. Las pruebas se hacen principalmente en SQLite por razones obvias. No se usarán comandos específicos del backend en este proyecto que te limiten.

Construyendo la interfaz de usuario

ESTO SÓLO ES NECESARIO SI INSTALAS VÍA GIT Y/O CAMBIAS ALGO EN EL CÓDIGO UI
La UI fue escrita en React. Antes del primer uso/instalación tienes que construirla. Para ello, necesitarás nodejs y npm instalados. Luego:

  1. Ir a jackdaw/nest/site/nui
  2. Ejecutar npm install
  3. Ejecutar npm run build

Una vez hecho lo anterior, la UI está lista para empezar.

Error: API rate limit exceeded for 216.246.112.50. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda