דילוג לתוכן הראשי
AD Academy
כלים
מתקדם20 דקותעודכן לאחרונה: נושא 4 מתוך 4

קריאת גרף BloodHound — מהמשתמש אל ה־Domain Admin

קוראים מסלול תקיפה צעד אחר צעד — ומשתמשים באותו כלי גם להגנה.

לא הושלם

מה תלמדו כאן

  • מהו Edge ואילו סוגי קשתות חשוב להכיר
  • איך אוספים גרף עם SharpHound / bloodhound-python
  • איך קוראים מסלול תקיפה שלב־שלב

כדאי לקרוא לפני הנושא הזה:GOAD — Game of Active Directory

תיאוריה

אוסף נתונים מ־ (מי בקבוצה, מי מחובר לאיזה מחשב, לאילו ACL יש גישה) ובונה גרף יחסים. המתקפה כבר לא «איפה יש חשבון חלש» — אלא מציאת מסלול בגרף מהנקודה שאתה שולט בה עד לקבוצת Admins.

Edges שחייבים להכיר

  • MemberOf — שיוך לקבוצה.
  • AdminTo — משתמש/קבוצה הם admins על מחשב.
  • HasSession — משתמש מחובר למחשב כרגע (הזדמנות לגנוב אישורים בזיכרון).
  • CanRDP / CanPSRemote — גישה מרחוק למחשב.
  • — הרשאת שכפול על הדומיין — הפרס.
  • WriteDacl / AddMember / AddKeyCredentialLink — הרשאות ל־«שדרוג» עצמי בשרשרת.

שרשרת מסלול: bob, HasSession, WORKSTATION1, AdminTo, svc_helpdesk, CanRDP, SRV-APP1, MemberOf, G-Deploy, DCSync, CORP.LOCAL. כל חץ הוא Edge (קשר). הגנה: להריץ את אותה שאילתה ולשבור כל מסלול לפני התוקף.

בקצרה ובפשטות

  • כל חץ בגרף הוא Edge — קשר בין שני אובייקטים ב־AD.
  • HasSession = אישורים בזיכרון; AdminTo = שליפת hash; DCSync = כיבוש הדומיין.
  • הגנה: הריצו את אותה שאילתה לפני התוקף ושברו כל מסלול.
  • אחרי תיקון — הריצו שוב וודאו שהמסלול נעלם.

דוגמה מהחייםbob חיבור ל־WORKSTATION1 דרך HasSession. התוקף גונב את האישורים של svc_helpdesk מהזיכרון, עולה ל־SRV-APP1 דרך RDP, ומגיע ל־DCSync דרך G-Deploy.

פרקטיקה — איסוף הגרף

# SharpHound מ־Windows
SharpHound.exe -c All --zipfilename corp_collection
powershell
# bloodhound-python מלינוקס
bloodhound-python -u attacker -p 'Password123' \
  -d corp.local -dc dc01.corp.local -c All
bash

מייבאים את ה־zip ל־, ובודקים: Pre-built Analytics → «Find Shortest Paths to Admins».

קריאת מסלול צעד־צעד

דוגמת מסלול: bob → HasSession → WORKSTATION1 → AdminTo → svc_helpdesk → CanRDP → SRV-APP1 → MemberOf → G-Deploy → → CORP.LOCAL.

  • 1. bob מחובר ל־WORKSTATION1 (HasSession) — אם שולטים ב־bob, יש בזיכרון של המחשב אישורים נוספים לגניבה.
  • 2. svc_helpdesk הוא Admin על WORKSTATION1 (AdminTo) — עם הרשאות על המחשב, גונבים את ה־hash של svc_helpdesk מה־SAM/.
  • 3. svc_helpdesk יכול RDP ל־SRV-APP1 (CanRDP) והוא מחובר שם — אישורים נוספים בזיכרון.
  • 4. מי שמחובר ל־SRV-APP1 שייך ל־G-Deploy, שמחזיקה על הדומיין.
  • 5. = כיבוש הדומיין — שולפים את כל ה־hash-es דרך שכפול.

שאילתות Cypher שימושיות

// המסלול הקצר ביותר ממשתמש ל־Domain Admins
MATCH p=shortestPath(
  (u:User {name:'BOB@CORP.LOCAL'})-[*1..]->
  (g:Group {name:'DOMAIN ADMINS@CORP.LOCAL'})
) RETURN p

// מי מחזיק ב־DCSync על הדומיין
MATCH (n)-[:DCSync]->(d:Domain {name:'CORP.LOCAL'}) RETURN n

// יעדים ל־AS-REP Roasting
MATCH (u:User {dontreqpreauth: true}) RETURN u

// מחשבים עם Unconstrained Delegation
MATCH (c:Computer {unconstraineddelegation: true}) RETURN c

// admins על מחשב שבו יש session של Domain Admin
MATCH (da:Group {name:'DOMAIN ADMINS@CORP.LOCAL'})<-[:MemberOf*1..]-(u1:User)
      -[:HasSession]->(c:Computer)<-[:AdminTo]-(u2:User)
RETURN DISTINCT u2.name, c.name
cypher

זיהוי והגנה — BloodHound הוא גם כלי הגנתי

  • הריצו «Shortest Paths to Admins» לפני התוקף — שבירת כל מסלול (הסרת AdminTo, סיבוב סיסמה, ניתוק session מיותר) היא מיטיגציה אמיתית.
  • מצאו בלוגים בדיוק את הקשתות: איזה svc_helpdesk נכנס RDP לשרתים (4624 Type 10), מי בלי סיבה.

מיטיגציה

  • תקנו קשתות: הסירו AdminTo מיותרים, בטלו delegation מיותר, מספר קטן של holders.
  • לכל חשבון שירות עם הרשאות גבוהות — עקרון minimum, PAW לניהול, וניטור על כל שימוש.
  • חזרו לגרף אחרי התיקון ובדקו שהמסלול נעלם — הוכחה שהמיטיגציה עבדה.

בדוק את עצמך

מהו Edge ב־BloodHound?

איזו קשת מסמנת את «הפרס» המרכזי בגרף?

במסלול u1 → HasSession → WS1 → AdminTo → svc1, מה ההיגיון של המתקפה?

למה הרצת «Shortest Paths to Domain Admins» היא גם פעולת הגנה?

העמוד הזה עזר לך?