Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cypherhound — أداتك المصاحبة للطرفية والقائمة على القوالب لـ BloodHound | Kitploit
أدوات/GitHubGitHub/fin3ss3g0d/cypherhound
الاستطلاعجمع المعلوماتاختبار الاختراقالأدوات والمكونات
GitHubfin3ss3g0d/cypherhound

cypherhound

أداتك المصاحبة للطرفية والقائمة على القوالب لـ BloodHound

عرض المستودع
4543641منذ 8 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CypherHound

logo

تطبيق طرفية Python3 يحتوي على استعلامات Neo4j من نوع Cypher لمجموعات بيانات BloodHound مع نص برمجي لأتمتة استيرادها إلى BloodHound CE.

نماذج الإخراج

الطرفية

demo

تقرير HTML

report summary

تقرير HTML (تابع)

details sample

لماذا؟

BloodHound هو أداة أساسية لكل مختبر اختراق. ومع ذلك، هناك بعض الآثار الجانبية السلبية بناءً على تصميمه. سأغطي أكبر نقاط الألم التي مررت بها وما تهدف هذه الأداة إلى معالجته:

  1. أدواتي تفكر في قوائم - حتى تقوم أدواتي بتحليل رسوم JSON المصدرة، أحتاج إلى نتائج الرسم البياني بتنسيق سطرًا تلو الآخر .txt لأتمكن بالفعل من مهاجمة الأشياء من أدوات أخرى
  2. نسخ/لصق نتائج الرسم البياني - هذا يندرج تحت النقطة الأولى لكن هل نحتاج حقًا إلى شرح هذا؟
  3. يمكن أن تكون الرسوم البيانية كبيرة جدًا بحيث لا يمكن رسمها - بيئات Active Directory كبيرة، مسارات أقصر متعددة تُرسم على نفس الرسم البياني، إلخ. المعلومات الموجودة في أي رسم بياني يمكن أن تساعد أهدافنا كمهاجم ونحن بحاجة إلى القدرة على عرض جميع البيانات بكفاءة.
  4. تشغيل استعلامات Cypher مخصصة يدويًا يستغرق وقتًا طويلاً - دعنا نؤتمت ذلك :)

يمكن أن توفر هذه الأداة قيمة كبيرة لكل من الفرق الحمراء والزرقاء.

الميزات

استعد السيطرة على بيانات BloodHound الخاصة بك مع CypherHound!

  • قراءة قوالب Cypher من ملف YAML
    • ضبط استعلامات Cypher للبحث بناءً على إدخال المستخدم (خاص بالمستخدم، المجموعة، والكمبيوتر)
    • استعلامات Cypher معرفة من قبل المستخدم باستخدام regex
  • تصدير معرف من قبل المستخدم لجميع النتائج
    • أمثلة مقدمة بتنسيق متوافق مع grep/cut/awk
    • تصدير أي مجموعة من استعلامات Cypher إلى تقرير HTML حديث وأنيق
  • تشغيل نفس الاستعلامات من واجهة BloodHound CE الرسومية
    • محول YAML -> JSON وأداة استيراد استعلامات آلية لـ BloodHound CE
    • نص برمجي لاستيراد customqueries.json الخاص بـ BloodHound Legacy إلى BloodHound CE مرفق

التثبيت

تأكد من تثبيت python3 وقم بتشغيل:

python3 -m pip install -r requirements.txt

الاستخدام

ابدأ البرنامج باستخدام: python3 cypherhound.py -c config.json -y queries.yaml

config.json

سيقرأ البرنامج ملف تكوين بتنسيق json. مثال على هذا الملف موضح أدناه:

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

حيث:

  • user هو اسم مستخدم Neo4j الخاص بك
  • pwd هو كلمة مرور Neo4j الخاصة بك
  • database هي قاعدة بيانات Neo4j الخاصة بك

تنسيق YAML

يقرأ البرنامج الاستعلامات من ملف YAML بالتنسيق أدناه. تم توفير ad-queries.yaml كمثال يحتوي على استعلامات متعلقة بـ Active Directory. msg_template غير مطلوب لاستعلامات المسارات الأقصر ولكن يجب أن تعيد المتغير الذي يحتوي على المسار

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

يمكن رؤية تفصيل للمفاتيح/أزواج القيم في الجدول أدناه:

المفتاحالوصف
groupالمجموعة التي ينتمي إليها هذا الاستعلام، المجموعات معرفة من قبل المستخدم مثل "general"
descوصف الاستعلام
cypherالاستعلام نفسه بتنسيق Neo4j
msg_templateقالب Jinja2 لإخراج الطرفية بناءً على متغيرات cypher، استخدم أسماء مستعارة لمتغيرات Neo4j لتجنب محاولة Jinja عرضها كمتغيرات متداخلة

المعاملات الديناميكية في Cypher (Jinja2 params.*)

يستخدم البرنامج Jinja2 لعرض Cypher. حدد معاملات وقت التشغيل باستخدام الأمر set وارجع إليها في YAML كـ {{ params.<key> }}.

CLI

set <key> <value...> # مثال: set user [email protected]
unset <key> # اختياري
show # اختياري

مثال 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] }})

أنماط المعاملات الشائعة

مفتاح المعاملقيمة مثالالاستخدام في 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 }}

تنسيق JSON

يوفر هذا المستودع نصًا برمجيًا query-importer.py لأتمتة استيراد الاستعلامات إلى واجهة BloodHound CE من ملف JSON. كما تم توفير bh_query_converter.py لتحويل ملف YAML مخصص لتطبيق الطرفية إلى تنسيق JSON المتوقع بواسطة query-importer.py و BloodHound CE. مثال على تنسيق JSON المطلوب يمكن رؤيته أدناه:

{
  "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"
    }
  ]
}

الأوامر

قائمة الأوامر الكاملة موضحة أدناه:

تنزيل الأداة