מבוא לספריית Impacket - הבסיס לכל כלי תקיפה נגד Active Directory¶
אם תסתכלו מקרוב על רוב הכלים שבודקי חדירה משתמשים בהם נגד רשתות Windows ו-Active Directory, תגלו הפתעה - חלק גדול מהם, מתחת למכסה המנוע, בנוי על אותה ספרייה בדיוק. שמה Impacket, וזו אולי התשתית הכי חשובה ופחות מדוברת בעולם בדיקות החדירה נגד Windows.
מה זה בעצם Impacket¶
חשוב להבין קודם כל מה Impacket לא. זה לא כלי בודד עם ממשק אחד ומטרה אחת, כמו Burp Suite או Nmap. זו אוסף ספריות Python שמיישמות פרוטוקולי רשת של Windows - כמו SMB, הפרוטוקול לשיתוף קבצים, MSRPC, קריאות פרוצדורה מרוחקת, Kerberos, פרוטוקול האימות של Active Directory, ועוד. במקום להשתמש בכלים מובנים של מערכת ההפעלה כדי לתקשר עם רשת Windows, Impacket מאפשרת לכתוב קוד Python שמדבר את הפרוטוקולים האלה ישירות, ברמה נמוכה, עם שליטה מלאה על כל שדה וכל בקשה שנשלחת.
יחד עם הספריות עצמן, הפרויקט כולל עשרות סקריפטים לדוגמה שממחישים שימוש מעשי בפרוטוקולים האלה. הסקריפטים האלה, שנקראים example scripts, הם בעצם הכלים שרוב האנשים מכירים בשם Impacket, גם אם בפועל הם רק חלק קטן מהפרויקט.
כמה מהסקריפטים המרכזיים שכדאי להכיר¶
בלי להיכנס להוראות הפעלה, שווה להכיר ברמת העיקרון כמה מהסקריפטים המוכרים ביותר, כי הם מייצגים סוגי פעולות שונים לגמרי:
- secretsdump.py - סקריפט שמאפשר לשלוף hashes של סיסמאות ממחשב או מבקר תחום, domain controller, כשיש לכם כבר הרשאות מתאימות. זה כלי מרכזי בשלב שבו מנסים להעריך עד כמה שימוש חוזר בסיסמאות מסוכן ברשת ספציפית.
- psexec.py - מימוש מחדש ב-Python של הרעיון הקלאסי מאחורי הכלי הרשמי PsExec של מיקרוסופט, הרצת פקודות מרחוק על מחשב, כשיש אישורים תקפים.
- GetUserSPNs.py - סקריפט שמחפש חשבונות שירות, service accounts, ברשת שפגיעים למתקפה שנקראת Kerberoasting, שבה משיגים חלק מוצפן שקשור לחשבון ומנסים לפצח אותו במצב offline.
כל אחד מהסקריפטים האלה מדגים בעצם שימוש שונה באותה תשתית פרוטוקולים, וזו בדיוק הנקודה. הם לא כלים נפרדים במקרה, הם כולם מדברים באותה "שפה" של Impacket מתחתיהם.
למה זו תשתית שכלים רבים אחרים בנויים עליה¶
הסיבה ש-Impacket כל כך משמעותית היא שהיא לא רק אוסף סקריפטים, היא תשתית שכלים מוכרים רבים אחרים משתמשים בה, ישירות או בעקיפין, כדי לממש תקשורת עם רשתות Windows. במקום שכל כלי Python חדש שרוצה לדבר עם SMB או Kerberos יצטרך לממש את הפרוטוקולים האלה מאפס, הוא פשוט משתמש בספריות של Impacket. זו הסיבה שכשלומדים להבין את Impacket לעומק, מקבלים בעצם הבנה שמשרתת גם בכלים אחרים רבים בעולם התקיפה נגד Active Directory, לא רק בסקריפטים שנושאים את השם הזה במפורש.
למה זה חשוב גם לצד ההגנה¶
מכיוון ש-Impacket מיישמת את הפרוטוקולים ברמה נמוכה ובאופן ידני, לפעמים היא לא מתנהגת בדיוק כמו הכלים המקוריים של מיקרוסופט - למשל, סדר שדות מסוים בבקשה, או שימוש בשם משתמש שלא אופייני ללקוחות Windows רגילים. תבניות כאלה, כשמזהים אותן ברישומי רשת או לוגים, יכולות לשמש כאינדיקטור לזיהוי שימוש בכלים מבוססי Impacket, גם אם לא ברור בדיוק איזה סקריפט ספציפי הופעל. זו הסיבה שצוותי הגנה שמכירים את הספרייה הזו ברמה הבסיסית, לא רק את שמות הסקריפטים, מצליחים לבנות כללי זיהוי מדויקים יותר, שמתבססים על ההתנהגות הבסיסית של הפרוטוקול ולא רק על חתימות שטחיות.
בקורס בדיקות חדירה אנחנו עוברים על הכלים האלה כחלק מלימוד תקיפת Active Directory במעבדה, ומראים גם איך נראית התעבורה שהם מייצרים מנקודת המבט של צוות הגנה שמנטר את הרשת.
לסיכום¶
Impacket היא דוגמה מצוינת לזה שהכלים הכי משפיעים בעולם בדיקות החדירה הם לא תמיד אלה עם הממשק הכי נוצץ. זו תשתית שקטה שרוב הכלים המוכרים נגד Active Directory נשענים עליה, ומי שמבין אותה לעומק, מבין בעצם את השפה הבסיסית שכל כלי אחר בתחום מדבר בה.