ในคำอธิบายส่วนใหญ่ ข้อเท็จจริงสองข้อเกี่ยวกับ 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"

บทความที่เกี่ยวข้อง