
مجموعة أدوات لـ BloodHound تتيح تدقيق كلمات مرور النطاق، وتحليل مسارات الامتيازات، والتلاعب بالحواف، واستعلامات Cypher المخصصة لتعظيم رسم سطح هجوم Active Directory.
إصدار جديد:
مجموعة بسيطة من الأدوات:
تم إصدار هذا مع لقطات شاشة وحالات استخدام على المدونات التالية: Max Release، Updates & Primitives و DPAT
تمت إضافة بدائي هجوم محتمل جديد إلى هذه الأداة أثناء بحثي، راجع قسم add-spns للحصول على التفاصيل الكاملة.
من الناحية المثالية، لا ينبغي أن يكون هناك الكثير لتثبيته، ولكنني أدرجت ملف requirements.txt فقط في حالة. تم اختباره على Kali Linux و Windows 10، يجب أن تعمل جميع الوظائف على كل من أنظمة تشغيل Linux و Windows.
pip3 install -r requirements.txt
يمكن ترميز بيانات اعتماد Neo4j في بداية السكريبت، أو يمكن تقديمها كوسائط سطر أوامر، أو تخزينها كمتغيرات بيئية. إذا تُرك أي من المعاملين فارغًا، سيُطلب منك اسم المستخدم/كلمة المرور. لاستخدام متغيرات البيئة، من الأرجح الأسهل إضافة سطر (مثل export NEO4J_USERNAME='neo4j') داخل ~/.bashrc أو ~/.zshrc لتخزين اسم المستخدم لأنه ليس حساسًا حقًا. يمكن تعيين كلمة مرور قاعدة البيانات داخل علامة تبويب شل الخاص بك قبل تشغيل Max. إضافة مسافة قبل أمر export يجب أن يمنع ظهوره في السجل.
export NEO4J_PASSWORD='bloodhound' # Notice whitespace before 'export'
python3 max.py {module} {args}
python3 max.py -u neo4j -p neo4j {module} {args}
python3 max.py {module} {args}
Neo4j Username: neo4j
Neo4j Password:
الحصول على المساعدة بشكل عام، وخاص بالوحدة
python3 max.py -h
python3 max.py {module} -h
استيراد الكائنات المملوكة إلى BH
python3 max.py mark-owned -f owned.txt
python3 max.py mark-owned -f owned.txt --add-note "Owned by repeated local admin"
الحصول على قائمة المستخدمين
python3 max.py get-info --users
python3 max.py get-info --users --enabled
[email protected]
[email protected]
...
الحصول على قائمة الكائنات في مجموعة مستهدفة
python3 max.py get-info --group-members "domain [email protected]"
الحصول على قائمة بأجهزة الكمبيوتر التي يمتلك المستخدم حقوق إدارية عليها
python3 max.py get-info --adminto [email protected]
الحصول على قائمة بالكائنات المملوكة مع الملاحظات لكل منها
python3 max.py get-info --owned --get-note
تشغيل استعلام - إرجاع قائمة بجميع المستخدمين الذين لديهم مسار إلى DA
python3 max.py query -q "MATCH (n:User),(m:Group {name:'DOMAIN [email protected]'}) MATCH (n)-[*1..]->(m) RETURN DISTINCT(n.name)"
حذف حافة من قاعدة البيانات
python3 max.py del-edge CanRDP
إضافة علاقة HasSPNConfigured باستخدام المعلومات المخزنة داخل BloodHound، أو باستخدام ملف GetUserSPNs من Impacket
python3 max.py add-spns -b
python3 max.py add-spns -i getuserspns-raw-output.txt
DPAT
python3 max.py dpat -n ~/client/ntds.dit -c ~/.hashcat/hashcat.potfile -o ouputdir --html --sanitize
Pet max
python3 max.py pet-max
الكائنات في الملف يجب أن تحتوي على FQDN بداخلها، حالة الأحرف لا تهم. هذا ينطبق أيضًا على أي وقت يتم فيه تقديم اسم مستخدم/اسم كمبيوتر عبر CLI.
[email protected] <- will be added / correct CLI input
[email protected] <- will be added / correct CLI input
computer01.domain.local <- will be added / correct CLI input
ComPutEr01.doMAIn.LOcaL <- will be added / correct CLI input
user02 <- will not be added / incorrect CLI input
computer02 <- will not be added / incorrect CLI input
آمل تضمين وظيفة analyze لتوفير نوع من الوظائف المشابهة لـ PlumHound/Cypheroth. أخيرًا، أفكر في إنشاء نسخة Powershell لمن يستخدمون Neo4j على Windows، لكنني سيء في Powershell لذا لم يتحدد بعد.
أي ميزات وتحسينات أخرى مرحب بها، تجدني @knavesec في قناة BloodHoundGang على Slack وعلى Twitter
أود أن أشكر بشكل خاص أولئك الذين ساهموا بوقتهم في تطوير وتحسين هذه الأداة: