Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
cypherhound — आपका टेम्पलेट-आधारित BloodHound टर्मिनल साथी उपकरण | Kitploit
उपकरण/GitHubGitHub/fin3ss3g0d/cypherhound
टोहीजानकारी एकत्र करनापेनिट्रेशन टेस्टिंगउपयोगिताएँ और फ्रेमवर्क
GitHubfin3ss3g0d/cypherhound

cypherhound

आपका टेम्पलेट-आधारित BloodHound टर्मिनल साथी उपकरण

रिपॉजिटरी देखें
45436317 महीने पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CypherHound

लोगो

एक Python3 टर्मिनल एप्लिकेशन जिसमें BloodHound डेटा सेट के लिए Neo4j सिफ़र हैं और BloodHound CE में उन्हें आयात करने के लिए एक स्क्रिप्ट है।

आउटपुट नमूने

टर्मिनल

डेमो

HTML रिपोर्ट

रिपोर्ट सारांश

HTML रिपोर्ट (जारी)

विवरण नमूना

क्यों?

BloodHound हर पेनिट्रेशन टेस्टर के लिए एक मुख्य उपकरण है। हालांकि, इसके डिज़ाइन के आधार पर कुछ नकारात्मक प्रभाव हैं। मैं उन सबसे बड़े समस्याओं को कवर करूंगा जो मैंने अनुभव की हैं और यह उपकरण किन मुद्दों को हल करने का लक्ष्य रखता है:

  1. मेरे उपकरण सूचियों में सोचते हैं - जब तक मेरे उपकरण निर्यातित JSON ग्राफ़ को पार्स नहीं करते, मुझे ग्राफ़ परिणामों की लाइन-दर-लाइन .txt फ़ाइल चाहिए अन्य उपकरणों से वास्तव में हमला करने के लिए
  2. ग्राफ़ परिणामों को कॉपी/पेस्ट करना - यह पहले बिंदु से जुड़ता है लेकिन क्या हमें वास्तव में इसे समझाने की ज़रूरत है?
  3. ग्राफ़ आकार में बहुत बड़े हो सकते हैं - बड़े AD वातावरण, एक ही ग्राफ़ पर कई सबसे छोटे रास्ते, आदि। किसी भी ग्राफ़ में निहित जानकारी हमारे हमलावर के लक्ष्यों में सहायक हो सकती है और हमें सभी डेटा को कुशलतापूर्वक देखने में सक्षम होना चाहिए।
  4. मैन्युअल रूप से कस्टम सिफ़र चलाना समय लेने वाला है - आइए इसे स्वचालित करें :)

यह उपकरण रेड और ब्लू दोनों टीमों के लिए महत्वपूर्ण मूल्य प्रदान कर सकता है।

विशेषताएँ

CypherHound के साथ अपने BloodHound डेटा का नियंत्रण वापस लें!

  • YAML फ़ाइल से सिफ़र टेम्पलेट पढ़ें
    • उपयोगकर्ता इनपुट (उपयोगकर्ता, समूह और कंप्यूटर-विशिष्ट) के आधार पर खोजने के लिए सिफ़र सेट करें
    • उपयोगकर्ता-परिभाषित रेगेक्स सिफ़र
  • सभी परिणामों का उपयोगकर्ता-परिभाषित निर्यात
    • grep/cut/awk-अनुकूल प्रारूप में उदाहरण प्रदान किए गए
    • सिफ़र के किसी भी संयोजन को एक आधुनिक, सुंदर HTML रिपोर्ट में निर्यात करें
  • BloodHound CE GUI से समान क्वेरी चलाएं
    • YAML -> JSON कनवर्टर और स्वचालित BloodHound CE क्वेरी आयातकर्ता
    • BloodHound Legacy customqueries.json आयातक स्क्रिप्ट BloodHound CE में शामिल है

स्थापना

सुनिश्चित करें कि python3 स्थापित है और चलाएं:

python3 -m pip install -r requirements.txt

उपयोग

प्रोग्राम को इस प्रकार शुरू करें: python3 cypherhound.py -c config.json -y queries.yaml

config.json

प्रोग्राम json प्रारूप में एक कॉन्फ़िगरेशन फ़ाइल पढ़ेगा। इस फ़ाइल का एक उदाहरण नीचे दिखाया गया है:

root@kitploit:~
{
    "user": "neo4j",
    "pwd": "password",
    "database": "neo4j"
}

