Punycode והומוגרפים: כשדומיין מזויף נראה כמו האמיתי
הסתכלו על שתי הכתובות האלה: paypal.com ו-pаypal.com. זהות? לעין שלנו, כן. למחשב, ממש לא: בשנייה, ה-«а» השנייה היא אות מהאלפבית הקירילי, לא «a» לטינית. אלה שני דומיינים שונים, שיכולים להיות שייכים לשני אנשים שונים. זה העיקרון של מתקפות הומוגרפים, וכדי להבין אותן צריך לעשות סיבוב קצר בדרך שבה האינטרנט כותב שמות.
Unicode, ASCII ו-Punycode: שלוש מילים, רעיון פשוט אחד
במקור, שמות דומיין קיבלו רק אלפבית קטנטן שנקרא ASCII: האותיות הלטיניות a עד z בלי סימנים, ספרות ומקף. בלי «é», בלי «ü», ובוודאי שבלי עברית, ערבית, סינית או קירילית.
אבל העולם כותב בעשרות כתבים. Unicode הוא הקטלוג הגדול שנותן מספר לכל תו בכל כתב: ל-«a» הלטינית מספר U+0061, ול-«а» הקירילית מספר U+0430. אותה צורה, מספרים שונים.
כדי לאפשר שמות דומיין בכל השפות בלי לשנות את כל הרשת, הומצא מתרגם: Punycode. הוא הופך שם שנכתב ב-Unicode לשם שמשתמש רק באלפבית ASCII, ומסמן אותו בקידומת xn--. הדפדפן מציג את הגרסה היפה; הרשת רואה רק את הגרסה המתורגמת.
איך עובד דומיין «xn--»
ניקח דוגמה הגונה לגמרי: הדומיין הצרפתי société.fr («חברה»). הרשת לא יודעת לקרוא «é». Punycode מניח בצד את האותיות המיוחדות, משאיר את הרגילות ומוסיף בסוף קוד קטן שאומר איפה להחזיר את הסימנים:
société.fr → xn--socit-esab.fr
רואים את «socit» (האותיות הרגילות), ואחריו «esab», הקוד שמציין אילו תווים להכניס ואיפה. הקידומת xn-- רק מזהירה: «שימו לב, השם הזה תורגם». מיליוני שמות לגיטימיים עובדים כך, בגרמנית, בערבית, בסינית, ברוסית וגם בעברית. לכן xn-- אינו חשוד כשלעצמו. הוא נעשה חשוד כשהוא מחקה מותג מוכר.
מתקפות הומוגליפים: התאומים המזויפים
הומוגליף הוא תו שנראה כמעט זהה לתו אחר. ויש ב-Unicode המון כאלה: ה-«а», «е», «о», «р» ו-«с» הקיריליות הן כפילות מושלמות של a, e, o, p ו-c הלטיניות. ה-«ο» היוונית מחקה את «o».
הנוכל קונה דומיין שבו אות אחת או יותר הוחלפו בכפיל שלהן. ב-2017 חוקר הדגים זאת בצורה מרשימה: הוא רשם את xn--80ak6aa92e.com, שנכתב аррӏе.com באותיות קיריליות בלבד, וכמה דפדפנים גדולים הציגו אז פשוט «apple.com» בשורת הכתובת. מאז הדפדפנים תיקנו את המקרה הזה.
למה הכתובת יכולה להיראות לגיטימית
דפדפנים מודרניים מפעילים כללי זהירות: כששם מערבב כתבים בצורה חשודה, או דומה מדי לדומיין מוכר, הם מציגים את צורת ה-xn-- במקום הגרסה היפה. זו הגנה טובה, אבל יש לה גבולות:
- מחוץ לשורת הכתובת הכללים האלה לא תמיד חלים: בטקסט של הודעת דוא״ל, SMS, קובץ PDF או אפליקציית מסרים, הגרסה «המחופשת» מוצגת כמו שהיא;
- הכללים משתנים מדפדפן לדפדפן, מגרסה לגרסה ומאפליקציה לאפליקציה;
- מבט חטוף במסך קטן לא מבחין בין שני תווים זהים. ולא תמיד צריך Unicode:
rnמחקהm, 1מחקהl, כפי שמסביר המדריך פישינג: איך נוכלים מצליחים להעביר את ההודעות שלהם.
וכמו בכל דומיין מלכודת, לאתר יכולים להיות תעודת HTTPS תקפה ומנעול יפה: הם מוכיחים שהחיבור מוצפן, לא שהאתר הגון.
איך באמת בודקים דומיין
כשיש ספק, לא סומכים על מה שרואים: גורמים לשם האמיתי לדבר.
- לא לוחצים. מעתיקים את הקישור (לחיצה ימנית, «העתקת כתובת הקישור»).
- מדביקים אותו בממיר Punycode (יש הרבה, חינמיים, ברשת): אם מופיעה צורת
xn--לשם שאמור להיות רגיל לגמרי, זו מלכודת. - מבודדים את הדומיין: החלק שממש לפני ה-«/» הראשון. המדריך קווישינג: כשהפישינג מסתתר מאחורי קוד QR מפרט את הקריאה הזאת.
- הולכים בדרך בטוחה: סימנייה ששמרנו בעצמנו או האפליקציה הרשמית. גם מנהל סיסמאות עוזר: הוא לא מתבלבל בגלל כפיל ולא מציע כלום בדומיין מזויף.
Baitback עושה חלק מהעבודה הזאת אוטומטית: כשמדביקים בו הודעת דוא״ל, הוא מסמן קישורים ב-Punycode (צורת xn--) ודומיינים שמחקים מותגים שהוא מכיר, כולל באמצעות הומוגליפים, ובודק גם את היעד הסופי אחרי ההפניות.
לזהות את הרשם ואת ספק האחסון
כדי להעלים את הדומיין, מחפשים מי מכר אותו ומי מאחסן אותו. בכלי השאילתה משתמשים תמיד בצורת xn--: זה השם האמיתי, זה שהמרשמים מכירים.
- שאילתת RDAP או WHOIS על הדומיין נותנת את הרשם, את כתובת הדיווח שלו («abuse») ואת תאריך היצירה של הדומיין. כפיל של מותג שנוצר בשבוע שעבר לא משאיר הרבה מקום לספק.
- כתובת ה-IP של האתר מאפשרת למצוא את ספק האחסון שלו, או את ה-CDN שעומד לפניו, שגם הוא מקבל דיווחים ומעביר אותם.
הרשם הוא כאן הגורם האפקטיבי ביותר: דומיין שמחקה מותג באמצעות הומוגליפים הוא מקרה ברור מאוד של שימוש לרעה, והשעיית השם מנתקת בבת אחת את האתר, את ההודעות ואת כל הדפים הקשורים.
לדווח על הדומיין
דיווח טוב נכנס בכמה שורות: צורת ה-Unicode וגם צורת ה-xn-- של הדומיין, המותג שמחקים, הכתובת המלאה של הדף, צילום מסך, תאריך ושעה. שולחים אותו לרשם ולספק האחסון או ל-CDN, ומודיעים למותג שמחקים.
אם הדומיין הגיע בדוא״ל, מתחילים ב-Baitback: מדביקים את קוד המקור המלא של ההודעה, הכלי מוצא את השרת השולח ואת ספק האחסון שלו, מאתר את הקישורים החשודים ומכין את הודעות הדיווח. הוא גם מזכיר את הפלטפורמות של הדפדפנים (Google Safe Browsing, Microsoft, Netcraft…), שיכולות להציג אזהרה אדומה לכל המבקרים תוך שעות ספורות.
- שתי אותיות שזהות לעין יכולות להיות שני תווים שונים למחשב: זה ההומוגליף.
- Punycode מתרגם שמות ב-Unicode לצורת ASCII שמתחילה ב-
xn--. xn--אינו חשוד כשלעצמו, אבל הוא חשוד בשם שאמור להיות רגיל או שמחקה מותג.- בודקים דומיין בהעתקת הקישור, לא בהסתכלות עליו, ונכנסים דרך סימנייה או האפליקציה הרשמית.
- מדווחים לרשם עם שתי הצורות של השם: ההשעיה מנתקת הכול בבת אחת.