זיוף כתובת MAC וביצוע MITM

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

נושא ראשון: כתובות MAC וזיוף שלהן
כתובת הIP המוכרת לנו היא כתובת לוגית: היא מיוצרת בתוכנה ומוקצה למחשב בדרכים שונות. אך על מנת לתקשר עם המחשב צריך כתובת קבועה מראש לכל מחשב על מנת שידע שפונים אליו.
כאשר רוצים לתקשר עם מכשיר ברשת מקומית על המכשיר לדעת שפונים אליו. לכן לכל כרטיס רשת יש כתובת קבועה ויחודית שנקראת כתובת MAC שצרובה בחומרה. בחלק מהכרטיסים ניתן להחליף את כתובת הMAC בכתובת אחרת, כך ניתן להתחזות למחשב אחר ברשת (MAC Spoofing). בחלונות ניתן להגדיר את כתובת הMAC של כרטיס הרשת שלכם (בהנחה שהכרטיס תומך בזה) דרך הגדרות כרטיס הרשת. בלינוקס משתמשים בפקודה ifconfig:
קוד:
$ ifconfig eth0 down hw ether 00:11:22:33:44:55:66
$ ifconfig eth0 up
כאשר 00:11:22:33:44:55:66 היא הכתובת החדשה. בכל מקום של שתי ספרות ניתן להכניס מספרים הקסהדצימליים מ00 עד FF (זה יוצא כתובת של 48 ביט).
כך אם חדרנו לרשת של ארגון נוכל להגדיר אצלינו את הIP שלו ואת הMAC שלו ולבצע על המכונה האמיתית התקפת DOS. אם הצלחנו להפיל בהצלחה את המחשב ונכנסנו באותו זמן עם הIP והMAC שלו לאף אחד ברשת אין אינדיקציה שקרה משהו, כי המחשב מבחינת שאר הרשת עדיין למעלה. אם המחשב המדובר הוא לדוגמא שרת VPN נוכל לגנוב סיסמאות של משתמשים שמתחברים לארגון מהבית ולהציג הודעת שגיאה כלשהי.

נושא שני: פרוטוקול ARP וביצוע MITM ע"י זיוף חבילות ARP.
כאשר אני רוצה לתקשר עם מחשב אחר ברשת יש לי רק את כתובת הIP שלו. אני צריך דרך לגלות את כתובת הMAC שלו. בשביל זה קיים פרוטוקול ARP: Address Resolution Protocol. פרוטוקול ARP עובד בצורה הבאה.
נגיד שאני צריך את המחשב ברשת שIP שלו הוא 10.10.10.154 והIP שלי הוא 10.10.10.120 והMAC שלי הוא 00:11:22:33:44:55:66.
אני שולח הודעה לכל המחשבים ברשת (הודעת Broadcast) עם התוכן הבא:
"שלום, אם כתובת הIP שלך היא 10.10.10.154 בבקשה תשלח את כתובת הMAC שלך אלי. כתובת הIP שלי היא 10.10.10.120 וכתובת הMAC שלי היא 00:11:22:33:44:55:66"
המחשב שזה הIP שלו שולח תשובה אישית לכתובת הMAC שלי והIP שלי בסגנון הזה:
"שלום לך 10.10.10.120, כתובת הIP שלי היא 10.10.10.154 וכתובת הMAC שלי היא FF:56:47:A5:7D:EF". כך יש לשני המחשבים המתקשרים את הMAC אחד של השני. אח"כ המחשב שומר את כתובת הMAC בזיכרון וכעבור 2 דקות בערך שולח בקשת ARP נוספת במידה ולמחשב עם הIP הרצוי התחלפה כתובת הMAC (לדוגמא: הראוטר התקלקל והבאנו חדש).
ע"מ שלא יציפו את המחשב בתשובות ARP, יעמיסו את כרטיס הרשת ויתחזו לאנשים אחרים, לכל בקשה יש ID, ואם חוזרות מספר בקשות עם אותו ID הראשונה היא שתופסת ונשמרת בזיכרון.

אני מניח שחלקכם הבין עכשיו איך עובדת התקפת MITM ברשת LAN: כאשר מחשב א` שולח ARP ומבקש את מחשב ב` אני שולח תשובת ARP עם הכתובת שלי, ואחרי כמה נסיונות (ואם התוכנה שעושה את זה בנויה כמו שצריך אז בנסיון הראשון) מחשב א` יחשוב שאני מחשב ב`, ואותו דבר עושים בכיוון ההפוך. והופ. אנחנו באמצע.


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

תקישו בטרמינל או בדוס arp -a ותראו שקיבלתם טבלא עם כתובות. אם לא דיברתם בדקות האחרונות עם אף מחשב ברשת שלכם אלא רק באינטרנט מן הסתם יהיה שם רק פרט אחד: הIP של הdefault gateway שלכם ולידו כתובת הMAC של הראוטר שלכם.
עכשיו שלחו פינג למחשב אחר ברשת והקלידו שוב arp -a, ראו שהמחשב השני ברשת התווסף לרשימה. מה שקרה הוא שמאחורי הקלעים המחשב שלכם שלח בקשת ARP ברשת והמחשב האחר ברשת ענה לבקשה וכתובת הMAC שלו נכנסה לרשימה שלכם.

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

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