जहाँ:

  • user आपका Neo4j उपयोगकर्ता नाम है
  • pwd आपका Neo4j पासवर्ड है
  • database आपका Neo4j डेटाबेस है

YAML प्रारूप

प्रोग्राम नीचे दिए गए प्रारूप में YAML फ़ाइल से क्वेरी पढ़ता है। ad-queries.yaml एक उदाहरण के रूप में प्रदान किया गया है जिसमें Active Directory से संबंधित क्वेरी हैं। msg_template सबसे छोटे पथ क्वेरी के लिए आवश्यक नहीं है लेकिन उन्हें पथ वाले चर को वापस करना होगा

root@kitploit:~
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] }})

नीचे कुंजी/मान जोड़े का एक तालिका विवरण देखा जा सकता है:

कुंजीविवरण

सिफ़र में डायनामिक पैरामीटर (Jinja2 params.*)

प्रोग्राम सिफ़र को रेंडर करने के लिए Jinja2 का उपयोग करता है। set कमांड के साथ रनटाइम पैरामीटर परिभाषित करें और YAML में {{ params.<key> }} के रूप में संदर्भित करें।

सीएलआई

root@kitploit:~
set <key> <value...> # e.g., set user [email protected]
unset <key> # optional
show # optional

YAML उदाहरण

root@kitploit:~
- 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] }})

सामान्य पैराम पैटर्न

JSON प्रारूप

यह रिपॉजिटरी एक query-importer.py स्क्रिप्ट प्रदान करता है जो JSON फ़ाइल से BloodHound CE UI में क्वेरी आयात करने को स्वचालित करता है। bh_query_converter.py भी प्रदान किया गया है जो टर्मिनल एप्लिकेशन के लिए बनाई गई YAML फ़ाइल को BloodHound CE और query-importer.py द्वारा अपेक्षित JSON प्रारूप में परिवर्तित करता है। आवश्यक JSON प्रारूप का एक उदाहरण नीचे देखा जा सकता है:

root@kitploit:~
{
  "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"
    }
  ]
}

कमांड

पूर्ण कमांड मेनू नीचे दिखाया गया है:

root@kitploit:~
Documented commands (use 'help -v' for verbose/'help <topic>' for details):
======================================================================================================
alias                 Manage aliases
clear                 Clear the terminal.
cls                   Clear the terminal.
edit                  Run a text editor and optionally open a file with it
export                Run a query and save its results
help                  List available commands or provide detailed help for a specific command
history               View, run, edit, save, or clear previously entered commands
list                  List queries by group.
macro                 Manage macros
report                Run multiple queries and generate a HTML report
run                   Execute a query
run_pyscript          Run a Python script file inside the console
run_script            Run commands in script file that is encoded as either ASCII or UTF-8 text
search                Full-text search through stored queries.
set                   Set a dynamic search parameter (set <TARGET> <VALUE...>)
shell                 Execute a command as if at the OS prompt
shortcuts             List available shortcuts
show                  Show dynamic search parameters
unset                 Unset a dynamic search parameter (unset <TARGET>)

Undocumented commands:
======================
exit  q  quit  stop

BloodHound CE एकीकरण

कस्टम खोजें

scripts/bloodhound-ce/query-importer.py

query-importer.py स्क्रिप्ट JSON फ़ाइल से BloodHound CE UI में क्वेरी आयात करने को स्वचालित करेगी। bh_query_converter.py भी प्रदान किया गया है जो टर्मिनल एप्लिकेशन के लिए बनाई गई YAML फ़ाइल को BloodHound CE और query-importer.py द्वारा अपेक्षित JSON प्रारूप में परिवर्तित करता है।

scripts/bloodhound-ce/bh_query_converter.py

यह स्क्रिप्ट टर्मिनल एप्लिकेशन के लिए बनाई गई YAML को query-importer.py स्क्रिप्ट के माध्यम से BloodHound CE में आसान आयात के लिए JSON फ़ाइल में परिवर्तित करेगी। ad-queries.json एक उदाहरण के रूप में प्रदान किया गया है कि आउटपुट फ़ाइल कैसी दिखती है और यह query-importer.py और BloodHound CE में क्वेरी आयात करने के लिए तैयार है।

scripts/bloodhound-ce/legacy-query-importer.py

यह स्क्रिप्ट BloodHound Legacy से एक customqueries.json फ़ाइल पढ़ेगी और आपके API क्रेडेंशियल का उपयोग करके उन सभी को BloodHound Community Edition के नए संस्करण में आयात करेगी। यह प्रदान किया गया है ताकि आपके द्वारा BloodHound Legacy के लिए बनाई गई क्वेरी का उपयोग Community Edition के साथ किया जा सके।

