6.5 תקיפת kerberoasting הרצאה
תקיפת Kerberoasting: שימוש ב-SPN Extraction¶
התקפת Kerberoasting היא אחת מהטכניקות הפופולריות ביותר בהן תוקפים משתמשים לצורך קבלת סיסמאות של משתמשים בעלי הרשאות גבוהות בסביבה של Active Directory (AD). התקפה זו מאפשרת לתוקף להוציא את סיסמאות ה- Service Principal Name (SPN) של שירותים שונים המוגדרים ב-AD, ובמקרים רבים, לסנן ולהשיג את סיסמתם של שירותי Service Accounts בעלי הרשאות גבוהות כמו SQL Servers, Exchange, ועוד.
ההתקפה היא פשוטה יחסית, אך יכולה להניב תוצאות מרשימות אם היא מיועדת לשירותים בעלי הרשאות ניהוליות. במדריך הזה, נסקור את התקפת Kerberoasting, כיצד לבצע SPN extraction, ואיך לנצל את המידע שנמצא.
מה זה Kerberoasting?¶
ההתקפה מבוססת על פגיעות בפרוטוקול Kerberos של מערכת Windows. בפרוטוקול זה, כל שירות (למשל, שירותי SQL, IIS, Exchange) מקבל כרטיסים שהם למעשה TGT (Ticket Granting Tickets) עבור שירותים אלה, כאשר הכרטיסים מכילים את המידע הדרוש לשירותים כדי לבצע אימות.
כשהמשתמש מציע את הכרטיס הזה (TGT) בשירות שמבקש, הוא יכול גם להיעזר בהצפנה AES או RC4. כל עוד הכרטיס הזה מוצע עם הגישה הנכונה, שירותים יכולים לנצל את המידע הזה.
ההתקפה של Kerberoasting בעצם מקבלת את הכרטיסים הללו ואז מנסה לפצח את סיסמת השירותים עליהם מבוסס ה-SPN. למעשה, התוקף מתחפש כמשתמש לגיטימי (למשל, משתמש רגיל) ושואל את ה- KDC (Key Distribution Center) עבור כרטיסי שירות של SPN כדי לחשוף את סיסמתם.
הכנה והבנת התהליך¶
על מנת להבין את המהלך של התקפת Kerberoasting, נתאר את השלבים העיקריים שצריך לעבור עליהם:
-
זיהוי SPN – תוקף מחפש Service Principal Names שמוגדרים ב-AD. (כלומר כל השירותים שנמצאים בAD)
-
בקשה לכרטיסים – התוקף מבקש כרטיסי TGT משירותי ה- SPN שמצא.
-
פיצוח סיסמאות – התוקף פותח את הכרטיסים שנשארו עליו מבלי הצפנה או באלגוריתמים שניתן לפצח (למשל, RC4 או AES).
-
שימוש בסיסמאות – ברגע שהתוקף מצליח למצוא את הסיסמה של שירותי ה- SPN, הוא יכול להשתמש בהן לניצול ולהתפשטות בתוך הרשת.
זיהוי SPN ב-Active Directory¶
השלב הראשון בהתקפת Kerberoasting הוא זיהוי SPNs ב-Active Directory. ניתן לבצע זאת בעזרת כלי PowerShell או כלים אחרים כמו KerberosRoast ו- Impacket.
הפקודה PowerShell לזיהוי SPN¶
כדי לחפש SPNs בסביבה של Active Directory, נוכל להשתמש בפקודת PowerShell:
הפקודה תציג את כל המשתמשים ב-AD, ויחד איתם את ה-SPN של כל שירות.
כלים נוספים¶
ישנם כלים נוספים שניתן להשתמש בהם, כמו:
-
KerberosRoast (כלי Python לביצוע Kerberoasting)
-
BloodHound (כדי למצוא SPNs ב-AD)
-
Impacket’s GetNPUsers (לזיהוי SPNs)
דוגמה עם Impacket¶
אחד הכלים הפופולריים ביותר בשימוש לניהול התקפות Kerberoasting הוא Impacket. הכלי מספק סקריפטים שמאפשרים לשלוף את ה-SPNs ולבקש כרטיסי TGT.
בפקודה זו:
-
DOMAIN/USER: המשתמש והדומיין.
-
password: הסיסמה של המשתמש.
-
DC-IP: כתובת ה-IP של ה-DC (Domain Controller).
בקשת כרטיסי TGT (Kerberos Tickets)¶
לאחר שזיהינו את ה-SPNs המעניינים, התוקף שולח בקשה לקבלת כרטיסי TGT. כל כרטיס שנשלף מכיל את המידע המאפשר לתוקף לבצע ניתוח מתקדם ולנסות לפצח את סיסמת השירות.
הפקודה של Kerberoasting עם Impacket¶
לאחר שהשגנו את ה-SPNs, ניתן לבקש את הכרטיסים של שירותי ה-SPN באמצעות הכלי Impacket:
בפקודה הזו, נבקש את כרטיסי ה-TGT עבור המשתמש ששייך לשירותי ה-SPN.
פיצוח סיסמאות Kerberos באמצעות Hashcat¶
לאחר שהשגנו את כרטיסי ה-TGT, השלב הבא הוא לנסות לפצח את הסיסמה של השירות. כרטיסי ה-TGT הם למעשה קבצים שהכילו את המידע המוצפן, אותם ניתן לפצח בעזרת כלים כמו Hashcat או John the Ripper.
דוגמה לפיצוח סיסמה עם Hashcat¶
נוכל להשתמש ב- Hashcat כדי לפצח את הסיסמה שהוצגה מכרטיס ה-TGT:
בפקודה הזו:
-
-m 13100: אלגוריתם Kerberos 5 TGS.
-
-a 0: מצב של התקפה על בסיס מילון.
-
ticketfile.hash: קובץ הכרטיס (למשל, TGT).
-
wordlist.txt: מילון סיסמאות.
השלבים המלאים של התקפת Kerberoasting¶
השלבים לביצוע ההתקפה הם:
-
סריקת SPNs: זיהוי שירותי ה-SPN.
-
בקשה לכרטיסים: שליחת בקשה לכרטיסי TGT לשירותים שנמצאו.
-
פיצוח סיסמאות: פיצוח הכרטיסים בעזרת כלים כמו Hashcat או John the Ripper.
-
ניצול סיסמאות: ברגע שהתוקף מוציא את הסיסמה, הוא יכול להיכנס לחשבון השירות ולנצל אותו לביצוע פעולות נוספות כמו Privilege Escalation או Lateral Movement.