Fiddler抓取https原理?

我知道有證書,解密瀏覽器請求,然後用自己的證書和伺服器通信,名字似乎叫做man-in-the-middle。但是不知道它是怎麼做到的?
如果要實現的話,是否是需要足夠底層才可以?java的sslserversocket似乎還不夠底層。


首先fiddler截獲客戶端瀏覽器發送給伺服器的https請求, 此時還未建立握手。

第一步, fiddler向伺服器發送請求進行握手, 獲取到伺服器的CA證書, 用根證書公鑰進行解密, 驗證伺服器數據簽名, 獲取到伺服器CA證書公鑰。

第二步, fiddler偽造自己的CA證書, 冒充伺服器證書傳遞給客戶端瀏覽器, 客戶端瀏覽器做跟fiddler一樣的事。

第三步, 客戶端瀏覽器生成https通信用的對稱密鑰, 用fiddler偽造的證書公鑰加密後傳遞給伺服器, 被fiddler截獲。

第四步, fiddler將截獲的密文用自己偽造證書的私鑰解開, 獲得https通信用的對稱密鑰。

第五步, fiddler將對稱密鑰用伺服器證書公鑰加密傳遞給伺服器, 伺服器用私鑰解開後建立信任, 握手完成, 用對稱密鑰加密消息, 開始通信。

第六步, fiddler接收到伺服器發送的密文, 用對稱密鑰解開, 獲得伺服器發送的明文。再次加密, 發送給客戶端瀏覽器。

第七步, 客戶端向伺服器發送消息, 用對稱密鑰加密, 被fidller截獲後, 解密獲得明文。

由於fiddler一直擁有通信用對稱密鑰, 所以在整個https通信過程中信息對其透明。


Fiddler Web Debugger 中第一個問題:

Fiddler2 使用 man-in-the-middle (中間人) 攻擊的方式來截取 HTTPS 流量。在 Web 瀏覽器面前 Fiddler2 假裝成一個 HTTPS 伺服器,而 在真正的 HTTPS 伺服器面前 Fiddler2 假裝成瀏覽器。Fiddler2 會動態地生成 HTTPS 證書來偽裝伺服器。


用https後,流量是不能被劫持的哦


下面的文章有詳細說明

HTTPS 能否避免流量劫持?

近日,看了一篇關於流量劫持的文章《安全科普:流量劫持能有多大危害?》,作者EtherDream以圖文並茂的形式詳細講解了流量劫持及相關知識。「在如今這個講究跨平台、體驗好,並有雲端支持的年代,WebApp 越來越火熱。各種應用紛紛移植成網頁版,一些甚至替代了客戶端。同時,也造就了流量劫持前所未有的勢頭。」小編總結,這裡提到的流量劫持危害,大多跟Http明文傳輸協議的薄弱有關係。

我們來看看流量劫持會帶來什麼危害?


不同的劫持方式,獲得的流量也有所差異。DNS 劫持,只能截獲通過域名發起的流量,直接使用 IP 地址的通信則不受影響;CDN 入侵,只有瀏覽網頁或下載時才有風險,其他場合則毫無問題;而網關被劫持,用戶所有流量都難逃魔掌。

1、http易致在線應用被劫持


網頁技術在近些年裡有了很大的發展,但其底層協議始終沒有太大的改進
—— HTTP,一種使用了 20 多年古老協議。在 HTTP 里,一切都是明文傳輸的,流量在途中可隨心所欲的被控制。而在線使用的 WebApp,流量里既有通信數據,又有程序的界面和代碼,劫持簡直輕而易舉。因此,劫持網頁流量成了各路黑客們的鐘愛,一種可在任意網頁發起 XSS 的入侵方式。


2、公共場合使用http,不登陸也會被劫持


在自己的設備上,大家都會記住各種賬號的登錄狀態,反正只有自己用,也沒什麼大不了的。然而,在被劫持的網路里,即使瀏覽再平常不過的網頁,或許一個悄無聲息的間諜腳本已暗藏其中,正偷偷訪問你那登錄著的網頁,操控起你的賬號了。


3、http狀態下,Cookie 記錄或瀏覽器自動填表單,都會導致賬號密碼被截獲


http狀態下,cookie記錄的都是明文的賬號密碼,被劫持泄露後,即使數量不多,也能通過社工獲取到用戶的更多信息,最終導致更嚴重的泄露。


4、HTTP 緩存投毒


HTTP這種簡單的純文本協議,幾乎沒有一種簽名機制,來驗證內容的真實性。即使頁面被篡改了,瀏覽器也完全無法得知,甚至連同注入的腳本也一塊緩存起來。但凡具備可執行的資源,都可以通過預載入帶毒的版本,將其提前緩存起來。


5、Https能避免劫持嗎?


能!但前提是必須用受信任的SSL證書。