scripts/bloodhound-ce/purge-queries.py

यह स्क्रिप्ट भविष्य के आयात के लिए रीसेट करने के लिए BloodHound से सभी सहेजी गई क्वेरी को हटा देगी। यह BloodHound CE के लिए है।

scripts/bloodhound-ce/add-owned.py

यह स्क्रिप्ट एक .txt फ़ाइल से नोड नामों की सूची पढ़ेगी और उन्हें डेटाबेस में स्वामित्व या उच्च-मूल्य के रूप में चिह्नित करेगी।

उपयोग

स्क्रिप्ट का उपयोग करने के लिए, आपके पास दो फ़ाइलें तैयार होनी चाहिए:

  • BloodHound प्रारूप में नोड नामों वाली एक लाइन-दर-लाइन .txt फ़ाइल
    • उपयोगकर्ताओं के लिए: [email protected]
    • समूहों के लिए: [email protected]
    • कंप्यूटरों के लिए: COMPUTER.DOMAIN.LOCAL
  • आपकी json प्रारूप में कॉन्फ़िगरेशन फ़ाइल जिसमें आपका Neo4j उपयोगकर्ता नाम, पासवर्ड और डेटाबेस हो (उदाहरण ऊपर दिखाया गया है)

स्क्रिप्ट में निम्नलिखित विकल्प हैं:

root@kitploit:~
  -h, --help            show this help message and exit
  -c CONFIG, --config CONFIG
                        Config file
  -l LIST, --list LIST  List of node names
  -o, --owned           Set target nodes as owned
  -v, --high-value      Set target nodes as high-value

आपको कम से कम -o या -v निर्दिष्ट करना होगा

BloodHound क्वेरी लाइब्रेरी एकीकरण

scripts/bhql/query-importer.py (BloodHound Query Library Importer)

यह स्क्रिप्ट BloodHound CE API का उपयोग करके SpecterOps BloodHoundQueryLibrary की सहेजी गई क्वेरी को BloodHound Community Edition में आयात करता है।

  • निम्न से क्वेरी लोड करने का समर्थन करता है:
    • एक स्थानीय Queries.json / Queries.zip
    • Queries.json / Queries.zip का URL
    • SpecterOps द्वारा प्रकाशित आधिकारिक नवीनतम रिलीज़ आर्टिफैक्ट
  • वैकल्पिक रूप से platforms द्वारा क्वेरी फ़िल्टर करता है (केस-असंवेदनशील)
  • प्रत्येक क्वेरी को BloodHound CE में एक सहेजी गई क्वेरी के रूप में सबमिट करता है (/api/v2/saved-queries)
  • उपस्थित होने पर Retry-After का उपयोग करके API दर सीमित करने (HTTP 429) के लिए पुनः प्रयास तर्क शामिल है

SpecterOps Queries.json और Queries.zip को रिलीज़ आर्टिफैक्ट के रूप में प्रकाशित करता है (रिपो में संग्रहीत नहीं)। नवीनतम रिलीज़ डाउनलोड URL हैं:

  • https://github.com/SpecterOps/BloodHoundQueryLibrary/releases/latest/download/Queries.json
  • https://github.com/SpecterOps/BloodHoundQueryLibrary/releases/latest/download/Queries.zip

उपयोग (स्थानीय फ़ाइल)

root@kitploit:~
python3 scripts/bhql/query-importer.py \
  --token-id "<TOKEN_ID>" \
  --token-key "<TOKEN_KEY>" \
  --queries-file "/path/to/Queries.json" \
  --base-url "http://127.0.0.1:8080"

उपयोग (सीधा URL)

root@kitploit:~
python3 scripts/bhql/query-importer.py \
  --token-id "<TOKEN_ID>" \
  --token-key "<TOKEN_KEY>" \
  --queries-url "https://github.com/SpecterOps/BloodHoundQueryLibrary/releases/latest/download/Queries.json" \
  --base-url "http://127.0.0.1:8080"

उपयोग (स्वचालित: नवीनतम रिलीज़)

root@kitploit:~
python3 scripts/bhql/query-importer.py \
  --token-id "<TOKEN_ID>" \
  --token-key "<TOKEN_KEY>" \
  --bhql-latest \
  --base-url "http://127.0.0.1:8080"

