パケット キャプチャ ツールを使用して HTTPS メッセージを分析する

https プロトコルは http よりも安全です。暗号化されたデータを送信します。一般に、傍受されたり解読されたりするのは簡単ではありません。ただし、時間がかかり、CPU の消費量も多くなります。次は、Tcpdump を通じてパケットをキャプチャし、Wireshark を使用します。両方のプロトコルを使用して同じリクエストを分析するには、Web ページのパケットと 2 つのパケットを比較すると、2 つのプロトコルの違いは一目瞭然です。

1. 環境設定

     テストサーバーでは、Nginx はリスニング用にポート 80 と 443 を開き、ポート 443 の CA 証明書を構成します (注: openssl ツールを使用して自分で生成した CA 証明書は無効です。資格のある組織または無料の証明書が必要です)クラウドプロバイダーが提供する証明書)

server {
   listen       443 ssl;
   ssl_certificate      /etc/nginx/cert/5490205__vanmilk.com.pem;
   ssl_certificate_key  /etc/nginx/cert/5490205__vanmilk.com.key;
}

2.HTTPメッセージ解析

クライアント118.178.255.158から送信されるリクエストメッセージをサーバー上で監視します。

tcpdump -n -S -ieth0 host 118.178.255.158 -w http.pcap

以下に示すように、Wireshark を使用して http.pcap メッセージを開きます。メッセージは合計 10 個あります。

説明する

Seq:データ ストリーム内の送信者のパケットの最初のビットの位置を示します。
     データ送信のない ACK の場合、次回実際にデータ送信があるときも、最後に送信された ACK データ パケットの Seq から開始されます。
Ack:相手の期待される次の Seq は何ですか。
SYN/FIN の送信には Data がありませんが、次の送信の PacketSeq は 1 増加しますが、
Ack の送信では次の送信の PacketSeq は増加しません。

3回の握手

#1: Client->Server [SYN]          CSeq=0
#2: Server->Client [SYN+ACK]      SSeq=0,Ack=1   对#1的Ack
#3: Client->Server [ACK]          CSeq=1,Ack=1   对#2的Ack

データ送信

#4:Client->Server GET /           CSeq=1,Ack=1      HTTP
#5: Servier->Client [ACK]          SSeq=1,Ack=116
#6: Server->Client       SSeq=1,Ack=116   HTTP明文数据 
#7: Client->Server [ACK]           CSeq=116,Ack=860

4 つのウェーブ (2 つは 1 つのパケットにマージされました)

#8: Client->Server [FIN+ACK]     CSeq=116,Ack=860
#9: Server->Client [FIN+ACK]     SSeq=860,Ack=117  对#8的Ack
#10: Client->Server [ACK]        CSeq=117,Ack=861  对#9的Ack

3. httpsメッセージ分析

tcpdump -n -S -ieth0 host 118.178.255.158 -w https.pcap

Wireshark を使用して、以下に示すように http.pcap メッセージを開きます。メッセージは合計 14 個あります。

3回の握手

#1 Client->Server   [SYN]
#2:  Server->Client [SYN+ACK]
#3: Client->Server  [ACK]

TLSハンドシェイク

#4: Client->Server  [Client Hello]      TLS
#5: Server-Client   [ACK]
#6:Server-Client  Server Hello 、Certificate、Server Key Exchange、Server Hello Done      TLS
   响应Client Hello消息,然后向客户端下发证书(CA公钥)
#7: Client->Server [ACK]
    Client验证证书合法性,并使用CA公钥对随机码加密
#8: Client->Server Client Key Exchange,Change Cipher Spec,Encrypted Handshake Message    TLS
    上传客户端生成的加密的随机码
#9: Server->Client  New Session Ticket、Change Cipher Spec、Encrypted Handshake Message      TLS
     Server用私钥解密随机码,随后使用随机码对传输的数据进行加解密

データ送信

使用对称加密算法加密数据(每一次连接生成不同的随机密码)
#10:Client->Server  Application Data  TLS
#11: Server->Client  Application Data  TLS

4回手を振る

#12:   Client->Server [FIN+ACK]
#13:   Server->Client [FIN+ACK]
#14:   Client->Server [ACK]

4.httpsデータ転送プロセス

おすすめ

転載: blog.csdn.net/2301_76787421/article/details/132840022