
مجموعة أدوات آلية وقابلة للتوسيع تقوم بتشغيل استعلامات Cypher على الواجهة الخلفية لـ Neo4j الخاصة بـ Bloodhound وتقوم بحفظ المخرجات في جداول بيانات.
مجموعة أدوات آلية وقابلة للتوسيع تقوم بتشغيل استعلامات Cypher ضد قاعدة بيانات Neo4j الخاصة بـ Bloodhound وتحفظ المخرجات في جداول بيانات.
هذا سكريبت Bash يقوم بأتمتة تشغيل استعلامات Cypher ضد بيانات Bloodhound المخزنة في قاعدة بيانات Neo4j.
وجدت نفسي أعيد تشغيل نفس الاستعلامات عبر واجهة Neo4j على العديد من التقييمات، وأدركت أنه لا بد من وجود طريقة أسهل. 😅
قائمة استعلامات Cypher التي يتم تشغيلها قابلة للتوسيع بالكامل. مثال التنسيق أدناه يوضح كيفية إضافة استعلاماتك الخاصة.
يرجى مشاركة أي استعلامات مفيدة إضافية حتى أتمكن من إضافتها إلى هذا المشروع!
تم اختباره بالكامل ويعمل في Bash على Linux وmacOS وWindows
(تم إنشاؤه باستخدام termtosvg لمتعة المشاهدة)
cypher-shell مرفقًا مع Neo4j، وهو مطلوب لتشغيل هذا السكريبت
cypher-shell، فقد يكون لديك إصدار قديم من Neo4jssconvert موجودًا، فسيقوم السكريبت بدمج جميع ملفات .csv في أوراق داخل ملف .xls
cypher-shell في WSL (Linux).المعايير:
-u Neo4J Username (Required)
-p Neo4J Password (Required)
-d Fully Qualified Domain Name (Required) (Case Sensitive)
-a Bolt address (Optional) (Default: localhost:7687)
-t Query Timeout (Optional) (Default: 30s)
-v Verbose mode (Optional) (Default:FALSE)
-h Help text and usage example (Optional)
مثال مع الإعدادات الافتراضية:
./cypheroth.sh -u neo4j -p BloodHound -d TESTLAB.LOCAL
مثال مع جميع الخيارات:
./cypheroth.sh -u neo4j -p hunter2 -d BigTech.corp -a 10.0.0.1:7687 -t 5m -v true
تتم إضافة الملفات إلى مجلد فرعي يحمل اسم FQDN.
يوجد حوالي 60 استعلامًا في السكريبت حاليًا. هذه عينة من المعلومات التي ستحصل عليها:
لإضافة استعلامات إضافية، قم بتحرير مصفوفة queries داخل cypheroth.sh وأضف سطرًا باستخدام التنسيق التالي:
Description;Cypher Query;Output File
إذا أضفت استعلامًا يتطلب تعيين قيمة المجال، فاحفظه كـ $DOMAIN.
مثال 1:
All Usernames;MATCH (u:User) RETURN u.name;usernames.csv
مثال 2:
All Domain Admins;MATCH (u:User) MATCH (g:Group {name:'DOMAIN ADMINS@$DOMAIN'}) RETURN u.displayname;domainAdmins.csv
إذا كنت بحاجة لتحليل عدة مجالات، يمكنك تشغيل مثيلات متعددة من Cypheroth بالتوازي مع كل منها يعمل على مجاله. يمكنك استخدام السكريبت التالي على سبيل المثال (10 بالتوازي).
#!/usr/bin/env bash
DOMAINS=(domA.example.net domB.example.net [...])
parallel -j10 --lb ./cypheroth.sh <args> -d {} ::: "${DOMAINS[@]}"
إذا كنت تشغل إصدارًا قديمًا من cypher-shell، فقد تتلقى الخطأ التالي:
DateTime is not supported as a return type in Bolt protocol version 1.
Please make sure driver supports at least protocol version 2.
Driver upgrade is most likely required.
للإصلاح، قم بتحديث Neo4j إلى أحدث إصدار.
Chris Farrell (@seajay)
#cypher_queries للمساعدة