Fiddler能分析HTTPS流量意味著HTTPS協(xié)議不安全鲤屡?

前幾天有個(gè)同學(xué)在公眾號(hào)問了我一個(gè)問題,涉及到Fiddler分析HTTPS流量的問題福侈,雖然對(duì)Fiddler不太了解酒来,但一看是HTTPS問題,我還是非常感興趣的肪凛,因?yàn)樾崽杰浖墓ぷ髟硎窍嗤ǖ难吆海诂F(xiàn)有知識(shí)分析一個(gè)未知的問題是非常有趣的事情,所以我放下工作伟墙,簡單了解了下翘鸭,并有了一個(gè)相對(duì)滿意的解答,然后寫了此文戳葵,從問題分析到文章完成總共花了不到一個(gè)小時(shí)就乓。

這是一次全新的寫作體驗(yàn),相比以前拱烁,我總是四平八穩(wěn)的分析生蚁、論證、撰寫戏自,產(chǎn)出一篇文章需要很久邦投,而這次完全是“沖動(dòng)式”的寫作過程,所以文章難免有錯(cuò)誤擅笔,再加上我對(duì)Fiddler不太了解志衣,會(huì)暴露更多的錯(cuò)誤,這一點(diǎn)請(qǐng)大家了解猛们,同時(shí)本文不涉及任何的實(shí)踐念脯,僅僅從理論上進(jìn)行分析論證。

廢話了那么多阅懦,那么到底是什么問題呢和二?核心有兩點(diǎn):

  • Fiddler是否能夠分析、篡改HTTPS流量耳胎?如果能惯吕,原理是什么惕它?
  • 如果能夠分析、篡改HTTPS流量废登,是否說明HTTPS協(xié)議設(shè)計(jì)有漏洞淹魄?

本質(zhì)上寫這篇文章主要原因是很多人對(duì)HTTPS協(xié)議的誤解,總覺得它不安全堡距,所以我先反駁下甲锡,這是錯(cuò)誤的一種觀點(diǎn)。

(1)HTTPS協(xié)議從設(shè)計(jì)上是沒有問題的羽戒,但歷史上HTTPS實(shí)現(xiàn)確實(shí)出現(xiàn)過一些漏洞(比如 OpenSSL 心臟滴血)缤沦,但這是工程實(shí)現(xiàn)問題,不是協(xié)議問題易稠。

(2)早期的HTTPS協(xié)議(其實(shí)是TLS協(xié)議)安全性不是很高缸废,后續(xù)版本經(jīng)過迭代解決了很多問題,理論上HTTPS服務(wù)部署者可以廢棄低版本的TLS協(xié)議驶社,但由于萬惡的低版本客戶端(比如 xp系統(tǒng)下的IE瀏覽器)太多了企量,為了兼容它們,HTTPS服務(wù)部署者只能在安全性上做一個(gè)折中亡电。

(3)HTTPS協(xié)議是一個(gè)典型的B/S應(yīng)用協(xié)議届巩,它的安全性不僅僅取決于HTTPS協(xié)議的服務(wù)器端,也取決于客戶端(典型的就是瀏覽器)份乒,如果客戶端在實(shí)現(xiàn)的時(shí)候出現(xiàn)一些問題恕汇,也可能導(dǎo)致HTTPS協(xié)議漏洞。

(4)web安全(當(dāng)然也包括其他領(lǐng)域)是一個(gè)復(fù)雜的問題冒嫡,HTTPS協(xié)議安全只是Web安全領(lǐng)域的一部分拇勃,它只是保證你流量不被劫持、偽造孝凌、篡改,可web的執(zhí)行由于JavaScript的存在月腋,仍然會(huì)出現(xiàn)安全漏洞蟀架,記住web安全和HTTPS安全不是一回事。

(5)不道德的行為榆骚,對(duì)于HTTPS應(yīng)用來說片拍,如果一個(gè)CA機(jī)構(gòu)沒有品行,惡意簽發(fā)證書妓肢,那么HTTPS的安全性也沒有保證捌省,這你能怪HTTPS協(xié)議嗎?某種程度上確實(shí)應(yīng)該怪它,但我們必須了解不安全的根本原因碉钠,PKI安全是一個(gè)非常復(fù)雜的問題纲缓,如果不構(gòu)建一個(gè)安全標(biāo)準(zhǔn)卷拘,即使有了HTTPS協(xié)議,也不見得就安全祝高。

