
أداة بايثون لتخطيط حقوق الوصول لمشاركات الشبكة في BloodHound OpenGraphs بسهولة
أداة لرسم خرائط حقوق الوصول لمشاركات الشبكة في OpenGraphs الخاصة بـ BloodHound.
اقرأ مقال المدونة المرتبط: https://specterops.io/blog/2025/10/30/sharehound-an-opengraph-collector-for-network-shares/
يحتوي هذا المستودع على نسختين من ShareHound. تشتركان في الهدف نفسه — إنتاج JSON بصيغة BloodHound OpenGraph من أذونات مشاركات SMB — لكنهما تختلفان في اللغة وبيئة التشغيل ومجموعة الميزات. اختر ما يناسب سير عملك.
| التنفيذ | المسار | المؤلف | الأنسب لـ |
|---|---|---|---|
| Python | Python/ | Remi Gascou (@podalirius_) @ SpecterOps | التنفيذ المرجعي؛ سهل التوسيع والبرمجة النصية |
| Go | Go/ | Javier Azofra @ Siemens Healthineers | عمليات المسح واسعة النطاق (أكثر من 60,000 مضيف)، الاستئناف عبر نقاط التحقق، والملفات الثنائية الثابتة |
يحتوي كل مجلد فرعي على README خاص به يتضمن تفاصيل كاملة عن التركيب والاستخدام والإعداد:
--effective-access-only لتقليل حجم الرسم البياني بشكل كبير في البيئات الكبيرةبعد استيراد OpenGraph إلى BloodHound، تغطي هذه الاستعلامات الاحتياجات الأكثر شيوعًا. لمزيد من التفاصيل، راجع ملفات README الخاصة بكل تنفيذ.
MATCH (p)-[r]->(s:NetworkShareSMB)
WHERE (p)-[:CanDelete]->(s)
AND (p)-[:CanDsControlAccess]->(s)
AND (p)-[:CanDsCreateChild]->(s)
AND (p)-[:CanDsDeleteChild]->(s)
AND (p)-[:CanDsDeleteTree]->(s)
AND (p)-[:CanDsListContents]->(s)
AND (p)-[:CanDsListObject]->(s)
AND (p)-[:CanDsReadProperty]->(s)
AND (p)-[:CanDsWriteExtendedProperties]->(s)
AND (p)-[:CanDsWriteProperty]->(s)
AND (p)-[:CanReadControl]->(s)
AND (p)-[:CanWriteDacl]->(s)
AND (p)-[:CanWriteOwner]->(s)
RETURN p,r,s
MATCH x=(p)-[r:CanWriteDacl|CanWriteOwner|CanDsWriteProperty|CanDsWriteExtendedProperties]->(s:NetworkShareSMB)
RETURN x
MATCH p=(h:NetworkShareHost)-[:HasNetworkShare]->(s:NetworkShareSMB)-[:Contains*0..]->(f:File)
WHERE toLower(f.name) = toLower("flag.txt")
RETURN p
MATCH p=(h:NetworkShareHost)-[:HasNetworkShare]->(s:NetworkShareSMB)-[:Contains*0..]->(f:File)
WHERE toLower(f.extension) = toLower(".vmdk")
RETURN p
تُصدِر نسخة Go حواف CanEffectiveRead / CanEffectiveWrite / CanEffectiveExecute عندما يمتلك نفس SID حقوقًا متطابقة على مستوى المشاركة ومستوى NTFS معًا — أي الوصول الفعلي الممنوح عبر SMB.
MATCH p=(principal)-[:CanEffectiveRead]->(f:File)
RETURN p
طلبات Pull requests مرحب بها لكلا التنفيذين. افتح issue إذا أردت مناقشة ميزة جديدة أولًا.