不同於簡單的Http代理,HTTPS 服務需要權威CA機構頒發的SSL證書才算有效。自簽證書瀏覽器不認,而且會給予嚴重的警告提示。而遇到「此網站安全證書存在問題」的警告時,大多用戶不明白是什麼情況,就點了繼續,導致允許了黑客的偽證書,HTTPS 流量因此遭到劫持。


如果重要的賬戶網站遇到這種情況,無論如何都不該點擊繼續,否則大門鑰匙或許就落入黑客之手。

這裡所說的權威CA機構是指已經通過WebTrust國際認證,根證書由微軟預置,受微軟等各類操作系統、主流移動設備和瀏覽器信任的CA機構;在中國還要附加一項,就是要拿到工信部許可的CA牌照;這樣的CA機構,才有權利簽發各類數字證書,比如wosign(沃通)。


自簽證書是指不受信任的任意機構或個人,自己隨意簽發的證書,容易被黑客偽造替換。

6、全站Https的重要性


情況一:從http頁面跳轉訪問https頁面


事實上,在 PC 端上網很少有直接進入
HTTPS 網站的。例如支付寶網站,大多是從淘寶跳轉過來,而淘寶使用的仍是不安全的 HTTP 協議。如果在淘寶網的頁面里注入 XSS,屏蔽跳轉到 HTTPS 的頁面訪問,用 HTTP 取而代之,那麼用戶也就永遠無法進入安全站點了。

儘管地址欄里沒有出現
HTTPS 的字樣,但域名看起來也是正確的,大多用戶都會認為不是釣魚網站,因此也就忽視了。


因此,只要入口頁是不安全的,那麼之後的頁面再安全也無濟於事。


情況二:http頁面重定向到https頁面

有一些用戶通過輸網址訪問的,他們輸入了 http://www.alipaly.com 就敲回車進入了。然而,瀏覽器並不知道這是一個 HTTPS 的站點,於是使用默認的 HTTP 去訪問。不過這個 HTTP 版的支付寶的確也存在,其唯一功能就是重定向到自己 HTTPS 站點上。


劫持流量的中間人一旦發現有重定向到 HTTPS 站點的,於是攔下重定向的命令,自己去獲取重定向後的站點內容,然後再回復給用戶。於是,用戶始終都是在 HTTP 站點上訪問,自然就可以無限劫持了。

國外各大知名網站(PayPal,Twitter,Facebook,Gmail,Hotmail等)都通過Always
on SSL(全站https)技術措施來保證用戶機密信息和交易安全,防止會話攻擊和中間人攻擊。

7、搜索引擎劫持


事實上,HTTPS 站點還有個很大的來源 —— 搜索引擎。遺憾的是,國產搜索引擎幾乎都不提供 HTTPS 服務。


谷歌已開始提供https加密搜索方式。Google在官方博客介紹說,普通的HTTP瀏覽是不安全的,用戶和伺服器之間的通訊會被第三方監聽和干擾,對於Google來說,你在Google搜索的詞語會被第三方截獲,如果第三方不希望你在Google搜索這個詞語,還可以通過技術手段阻止用戶的搜索行為。使用HTTPS的Google搜索中,用戶搜索的信息將無法被第三方獲取,也不會出現數據泄漏的問題,搜索結果頁面也不會被干擾或篡改。

結語


從上面的各類劫持案例中,我們可以看出,Https是很有效的流量劫持防範措施,無論是網路服務提供商還是廣大網民,為咱自己的帳戶安全和權益,都要形成使用https訪問網站的習慣和意識,重要的網站必定使用 HTTPS 協議,登陸時需格外留意!


通過偽造 CA 證書來欺騙瀏覽器和伺服器。簡單來說就是在瀏覽器面前 Fiddler 偽裝成一個 HTTPS 伺服器,而在真正的 HTTPS 伺服器面前 Fiddler 又假裝成瀏覽器,從而實現解密 HTTPS 流量的目的


使用正規的CA機構簽發的HTTPS證書,fiddler就無法劫持流量了。抓到的都是加密過的,無法跟伺服器通訊


代理


6、全站Https的重要性

情況一:從http頁面跳轉訪問https頁面


例如支付寶網站,大多是從淘寶跳轉過來,而淘寶使用的仍是不安全的 HTTP 協議。如果在淘寶網的頁面里注入 XSS,屏蔽跳轉到 HTTPS 的頁面訪問,用 HTTP 取而代之,那麼用戶也就永遠無法進入安全站點了。

這個情況從伺服器的角度可以解決吧,http默認是80埠而https默認是433埠,如果全站是ssl時把訪問80埠的請求重定向回去。 這應該可行吧。


推薦閱讀:

請教SSL握手過程中,為什麼抓包找不到pre-master-key?
上經過ssl加密的網站,為什麼有的顯示公司名,有的不顯示?
如何評價《Why I stopped using StartSSL》的評論?

TAG:網路安全 | SSL | HTTPS | fiddler |