PPTP協議握手流程分析


一  PPTP概述


        PPTP(Point to Point Tunneling Protocol),即點對點隧道協議。該協議是在PPP協議的基礎上開發的一種新的增強型安全協議,支持多協議虛擬專用網,可以通過密碼驗證協議,可擴展認證協議等方法增強安全性。遠程用戶可以通過ISP、直接連接Internet或者其他網絡安全地訪問企業網;

        它能夠將PPP(點到點協議)幀封裝成IP數據包,以便能夠在基於IP的互聯網上進行傳輸。PPTP使用TCP是實現隧道的創建、維護與終止,並使用GRE(通用路由封裝)將PPP幀封裝成隧道數據。被封裝后的PPP幀的有效載荷可以被加密或壓縮;

        PPTP通信過程中需要建立兩種連接,一種是控制連接,另一種是數據連接。控制連接用來協商通信過程中的參數和進行數據連接的維護。而真正的數據通信部分則交由PPTP數據連接完成。以下兩個章節分別介紹PPTP的控制連接和數據連接


二  PPTP控制連接的建立流程分析


    PPTP控制連接建立過程可以分為以下幾步:

    1、  建立TCP連接

    2、  PPTP控制連接和GRE隧道建立

    3、  PPP協議的LCP協商

    4、  PPP協議的身份驗證

    5、  PPP協議的NCP協商

    6、  PPP協議的CCP協商

    以下以抓包的方式分析上述幾個步驟,

    pptp client     :      192.168.163.56 

    pptp server    :      192.168.162.196


 

2.1  建立TCP連接


    PPTP控制層協議是建立在TCP協議的基礎上,所以剛開始即使普通的TCP三次握手


圖2-1  TCP三次握數據包


圖2-2  TCP三次握手時序圖


    1、  Client端向Server的1723端口發TCPSYN包,請求建立TCP連接。

    2、  Server接收TCP連接請求,回SYN ACK。

    3、  Client端向Server發送確認包ACK


2.2  PPTP控制連接和隧道的建立


    在此過程,完成PPTP控制層連接和Gre隧道建立的工作

 

圖2-3 PPTP控制層連接建立過程


 


 

圖2-4 PPTP控制層連接時序圖


 

    1、  Client向Server發送Start-Control-Connection-Request,請求建立控制連接

    2、  Server向Client發送Start-Control-Connecton-Reply,應答客戶端的請求

    3、  Client向Server發送Outgoing-Call-Request,請求建立PPTP隧道,該消息包含GRE報頭中的Callid,該id可唯一地標識一條隧道

    4、  Server向Client發送Outgoing-Call-Reply,應答客戶端的建立PPTP隧道請求

    5、  有Client或者Server任意一方發出Set-Link-info,設置PPP協商的選項

2.3 PPP協議的LCP協商


    LCP是PPP協議的鏈路控制協議,負責建立、拆除和監控數據鏈路。協商鏈路參數,如認證方法,壓縮方法,是否回叫等。


圖2-5  PPP協議的LCP協商過程



圖2-6  PPP協議的LCP協商時序圖


    1、  Client發送一個Configuration Request,把自己的配置參數發送給Server

    2、  Server發送一個Configuration Request,把自己的配置參數發送給Client

    3、  Server發送一個Configuration Reject,將自己不能識別的參數告知Client,讓Client進行修正

    4、  Client發送一個Configuration Ack,表示所有配置參數全部認識且可以接受,應答Server

    5、  Client修改配置項后再次發送Configuration Request

    6、  Server發送一個Configuration Ack,標示所有配置參數全部認識且可以接受,應答Client


2.4  PPP協議的身份認證


    LCP協商完成后,PPP協議的Server端會對Client端進行身份驗證,在LCP協商中已經協商好身份驗證協議,本文以MS-CHAP-2為例說明


圖2-7  PPP協議的Chap身份認證過程



