PracticU

Scapy

בלי כתוביותעם כתוביות
PracticU › קורס סייבר למתחילים - Hacking - בדיקות חוסן תשתיתי ופריצה ל-Windows 10/11 - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP › Scapy
מילון מושגים:
Python - שפת תכנות עילית וקריאה, נפוצה בפיתוח, אוטומציה, ניתוח נתונים ולמידת מכונה.
Ethernet - התקן הנפוץ לחיבור מכשירים ברשת מקומית חוטית, המגדיר כבלים, חיבורים ואופן העברת הנתונים.
ICMP - פרוטוקול לשליחת הודעות בקרה ושגיאה ברשת, המשמש בין היתר בפקודת ping.
תגובה - המידע שהשרת מחזיר ללקוח בתשובה לבקשה, הכולל בדרך כלל נתונים וקוד סטטוס.
DoS - מתקפת מניעת שירות: הצפת שירות בבקשות כדי להעמיס עליו ולמנוע ממשתמשים לגיטימיים לקבל אותו.
DHCP - פרוטוקול שמחלק כתובות IP והגדרות רשת למכשירים אוטומטית כשהם מתחברים לרשת.
כתובת MAC - מזהה ייחודי וקבוע של כרטיס רשת, המשמש לזיהוי המכשיר ברשת המקומית.
IDS - מערכת לזיהוי חדירות שמנטרת תעבורת רשת או מערכת ומתריעה על פעילות חשודה.

Scapy
השיעור מציג את Scapy, ספרייה בשפת Python שמאפשרת לבנות, לשלוח ולקרוא חבילות תקשורת ברמה נמוכה. כלי כזה משמש אנשי אבטחה לבדיקת רשתות, אבל גם תוקפים יכולים להשתמש בו, ולכן צריך להכיר אותו כדי לזהות את השימושים הפוגעניים שלו.
עקרונות ברמה מושגית
1. בניית חבילות: בכל חבילה יש שכבות של כותרות, כמו Ethernet, IP ו-ICMP, ולכל כותרת שדות שאפשר לקבוע בהם ערכים.
2. בדיקת תגובה: שליחת חבילה לא סטנדרטית ומעקב אחרי התגובה חושפים מידע על המערכת שבצד השני, למשל משפחת מערכת ההפעלה. מערכות ניטור מזהות דפוסים כאלה.
3. התקפת מניעת שירות לשרת DHCP: שליחת בקשות רבות מכתובות MAC שונות ומזויפות ממצה את טווח הכתובות שהשרת מחלק, ומונעת מלקוחות אמיתיים לקבל כתובת.
איך מגנים
1. DHCP snooping: מסננת הודעות DHCP שמגיעות מפורטים שלא אושרו.
2. Port security: מגבילה את מספר המק כתובות שמותר לכל פורט בסוויץ'.
3. הגבלת קצב: מונעת שליחת בקשות רבות בזמן קצר.
4. זיהוי חריגות: מערכות IDS מזהות חבילות לא סטנדרטיות וגלי בקשות חריגים.
בסיום השיעור יש הבנה של מה Scapy מאפשר, ושל הסימנים שמעידים על שימוש פוגעני בו ברשת.

פרקי ההרצאה: Scapy

  1. 00:00

    מה זה Scapy ואיך הוא עובד עם פייתון

  2. 00:39

    לכידת תעבורת ICMP ב-Wireshark

  3. 02:13

    מבנה חבילת ICMP Echo

  4. 03:50

    שינוי ערכי שדות בחבילה

  5. 07:08

    הכנת סביבת העבודה עם Scapy

  6. 08:39

    פקודת ls: שכבות הפרוטוקול הנתמכות

  7. 11:40

    שדות IP ו-ICMP וערכי ברירת המחדל

  8. 14:40

    אנקפסולציה: חבילה בתוך חבילה

תמלול ההרצאה: Scapy

