2009-07-02 52 views
21

我有一個與遠程Web服務交談的本地應用程序(我沒有寫,也無法更改)。它使用HTTPS,我想看看流量中有什麼。以明文方式捕獲HTTPS流量?

有什麼辦法可以做到這一點?我更喜歡Windows系統,但是我很樂意在Linux上設置代理,如果這樣做更容易。

我正在考慮:

  1. 通過黑客攻擊我的hosts文件(或設置備用DNS)重定向的網站。
  2. 在該站點上安裝HTTPS服務器,使用自簽名(但受信任)的證書。
  3. 顯然,WireShark可以看到HTTPS中有什麼,如果你給它私鑰。我從來沒有試過這個。
  4. 不知何故,將這個流量代理到真實的服務器(即它是一個全面的中間人「攻擊」)。

這聽起來明智嗎? WireShark能真正看到HTTPS流量中的內容嗎?任何人都可以指向我一個合適的代理(和相同的配置)?

回答

11

Fiddler做你想要的嗎? :

什麼是提琴手?

Fiddler是一個Web調試代理,其中 記錄您的計算機和Internet之間的所有HTTP(S)流量。 Fiddler 允許您檢查所有HTTP(S) 流量,設置斷點和「小提琴」 與傳入或傳出的數據。 Fiddler包括功能強大的基於事件的腳本子系統 ,並且 可以使用任何.NET 語言進行擴展。

提琴手是免費軟件,可以從幾乎任何應用程序 ,包括互聯網 瀏覽器,Mozilla Firefox,歌劇調試 流量,並 數千人。

+1

是的,它可以作爲一個人在這方面的中間人HTTPS請求代理 - 請注意,它提供了一個未簽名的證書,因此,如果您的應用程序需要信任的證書,你就必須停用這個要求,或者不信任證書 - 這提琴手也不建議:http://www.fiddler2.com/Fiddler/help/httpsdecryption.asp – 2009-07-02 08:55:06

+0

我知道了觀看HTTPS從Internet Explorer和Chrome的流量;現在找出它是否適用於有問題的應用程序... – 2009-07-02 09:23:11

+0

...除了所討論的應用程序僅以管理員權限運行,Fiddler似乎並不想在我的管理員帳戶下安裝HTTPS證書(我大部分時間都在運行LUA)。 – 2009-07-02 09:29:45

0
  1. 對於使用HTTPS代理來監控,這取決於握手類型。如果您的本地應用程序沒有通過您無法僞造的CA簽名來檢查服務器的證書,並且服務器沒有檢查您的本地應用程序的證書(或者您需要在https代理上設置一個證書),那麼您可以將https代理設置爲監控https流量。否則,我認爲使用https代理監控流量是不可能的。

  2. 另一種可以嘗試的方法是在您的客戶端程序的例程中添加檢測探測器,以便從其https庫發送和接收消息。它需要一些逆向工程工作,但應該適合所有情況。

0

我會推薦WireShark,它是在不同的流量上遵循的最佳工具。雖然,我不確定您打開SSL後能看到什麼。也許,如果你提供證書?

7

Wireshark的絕對可以顯示TLS/SSL加密流作爲明文。但是,您一定需要服務器的私鑰才能這樣做。在首選項下,私鑰必須作爲SSL選項添加到Wireshark。請注意,這隻有在您可以從一開始就關注SSL流時纔有效。如果SSL連接被重用,它將不起作用。

對於Internet Explorer這個(SSL會話重用)可以通過使用Internet選項對話框中清除SSL狀態來避免。其他環境可能需要重新啓動瀏覽器或甚至重新啓動系統(以避免重用SSL會話)。

另一個關鍵限制是,一個RSA密碼必須使用。 Wireshark無法解碼使用DFH(Diffie-Hellman)的TLS/SSL流。

假設你能滿足上面的約束,「跟隨SSL流」右擊命令的工作相當出色。

2

你也應該考慮Charles。從這個答案的時候,產品說明:

查爾斯是一個HTTP代理/ HTTP監視器/反向代理,使開發人員能夠查看所有的HTTP和SSL/HTTPS流量的計算機和互聯網之間。這包括請求,響應和HTTP頭(包含cookie和緩存信息)。