圖2-8  PPP協議的Chap身份認證時序圖


    1、  Server向Client發送Challenge,其中包括一個Challenge string(value字段)和Server Name(pptpd)

    2、  Client向Server發送Response,其中用戶名使用明文發送,密碼(syberos)和Challenge字段混合hash后以密文(value字段)形式發送

    3、  Server讀取密碼文件,對用戶身份進行驗證,驗證成功,向Client發送Success,表示身份驗證成功


2.5  PPP協議的NCP協商


        NCP協議是PPP協議的網絡控制協議,主要用來協商雙方網絡層接口參數,配置虛擬端口,分配IP,DNS等信息。圖中的IPCP是NCP基於TCP/IP的接口協商協議。Server和Client都要把自己的Miniport信息發送給對方


圖2-9  PPP協議的NCP協商過程



圖2-10  PPP協議的NCP協商時序圖


    1、  Server把自己的Miniport信息通過Configuration Request發送給Client

    2、  Client接收Server的接口配置,向Server發送Configuration ACK,應答上一步驟的Request

    3、  Client把自己的Miniport信息(無效數據,等待Server分配)通過Configuration Request發送給Server

    4、  Server發現Client的配置是無效的,則給Client發送一條有效的配置信息,使用Configuration Nak發送,其中主要是給Client分配ip

    5、  Client根據Server端發送過來的配置,修改自己的Miniport的接口,再次發送Configuration Request

    6、  Server接受Client的配置,發送Configuration Ack應答Request


2.6  PPP協議的CCP協商


    CCP協議協商PPP通訊中數據加密的協議


 

圖2-11  PPP協議的NCP協商過程



 

圖2-12  PPP協議的NCP協商時序圖


 

    1、  Server向Client發送Configuration Request,標識服務端支持的加密協議

    2、  Client向Server發送Configuration Request,標識客戶端支持的加密協議

    3、  Client向Server發送Configuration ack,標識接受服務端的加密協議

    4、  Server向Client發送Configuration ack,標識接受客戶端的加密協議


三  PPTP數據連接的分析


    PPTP數據隧道化過程采用多層封裝的方法,下圖顯示了封裝后在網絡上傳輸的數據包格式

圖3-1 PPTP數據包格式


    我們以應用層使用HTTP連接為例說明PPTP數據包的封裝和解析過程;


3.1  PPTP數據包封裝過程



圖3-2 PPTP數據包封裝過程



    封裝過程:

    1、  應用層數據封裝成IP數據包

    2、  將IP數據包發送到VPN的虛擬接口

    3、  VPN的虛擬接口將IP數據包壓縮和加密,並增加PPP頭

    4、  VPN的虛擬接口將PPP幀發送給PPTP協議驅動程序

    5、  PPTP協議驅動程序在PPP幀外添加GRE報頭

    6、  PPTP協議驅動程序將GRE報頭提交給TCP/IP協議驅動程序

    7、  TCP/IP協議驅動程序為GRE驅動添加IP頭部

8、  為IP數據包進行數據鏈路層封裝后通過物理網卡發送出去

3.2  PPTP數據包解析過程



圖3-2 PPTP數據包解析過程


    解析過程:

    1、物理thernet幀

    2、剝掉Ethernet幀后交給TCP/IP協議驅動程序

    3、TCP/IP協議解析剝掉IP頭部

    4、IP協議解析剝掉GRE頭部

    5、將PPP幀發送給VPN虛擬網卡

    6、VPN虛擬網卡剝掉PPP頭並對PPP有效負載進行解密或者解壓縮

    7、解密或者解壓縮完成后將數據提交給上層應用

    8、上層應用對數據進行處理



          從應用層看,Service和Client是直接點對點連接的,他們之間的媒介就是GRE。而這個GRE的底層並不是真正的點對點連接,

而是建立在物理網絡上的一個隧道,保護傳輸的數據;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM