1. 程式人生 > 其它 >wireshark分析tcpdump檔案

wireshark分析tcpdump檔案

技術標籤:工具技巧wiresharktcpdump

  1. 首先接入伺服器通過命令dump tcp包,linux自帶dump功能,如果是容器化環境可能沒有安裝tcpdump需要手動安裝;
  2. 執行命令dump tcp包,下面的命令是dump兩個host主機之間傳送的tcp包,-i指定網絡卡,-s引數指定限制包的大小,0表示不限制,-w是儲存的dump檔案:
tcpdump tcp -i eth0 -s 0 and host src_host and dest_host -w ./target.cap
  1. 將dump檔案匯入wireshark,最好使用2.6.x版本的,本次測試使用的是2.6.2版本;
  2. 在wireshark介面,一般先看到的是TCP3次握手,然後是client和server之間tls認證及確定資料加密的祕鑰的流程,最後就是加密資料的傳輸,因為https協議的報文是加密的,不能通過wireshark直接檢視,因此需要配置wireshark,使用私鑰解密https報文;對於解密https訊息,我們比較關注的是兩條TLS互動記錄一個是Client Hello,一個是Server Hello。其中Client Hello攜帶的Cipher Suites(加密套件)表示客戶端接受的加密演算法列表,Server Hello中傳送的Cipher Suite攜帶了服務端確定使用的加密演算法。

金鑰交換演算法目前常用的有RSA和Diffie-Hellman。

對於金鑰交換使用RSA演算法,pre-master-secret由客戶端生成,並使用公鑰加密傳輸給伺服器。

對於金鑰交換使用Diffie-Hellman演算法,pre-master-secret則通過在Key Exchange階段交換的資訊,由各自計算出pre-master-secret。所以pre-master-secret沒有在網路上傳輸,wireshark就無法獲取session key,也就無法解密應用資料。

因此如果使用DH加密的資料,在調測時最好修改加密演算法使用RSA,否則wireshark無法解析加密的資料,如果使用了tomcat,可以在server.xml裡配置,如果沒有使用tomcat,也可以在應用的配置檔案裡配置。

常用的TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384就是DH演算法,TLS_RSA_WITH_AES_128_CBC_SHA就是RSA演算法。

下面先介紹下匯出私鑰的方法

  1. 匯出p12檔案

如果需要匯出包含公鑰私鑰的證書檔案,由於不能直接通過命令keytoolkeystore裡面提取出私鑰,需要將keystore型別轉化為PKCS12格式,轉化方式如下:(中間需要輸入.keystore的源祕鑰庫密碼,同時設定目標祕鑰庫密碼)

keytool -importkeystore -srckeystore webapps.keystore –destkeystore webapps.p12 -deststoretype PKCS12

其中的webapps.keystore是服務端儲存有公鑰和私鑰的證書

b) 使用openssl工具從PKCS檔案只匯出私鑰

openssl pkcs12 -in webapps.p12 -passin pass:password-nodes -nocerts -out key.pem
  1. 下面就是進行wireshark配置ssl的操作
  1. 在wireshark的編輯->首選項->Protocols->HTTP,中配置使用的https協議埠號
  2. 在wireshark的編輯->首選項->Protocols->SSL,RSA keys list配置匯出的私鑰檔案路徑,新增的一條記錄,IP address配置服務端IP,Port配置服務端https協議埠,Protocol配置上層協議,一般是http協議,Key File就是私鑰檔案路徑,Password是匯出私鑰檔案使用的密碼,可以不填;SSL debug file可以配置debug日誌檔案路徑
  3. 配置完成後就可以看到TLS協議加密的資料已經轉成HTTP協議,可以檢視傳輸的報文了。