久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区

為什么我抓不到Baidu的數據包,你會嗎?
來源:小白debug    時間:2022-12-26 10:46:52

最近,有位讀者問起一個奇怪的事情,他說他想抓一個baidu.com的數據包,體驗下看包的樂趣。

但卻發現“抓不到”,這就有些奇怪了。

我來還原下他的操作步驟。


【資料圖】

首先,通過ping命令,獲得訪問百度時會請求哪個IP。

$ ping baidu.comPING baidu.com (39.156.66.10) 56(84) bytes of data.64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=1 ttl=49 time=30.6 ms64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=2 ttl=49 time=30.6 ms64 bytes from 39.156.66.10 (39.156.66.10): icmp_seq=3 ttl=49 time=30.6 ms

從上面的結果可以知道請求baidu.com時會去訪問39.156.66.10。

于是用下面的tcpdump命令進行抓包,大概的意思是抓eth0網卡且ip為39.156.66.10的網絡包,保存到baidu.pcap文件中。

$ tcpdump -i eth0 host 39.156.66.10 -w baidu.pcap

此時在瀏覽器中打開baidu.com網頁?;蛘咴诹硗庖粋€命令行窗口,直接用curl命令來模擬下。

$ curl "https://baidu.com"

按理說,訪問baidu.com的數據包肯定已經抓下來了。

然后停止抓包。

再用wireshark打開baidu.pcap文件,在過濾那一欄里輸入http.host == "baidu.com"。

此時發現,一無所獲。

在wireshark中搜索baidu的包,發現一無所獲

這是為啥?

到這里,有經驗的小伙伴,其實已經知道問題出在哪里了。

為什么沒能抓到包

這其實是因為他訪問的是HTTPS協議的baidu.com。HTTP協議里的Host和實際發送的request body都會被加密。

正因為被加密了,所以沒辦法通過http.host進行過濾。

但是。

雖然加密了,如果想篩選還是可以篩的。

HTTPS握手中的Client Hello階段,里面有個擴展server_name,會記錄你想訪問的是哪個網站,通過下面的篩選條件可以將它過濾出來。

tls.handshake.extensions_server_name == "baidu.com"

通過tls的擴展server_name可以搜索到baidu的包

此時選中其中一個包,點擊右鍵,選中Follow-TCP Stream。

右鍵找到tcp 流

這個TCP連接的其他相關報文全都能被展示出來。

HTTPS抓包

從截圖可以看出,這里面完整經歷了TCP握手和TLS加密握手流程,之后就是兩段加密信息和TCP揮手流程。

可以看出18號和20號包,一個是從端口56028發到443,一個是443到56028的回包。

一般來說,像56028這種比較大且沒啥規律的數字,都是客戶端隨機生成的端口號。

而443,則是HTTPS的服務器端口號。

HTTP用的是80端口,如果此時對著80端口抓包,也會抓不到數據。

粗略判斷,18號和20號包分別是客戶端請求baidu.com的請求包和響應包。

點進去看會發現URL和body都被加密了,一無所獲。

那么問題就來了。有沒有辦法解密里面的數據呢?

有辦法。我們來看下怎么做。

解密數據包

還是先執行tcpdump抓包。

$ tcpdump -i eth0 host 39.156.66.10 -w baidu.pcap

然后在另外一個命令行窗口下執行下面的命令,目的是將加密的key導出,并給出對應的導出地址是??/Users/xiaobaidebug/ssl.key??。

$ export SSLKEYLOGFILE=/Users/xiaobaidebug/ssl.key

然后在同一個命令行窗口下,繼續執行curl命令或用命令行打開chrome瀏覽器。目的是為了讓curl或chrome繼承這個環境變量。

$ curl "https://baidu.com"或者$ open -a Google\ Chrome #在mac里打開chrome瀏覽器

此時會看到在/Users/xiaobaidebug/下會多了一個ssl.key文件。

這時候跟著下面的操作修改wireshark的配置項。

打開wireshark的配置項