又自言自語說了一大通栗弟,現(xiàn)在讓我們回到本文的主題,F(xiàn)iddler能夠解密HTTPS流量工闺,它的基本實(shí)現(xiàn)原理來源于“中間人”方法乍赫,通過下圖和對(duì)圖的描述,同學(xué)們就會(huì)清楚了陆蟆。

圖1
圖1

(1)假設(shè)在Chrome瀏覽器中配置了Fiddler代理雷厂,然后在瀏覽器中訪問https://www.test.com,目的是為了查詢自己的工資叠殷,由于所有的HTTPS流量都會(huì)經(jīng)過Fiddler代理罗侯,瀏覽器向Fiddler發(fā)起TLS握手。

(2)Fiddler代理接收到TLS握手請(qǐng)求溪猿,為www.test.com生成一張證書(證書中包含該主機(jī))钩杰,該證書用Fiddler根證書進(jìn)行簽名,然后將www.test.com證書發(fā)送給瀏覽器诊县。

(3)瀏覽器校驗(yàn)完證書后(該證書包含的主機(jī)和待訪問的主機(jī)相同)讲弄,最后和服務(wù)器端協(xié)商出一致的對(duì)稱加密算法的密鑰(MasterKeyA)。

(4)TLS握手完成后依痊,瀏覽器使用MasterKeyA加密應(yīng)用層數(shù)據(jù)(即查詢自己工資)發(fā)送給Fiddler避除。

(5)Fiddler使用MasterKeyA解密出應(yīng)用層數(shù)據(jù)(即知道瀏覽器想干啥),然后以客戶端的身份和www.test.com建立TLS連接胸嘁,并協(xié)商出一致的對(duì)稱加密算法的密鑰(MasterKeyB)瓶摆,然后對(duì)應(yīng)用層數(shù)據(jù)(即查詢自己工資)使用MasterKeyB加密并發(fā)送給www.test.com服務(wù)器。

(6)www.test.com服務(wù)器使用MasterKeyB解密出Fiddler(實(shí)際上是Chrome的)發(fā)送的數(shù)據(jù)(即查詢自己工資)性宏,從數(shù)據(jù)庫中查詢出工資(假設(shè)是100元)后群井,然后使用MasterKeyB加密后發(fā)送給Fiddler。

(7)Fiddler對(duì)100元使用MasterKeyA加密毫胜,然后發(fā)送給Chrome瀏覽器书斜,瀏覽器使用MasterKeyA解密出就得到了自己的工資。

這就是大概的原理酵使,并沒有太多的技術(shù)含量荐吉,就是中間人方法,很多人說“你說的不對(duì)口渔,如果如此簡單样屠,那么任何一個(gè)網(wǎng)關(guān)或路由器就能夠輕松解密HTTPS流量了”。

說的沒錯(cuò),中間人方法(中間人攻擊)在HTTPS協(xié)議中實(shí)際上是行不通的痪欲,原因在于Chrome瀏覽器會(huì)校驗(yàn)證書的合法性悦穿。假設(shè)www.test.com使用let’s encrypt根證書簽名,由于瀏覽器在自己的可信任根證書列表中集成了let’s encrypt根證書勤揩,在TLS握手的時(shí)候發(fā)現(xiàn)www.test.com證書是由let’s encrypt簽名的咧党,使用let’s encrypt根證書的公鑰進(jìn)行驗(yàn)簽,一旦通過陨亡,代表該證書合法傍衡。

如果任何的網(wǎng)關(guān)或路由器使用中間人方法截獲了HTTPS流量,偽造一張證書(比如www.test.com證書)负蠕,該證書必然也由一張根證書簽名蛙埂,可這張根證書大概率Chrome瀏覽器沒有集成在自己的可信任根證書列表中,所以根本不會(huì)信任它遮糖,從而彈出一個(gè)提示“該證書不合法绣的,HTTPS握手失敗”。

有點(diǎn)明白了嗎欲账?那為啥Fiddler作為一個(gè)代理(中間人)能夠解密HTTPS流量呢屡江?因?yàn)樗母C書Chrome沒有集成在自己的可信任根證書列表中(一個(gè)CA機(jī)構(gòu)想將自己的根證書集成到瀏覽器的可信任根證書列表中需要經(jīng)過嚴(yán)格的審計(jì)),它怎么做到的赛不?

