
reunir reunir reunir
reúne reúne reúne

Jackdaw está aquí para recopilar toda la información de tu dominio, almacenarla en una base de datos SQL y mostrarte gráficos interesantes sobre cómo los objetos de tu dominio interactúan entre sí y cómo un posible atacante podría explotar estas interacciones. También incluye una práctica función para ayudarte en un proyecto de cracking de contraseñas, almacenando/consultando/informando hashes/contraseñas/usuarios.
dbinitenum. Esto se puede hacer automáticamente en Windows haciendo doble clic en el ejecutable, o escribiendo jackdaw.exe auto.nest para obtener la interfaz web. Por defecto se sirve en http://127.0.0.1:5000/nest. Hay una API documentada con SWAGGER en http://127.0.0.1:5000/ui.Generate graph cache solo una vez para obtener la información de las aristas en un archivo de caché. Puede llevar un tiempo, pero en la línea de comandos verás una barra de progreso.vista de grafo, pero no olvides seleccionar el número de caché correcto en la esquina superior izquierda.Esta sección se actualizará regularmente según los comentarios de los usuarios.
No hay consejos aquí; si bien se pueden hacer algunas mejoras en el código, no hay nada que un genérico pueda hacer.
La generación del archivo de caché de datos del grafo debe realizarse una vez (y solo una vez) en cada grafo, lo que puede llevar un tiempo usando la herramienta sqlalchemy predeterminada.
El rendimiento y la velocidad pueden mejorar significativamente (más de 50 veces más velocidad y 20 veces menos memoria) si usas el backend sqlite Y pones la utilidad de línea de comandos "sqlite3" en algún lugar del PATH. Recomiendo esto a todos los usuarios.
Ahora viene la parte del gran intercambio. La implementación temprana de Jackdaw usaba el módulo networkx como backend del grafo porque está completamente escrito en Python. Pero esto conllevaba un costo significativo de memoria y velocidad. Para mantener Jackdaw puro en Python, esta opción aún existe; sin embargo, usar el backend igraph es ahora el predeterminado.
Nota: igraph es una biblioteca de C++ con enlaces para Python. Tiene wheels precompilados para Windows y las principales distribuciones de Linux, pero si usas Jackdaw en otra cosa (sistemas embebidos/teléfonos móviles/navegadores web) deberás volver a networkx o sufrir con el tiempo de compilación de horas.
No es necesario preinicializar la base de datos, se hará automáticamente.
Usando el binario distribuido, solo tienes que hacer doble clic en jackdaw.exe
Usando como script de Python jackdaw auto
jackdaw --sql sqlite:///<full path here>/test.db dbinit
EN SISTEMAS LINUX <full path aquí> incluye la primera / por lo que tendrás //// cuatro (4) guiones antes del nombre del archivo. No te asustes.
jackdaw --sql sqlite:///test.db enum 'ldap+sspi-ntlm://<domain>\<placeholder>@10.10.10.2' 'smb+sspi-ntlm://<domain>\<placeholder>@10.10.10.2'
La contraseña es Passw0rd!
jackdaw --sql sqlite:///test.db enum 'ldap+ntlm-password://TEST\victim:[email protected]' 'smb+ntlm-password://TEST\victim:[email protected]'
La contraseña es Passw0rd!
jackdaw --sql sqlite:///test.db ldap 'ldap+ntlm-password://TEST\victim:[email protected]'
jackdaw --sql sqlite:///<FULL PATH TO DB> nest
Abre http://127.0.0.1:5000/ui para la API
Consulta la sección Construyendo la 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 del grafo (muestra el grafo, pero está lejos de funcionar)
La fase de enumeración LDAP adquiere datos sobre información de AD, objetos de Usuario, Máquina, OU, Grupo, que se representarán como un nodo en el grafo y como una tabla separada en la base de datos. Además, se analizará el Descriptor de Seguridad de todos los objetos mencionados y se agregarán las ACL para la DACL a la base de datos. Esto, junto con la información de membresía, se representará como aristas en el grafo. Además, se pueden realizar consultas SQL personalizadas sobre cualquiera de los tipos de datos mencionados cuando sea necesario.
La fase de enumeración SMB adquiere datos sobre recursos compartidos, grupos locales, sesiones, datos NTLM mediante la conexión a cada máquina del dominio (que se adquiere a través de LDAP)
El módulo Kerberos realiza kerberoasting y aspreproasting automáticos
El framework permite a los usuarios cargar volcados de memoria de LSASS para almacenar credenciales y extender la tabla de información de sesiones. Ambos se utilizarán como aristas adicionales en el grafo (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/descifradas.
El framework permite a los usuarios cargar archivos DCSYNC de impacket para almacenar credenciales. Esto se usará como aristas adicionales en el grafo (contraseña compartida). El framework también utiliza esta información para crear un informe de contraseñas sobre credenciales débiles/compartidas/descifradas.
El framework permite extender manualmente la base de datos disponible en todos los aspectos. Ejemplo: cuando se descubre información de sesión de usuario en una computadora determinada (fuera de la enumeración automática), existe la posibilidad de cargar manualmente estas sesiones, lo que poblará la base de datos y también el grafo resultante.
El framework puede generar un grafo usando la información disponible en la base de datos y trazarlo a través de la interfaz web (nest). Además, la generación del grafo y los cálculos de rutas se pueden invocar mediante programación, ya sea usando la API web (endpoint /ui) o las funciones del objeto del grafo.
El framework puede identificar configuraciones incorrectas comunes de AD sin generar el grafo. Actualmente solo a través de la API web.
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 funcionalidades crezca en el futuro a medida que se implementen nuevas características.
La detección de anomalías de máquina implica la detección de permisos UAC inseguros, firmas SMB no obligatorias, versiones de SO desactualizadas, máquinas fuera del dominio. Se espera que este conjunto de funcionalidades crezca en el futuro a medida que se implementen nuevas características.
El framework no realiza ningún cracking, solo organiza los hashes y los resultados del cracking
Actualmente el enfoque principal está en los resultados de dcsync de impacket y aiosmb, ¡solo hashes NT y LM!
El proceso de ejemplo es el siguiente:
Nota del autor: Esta función fue implementada tanto para atacantes como para defensores. Personalmente no veo mucho valor añadido en ninguno de los lados, ya que en el punto en que se obtiene el hash NT de un usuario, es tan bueno como la contraseña... Sin embargo, cada vez más empresas realizan ejercicios de fortaleza de contraseñas, y esta función les ayudaría. En cuanto a los atacantes: en este punto es solo para presumir, pero siéntanse libres. Quizás asusten a la gerencia por puntos extra.
¡Este proyecto está en fase experimental! Esto significa varias cosas:
Jackdaw utiliza el módulo ORM SQLAlchemy, que te da la opción de usar cualquier backend de base de datos SQL que desees. Las pruebas se realizan principalmente en SQLite por razones obvias. No se usarán comandos específicos de backend en este proyecto que te limiten.
ESTO SOLO ES NECESARIO SI INSTALAS VIA GIT Y/O CAMBIAS ALGO EN EL CÓDIGO DE LA UI
La UI fue escrita en React. Antes del primer uso/instalación debes construirla. Para esto, necesitarás tener nodejs y npm instalados. Luego:
jackdaw/nest/site/nuinpm installnpm run buildUna vez completado lo anterior, la UI está lista para usar.
"Si he visto más lejos es por estar sobre los hombros de Gigantes."
Equipo de BloodHound
@dirkjanm (https://github.com/dirkjanm/)
Zsolt Imre (https://github.com/keymandll)
consulta la sección de reconocimientos en los módulos aiosmb y msldap