為何 Fiddler2可以Decrypt captured SSL packets?

--
fiddler2下載點:http://www.fiddler2.com/fiddler2/version.asp
設定:tools->Fiddler Option ->HTTPS->Capture HTTPS Connects
---
Fiddler2 為何可以decrypt ssl packets? 我思考了後得到這個答案

正確的說法他不是decrypt ssl , 他是屬於使用欺瞞的方式解開ssl 封包

ie----ssl----webserver

我們知道,在ie 與 webserver 中間,如果走了ssl , 那麼由外面攔截封包是沒用的,所以;我們可以大膽的說,途中封包經過任何的proxy gateway .... 都不會因為封包被攔截而導致資料外洩那麼 fiddler2 是怎麼辦到的?我們可以使用IE(一定用ie)連接一個真實的SSL 的website https://www.ssl.com/ 仔細觀察當 fiddler2 開啟時和不開啟時,有什麼差異?

當fiddler2 開啟時會出現此訊息

---
此網站的安全性憑證有問題。

此網站出示的安全性憑證並非由信任的憑證授權單位所發行。
安全性憑證問題可能表示其他人可能正在嘗試欺騙您,或是攔截您傳送到該伺服器的任何資料。

我們建議您關閉此網頁,而且不要繼續瀏覽此網站。

按這裡關閉此網頁。
繼續瀏覽此網站 (不建議)。
其他資訊

若您是按一下連結到達此頁面,請檢查網址列中的網址,確定它是您要瀏覽的位址。
當您使用網址 (例如 https://example.com) 瀏覽網站,請嘗試在網址前加上 'www' (例如 https://www.example.com)。
若選擇略過此錯誤並繼續,請勿在此網站輸入個人資訊。
有關進一步的詳細資料,請參閱 Internet Explorer 中的「憑證錯誤」。
----

而在fiddler2未開啟時,IE卻沒有出現此訊息

why?(這張圖應該可以清楚的表達他的運作模式)

ie--ssl(憑證1)--fiddler2--ssl(憑證2)--website

因為fiddler2 是直接在wininet api(raw socket) 上運作,所以當你的ie 要連接ssl網站時,他是被 fiddler2(proxy) 直接從網卡accept , 由fiddler2 動態產生憑證 (憑證1:這是為何出現上面訊息的原因,因為憑證1並不是真正由webserver發出),因為憑證1 是由fiddler2 產生,所以他能夠解開ie 送出的封包,而當他收到ie 封包且解開後,再反過來跟webserver 做資訊的交通(此時使用的的是憑證2)

fiddler2 是微軟的工程師做的,他會從wininet 著手一點都不覺得奇怪,因為wininet api 是所有微軟ie 送資料(socket)的核心(因此;fiddler可以收到部分MSN 收送HTTP Protocol的資訊),正因fiddler1只從 wininet 著手,所以firefox... 他就無法得到資訊,而 fiddler2 聽說也可以接收其他瀏覽器的封包,我實際測試卻發現firefox3好像也聽不到封包,而要能跨越瀏覽器一定要從網卡下手,從網卡直接修改網路封包,而要有能力這麼做,程式必須要使用root/administrator來跑,也就是說;非使用者安裝的程式無法直接存取硬體, 而且他只能debug 自己的server,無法監聽其他網路上的封包,基本上如果是使用HUB 把其他機器接在一起, 可能聽的到攔不到,所以decrypt ssl 的功能也會跟著失效
張貼留言