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

התחילו בנושא החיצוני

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

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

עקבו אחרי העטיפה פנימה

בתוך הערוץ המוגן יושב חילוף בקרה של SSTP, אחריו הפעלת PPP, ואחריו חבילת הרשת שהלקוח רוצה שתסופק. לכל שכבה יש משא ומתן משלה, הודעות שגיאה משלה ומכונת מצבים משלה. לכן תקלה יכולה להיראות כתקלת TLS מנקודת מבט אחת ותקלת PPP מנקודת מבט אחרת. קריאת השכבות לפי הסדר אומרת איזו מכונת מצבים נעצרה.

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

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

outer IP header
  TCP to port 443
    TLS record layer
      SSTP control and data packets
        PPP frames
          inner IP packet
            application transport and payload

תייגו את הצופה לפני קריאת לכידה

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

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

שמרו על הבדיקות שהתרשים אינו יכול להוכיח

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

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

openssl s_client -connect vpn.corp.internal:443 -servername vpn.corp.internal
tshark -r sstp.pcap -Y "tls.handshake.type == 1"

מאמרים קשורים