Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
jackdaw — reunir reunir reunir | Kitploit
Herramientas/GitHubGitHub/skelsec/jackdaw
Descifrado de ContraseñasRecopilación de InformaciónPruebas de PenetraciónDetección de Anomalías
GitHubskelsec/jackdaw

jackdaw

reunir reunir reunir

Ver Repositorio
58586hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

jackdaw

reúne reúne reúne jackdaw_card

¿Qué es esto?

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.

Información de uso rápido

  • Si no usas la recolección automática (por ejemplo, no en Windows), necesitarás crear una base de datos vacía inicial mediante dbinit
  • Primero debes realizar enum. Esto se puede hacer automáticamente en Windows haciendo doble clic en el ejecutable, o escribiendo jackdaw.exe auto.
  • Segundo, necesitarás ejecutar 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.
  • En la interfaz web, deberás ir a la vista de dominio y hacer clic en 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.
  • Una vez que la caché del grafo esté lista, puedes jugar con el grafo en la vista de grafo, pero no olvides seleccionar el número de caché correcto en la esquina superior izquierda.

Trucos/consejos de rendimiento

Esta sección se actualizará regularmente según los comentarios de los usuarios.

Recolección de datos

No hay consejos aquí; si bien se pueden hacer algunas mejoras en el código, no hay nada que un genérico pueda hacer.

Generación del archivo de caché de datos del grafo

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.

Cálculo de rutas y carga de datos del grafo

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.

Ejemplos de comandos

Enumeración automática - solo Windows, con usuario unido al dominio -

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

Inicialización de la base de datos

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.

Enumeración

Enumeración completa con sspi integrado - solo Windows

jackdaw --sql sqlite:///test.db enum 'ldap+sspi-ntlm://<domain>\<placeholder>@10.10.10.2' 'smb+sspi-ntlm://<domain>\<placeholder>@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+ntlm-password://TEST\victim:[email protected]' 'smb+ntlm-password://TEST\victim:[email protected]'

Enumeración solo LDAP con nombre de usuario y contraseña - independiente de la plataforma

La contraseña es Passw0rd!
jackdaw --sql sqlite:///test.db ldap 'ldap+ntlm-password://TEST\victim:[email protected]'

Iniciar la interfaz web interactiva para graficar y acceder a funciones adicionales

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)

Características

Adquisición de datos

mediante LDAP

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.

mediante SMB

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)

mediante Kerberos

El módulo Kerberos realiza kerberoasting y aspreproasting automáticos

mediante volcados de LSASS (opcional)

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.

mediante resultados de DCSYNC (opcional)

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.

mediante carga manual (opcional)

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.

Grafo

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.

Detección de anomalías

El framework puede identificar configuraciones incorrectas comunes de AD sin generar el grafo. Actualmente solo 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 funcionalidades crezca en el futuro a medida que se implementen nuevas características.

Máquina

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.

Cracking de contraseñas

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:

  1. Recolectar credenciales como archivo de texto mediante impacket/aiosmb o como volcados de memoria del proceso LSASS mediante la herramienta que consideres adecuada.
  2. Subir las credenciales recolectadas a través de la API
  3. Consultar hashes no crackeados a través de la API
  4. Crackearlos (¿hashcat?)
  5. Subir los resultados al framework a través de la API
  6. Generar un informe sobre los usuarios crackeados/no crackeados, la fortaleza de las contraseñas y el uso compartido de contraseñas

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.

Importante

¡Este proyecto está en fase experimental! Esto significa varias cosas:

  1. puede fallar
  2. los controles que estás utilizando podrían cambiar en el futuro (muy probable)
  3. (la peor parte) El diseño de la base de datos no es necesariamente adecuado para futuras solicitudes, por lo que puede cambiar. ¡No habrá ningún esfuerzo para mantener la compatibilidad hacia atrás con la estructura de base de datos de la fase experimental!

Parte técnica

Backend de base de datos

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.

Construyendo la UI

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:

  1. Ve a jackdaw/nest/site/nui
  2. Ejecuta npm install
  3. Ejecuta npm run build

Una vez completado lo anterior, la UI está lista para usar.

Reconocimientos

"Si he visto más lejos es por estar sobre los hombros de Gigantes."

Por la idea original

Equipo de BloodHound

Por el cálculo de aristas ACL

@dirkjanm (https://github.com/dirkjanm/)

Por la increíble UI

Zsolt Imre (https://github.com/keymandll)

Por las partes de recolección de datos

consulta la sección de reconocimientos en los módulos aiosmb y msldap

En caso de que olvide mencionar a alguien, por favor envía un PR

Descargar herramienta