找到Protocols之后,使勁往下翻,找到TLS那一項。

在配置項中找到Protocols

將導出的ssl.key文件路徑輸入到這里頭。

在Protocols中找到TLS那一欄

點擊確定后,就能看到18號和20號數據包已經被解密。

解密后的數據包內容

此時再用http.host == "baidu.com",就能過濾出數據了。

解密后的數據包中可以過濾出baidu的數據包

到這里,其實看不了數據包的問題就解決了。

但是,新的問題又來了。

ssl.key文件是個啥?

這就要從HTTPS的加密原理說起了。

HTTPS握手過程

HTTPS的握手過程比較繁瑣,我們來回顧下。

先是建立TCP連接,畢竟HTTP是基于TCP的應用層協議。

在TCP成功建立完協議后,就可以開始進入HTTPS階段。

HTTPS可以用TLS或者SSL啥的進行加密,下面我們以??TLS1.2??為例。

總的來說。整個加密流程其實分為兩階段。

第一階段是TLS四次握手,這一階段主要是利用非對稱加密的特性各種交換信息,最后得到一個"會話秘鑰"。

第二階段是則是在第一階段的"會話秘鑰"基礎上,進行對稱加密通信。

TLS四次握手

我們先來看下第一階段的TLS四次握手是怎么樣的。

第一次握手:

Client Hello:是客戶端告訴服務端,它支持什么樣的加密協議版本,比如TLS1.2,使用什么樣的加密套件,比如最常見的RSA,同時還給出一個客戶端隨機數。

第二次握手:

Server Hello:服務端告訴客戶端,服務器隨機數+ 服務器證書 + 確定的加密協議版本(比如就是TLS1.2)。

第三次握手:

Client Key Exchange: 此時客戶端再生成一個隨機數,叫pre_master_key。從第二次握手的服務器證書里取出服務器公鑰,用公鑰加密pre_master_key,發給服務器。Change Cipher Spec: 客戶端這邊已經擁有三個隨機數:客戶端隨機數,服務器隨機數和pre_master_key,用這三個隨機數進行計算得到一個"會話秘鑰"。此時客戶端通知服務端,后面會用這個會話秘鑰進行對稱機密通信。Encrypted Handshake Message:客戶端會把迄今為止的通信數據內容生成一個摘要,用"會話秘鑰"加密一下,發給服務器做校驗,此時客戶端這邊的握手流程就結束了,因此也叫Finished報文。

第四次握手:

Change Cipher Spec:服務端此時拿到客戶端傳來的pre_master_key(雖然被服務器公鑰加密過,但服務器有私鑰,能解密獲得原文),集齊三個隨機數,跟客戶端一樣,用這三個隨機數通過同樣的算法獲得一個"會話秘鑰"。此時服務器告訴客戶端,后面會用這個"會話秘鑰"進行加密通信。Encrypted Handshake Message:跟客戶端的操作一樣,將迄今為止的通信數據內容生成一個摘要,用"會話秘鑰"加密一下,發給客戶端做校驗,到這里,服務端的握手流程也結束了,因此這也叫Finished報文。

四次握手中,客戶端和服務端最后都擁有三個隨機數,他們很關鍵,我特地加粗了表示。

第一次握手,產生的客戶端隨機數,叫client random。

第二次握手時,服務器也會產生一個服務器隨機數,叫server random。

第三次握手時,客戶端還會產生一個隨機數,叫pre_master_key。

這三個隨機數共同構成最終的對稱加密秘鑰,也就是上面提到的"會話秘鑰"。

三個隨機數生成對稱秘鑰

你可以簡單的認為,只要知道這三個隨機數,你就能破解HTTPS通信。

而這三個隨機數中,client random?和server random?都是明文的,誰都能知道。而?pre_master_key卻不行,它被服務器的公鑰加密過,只有客戶端自己,和擁有對應服務器私鑰的人能知道。

所以問題就變成了,怎么才能得到這個?pre_master_key??

怎么得到pre_master_key