הטקסט המלא של הדקות הראשונות בהרצאה «Scapy» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:01

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

  2. 00:13

    פייתון זו בעצם סביבת פיתוח שאפשר להתקין אותה גם על Windows, גם על Linux. וסקאפי זה כלי שנותן לנו את היכולת לפתח כלי תקיפה משלנו. מה הכוונה כלי תקיפה משלנו?

  3. 00:34

    הכוונה היא שאם אני עכשיו צריך לשלוח איזושהי חבילת תקשורת אני יכול להחליט באמצעות סקאפי מה אני כותב בכל שדה ושדה בתוך כל הדר בתוך הפריים בעצם בואו נסתכל שנייה על פריים שלחלתי באמצעות ווייר שארק בואו נפעיל את הסניפר שלנו ווייר שארק כדי לראות חבילת תקשורת שעוברת ברשת כמו שאתם

  4. 01:10

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

  5. 01:35

    ICMP למי שלא יודע זה בעצם אותו פרוטוקול שליחת הודעות באינטרנט שאחד מהאפליקציות המאוד מאוד מפורסמות שלו זה אפליקציה שנקראת פינג. זאת אומרת ברגע שאני פותח פינג אפליקציית פינג בעצם מייצרת הודעה שנקראת ICMP Echo Request, שזו בעצם הודעה מאוד מאוד ספציפית של ICMP, וכשהתשובה חוזרת, אז היא חוזרת כ-ICMP Echo Reply.

  6. 02:11

    כמו שאתם רואים, אני שולח הודעה, ובתמורה אני מקבל ממנה תשובה. שלחתי ארבע הודעות, קיבלתי ארבע תשובות. זאת אומרת, סך הכל אנחנו רואים פה שמונה פקטות.

  7. 02:21

    ארבע ריקווסטים וארבע ריפלייז. אם אני אסתכל על הודעה של ICMP Echo, נגיד ריפליי, שזו התשובה שחזרה מהשרד של גוגל, אז אני באמת רואה שברמת הכותרת של האת'רנט, אז אני רואה שיש פה כתובות Mac.

  8. 02:35

    אני רואה שברמת הכותרת של ה-IP, יש לנו פה Source IP, Destination IP. Source IP זה גוגל, Destination IP זה בעצם אני, כי זאת התשובה. אני יכול לראות פה שדה שנקרא Time-To-Live, מי שמכיר.

  9. 02:48

    שדה שנקרא Differential Services, מי שמכיר. זה פחות רלוונטי כרגע להדגמה שאני רוצה להיכנס. והנה הכותרת של ה-ICMP, שם מכילה השדה שנקרא טייפ, ICMP יוגו ריפלייז בדרך כלל חוזרים כשהטייפ הוא 0 והקוד הוא 0, זה בעצם משהו שמוגדר ב-RFC של אותו פרוטוקול, ודאטה.

  10. 03:14

    מה שבעצם קרה זה שברגע ששלחתי את הריקווסט, אז הריקווסט יצא עם איזשהו דאטה שהווינדאוס הגדיר, כמו שאתם רואים זה פשוט כל האותיות מ-a עד z, ואחרי זה עוד פעם a עד משהו.

  11. 03:29

    אז ווינדוס בעצם שלח 32 בייטים, 32 אותיות של מידע, ובתשובה אני בעצם קיבלתי את אותו דאטה חזרה, מה שזה בעצם אומר זה שיש לי קו פתוח ונקי אל השרת וחזרה אליי.

  12. 03:44

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

  13. 03:56

    למשל, אני יכול לרשום ב-time to leave ערך אחר, גבוה יותר מ-128 נמוך יותר אני יכול למשל לרשום בתוך הכותרת של ICMP פתאום קוד שלא קוד שאמור להופיע פה למשל במקום קוד 0 קוד 70 מה שאני בעצם יכול לעשות עם זה אני יכול לשלוח הודעת ICMP לאיזשהו מחשב לקבל את התשובה

  14. 04:22

    אני יכול לשלוח לו הודעה שלא מתאימה למה שהפרוטוקול בעצם מתאר ואז לפי התשובה לנסות להבין איזה מערכת הפעלה נמצאת שם, זה שימוש אחד.

  15. 04:35

    שימושים אחרים יכולים להיות למשל denial of service, זאת אומרת אני יכול לשלוח הודעה שתגרום לשרת בצד השני להבין משהו לא נכון ותגרום לו לאיזושהי תקלה ואני יכול גם להשתמש בזה כדי להתחזות למישהו אחר, זאת אומרת תראו לכם מה קורה אם במקום לרשום בסורס מאק את המאק שלי אני רושם פה את הסורס מאק של מחשב שנמצא לידי,

  16. 04:58

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

  17. 05:13

    מה שאנחנו רואים כאן זה שקף שמראה לנו תשובות סטנדרטיות של מערכות הפעלה נפוצות לפקטות שהן לא סטנדרטיות. מה הכוונה פקטות לא סטנדרטיות? למשל, אני יכול לשלוח הודעת ICMP אקוור ריקווייסט כששדה הקוד שונה מ-0, אם קיבלתי תשובה כשהקוד שונה מאפס אני יודע שמדובר במשפחת מערכות הפעלה שהיא לא Windows

  18. 05:36

    ואם קיבלתי תשובה כשהקוד כן שווה לאפס אני כן יודע שמדובר במשפחת Windows מה שזה בעצם אומר לי זה בעצם נותן לי רמז לגבי מה אני צריך לעשות בשלב הבא זאת אומרת אם אני צריך עכשיו לקחת מתקפות שאני מכיר שWindows פגיע אליהן או אולי דווקא ללכת על מתקפות שאני יודע שמערכות לינוקס, יוניקס פגיעות אליהן אחרי שאני יודע שמדובר במערכת הפעלה

  19. 06:00

    Windows מה שאני צריך לדעת עוד יותר זה אולי איזה גרסה נמצאת שם. אז גם בשביל זה יש לנו איזשהו טסט שאפשר לבצע באמצעות ICMP.

  20. 06:10

    הטסט הזה בעצם אומר תשלח הודעה של ICMP time stamp request שזה פשוט הודעה של ICMP שהיא לא הודעת אקו. זאת אומרת זו לא הודעה שאפשר לייצר אותה באמצעות פינג אלא הודעה שאנחנו צריכים לבנות אותה לבד.

  21. 06:23

    ואם אני מקבל תשובה אז אני מבין שמדובר במשפחה הזאת 98 מי או 2000? ואם אני לא מקבל תשובה אני מבין שמדובר במשפחה הזאת.

  22. 06:31

    95 או nt שימו לב שבסופו של דבר אנחנו יכולים לדעת בוודאות די גדולה באיזה מערכת הפעלה מדובר בצד השני אז בואו ניגש לראות את סקאפי עצמו דבר ראשון מה שאני רוצה לעשות אני רוצה לנקות את הווייר שארק כדי שתהיה לי לכידה נקייה אז אני בעצם לחצתי פה על הכפתור של הסטופ ואני אלחץ עוד פעם על הכפתור של הסטארט

  23. 06:58

    אני לא רוצה כרגע לשמור את מה שלחלתי לתוך קובץ אז אני אומר לו continue without saving ושוב אני מסנן את הלכידה שלי לפרוטוקול ICMP. עכשיו אני עובר למכונה וירטואלית שהקמנו מראש שנקראת Backtrack 5. מי שלא מכיר Backtrack זאת בעצם גרסה של לינוקס מבוססת על מהדורה שנקראת אובונטו שהיא מגיעה בילט אין עם כל מיני כלי תקיפה לצורך בדיקות

  24. 07:31

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

  25. 07:57

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

  26. 08:19

    למה אני חייב לפתוח סוגריים ולפתור סוגריים, ולסגור סוגריים? מהסיבה שסקאפי, שמשתמש בפייתון, עובד על מה שנקרא פונקציות. פונקציה זה בעצם פקודה שאני חייב לפתוח אותה, לכתוב אותה עם פתיחת סוגריים וסגירת סוגריים, כי בתוך הסוגריים האלה אמורים לבוא גם פרמטרים.

  27. 08:38

    הפקודה quit לא מקבלת פרמטרים ולכן אפשר להוריד אותה סתם כך. נכתוב סקאפי עוד פעם וניכנס שוב לתוך סקאפי. אחרי שנמצא בתוך סקאפי בואו נראה מה סקאפי יודע לעשות.

  28. 08:52

    דבר ראשון אני רוצה לראות לכם פונקציה שנקראת ls אז כמו שאר הפונקציות בפייתון אנחנו צריכים להוסיף פתח סוגריים סגור סוגריים ואם היו פרמטרים היינו כותבים גם פרמטרים.

  29. 09:03

    מה שאני רואה כתוצאה מפונקציית ה-ls אני בעצם רואה רשימה של הדרים שסקאפי יודע לעבוד איתם. שימו לב שכל הדברים הבסיסיים, מי שמכיר קצת תקשורת בסיסית, יכול לזהות פה דברים שהוא אולי מכיר, כמו UDP, TCP, TFTP.

  30. 09:21

    אני מחזיק כרגע קונטרול ואני לוחץ על Page App, Shift Page App, ואני רואה עוד הדרים שהסקאפי יודע לעבוד איתם.

  31. 09:32

    זאת אומרת, בסקאפי יש תמיכה מובנית בהדרים של RIP, שזה פרוטוקול ניתוב, RadioTap, שזה פרוטוקול שהוא כמו האתרנט לצורך העניין של Wi-Fi.

  32. 09:43

    זאת אומרת, זה הפרוטוקול החיצוני ביותר שבו נעדפות פקטות של Wi-Fi. שיפט פייג'אפ, אני עולה עוד, ועוד, ועוד, ועוד, ואני רואה פה למשל קצת פרוטוקולים שמתחילים ב-I, ואני מגיע גם לדוגמה ל-IP.

  33. 09:58

    זאת אומרת, זה ה-IP שאנחנו מכירים, וגם IP וירג'ן 6. אוקיי, חץ למעלה אני חוזר חזרה לפקודה האחרונה שהרצתי, וזו בעצם הפקודה ה-LS.

  34. 10:08

    אם אני רוצה לראות את השדות שסקאפי יודע להגדיל עבור פרוטוקול IP אז אני כותב ls ובתוכו אני כותב את הפרמטר IP. איך אני יודע שאני חייב לכתוב IP עם אותיות גדולות ולא עם אותיות קטנות?

  35. 10:25

    מהסיבה שראיתי ב-LS שככה זה היה רשום. זאת אומרת אם ב-LS אני רואה שהשם של ההדר הוא באותיות גדולות אני חייב לרשום כל פעם שאני פונה אליו את השם של ההדר הזה באותיות גדולות.

  36. 10:37

    זאת אומרת סקאפי הוא k-sensitive. אנחנו רואים שבתוך הכותרת של IP סקאפי יודע לקבל את הפרמטרים הבאים ורז'ן שהערך הדיפולטיבי שלו הוא 4. טייפ אוף סרוויס שהערך הדיפולטיבי שלו הוא 0. אני גם יכול לראות שהסוג של השדה הזה הוא שדה של באורך בית.

  37. 11:01

    אני יכול להסתכל פה ולראות שיש שדה שנקרא TTL מה שראינו גם מקודם time to live זה השדה שאומר כמה ראוטרים הפקטה יכולה לקפוץ עד שהיא מגיעה ליעד.

  38. 11:13

    ה-TTL הדיפולטיבי של סקאפי הוא 64 כיאה למערכת לינוקסית ו-source ו-destination שזה בעצם כתובות הIP. יש פה שדות נוספים אבל אנחנו לא נתמקד בהם במהלך ההדגמה.

  39. 11:27

    דוגמא נוספת שאני יכול להסתכל זה כמובן על איזה כותרות יש ל-ICMP, או איזה שדות יש ל-Header של ה-ICMP. אז כמו שאתם רואים ל-ICMP יש שדה שנקרא טייפ, שדה שנקרא קוד, שדה שנקרא צ'קסאם, כאשר הטייפ והקוד זה בעצם סוג ההודעה.

  40. 11:47

    שימו לב שהערכים הדיפולטיביים שהשדה של הטייפ מקבל הוא 8 והשדה של הקוד מקבל הוא 0. זאת אומרת, זאת הודעת ICMP אקו ריקווסט סטנדרטית.

  41. 11:58

    מה שאני רוצה עכשיו, אני רוצה לבנות פקטה שמכילה ברמה האמצעית שלה IP וברמה העליונה שלה ICMP. איך אני עושה את זה? אני אשתמש בפונקציה שהיא בשם של ה-header.

  42. 12:14

    זאת אומרת, ברגע שאני כותב IP, פתח סוגריים, סגור סוגריים, אני מייצר פקטה חדשה של IP. שימו לב שהוא מייצר לי פקטה ריקה ומציג לי אותה על המסך כי לא אמרתי לו עדיין מה אני רוצה לעשות איתה.

  43. 12:29

    אם בתוך הפקטה הזאת, הרי זאת פונקציה, הייתי כותב למשל dst=192,168,141,131, שזה בעצם הכתובת ה-IP של תחנת Windows 8, ולמשל הייתי רושם ttl=254, הוא היה מייצר לי כותרת חדשה של IP עם השדות שכרגע הגדרתי.

  44. 12:59

    הכותרות האלה בעצם לא אומרות לנו יותר מדי כרגע, כי אנחנו עדיין לא יכולים להשתמש בהן. מה שאנחנו צריכים לעשות זה לאחסן אותם בתוך משתנה. אתם יכולים לקרוא למשתנה הזה איך שאתם רוצים, אני קורא לו foo.

  45. 13:13

    זאת אומרת, אני פשוט אעשה פה חץ למעלה כדי להגיע לכתובת האחרונה שכתבתי, ואני מוסיף פה foo שווה IP. שימו לב שהפקודה שהרצתי עכשיו שונה מהפקודה שהרצתי מקודם מהסיבה שלא קיבלתי את ההדר הזה לתוך המסך, אלא ההדר הזה נשמר בתוך foo.

  46. 13:31

    אם אני אגיד לו foo enter, הכוונה אני רוצה להדפיס את התוכן של foo, אני רואה שמה שיש פה בפנים זה בדיוק מה שהיה כמו שכתבתי מקודם פונקציה לייצור חדר חדש של ה-IP.

  47. 13:45

    אם אני כותב ls אז הוא מראה לי את זה בתצוגה קצת יותר מפורטת שבה אני יכול לראות את ה-destination שכתבתי, את ה-source שהוא כתב בעצם את עצמו כ-source, זאת אומרת זה ה-IP של המכונת לינוקס הזאת, ואת ה-TTL שביקשתם ממנו לכתוב שם.

  48. 14:11

    אני יכול כמובן לשנות כל סודות, את כל הסודות פה. זאת אומרת אם אני עכשיו רושם פו נקודה למשל טי טי אל שווה 200 אם עכשיו אני אגיד לו ls פו אז אנחנו רואים שהטי טי אל השתנה ל-200.

  49. 14:35

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

  50. 14:50

    כותרת של ICMP בדרך כלל נהטפת ברמה קצת יותר חיצונית שלה בכותרת של IP.

לקורס המלא: קורס סייבר למתחילים אונליין

ההרצאה הקודמת: הגנה מפני התקפות - DoS Attack

ההרצאה הבאה: יצירת נתב מזויף - Fake Access Point

קורסים נוספים במסלול

  • קורס SOC - מיישם הגנת סייבר
  • קורס פריצה ומבדקי חדירה לתשתית ארגונית - בדיקות חוסן מתקדמות ל-Active Directory - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס פריצה ומבדקי חדירה לאתרי אינטרנט - בדיקות חוסן לאתרים - Web Pentesting - קורס זה נדרש למבחן ההסמכה היוקרתי OSCP
  • קורס סייבר והאקינג ל-Android - פריצה לטלפונים ואפליקציות אנדרואיד - בודק חוסן - Mobile App Pentesting