Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
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
cypherhound — Tu herramienta de acompañante de terminal de BloodHound basada en plantillas | Kitploit
Herramientas/GitHubGitHub/fin3ss3g0d/cypherhound
ReconocimientoRecopilación de InformaciónPruebas de PenetraciónUtilidades y Frameworks
GitHubfin3ss3g0d/cypherhound

cypherhound

Tu herramienta de acompañante de terminal de BloodHound basada en plantillas

Ver Repositorio
4543641hace 8 mesesRevisado 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

CypherHound

logo

Una aplicación de terminal Python3 que contiene consultas Neo4j para conjuntos de datos de BloodHound con un script para automatizar su importación en BloodHound CE.

Ejemplos de Salida

Terminal

demo

Informe HTML

report summary

Informe HTML (continuación)

details sample

¿Por qué?

BloodHound es una herramienta fundamental para todo probador de penetración. Sin embargo, tiene algunos efectos secundarios negativos debido a su diseño. Cubriré los mayores puntos débiles que he experimentado y lo que esta herramienta pretende abordar:

  1. Mis herramientas piensan en listas - hasta que mis herramientas analicen gráficos JSON exportados, necesito los resultados del gráfico en un formato línea por línea en un archivo .txt para realmente atacar cosas desde otras herramientas
  2. Copiar/pegar resultados del gráfico - esto se relaciona con el primero, pero ¿realmente necesitamos explicar esto?
  3. Los gráficos pueden ser demasiado grandes para dibujar - Entornos AD grandes, múltiples caminos más cortos dibujados en el mismo gráfico, etc. La información contenida en cualquier gráfico puede ayudar a nuestros objetivos como atacantes y necesitamos poder ver todos los datos de manera eficiente.
  4. Ejecutar consultas personalizadas manualmente consume mucho tiempo - ¡automaticémoslo :)

Esta herramienta puede proporcionar un valor significativo tanto para equipos rojos como azules.

Características

¡Recupera el control de tus datos de BloodHound con CypherHound!

  • Leer plantillas de consultas desde un archivo YAML
    • Configurar consultas para buscar según la entrada del usuario (específicas para usuario, grupo y equipo)
    • Consultas regex definidas por el usuario
  • Exportación definida por el usuario de todos los resultados
    • Ejemplos proporcionados en formato compatible con grep/cut/awk
    • Exportar cualquier combinación de consultas a un informe HTML moderno y elegante
  • Ejecutar las mismas consultas desde la GUI de BloodHound CE
    • Convertidor de YAML a JSON e importador automatizado de consultas a BloodHound CE
    • Script importador de customqueries.json de BloodHound Legacy a BloodHound CE incluido

Instalación

Asegúrate de tener python3 instalado y ejecuta:

python3 -m pip install -r requirements.txt

Uso

Inicia el programa con: python3 cypherhound.py -c config.json -y queries.yaml

config.json

El programa leerá un archivo de configuración en formato json. A continuación se muestra un ejemplo de este archivo:

{
    "user": "neo4j",
    "pwd": "password",
    "database": "neo4j"
}

donde:

  • user es tu nombre de usuario de Neo4j
  • pwd es tu contraseña de Neo4j
  • database es tu base de datos de Neo4j

Formato YAML

El programa lee consultas de un archivo YAML en el siguiente formato. Se ha proporcionado ad-queries.yaml como ejemplo que contiene consultas relacionadas con Active Directory. msg_template no es necesario para consultas de caminos más cortos, pero deben devolver la variable que contiene el camino

queries:
- group: general
  desc: List all AddKeyCredentialLink privileges for owned principals
  cypher: |-
    MATCH (n {owned: true})-[r:AddKeyCredentialLink]->(m)
    RETURN n.name AS n_name, m.name AS m_name, labels(m) AS labels_m, labels(n) AS labels_n
    ORDER BY n.name
  msg_template: |-
    {{ n_name }} ({{ labels_n[0] }}/{{ labels_n[1] }}) has AddKeyCredentialLink over {{ m_name }} ({{
    labels_m[0] }}/{{ labels_m[1] }})

A continuación se muestra una tabla de desglose de los pares clave/valor:

ClaveDescripción
groupEl grupo al que pertenece esta consulta, los grupos son definidos por el usuario, ej. "general"
descLa descripción de la consulta
cypherLa consulta en sí en formato Neo4j
msg_templatePlantilla Jinja2 para la salida de terminal basada en variables de consulta, usa alias para las variables de Neo4j para evitar que Jinja intente renderizar como variables anidadas

Parámetros Dinámicos en Cypher (Jinja2 params.*)

El programa utiliza Jinja2 para renderizar Cypher. Define parámetros de ejecución con el comando set y haz referencia a ellos en YAML como {{ params.<key> }}.

CLI

set <key> <value...> # e.g., set user [email protected]
unset <key> # optional
show # optional

Ejemplo YAML

- group: user
  desc: List all privileges for this user
  cypher: |-
    MATCH (n:User)-[r]->(m)
    WHERE n.name =~ '((?i){{ params.user }})'
    RETURN n.name AS n_name, TYPE(r) AS rel_type, labels(m) AS labels_m, m.name AS m_name
    ORDER BY TYPE(r)
  msg_template: |-
    User {{ n_name }} has {{ rel_type }} over {{ m_name }} ({{ labels_m[0] }}/{{ labels_m[1] }})

Patrones de Parámetros Comunes

Clave de parámetroValor de ejemploUso en Cypher
params.user[email protected]= {{ params.user }}
params.user_regex(?i)john\.doe(@example\.com)?=~ '{{ params.user_regex }}'
params.groupDomain [email protected]= {{ params.group }}
params.prefixACME-STARTS WITH {{ params.prefix }}

Formato JSON

Este repositorio proporciona un script query-importer.py para automatizar la importación de consultas en la UI de BloodHound CE desde un archivo JSON. También se ha proporcionado bh_query_converter.py para convertir un archivo YAML destinado a la aplicación de terminal al formato JSON esperado por query-importer.py y BloodHound CE. A continuación se muestra un ejemplo del formato JSON requerido:

Descargar herramienta