ככל שהשימוש בתקשורת מאובטחת הופך להיות סטנדרט בסיסי בכל אתר אינטרנט שמכבד את עצמו, הפופולאריות של מתקפת Man In The Middle הולכת ופוחתת. עם-זאת, האקרים בעלי ידע עדיין יוכלו למממש את המתקפה בעזרת מגוון שיטות, החל שימוש בהפשטת SSL ועד שימוש בdns spoofing שיפנה את המשתמש לאתר לא מאובטח, לרוב – לאתר של התוקף ומשם ייגנבו פרטיו.
גם אם לא הבנתם את המושגים האחרונים שציינתי, לא קרה כלום ובשורות הבאות אפרט הכל, מא' ועד ת'. ראשית-כל, נסביר על Man In The Middle. האדם שבאמצע זוהי מתקפה במסגרתה מיירט התוקף הודעות שנשלחות ממכשיר x ברשת למכשיר y ברשת (לרוב, הנתב), מאזין להם ולאחר מכן מעבירם ליעד המקורי – מכשיר y. תחת קטגוריית MITM כלולים מספר התקפות אפשריות, אנו נתמקד ב2 מהם: ARP spoofing וDNS spoofing.
ARP Spoofing
ע"מ שנוכל להסביר מהי מתקפת ARP spoofing, אנו צריכים להסביר קודם-כל מהו פרוטקול ARP. כשאנו שולחים הודעה ממכשיר x למכשיר y ברשת המקומית – רשת הLAN, ההודעה נשלחת לכתובת הMAC של מכשיר הy. השאלה היא, כיצד יודע מכשיר הx מהי כתובת הMAC של מכשיר הy? כיצד הוא יודע לאן לשלוח, הרי הוא קיבל בבקשת השליחה רק את כתובת הip של מכשיר היעד? עבור כך נוצר פרוטוקול ARP. במסגרת הפרוטוקול, שולח מכשיר המקור (במקרה שלנו – מכשיר הx) הודעה לכל המחשבים ברשת: "מיהו המחשב בעל כתובת הip הבאה ומהו כתובת הMAC שלו? מחשב היעד (במקרה שלנו – מכשיר הy) מזהה שהשאלה מופנית אליו ומשיב: "אני הוא מחשב בעל כתובת הip הזו וזו כתובת הMAC שלי xxxx:xxxx:xxxx:xxxx".
השאלה היא, מה אם מחשב y יפנה למחשב x מיוזמתו ויספר לו שהוא "המחשב בעל כתובת הip הזו והזו וזו כתובת הMAC שלו xxxx:xxxx:xxxx:xxxx". האם מחשב היעד יאמין לו או שמכיוון שמדובר בפנייה עצמאית של מחשב y מבלי ששאלו אותו, לא תהיה לכך התייחסות מצד מחשב הx? אז זהו, שהוא יתייחס. פרוטוקול ARP לא מחייב את שליחת המידע דווקא במסגרת מענה, אלא מאפשר לבצע אותה גם באופן עצמאי ופה טמונה הבעיה. תארו לכם שמחשב z יפנה למחשב הx ויספר לו שהוא מחשב הy (כלומר, שהוא בעל כתובת הip לגביה הופיעה השאלה וזו כתובת הMAC שלו xxxx-xxxx-xxxx-xxxx) במקרה כזה, מחשב המקור יעדכן את מחשב הz כמחשב אליו יש לשלוח את המידע של מחשב הy ובכך יגרום לגניבת כל המידע האישי של מחשב הy. בואו נתקדם עם העלילה שלב נוסף: מה יקרה אם מחשב הz לא יתחזה מול מחשב הx למחשב הy, אלא לנתב הביתי, דרכו עוברת התעבורה לאינטרנט. מה יקרה אם מחשב הz יישלח למחשב הx הודעה: "היי, אני הוא בעל כתובת הip הזו והזו (ויציין את כתובת הip של הנתב) וזו כתובת הMAC שלי". במקרה כזה, כל תעבורת האינטרנט, כולל הפרטים האישיים של מחשב הx יועברו למחשב הz.
בדיוק בשביל למנוע מתקפות מסוג זה, נוצר פרוטוקול HTTPS. הפרוטוקול מאבטח את התעבורה שעוברת דרכו ובכך מונע מהמכשיר התוקף, במקרה שלנו – מחשב הz, להצליח ולקרוא את הנתונים. אלא שלמרות שעם השנים הפך פרוטוקול HTTPS לסטנדרט שמחייב כל אתר שקצת מכבד את עצמו, עדיין ניתן למצוא לא מעט אתרים (גם ממשלתיים אגב) שמשתמשים בפרוטוקול HTTP ובכך מסכנים את פרטיות הגולשים שלהם. כמו-כן, עם השנים התפתחו טכניקות של הפשטת תעודות האבטחה בפרוטוקול HTTPS וקריאת הנתונים שלהם, בהמשך המדריך נציג את חלקם.
בואו נעשה זאת בעצמנו בעזרת Ettercap. תוכנת הEttercap היא התוכנה הפופולארית ביותר לביצוע ARP spoofing והיא תבצע לנו את הפעולות מאחורי הקלעים (תשלח הודעת ARP מזויפת בו תתחזה לנתב למחשב x, ע"מ לקבל את המידע שהעביר לאינטרנט).
"נזכיר שוב את המובן מאליו: כל החומר המוצג כאן הוא למטרות לימוד של האקינג אתי בלבד. כל שימוש לא חוקי (וכן, לעשות את זה לחבר זה לא חוקי) שייעשה בעזרת החומר הנלמד הוא על אחריותו הבלעדית של המבצע והוא ספוי לספוג עונשים כבדים, כמצויין בחוק"
הפעם לטובת ההדגמה נשתמש בkali מכיון שכנראה זו הפלטפורמה שרובכם משתמשים בה (גם אם אתם משתמשים בDebian נקי שזה האפשרות הטובה ביותר כמובן, תוכלו להתקין את התוכנה בעזרת הפקודה apt install ettercap-graphical. העיצוב מעט שונה, אך הפעולות ברובן הם אותן פעולות).
נפתח את Ettercap (בעזרת שדה החיפוש או בעזרת כתיבת הפקודה ettercap -G) ובמסך שיוצג לנו נכבה את Sniffing at startup שמשמש ללכידת מנות סתמיות (בדומה לwireshark), כך שהתוכנה תתמקד רק בביצוע ARP spoofing.
לאחר מכן, נלחץ על שדה החיפוש המופיע בראש התוכנה, בשמאל. שדה זה יסרוק אחר כל המכשירים ברשת שלנו. לחיצה על שדה הhost שלידו כבר תציג לנו את כל המכשירים הפעילים ברשת שלנו שנמצאו בסריקה, לצד כתובת הip וכתובת הMAC שלהם.
כעת אנו צריכים לבחור מיהו מחשב היעד עליו נבצע את המתקפה. ישנם מגוון דרכים לזהות את מחשב היעד מתוך רשימת המכשירים שמופיעים לנו גם אם אתם לא יודעים מהי כתובת הIP שלו. הנה דרך אחת שתתאים לכם גם אם אתם ללא ידע טכני רחב: כתובת MAC מורכבת מ2 חלקים של 24 ביט, סה"כ 48 ביט, כאשר כל חלק מורכב משלוש זוגות של שתי ספרות הקס-דצימלית. החלק הראשון בכתובת הוא המזהה של החברה שייצרה את כרטיס הרשת והחלק השני הוא המזהה של המכשיר הספציפי. אם אתם יודעים מיהי החברה שייצרה את כרטיס הרשת במכשיר היעד, פשוט בדקו האם המספר הסידורי שפותח את כתובת הMAC (ששת הספרות הראשונות) זהה למספר הסידורי המייצג את החברה. תוכלו לבדוק זאת כאן.
נבחר בIP הרלוונטי ונבחר בadd to target 1. לאחר מכן נלחץ על options, נבחר בarp snoofing, כאשר בתיבה שתיפתח לנו נסמן את sniffe remote conections. לאחר שביצענו את כל התהליך הטכני, נבצע את המתקפה בפועל בעזרת לחיצה על סימון הstart שבראש התוכנה, משמאל.
כעת היכנסו למחשב אותו תקפתם, והזינו שם משתמש וסיסמא באתר לא מאובטח. קיימים אתרים רבים המאפשרים הזנת פרטים תחת פרוטוקול HTTP בדיוק בשביל מטרות כאלה, של לימוד האקינג אתי ואנו נשתמש באחד מהם, בכתובת http://testphp.vulnweb.com/login.php.
נזין את שם המשתמש test ואת הסיסמא test והנה, התחברנו לחשבון.
כעת אם ניכנס לettercap שלנו במכשיר התוקף, נראה שמופיעים לנו השם משתמש והסיסמא שהזנו באתר במכשיר השני – test וtest.
הכל טוב ויפה, אבל עד כמה שמרבית האתרים משתמשים בHTTPS, האפקטיביות של שימוש בARP spoofing ללא כלים נוספים הופכת לפחות ופחות משמעותית. לבעיה זו קיימים מספר פתרונות, הבולט מבניהם הוא הפשטת ssl. כלומר: הפשטת תעודת האבטחה של האתר המשתמש בHTTPS והפיכתו לאתר HTTP ביחס ליעד, כך שבכל זאת – הנתונים שהיעד יאזין באתר שלכאורה אמור להיות מאובטח יוצגו לנו. במדריך זה לא אציג את הדרך לבצע הפשטת ssl, שכן יש שיטות רבות לביצוע הפעולה הזו וההעדפה שלי היא לציין את כל האפשרויות הבולטות במדריך נפרד שאפרסם בשבועות הקרובים בע"ה. מה שכן אדגים במדריך זה, זהו שימוש בDNS spoofing, גם – כדרך נפרדת לגניבת מידע וגם כפתרון לבעיית האבטחה שמונעת את מימושה של מתקפת ARP spoofing.
DNS spoofing
dns (ר"ת של domaion name server) זהו פרוטוקול שנועד עבור תרגום כתובות הip של אתרי האינטרנט לכתובות טקסט קריאות, כאלה שנוכל לזכור ולהשתמש בהן. לדוגמא, כתובת הIP של הבלוג שלי היא 172.67.147.194, כשאני פונה לנתב ומבקש מידע מהשרת של הבלוג, אני פונה אליו בבקשה לקבל מידע מכתובת הIP שציינתי למעלה, לא מcyber-eliya.com. אבל הרי כתבתי בשורת הכתובות cyber-eliya.com? פה נכנס שרת הdns. שרת זה מתרגם לנתב את הכתובת הטקסטואלית cyber-eliya.com לכתובת הip של האתר ובכך מאפשר את יצירת התקשורת. אם עדיין לא הבנתם בדיוק מה תפקידו של הDNS, תדמו את זה לאנשי הקשר בטלפון שלכם. כמו שבטלפון שלכם, כאשר אתם רוצים לדבר עם חבר שלכם, נקרא לו צחי לצורך הדוגמא, אתם לא בהכרח זוכרים את מספר הטלפון שלו, אלא מחפשים באנשי הקשר "צחי האח" ומתקשרים. אתם לא מתקשרים לשם "צחי האח" אלא למספר הטלפון שמאחורי השם. כך גם כאן, אתם לא מתקשרים לcyber-eliya.com, אלא לכתובת הip שמאחורי האתר.
DNS spoofing זוהי מתקפה במסגרתה התוקף מערים על שרת הDNS של היעד ומטעה אותו ביחס לכתובת הip של אתר האינטרנט. לדוגמא, אתם רוצים לגלוש בפייסבוק ומזינים בשורת הכתובות, את הכתובת www.facebook.com. כששרת הDNS יבוא לתרגם את הכתובת, התוקף יערים אליו ויספר לו שכתובת הIP של פייסבוק היא למעשה כתובת הIP שלו (של התוקף). ממילא, שרת הDNS ינתב אתכם לאתר האינטרנט של התוקף, תחת הURL של פייסבוק. התוקף יכול לגרום לכם להזין באתר זה מידע אישי או אפילו ליצור חיקוי אחד לאחד של אתר facebook המקורי, שבפועל יעביר אליו את המידע האישי שלכם. לכם לא יהיה שום חשש: אתם גולשים באתר שנראה כמו facebook תחת הurl של facebook, מה כבר יכול להשתבש? אז זהו, שהמון.
זהו, לאחר ההסבר התיאורטי. הגיע הזמן להיכנס לראש של התוקף ולתקוף את עצמנו בdns spoofing.
ראשית-כל, נבחר בעת כניסה לאלו אתרים אנו רוצים להפנות את התוקף לאתר הזדוני שלנו ונציין אותם במסמך הdns של ettercap שמאוחסן בetc/ettercap/.
נבצע את הפקודה הבאה (אני משתמש בעורך vim. אם אתם מתחילים בתחום ופחות מכירים את לינוקס, השתמשו בleafpad או בnano ושנו את vi לאחד משני השמות הללו):
sudo vi /etc/ettrcap/etter.dns
שימו לב להשתמש בsudo. עריכה של מסמך זה, כמו השימוש בettercap באופן כללי דורשת הרשאות מנהל. אחרת, לא נוכל לבצע דבר.
כעת נקבע חוק חדש במסמך ונציין שכתובת הIP של google, היא למעשה כתובת הIP שלנו (נוכל לברר מהי כתובת הip שלנו בעזרת פתיחת חלון טרמינל נוסף עם ctrl + alt+ t וכתיבת הפקודה sudo ifconfig):
google.com A 192.168.150.20.*
google.com A 192.168.150.20
נבצע שמירה של המסמך: בvim בעזרת !wq:, בnano בעזרת ctrl + x + y, בleafpad בעזרת ctrl + c.
רגע לפני שנעבור למתקפה עצמה, נבצע שלב נוסף והוא הפעלת אתר האינטרנט שלנו שממוקם ב/var/www. נזין את הפקודה sudo service apach2 start ואתר האינטרנט יופעל בהצלחה. כעת אתר האינטרנט מכיל את תבנית ברירת המחדל שלו, אך תמיד נוכל לשנות אותה כמובן וליצור אתר ממשי שיגנוב את הנתונים.
כעת נעבור להתקפה עצמה. נפתח עם הסבר לביצוע dns spoofing במנוע הגרפי של ettercap ולאחריו נסביר את הצורה הפשוטה יותר של ביצוע המתקפה, בעזרת שורת הפקודה.
ביצוע DNS spoofing במנוע הגרפי זהה כמעט לחלוטין לביצוע ARP spoofing, לחצו על סמל החיפוש, בחרו כתובת, סמנו אותה ואז לחצו add to target. אלא שהפעם, רגע לפני הלחיצה על הplay, לחצו על האפשרות plugins שמופיעה בתפריט השלוש נקודות שבצד ימין, בראש התוכנה.
כעת לחצו על על Manage plugins:
וברשימה שתיפתח לכם, בחרו ב dns_spoof ומיד לאחר מכן התחילו את המתקפה בעזרת לחיצה על play.
אם נזין כעת בשורת הכתובות את הכתובת www.google.com, נופנה ישירות לאתר שלנו. שיופיע, כאמור – תחת הכתובת המדוייקת של google.
גם אם נבצע ping לfacebook.com במחשב הנתקף, נראה שכתובת הip המזוהה היא כתובת הip שלנו.
בשורת הפקודה הפעולה פשוטה יותר ובעזרת פקודה אחת, נוכל לתקוף את כל הרשת שלנו בו זמנית וכל אחד מהמחשבים ברשת שתתבצע בו גלישה לgoogle.com, יפנה את המשתמש לאתר שלנו.
/// sudo ettercap -Tqi eth0 -P dns_spoof -M arp
הסבר לפקודה:
Tq – שימוש בeetercap במצב הטקסטואלי
i – ממשק (interface) הettercap
p- קיצור של plugin
M- – קיצור man in the middle
/// – מטרתו לממש את הפקודה על כל המחשבים ברשת
מדריך מעולה.