प्लेटफ़ॉर्म-फ़िल्टर्ड आयात (उदाहरण)

root@kitploit:~
# केवल उन क्वेरी को आयात करें जो Active Directory का समर्थन करती हैं
python3 scripts/bhql/query-importer.py \
  --token-id "<TOKEN_ID>" \
  --token-key "<TOKEN_KEY>" \
  --bhql-latest \
  --platforms "Active Directory" \
  --base-url "http://127.0.0.1:8080"

# कई प्लेटफ़ॉर्म के लिए क्वेरी आयात करें (कोई भी मिलान)
python3 scripts/bhql/query-importer.py \
  --token-id "<TOKEN_ID>" \
  --token-key "<TOKEN_KEY>" \
  --bhql-latest \
  --platforms "Active Directory" "Azure" \
  --base-url "http://127.0.0.1:8080"

सुझाव: आप BloodHound CE में एक टोकन बना सकते हैं और इसका Token ID/Key यहाँ उपयोग कर सकते हैं। यदि आप आयात करने से पहले "नई शुरुआत" करना चाहते हैं, तो शामिल पर्ज स्क्रिप्ट का उपयोग करें (scripts/bloodhound-ce/purge-queries.py देखें)।

सहायक स्क्रिप्ट

scripts/helpers/format_yaml_queries.py

एक मौजूदा BloodHound क्वेरी YAML को इस प्रकार पुन: स्वरूपित करें कि:

  • डॉटेड RETURN कॉलम को उपनाम दिया गया है (foo.bar → foo_bar, labels(x) → labels_x[0])
  • संदेश टेम्पलेट उपनामों का उपयोग करने के लिए फिर से लिखे गए हैं
  • सिफ़र को सुंदर रूप से मुद्रित किया गया है (प्रति पंक्ति एक प्रमुख खंड)
  • लंबी स्ट्रिंग शाब्दिक ब्लॉक स्केलर (|) हैं और 100 वर्णों में लपेटी गई हैं

DPAT एकीकरण

यदि आप मूल DPAT रिपॉजिटरी में cypherhound कार्यक्षमता को विलय नहीं देखते हैं, तो कृपया मेरे DPAT फोर्क तक पहुँचें जिसमें यह होगा।

scripts/DPAT/parse-memberships.py

यह स्क्रिप्ट टर्मिनल एप्लिकेशन से कच्चे निर्यात को पार्स करेगी, विशेष रूप से सभी उपयोगकर्ता समूह सदस्यता सूचीबद्ध करने के लिए सिफ़र, इस उपकरण के आउटपुट को कैसे पार्स किया जा सकता है इसका एक उदाहरण के रूप में। आप इस निर्यात को स्क्रिप्ट, एक NTDS.dit फ़ाइल और एक आउटपुट निर्देशिका में पैरामीटर के रूप में पास करेंगे। यह तब आउटपुट निर्देशिका में प्रत्येक समूह नाम के लिए DOMAIN\USER प्रारूप में प्रविष्टियों के साथ .txt फ़ाइलें उत्पन्न करेगा, जो DPAT के साथ संगत है। फिर आप इस निर्देशिका को DPAT को -g कमांडलाइन तर्क के साथ पास करेंगे, जिससे ऑपरेटर डोमेन में प्रत्येक समूह के लिए समूह-विशिष्ट सांख्यिकी उत्पन्न कर सकता है।

स्क्रिप्ट का उपयोग करने के लिए, आपके पास दो फ़ाइलें तैयार होनी चाहिए:

  1. टर्मिनल एप्लिकेशन से कच्चा निर्यात जो सभी उपयोगकर्ता समूह सदस्यता प्राप्त करता है
  2. एक NTDS.dit फ़ाइल जिसमें निम्नलिखित प्रारूप में पंक्तियाँ हों: domain\user:RID:LMhash:NTLMhash:::

उपयोग

root@kitploit:~
usage: parse-memberships.py [-m MEMBERSHIPS_FILE] [-d DOMAIN] [-n NTDS_FILE] [-o OUTPUT_DIR] [--netbios NETBIOS] [--encoding ENCODING]
                            [--debug] [--no-index] [-h]

Map users to groups from memberships file and match against NTDS dump.

