Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cypherhound — Votre outil compagnon de terminal basé sur des modèles pour BloodHound | Kitploit
Outils/GitHubGitHub/fin3ss3g0d/cypherhound
ReconnaissanceCollecte d'InformationsTests d'IntrusionUtilitaires et Frameworks
GitHubfin3ss3g0d/cypherhound

cypherhound

Votre outil compagnon de terminal basé sur des modèles pour BloodHound

Voir le dépôt
4543642il y a 8 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CypherHound

logo

Une application terminal Python3 qui contient des cyphers Neo4j pour les ensembles de données BloodHound, avec un script pour automatiser leur importation dans BloodHound CE.

Exemples de sorties

Terminal

demo

Rapport HTML

report summary

Rapport HTML (suite)

details sample

Pourquoi ?

BloodHound est un outil incontournable pour tout testeur d'intrusion. Cependant, sa conception présente certains inconvénients. Je vais couvrir les principaux points douloureux que j'ai rencontrés et ce que cet outil vise à résoudre :

  1. Mes outils pensent en listes – tant que mes outils ne peuvent pas analyser les graphes JSON exportés, j'ai besoin des résultats de graphe au format ligne par ligne .txt pour réellement attaquer à partir d'autres outils
  2. Copier/coller les résultats de graphe – cela rejoint le premier point mais avons-nous vraiment besoin de l'expliquer ?
  3. Les graphes peuvent être trop grands pour être dessinés – Grands environnements AD, plusieurs chemins les plus courts dessinés sur le même graphe, etc. L'information contenue dans n'importe quel graphe peut aider nos objectifs d'attaquant et nous devons être capables de visualiser toutes les données efficacement.
  4. Exécuter manuellement des cyphers personnalisés prend du temps – automatisons cela :)

Cet outil peut apporter une valeur significative tant pour les équipes rouges que bleues.

Fonctionnalités

Reprenez le contrôle de vos données BloodHound avec CypherHound !

  • Lire des templates cypher à partir d'un fichier YAML
    • Définir des cyphers pour effectuer des recherches en fonction d'une entrée utilisateur (spécifiques à un utilisateur, groupe ou ordinateur)
    • Cyphers avec expressions régulières définies par l'utilisateur
  • Exportation définie par l'utilisateur de tous les résultats
    • Exemples fournis dans un format compatible grep/cut/awk
    • Exporter n'importe quelle combinaison de cyphers vers un rapport HTML moderne et élégant
  • Exécuter les mêmes requêtes depuis l'interface graphique BloodHound CE
    • Convertisseur YAML -> JSON et importateur automatisé de requêtes BloodHound CE
    • Script d'importation du customqueries.json BloodHound Legacy vers BloodHound CE inclus

Installation

Assurez-vous d'avoir python3 installé et exécutez :

python3 -m pip install -r requirements.txt

Utilisation

Démarrez le programme avec : python3 cypherhound.py -c config.json -y queries.yaml

config.json

Le programme lit un fichier de configuration au format json. Un exemple de ce fichier est présenté ci-dessous :

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

où :

  • user est votre nom d'utilisateur Neo4j
  • pwd est votre mot de passe Neo4j
  • database est votre base de données Neo4j

Format YAML

Le programme lit les requêtes à partir d'un fichier YAML au format ci-dessous. ad-queries.yaml est fourni comme exemple contenant des requêtes liées à Active Directory. msg_template n'est pas requis pour les requêtes de chemins les plus courts, mais elles doivent renvoyer la variable contenant le chemin.

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] }})

Un tableau détaillant les paires clé/valeur est présenté ci-dessous :

CléDescription
groupLe groupe auquel cette requête appartient ; les groupes sont définis par l'utilisateur, p. ex. "general"
descLa description de la requête
cypherLa requête elle-même au format Neo4j
msg_templateTemplate Jinja2 pour la sortie terminal basé sur les variables cypher, utilisez des alias pour les variables Neo4j afin d'éviter que Jinja tente de les interpréter comme des variables imbriquées

Paramètres dynamiques dans les cyphers (Jinja2 params.*)

Le programme utilise Jinja2 pour interpréter les cyphers. Définissez des paramètres d'exécution avec la commande set et référencez-les dans le YAML comme {{ params.<key> }}.

CLI

set <key> <value...> # p. ex. set user [email protected]
unset <key> # optionnel
show # optionnel

Exemple 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] }})

Modèles de paramètres courants

Clé paramExemple de valeurUtilisation dans le 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 }}

Format JSON

Ce dépôt fournit un script query-importer.py pour automatiser l'importation des requêtes dans l'interface BloodHound CE à partir d'un fichier JSON. bh_query_converter.py est également fourni pour convertir un fichier YAML destiné à l'application terminale vers le format JSON attendu par query-importer.py et BloodHound CE. Un exemple du format JSON requis est présenté ci-dessous :

Télécharger l’outil