原因在于在配置Fiddler的時(shí)候(以下只考慮Windows系統(tǒng))惩嘉,F(xiàn)iddler會(huì)將自己的根證書放入到Windows可信任根證書庫中,Chrome使用Windows的根證書庫踢故,所以Chrome就信任了Fiddler的根證書文黎,從而能夠解密HTTPS流量了。

總結(jié)下殿较,如果要使用Fiddler解密HTTPS流量耸峭,必須能夠控制配置Fiddler代理的機(jī)器(在調(diào)試的機(jī)器上安裝Fiddler根證書),這是很重要的一個(gè)前提淋纲,如果你作為一個(gè)黑客能夠控制別人的電腦了劳闹,此時(shí)就不要討論這臺(tái)電腦的HTTPS流量被解密了,安全都是相對(duì)的帚戳。

最后用一張圖簡單回顧下Fildder是如何解密的:

圖2
圖2

大概原理講完了玷或,很多人覺得Fiddler解密HTTPS配置太復(fù)雜了,原因在于有些時(shí)候可能需要自己下載Fiddler的根證書并集成到客戶端(比如瀏覽器)或操作系統(tǒng)的可信任根證書列表中片任,比如:

  • 你想解密HTTPS流量的機(jī)器并沒有安裝Fiddler,只是配置了它的代理蔬胯。
  • 像Firefox沒有使用Windows的根證書庫对供,它使用自己的NSS根證書。

如果你需要自己配置Fiddler根證書,那么下面一些文章適合你閱讀:

  • 在windows系統(tǒng)中产场,雙擊Fiddler根證書(.crt后綴)鹅髓,就會(huì)有圖形化的安裝界面,從而完成配置京景。
  • 在Windows系統(tǒng)中窿冯,IE和Chrome默認(rèn)是使用Windows根證書的,沒有特殊需要無需單獨(dú)配置确徙,如果想要在Chrome中單獨(dú)配置Fiddler根證書醒串,可以參考如何讓chrome信任自簽名證書?
  • 在Firefox中鄙皇,如果想配置Fiddler根證書芜赌,可以參考在firefox中更新證書的幾種方式

如果根證書驗(yàn)證簽名沒有理解,或者想了解更多的PKI知識(shí)伴逸,可以參考我的書《深入淺出HTTPS:從原理到實(shí)戰(zhàn)》缠沈。


【這篇文章于2018-10-14號(hào)發(fā)表于公眾號(hào),地址https://mp.weixin.qq.com/s/v2FvcJd_SDob19ToXxLWIA,也可以關(guān)注我的公眾號(hào)(ID:yudadanwx错蝴,虞大膽的嘰嘰喳喳)】

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末洲愤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子顷锰,更是在濱河造成了極大的恐慌柬赐,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馍惹,死亡現(xiàn)場(chǎng)離奇詭異躺率,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)万矾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門悼吱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人良狈,你說我怎么就攤上這事后添。” “怎么了薪丁?”我有些...
    開封第一講書人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵遇西,是天一觀的道長。 經(jīng)常有香客問我严嗜,道長粱檀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任漫玄,我火速辦了婚禮茄蚯,結(jié)果婚禮上压彭,老公的妹妹穿的比我還像新娘。我一直安慰自己渗常,他們只是感情好壮不,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著皱碘,像睡著了一般询一。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上癌椿,一...
    開封第一講書人閱讀 52,713評(píng)論 1 312
  • 那天健蕊,我揣著相機(jī)與錄音,去河邊找鬼如失。 笑死绊诲,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的褪贵。 我是一名探鬼主播掂之,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼脆丁!你這毒婦竟也來了世舰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤槽卫,失蹤者是張志新(化名)和其女友劉穎跟压,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歼培,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡震蒋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躲庄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片查剖。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖噪窘,靈堂內(nèi)的尸體忽然破棺而出笋庄,到底是詐尸還是另有隱情,我是刑警寧澤倔监,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布直砂,位于F島的核電站,受9級(jí)特大地震影響浩习,放射性物質(zhì)發(fā)生泄漏静暂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一谱秽、第九天 我趴在偏房一處隱蔽的房頂上張望籍嘹。 院中可真熱鬧闪盔,春花似錦弯院、人聲如沸辱士。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颂碘。三九已至,卻和暖如春椅挣,著一層夾襖步出監(jiān)牢的瞬間头岔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來泰國打工鼠证, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留峡竣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓量九,卻偏偏與公主長得像适掰,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荠列,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容