服務器私鑰不是誰都能拿到的,所以問題就變成了,有沒有辦法從客戶端那拿到這個pre_master_key。

有的。

客戶端在使用HTTPS與服務端進行數據傳輸時,是需要先基于TCP建立HTTP連接,然后再調用客戶端側的TLS庫(OpenSSL、NSS)。觸發TLS四次握手。

這時候如果加入環境變量SSLKEYLOGFILE就可以干預TLS庫的行為,讓它輸出一份含有pre_master_key?的文件。這個文件就是我們上面提到的/Users/xiaobaidebug/ssl.key。

將環境變量注入到curl和chrome中

但是,雖然TLS庫支持導出key文件。但前提也是,上層的應用程序在調用TLS庫的時候,支持通過SSLKEYLOGFILE環境觸發TLS庫導出文件。實際上,也并不是所有應用程序都支持將SSLKEYLOGFILE。只是目前常見的curl和chrome瀏覽器都是支持的。

SSLKEYLOGFILE文件內容

再回過頭來看ssl.key文件里的內容。

# SSL/TLS secrets log file, generated by NSSCLIENT_RANDOM 5709aef8ba36a8eeac72bd6f970a74f7533172c52be41b200ca9b91354bd662b 09d156a5e6c0d246549f6265e73bda72f0d6ee81032eaaa0bac9bea362090800174e0effc93b93c2ffa50cd8a715b0f0CLIENT_RANDOM 57d269386549a4cec7f91158d85ca1376a060ef5a6c2ace04658fe88aec48776 48c16429d362bea157719da5641e2f3f13b0b3fee2695ef2b7cdc71c61958d22414e599c676ca96bbdb30eca49eb488aCLIENT_RANDOM 5fca0f2835cbb5e248d7b3e75180b2b3aff000929e33e5bacf5f5a4bff63bbe5 424e1fcfff35e76d5bf88f21d6c361ee7a9d32cb8f2c60649135fd9b66d569d8c4add6c9d521e148c63977b7a95e8fe8CLIENT_RANDOM be610cb1053e6f3a01aa3b88bc9e8c77a708ae4b0f953b2063ca5f925d673140 c26e3cf83513a830af3d3401241e1bc4fdda187f98ad5ef9e14cae71b0ddec85812a81d793d6ec934b9dcdefa84bdcf3

這里有三列。

第一列是CLIENT_RANDOM,意思是接下來的第二列就是客戶端隨機數,再接下來的第三列則是pre_master_key。

但是問題又來了。

這么多行,wireshark怎么知道用哪行的pre_master_key呢?

wireshark?是可以獲得數據報文上的client random的。

比如下圖這樣。

Client Hello 里的客戶端隨機數

注意上面的客戶端隨機數是以"bff63bbe5"結尾的。

同樣,還能在數據報文里拿到server random。

找到server random

此時將client random放到ssl.key的第二列里挨個去做匹配。

就能找到對應的那一行記錄。

ssl.key里的數據

注意第二列的那串字符串,也是以"bff63bbe5"?結尾的,它其實就是前面提到的client random。

再取出這一行的第三列數據,就是我們想要的pre_master_key。

那么這時候wireshark就集齊了三個隨機數,此時就可以計算得到會話秘鑰,通過它對數據進行解密了。

反過來,正因為需要客戶端隨機數,才能定位到ssl.key?文件里對應的pre_master_key?是哪一個。而只有TLS第一次握手(client hello)的時候才會有這個隨機數,所以如果你想用解密HTTPS包,就必須將TLS四次握手能抓齊,才能進行解密。如果連接早已經建立了,數據都來回傳好半天了,這時候你再去抓包,是沒辦法解密的。

