Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
cypherhound — Il tuo strumento compagno da terminale per BloodHound basato su modelli | Kitploit
Strumenti/GitHubGitHub/fin3ss3g0d/cypherhound
RicognizioneRaccolta InformazioniPenetration TestingUtilità e Framework
GitHubfin3ss3g0d/cypherhound

cypherhound

Il tuo strumento compagno da terminale per BloodHound basato su modelli

Vedi Repository
45436418 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CypherHound

logo

Un'applicazione terminale Python3 che contiene cypher Neo4j per i set di dati di BloodHound con uno script per automatizzare l'importazione in BloodHound CE.

Esempi di Output

Terminale

demo

Report HTML

report summary

Report HTML (continua)

details sample

Perché?

BloodHound è uno strumento fondamentale per ogni penetration tester. Tuttavia, ci sono alcuni effetti collaterali negativi basati sul suo design. Coprirò i maggiori punti critici che ho sperimentato e ciò che questo strumento mira a risolvere:

  1. I miei strumenti pensano in liste - finché i miei strumenti non analizzano i grafici JSON esportati, ho bisogno di risultati dei grafici in formato .txt riga per riga per attaccare effettivamente le cose da altri strumenti
  2. Copiare/incollare i risultati dei grafici - questo si ricollega al primo ma abbiamo davvero bisogno di spiegare questo?
  3. I grafici possono essere troppo grandi da disegnare - Grandi ambienti AD, più percorsi più brevi disegnati sullo stesso grafico, ecc. Le informazioni contenute in qualsiasi grafico possono aiutare i nostri obiettivi come attaccanti e dobbiamo essere in grado di visualizzare tutti i dati in modo efficiente.
  4. Eseguire manualmente cypher personalizzati richiede tempo - automatizziamolo :)

Questo strumento può fornire un valore significativo sia per i team red che blue.

Funzionalità

Riprendi il controllo dei tuoi dati BloodHound con CypherHound!

  • Legge template cypher da un file YAML
    • Imposta cypher per la ricerca basata sull'input utente (specifici per utente, gruppo e computer)
    • Cypher regex definiti dall'utente
  • Esportazione definita dall'utente di tutti i risultati
    • Esempi forniti in formato compatibile con grep/cut/awk
    • Esporta qualsiasi combinazione di cypher in un report HTML moderno ed elegante
  • Esegui le stesse query dall'interfaccia di BloodHound CE
    • Convertitore YAML -> JSON e importatore automatico di query di BloodHound CE
    • Incluso script per importare customqueries.json di BloodHound Legacy in BloodHound CE

Installazione

Assicurati di avere python3 installato ed esegui:

python3 -m pip install -r requirements.txt

Utilizzo

Avvia il programma con: python3 cypherhound.py -c config.json -y queries.yaml

config.json

Il programma leggerà un file di configurazione in formato json. Un esempio di questo file è mostrato di seguito:

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

dove:

  • user è il tuo nome utente di Neo4j
  • pwd è la tua password di Neo4j
  • database è il tuo database Neo4j

Formato YAML

Il programma legge le query da un file YAML nel formato seguente. ad-queries.yaml è fornito come esempio contenente query relative ad Active Directory. msg_template non è richiesto per le query sui percorsi più brevi, ma queste devono restituire la variabile contenente il percorso

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

Una tabella con la suddivisione delle coppie chiave/valore è visibile qui sotto:

ChiaveDescrizione
groupIl gruppo a cui appartiene questa query, i gruppi sono definiti dall'utente, ad esempio "general"
descLa descrizione della query
cypherLa query stessa in formato Neo4j
msg_templateTemplate Jinja2 per l'output del terminale basato sulle variabili cypher, usa alias per le variabili Neo4j per evitare che Jinja tenti di renderizzarle come variabili annidate

Parametri dinamici in Cypher (Jinja2 params.*)

Il programma utilizza Jinja2 per renderizzare Cypher. Definisci i parametri in esecuzione con il comando set e referenziali in YAML come {{ params.<key> }}.

CLI

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

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

Pattern di parametri comuni

Chiave parametroValore esempioUtilizzo in 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

Questo repository fornisce uno script query-importer.py per automatizzare l'importazione delle query nell'interfaccia di BloodHound CE da un file JSON. È inoltre fornito bh_query_converter.py per convertire un file YAML destinato all'applicazione terminale nel formato JSON atteso da query-importer.py e BloodHound CE. Un esempio del formato JSON richiesto è visibile qui sotto:

{
  "queries": [
    {
      "name": "List all AddKeyCredentialLink privileges for owned principals",
      "description": "List all AddKeyCredentialLink privileges for owned principals - General",
      "query": "MATCH p=(n {owned: true})-[r:AddKeyCredentialLink]->(m)\nRETURN p\nORDER BY n.name"
    },
    {
      "name": "List all AddKeyCredentialLink privileges for Users, Domain Users, Authenticated Users, and Everyone groups",
      "description": "List all AddKeyCredentialLink privileges for Users, Domain Users, Authenticated Users, and Everyone groups - General",
      "query": "MATCH p=(n:Group)-[r:AddKeyCredentialLink]->(m)\nWHERE (n.objectid =~ \"(?i)S-1-5-21-.*-513\" OR n.objectid =~ \"(?i).*-S-1-5-11\" OR n.objectid =~ \"(?i).*-S-1-1-0\" OR n.objectid =~ \"(?i).*-S-1-5-32-545\")\nRETURN p\nORDER BY n.name"
    }
  ]
}
Scarica lo strumento