כותרת Penligent

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

הרעיון המרכזי: הפער הסמנטי בניתוח קישורים

בהקשר של איתור איומים מודרני, קישור עוקף אינו רק "כתובת URL מוסתרת". הוא מייצג פער סמנטי—פער בין האופן שבו סורק אבטחה (ה"צופה") מפרש URI לבין האופן שבו הדפדפן של הקורבן (ה"מבצע") מציג אותו.

התוקפים מנצלים פער זה כדי לעקוף את Secure Email Gateways (SEG), מסנני תוכן אינטרנט ומערכות Endpoint Detection and Response (EDR). המטרה היא להציג "חזות תמימה" למנתחי האוטומציה, תוך העברת "מטען זדוני" למשתמש הקצה.

שיטות התחמקות מתקדמות

1. Living off the Land (LotL) באמצעות הפניות פתוחות

תוקפים מנצלים יותר ויותר "הפניות פתוחות" (Open Redirects) בדומיינים מהימנים ביותר (למשל, Google, Microsoft או AWS).

  • הטכניקה: קישור כמו https://www.google.com/url?q=https://malicious.example עשוי לעקוף מסנני מוניטין מכיוון שהדומיין הראשי (google.com) נמצא ברשימת האישורים העולמית.
  • המעקף: המסנן מזהה דומיין מהימן; דפדפן המשתמש מבצע את ההפניה לאתר הדיוג.

2. הסתרת כתובות URL והזנת מפתחות סביבה

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

  • זיהוי בוטים/סורקים: אם הבקשה מקורה במרכז נתונים ידוע (AWS, Azure) או מכילה User-Agent מסוג "Security Scanner", השרת מחזיר 200 OK עם דף "Under Construction" תמים.
  • משלוח ממוקד: אם הבקשה תואמת לפרופיל אנושי (כתובת IP ביתית, שפת דפדפן ספציפית, טלמטריה תקפה של תנועת העכבר), היא מספקת את ערכת הדיוג.

3. ניצול הפרשי פרסר (אי-עמידה ב-RFC 3986)

ספריות שונות (Python’s urllib, Go's רשת/כתובת אינטרנט, Chrome’s מצמוץ) מפרשים כתובות URL באופן שונה.

  • CVE-2020-0696 דוגמה: באמצעות שימוש בקידודי תווים ספציפיים או תבניות URI לא סטנדרטיות, תוקפים יכולים לגרום לשער דואר אלקטרוני "לראות" דומיין אחד בזמן שהדפדפן מנווט לדומיין אחר.
מדריך הנדסת אבטחה לעקיפת קישורים והסוואה

התקפה והגנה: יישומים הנדסיים

דוגמה 1: עקיפת סורקים עם עומק מוגבל

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

התקפה: מכבסת הכספים המפנה

טקסט רגיל

קפיצה 1: מקצר כתובות מהימן (bit.ly) קפיצה 2: אתר WordPress שנפרץ (wp-admin/redirect.php) קפיצה 3: פיקסל מעקב שיווקי (ads.example.com) קפיצה 4: דף נחיתה זדוני סופי

הגנה: פיענוח מקיף של הפניות (Python)

פייתון

`ייבוא בקשות

def unravel_link(url, max_hops=10): try: # אנו משתמשים בסוכן משתמש מותאם אישית כדי לחקות דפדפן אמיתי headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64)’} response = requests.get(url, headers=headers, allow_redirects=True, timeout=5)

    hop_count = len(response.history) print(f"סה"כ קפיצות: {hop_count}") for i, hop in enumerate(response.history): print(f"קפיצה {i+1}: {hop.url} ({hop.status_code})")
        
    if hop_count > 5: return "ALERT: High-entropy redirect chain detected (Potential Laundering)" return response.url except Exception as e: return f"Error: {e}"`

דוגמה 2: זיהוי הסתרה מותנית

התוקפים מגישים תוכן שונה ל תלתל (סורקים) לעומת כרום (משתמשים).

הגנה: ניתוח תגובה דיפרנציאלית

פייתון

`def check_for_cloaking(url): # פרופיל 1: Headless/Scanner r1 = requests.get(url, headers={‘User-Agent’: ‘Security-Scanner/1.0’}) # פרופיל 2: משתמש מציאותי r2 = requests.get(url, headers={‘User-Agent’: ‘Mozilla/5.0 Chrome/120.0.0.0’})

# מדידת ההבדל הסמנטי (בדיקת אורך פשוטה או hash) diff_ratio = abs(len(r1.text) - len(r2.text)) / max(len(r1.text), len(r2.text), 1)

if diff_ratio > 0.2: # 20% הבדל בתוכן העמוד return "CRITICAL: Conditional logic (Cloaking) detected." return "Stable Content"`
מדריך הנדסת אבטחה לעקיפת קישורים והסוואה

דוגמה 3: מניעת אי-התאמה של מפרש (קנוניזציה)

התוקפים משתמשים %2e%2e/ (נקודות מקודדות) כדי לבלבל את המסננים לגבי הנתיב האמיתי אליו ניגשים.

הגנה: צינור נורמליזציה אגרסיבי

פייתון

`מ-urllib.parse ייבוא urlparse, unquote ייבוא os

def sanitize_and_canonicalize(url): # 1. Double Decode to catch nested encoding (%252e) decoded_url = unquote(unquote(url))

# 2. ניתוח ונורמליזציה של הנתיב parsed = urlparse(decoded_url) # שימוש ב-os.path.normpath כדי לפתור קטעים /../ clean_path = os.path.normpath(parsed.path) return f"{parsed.scheme}://{parsed.netloc}{clean_path}"

קלט: https://example.com/login/..%2F..%2Fadmin

פלט: https://example.com/admin`

טיפול בכתובות URL

עמדת הגנה אסטרטגית

שכבת הגנהמנגנוןהתמקדות בהנדסה
סינון כניסהטביעת אצבע JA3/TLSזהה את ספריית לקוח (למשל, Python בקשות) ולא את User-Agent.
ניתוח דינמיפיצוץ דפדפן ללא ראשהפעל קישורים בסביבת בדיקה כדי לצפות בשינויים ב-DOM, ולא רק בכותרות HTTP.
שכבת הלוגיקהחתימת URL ללא אמוןלמקרים של שימוש במעקף פנימי, השתמש ב- כתובות URL חתומות ב-HMAC כדי להבטיח את תקינותו.
שכבת המשתמשאינדיקטורים חזותייםהטמיעו תוספים לדפדפן שמסירים את המסכה מכתובות URL מקוצרות לפני שהמשתמש לוחץ עליהן.

מסקנה: מעבר לרשימת השחורים

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

על ידי התייחסות לכל כתובת URL כאל "תוכנית" הדורשת ביצוע בסביבה מבוקרת (sandboxing) ונורמליזציה של כל הקלטים כדי לסגור את "הפער הסמנטי", ארגונים יכולים לפרק את התשתית של התקפות מבוססות קישורים עוד לפני שהמשתמש רואה את כפתור "לחץ כאן".

שתף את הפוסט:
פוסטים קשורים
he_ILHebrew