目的:
根據所給的RFC參考文檔熟悉CHAP協議流程以及加解密算法的細節,提取所捕獲數據包中相應字段
開始抓包:
分析:
建立TCP連接
PPTP控制層協議是建立在TCP協議的基礎上,所以剛開始即使普通的TCP三次握手
1、 Client端向Server的1723端口發TCPSYN包,請求建立TCP連接。
2、 Server接收TCP連接請求,回SYN ACK。
3、 Client端向Server發送確認包ACK
PPTP控制連接和隧道的建立
在此過程,完成PPTP控制層連接和Gre隧道建立的工作
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協商的選項
PPP協議的LCP協商
LCP是PPP協議的鏈路控制協議,負責建立、拆除和監控數據鏈路。協商鏈路參數,如認證方法,壓縮方法,是否回叫等。
1、 Client發送一個Configuration Request,把自己的配置參數發送給Server
2、Server發送一個Configuration Request,把自己的配置參數發送給Client,並向客戶端發送ACK表示所有配置參數全部認識且可以接受
3、 Client發送一個Configuration Reject,將自己不能識別的參數告知Server,讓Server進行修正
4、Server修改配置項后再次發送Configuration Request
5.Client發送一個Configuration Nak 表示所有LCP選項都可識別,但有些選項的值不可接受
6、Server修改配置項后再次發送Configuration Request
7、Client發送一個Configuration Ack,標示所有配置參數全部認識且可以接受
PPP協議的身份認證
LCP協商完成后,PPP協議的Server端會對Client端進行身份驗證,在LCP協商中已經協商好身份驗證協議,本文以MS-CHAP-2為例說明
1、 Server向Client發送Challenge,其中包括一個Challenge string(value字段)和Server Name(pptpd)
2、 Client向Server發送Response,其中用戶名使用明文發送,密碼(syberos)和Challenge字段混合hash后以密文(value字段)形式發送
3、 Server讀取密碼文件,對用戶身份進行驗證,驗證成功,向Client發送Success,表示身份驗證成功