options:
  -m, --memberships-file MEMBERSHIPS_FILE
                        Path to memberships file (BloodHound-style lines) (default: None)
  -d, --domain DOMAIN   FQDN domain (e.g., EXAMPLE.COM) used in the membership regex (default: None)
  -n, --ntds-file NTDS_FILE
                        Path to NTDS dump (DOMAIN\user:hash or pwdump-style) (default: None)
  -o, --output-dir OUTPUT_DIR
                        Directory to write per-group output files (default: None)
  --netbios NETBIOS     NETBIOS/short domain to prefix when NTDS lines lack a domain (pwdump) (default: None)
  --encoding ENCODING   Encoding for input files (default: cp1252)
  --debug               Enable verbose debug output (default: False)
  --no-index            Name group files after the group instead of numbered files (unsafe chars replaced) (default: False)
  -h, --help            Show this help message and exit

scripts/DPAT/parse-kerberoastable.py

यह स्क्रिप्ट सभी kerberoastable उपयोगकर्ताओं को सूचीबद्ध करने के लिए कच्चे निर्यात को पार्स करेगी, उपयोगकर्ताओं को NTDS.dit में प्रविष्टियों से मिलाएगी, और डंप से सभी kerberoastable उपयोगकर्ता हैश प्रविष्टियों वाली एक आउटपुट फ़ाइल उत्पन्न करेगी। फिर आप इस आउटपुट फ़ाइल को DPAT को -kz ध्वज के साथ पास करते हैं ताकि क्रैक किए गए kerberoastable खाता आँकड़े प्रदान किए जा सकें।

उपयोग

root@kitploit:~
usage: parse-kerberoastable.py [-k KERB_FILE] [-n NTDS_FILE] [-d DOMAIN] [-o OUTPUT] [--encoding ENCODING] [--debug] [-h]

Match kerberoastable usernames against an NTDS.dit dump file

options:
  -k, --kerb-file KERB_FILE
                        Path to Kerberoast output file (default: None)
  -n, --ntds-file NTDS_FILE
                        Path to NTDS dump file (default: None)
  -d, --domain DOMAIN   Domain (e.g., EXAMPLE.COM) for regex matching (default: None)
  -o, --output OUTPUT   Path to write matches (default: None)
  --encoding ENCODING   File encoding to use when reading input files (default: cp1252)
  --debug               Enable verbose debug output (default: False)
  -h, --help            Show this help message and exit

महत्वपूर्ण नोट

  • प्रोग्राम डिफ़ॉल्ट Neo4j डेटाबेस और URI का उपयोग करने के लिए कॉन्फ़िगर किया गया है
  • BloodHound 4.3.1 और उससे ऊपर के संस्करणों के लिए बनाया गया है, कुछ किनारे पिछले संस्करणों के लिए काम नहीं करेंगे

प्रायोजन के बारे में एक शब्द

जुलाई 15, 2023 को मैंने परियोजना में कुछ बदलाव करने का निर्णय लिया। इस तिथि के बाद, यह परियोजना हमेशा प्रायोजकों के लिए निजी संस्करण से एक संस्करण पीछे रखी जाएगी। नवीनतम सिफ़र, सुविधाओं और बग फिक्स तक पहुँच के लिए मुझे प्रायोजित करना सुनिश्चित करें। इस स्तर पर मुझे प्रायोजित करके, आपको अतिरिक्त निजी रिपॉजिटरी तक भी पहुँच मिलेगी जो मैंने सार्वजनिक रूप से जारी नहीं की है!

भविष्य के लक्ष्य

  • Azure किनारों के लिए सिफ़र जोड़ें
  • BloodHound अपडेट जारी करने पर सिफ़र जोड़ना जारी रखें
  • सिफ़र जोड़ना जारी रखें

समस्याएँ और सहायता

कृपया किसी भी समस्या के साथ विस्तृत विवरण दें जिसे आप खोलने का निर्णय लेते हैं और यदि संभव हो तो आउटपुट प्रदान करें (यदि लागू हो)।

टूल डाउनलोड करें
groupयह समूह जिससे यह क्वेरी संबंधित है, समूह उपयोगकर्ता-परिभाषित हैं जैसे "general"
descक्वेरी का विवरण
cypherNeo4j प्रारूप में क्वेरी स्वयं
msg_templateसिफ़र चर पर आधारित टर्मिनल आउटपुट के लिए Jinja2 टेम्पलेट, Neo4j चर के लिए उपनाम का उपयोग करें ताकि Jinja उन्हें नेस्टेड चर के रूप में रेंडर न करे
पैराम कुंजीउदाहरण मानसिफ़र में उपयोग
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 }}