總結文章開頭通過抓包baidu的數據包,展示了用wireshark抓包的簡單操作流程。HTTPS會對HTTP的URL和Request Body都進行加密,因此直接在filter欄進行過濾http.host == "baidu.com"會一無所獲。HTTPS握手的過程中會先通過非對稱機密去交換各種信息,其中就包括3個隨機數,再通過這三個隨機數去生成對稱機密的會話秘鑰,后續使用這個會話秘鑰去進行對稱加密通信。如果能獲得這三個隨機數就能解密HTTPS的加密數據包。三個隨機數,分別是客戶端隨機數(client random),服務端隨機數(server random)以及pre_master_key。前兩個,是明文,第三個是被服務器公鑰加密過的,在客戶端側需要通過SSLKEYLOGFILE去導出。通過設置SSLKEYLOGFILE環境變量,再讓curl或chrome會請求HTTPS域名,會讓它們在調用TLS庫的同時導出對應的sslkey文件。這個文件里包含了三列,其中最重要的是第二列的client random信息以及第三列的pre_master_key。第二列client random用于定位,第三列pre_master_key用于解密。

關鍵詞: 環境變量 一無所獲 公鑰加密 第二次握手 第一階段

上一篇:

下一篇:

X 關閉

X 關閉

久久国产精品一区二区三区四区,久色婷婷小香蕉久久,国产日韩欧美在线播放不卡,另类av一区二区
亚洲欧美成人一区二区在线电影| 欧美日韩精品国产| 欧美片第一页| 久久成人综合视频| 亚洲一区二区av电影| 亚洲国产天堂久久综合| 欧美成人乱码一区二区三区| 日韩一级二级三级| 欧美精品二区三区四区免费看视频| 狠狠色综合播放一区二区| 欧美日韩精品一区二区天天拍小说| 久久精品国产精品亚洲综合| 久久精品av麻豆的观看方式| 欧美激情bt| 亚洲国内自拍| 欧美日韩在线直播| 黄色亚洲在线| 亚洲精品一区在线观看| 国产欧美精品一区| 欧美日韩综合在线免费观看| 久久精品欧美日韩| 亚洲成人在线视频播放| 欧美精品一区二区在线观看| 欧美激情亚洲激情| 久久精品欧美日韩精品| 中文久久乱码一区二区| 国产日韩欧美麻豆| 裸体女人亚洲精品一区| 久久av一区二区三区漫画| 一区久久精品| 黑人巨大精品欧美黑白配亚洲| 欧美在线国产精品| 亚洲欧美日韩精品久久亚洲区| 一本高清dvd不卡在线观看| 久久久亚洲国产美女国产盗摄| 欧美国产综合视频| 亚洲欧美成人在线| 欧美日韩在线精品一区二区三区| 欧美系列亚洲系列| 久久五月婷婷丁香社区| 美女视频黄免费的久久| 亚洲国产成人精品女人久久久| 国产精品美女久久久久久久| 欧美日韩视频在线一区二区| 亚洲国内自拍| 狠狠操狠狠色综合网| 亚洲欧美日本伦理| 欧美一区二区三区精品| 亚洲欧美日韩系列| 欧美一区二区三区视频| 欧美福利视频一区| 久久精品一区四区| 午夜精品国产更新| 韩国精品久久久999| 国产精品午夜国产小视频| 欧美精品一区二区在线播放| 久久精品亚洲一区二区三区浴池| 欧美综合国产| 亚洲一区综合| 亚洲精品专区| 欧美日韩一区二区三区四区五区| 亚洲午夜一级| 国产精品美女久久福利网站| 亚洲精品国产系列| 伊人成人在线| 女同性一区二区三区人了人一| 国产性色一区二区| 欧美日韩精品免费观看视频完整| 亚洲一区精品视频| 国产精品v亚洲精品v日韩精品| 国产视频一区在线观看| 欧美jizzhd精品欧美巨大免费| 精品电影在线观看| 又紧又大又爽精品一区二区| 亚洲国产精品一区二区尤物区| 欧美日韩视频免费播放| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲欧美日韩国产中文| 久久经典综合| 欧美香蕉视频| 欧美有码在线视频| 午夜久久久久久| 香蕉成人伊视频在线观看| 亚洲视频自拍偷拍| 夜夜嗨av色一区二区不卡| 欧美一级二级三级蜜桃| 亚洲免费av网站| 国产精品久久久久久久久搜平片| **网站欧美大片在线观看| 亚洲欧美制服另类日韩| 欧美激情精品久久久久久| 性色av一区二区三区红粉影视| 国产日韩精品视频一区| 欧美一级视频一区二区| 久久综合伊人77777| 嫩草国产精品入口| 亚洲二区精品| 欧美一级大片在线观看| 国产麻豆一精品一av一免费| 玉米视频成人免费看| 久久精品91久久香蕉加勒比| 国产午夜精品在线| 久久久www成人免费无遮挡大片| 欧美激情一区二区三区不卡| 红桃视频国产一区| 欧美精品导航| 国产乱子伦一区二区三区国色天香| 国产精品久久久久久久久免费| 欧美v亚洲v综合ⅴ国产v| 国产精品福利久久久| 亚洲无线观看| 欧美涩涩视频| 娇妻被交换粗又大又硬视频欧美| 亚洲欧美另类综合偷拍| 亚洲精品永久免费精品| 久久精品动漫| 国产亚洲欧美日韩美女| 国产精品免费一区二区三区在线观看| 日韩视频免费大全中文字幕| 国产一区激情| 国产亚洲观看| 在线视频亚洲欧美| 一区二区三区在线免费视频| 亚洲国产欧美一区| 最新国产成人在线观看| 久久久欧美一区二区| 久久久精品午夜少妇| 亚洲精品1区2区| 韩国av一区二区三区在线观看| 欧美黄色小视频| 一本综合久久| 久久精品国产第一区二区三区最新章节| 久久视频国产精品免费视频在线| 玉米视频成人免费看| 国产精品中文在线| 99re热这里只有精品免费视频| 亚洲二区视频在线| 亚洲午夜国产一区99re久久| 亚洲国产精品女人久久久| 亚洲精品国精品久久99热| 亚洲欧美日韩一区二区| 狠狠综合久久av一区二区小说| 母乳一区在线观看| 国产精品一区二区a| 亚洲免费一在线| 欧美四级在线观看| 国产日韩欧美在线| 国产精品美女一区二区在线观看| 国产精品久久夜| 在线观看亚洲视频| 国产精品成人国产乱一区| 麻豆九一精品爱看视频在线观看免费| 久久精品视频网| 亚洲性xxxx| 久久狠狠亚洲综合| 亚洲美女精品一区| 亚洲天堂网站在线观看视频| 久久三级福利| 午夜精品久久久久久久99水蜜桃| 国产目拍亚洲精品99久久精品| 激情综合中文娱乐网| 免费的成人av| 精品动漫3d一区二区三区免费版| 一区二区三区日韩在线观看| 欧美丰满高潮xxxx喷水动漫| 欧美精品成人一区二区在线观看| 能在线观看的日韩av| 欧美视频不卡中文| 国产主播喷水一区二区| 国产精品白丝黑袜喷水久久久| 欧美日韩中文字幕综合视频| 亚洲国产日韩美| 欧美在线精品一区| 亚洲欧美视频一区| 一区二区三区日韩在线观看| 亚洲精品一区二区网址| 亚洲精品日韩在线观看| 99国产精品| 久久婷婷蜜乳一本欲蜜臀| 欧美网站大全在线观看| 国产日韩欧美一区二区三区四区| 欧美另类一区二区三区| 最新日韩中文字幕| 欧美一区二区视频网站| 在线播放日韩欧美| 国产亚洲福利一区| 久久久久久国产精品一区| 午夜性色一区二区三区免费视频| 欧美日韩国产精品一区| 亚洲精品日韩综合观看成人91| 亚洲欧美高清| 欧美精品v日韩精品v国产精品| 国内综合精品午夜久久资源| 国产日韩欧美在线看| 黑人中文字幕一区二区三区| 在线一区二区三区做爰视频网站| 久久久亚洲人| 韩日午夜在线资源一区二区| 亚洲午夜激情网站| 欧美日韩综合视频网址|