סמי קמקר (חוקר אבטחה מפורסם הידוע ביצירת מספר אמצעי תקיפה מתוחכמים, כמו לוגר קי במטען טלפון עם חיבור USB) הציג טכניקת תקיפה חדשה בשם "NAT slipstreaming".
ההתקפה מאפשרת, עם פתיחת דף אינטרנט בדפדפן, יצירת חיבור משרת התוקף לכל פורט UDP או TCP במערכת המשתמש הנמצא מאחורי מתרגם הכתובות. ערכת הכלים להתקפה מתפרסמת ב-GitHub.
השיטה מסתמכת על הטעיית מנגנון מעקב החיבורים ALG (Application Level Gateway) במתרגמי כתובות או חומות אש, המשמש לארגון העברת NAT של פרוטוקולים המשתמשים במספר פורטי רשת (אחד לנתונים ואחד לבקרה), כגון SIP, H323, IRC DCC ו-FTP.
ההתקפה חלה על משתמשים שמתחברים לרשת באמצעות כתובות פנימיות בטווח האינטראנט (192.168.xx, 10.xxx) ומאפשרת שליחת כל מידע לכל פורט (ללא כותרות HTTP).
כדי לבצע מתקפה, די שהקורבן יריץ את קוד ה-JavaScript שהוכן על ידי התוקף , לדוגמה, על ידי פתיחת דף באתר האינטרנט של התוקף או צפייה בפרסומת זדונית באתר לגיטימי.
בשלב הראשון, התוקף משיג מידע על הכתובת הפנימית של המשתמש, שניתן לקבוע זאת על ידי WebRTC או, אם WebRTC מושבת, על ידי התקפות Brute-Force עם זמן תגובה מדוד בעת בקשת תמונה נסתרת (עבור מארחים קיימים, ניסיון לבקש תמונה מהיר יותר מאשר עבור כאלה שאינם קיימים עקב זמן ההמתנה לפני החזרת תגובת TCP RST).
בשלב השני, קוד ה-JavaScript שבוצע בדפדפן של הקורבן מייצר בקשת HTTP POST גדולה (שאינה מתאימה לחבילה אחת) לשרת של התוקף באמצעות מספר פורט רשת לא סטנדרטי כדי ליזום את התאמת פרמטרי פיצול ה-TCP וגודל ה-MTU במחסנית ה-TCP של הקורבן.
בתגובה, שרת התוקף מחזיר חבילת TCP עם אפשרות MSS (גודל מקסימלי של קטע), אשר קובעת את הגודל המקסימלי של החבילה המתקבלת. במקרה של UDP, המניפולציה דומה, אך היא מסתמכת על שליחת בקשת TURN גדולה של WebRTC כדי להפעיל פרגמנטציה ברמת ה-IP.
«NAT Slipstreaming מנצל את הדפדפן של המשתמש בשילוב עם מנגנון המעקב אחר חיבורי Application Level Gateway (ALG) המובנה בתוך NAT, נתבים וחומות אש על ידי שרשור מיצוי IP פנימי באמצעות התקפת זמן או WebRTC, גילוי פיצול של IP ו- MTU מרוחקים אוטומטית, עיסוי גודל מנות TCP, שימוש לרעה באימות TURN, שליטה מדויקת במגבלות המנות ובלבול פרוטוקולים מפני שימוש לרעה בדפדפנים ", אמר קמקר בניתוח.
הרעיון המרכזי הוא שאם תכירו את פרמטרי הפרגמנטציה, תוכלו לשלוח בקשת HTTP גדולה, שזנבה ייכנס לחבילה השנייה . במקביל, הזנב הנכנס של החבילה השנייה נבחר כך שלא ייכללו כותרות HTTP ונקטץ לנתונים שמתאימים לחלוטין לפרוטוקול אחר שעבורו נתמכת חציית NAT.
בשלב השלישי, באמצעות המניפולציה שלעיל, קוד ה- JavaScript יוצר ושולח בקשת HTTP שנבחרה במיוחד (או TURN עבור UDP) ליציאת TCP 5060 של שרת התוקף, אשר לאחר פיצול, תחולק לשתי חבילות: חבילה עם כותרות HTTP וחלק מהנתונים וחבילת SIP תקפה עם ה- IP הפנימי של הקורבן.
המערכת למעקב אחר חיבורים במחסנית הרשת תתייחס לחבילה זו כתחילתה של סשן SIP ותאפשר העברת חבילות עבור כל פורט שנבחר על ידי התוקף, בהנחה שפורט זה משמש להעברת נתונים.
ניתן לבצע את ההתקפה ללא קשר לדפדפן בו נעשה שימוש . כדי לפתור את הבעיה, מפתחי מוזילה הציעו לחסום את היכולת לשלוח בקשות HTTP לפורטים ברשת 5060 ו-5061, המשויכים לפרוטוקול SIP.
מפתחי מנועי Chromium, Blink ו- WebKit מתכננים גם ליישם אמצעי הגנה דומה.
מקור: https://samy.pl