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) מקבל tickets שהם למעשה TGT (Ticket Granting Tickets) עבור שירותים אלה, כאשר הtickets מכילים את המידע הדרוש לשירותים כדי לבצע אימות.
כשהמשתמש מציע את הticket הזה (TGT) בשירות שמבקש, הוא יכול גם להיעזר בהצפנה AES או RC4. כל עוד הticket הזה מוצע עם הגישה הנכונה, שירותים יכולים לנצל את המידע הזה.
ההתקפה של Kerberoasting בעצם מקבלת את הtickets הללו ואז מנסה לפצח את סיסמת השירותים עליהם מבוסס ה-SPN. למעשה, התוקף מתחפש כמשתמש לגיטימי (למשל, משתמש רגיל) ושואל את ה- KDC (Key Distribution Center) עבור tickets שירות של SPN כדי לחשוף את סיסמתם.
הכנה והבנת התהליך¶
על מנת להבין את המהלך של התקפת Kerberoasting, נתאר את השלבים העיקריים שצריך לעבור עליהם:
-
זיהוי SPN – תוקף מחפש Service Principal Names שמוגדרים ב-AD. (כלומר כל השירותים שנמצאים בAD)
-
בקשה לtickets – התוקף מבקש tickets TGT משירותי ה- SPN שמצא.
-
הcracking סיסמאות – התוקף פותח את הtickets שנשארו עליו מבלי הצפנה או באלגוריתמים שניתן לפצח (למשל, RC4 או AES).
-
שימוש בסיסמאות – ברגע שהתוקף מצליח למצוא את הסיסמה של שירותי ה- SPN, הוא יכול להשתמש בהן לexploit ולהתפשטות בתוך הרשת.
זיהוי 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 ולבקש tickets TGT.
בפקודה זו:
-
DOMAIN/USER: המשתמש והדומיין.
-
password: הסיסמה של המשתמש.
-
DC-IP: כתובת ה-IP של ה-DC (Domain Controller).
בקשת tickets TGT (Kerberos Tickets)¶
לאחר שזיהינו את ה-SPNs המעניינים, התוקף שולח בקשה לקבלת tickets TGT. כל ticket שנשלף מכיל את המידע המאפשר לתוקף לבצע ניתוח מתקדם ולנסות לפצח את סיסמת השירות.
הפקודה של Kerberoasting עם Impacket¶
לאחר שהשגנו את ה-SPNs, ניתן לבקש את הtickets של שירותי ה-SPN באמצעות הכלי Impacket:
בפקודה הזו, נבקש את tickets ה-TGT עבור המשתמש ששייך לשירותי ה-SPN.
הcracking סיסמאות Kerberos באמצעות Hashcat¶
לאחר שהשגנו את tickets ה-TGT, השלב הבא הוא לנסות לפצח את הסיסמה של השירות. הtickets ה-TGT הם למעשה קבצים שהכילו את המידע המוצפן, אותם ניתן לפצח בעזרת כלים כמו Hashcat או John the Ripper.
דוגמה לcracking סיסמה עם Hashcat¶
נוכל להשתמש ב- Hashcat כדי לפצח את הסיסמה שהוצגה מticket ה-TGT:
בפקודה הזו:
-
-m 13100: אלגוריתם Kerberos 5 TGS.
-
-a 0: מצב של התקפה על בסיס מילון.
-
ticketfile.hash: קובץ הticket (למשל, TGT).
-
wordlist.txt: מילון סיסמאות.
השלבים המלאים של התקפת Kerberoasting¶
השלבים לביצוע ההתקפה הם:
-
סריקת SPNs: זיהוי שירותי ה-SPN.
-
בקשה לtickets: שליחת בקשה לtickets TGT לשירותים שנמצאו.
-
הcracking סיסמאות: הcracking הtickets בעזרת כלים כמו Hashcat או John the Ripper.
-
הexploit סיסמאות: ברגע שהתוקף מוציא את הסיסמה, הוא יכול להיכנס לחשבון השירות ולנצל אותו לביצוע פעולות נוספות כמו Privilege Escalation או Lateral Movement.