有一個桌面客戶端A通過https連接連接到網站W
A --> W
A和W之間存在某種方式是代理G。
A --> G --> W
- 在這種情況下,G將能夠獲得證書
有一個桌面客戶端A通過https連接連接到網站W
A --> W
A和W之間存在某種方式是代理G。
A --> G --> W
HTTPS基於公鑰/私鑰加密。這基本上意味著有一個密鑰對:公鑰用於加密,而私鑰則用於解密。
證書基本上是帶有密鑰的公鑰。標籤來標識所有者。
因此,當您的瀏覽器連接到HTTPS服務器時,該服務器將使用其證書進行回答。瀏覽器檢查證書是否有效:
如果不滿足這些條件之一,則將問題告知用戶。
驗證後,瀏覽器提取公鑰,然後將其用於加密某些信息,然後再將其發送到服務器。服務器可以解密它,因為服務器具有匹配的私鑰。
在這種情況下,G是否可以從W獲得A先前獲得的證書?
是的,該證書是帶有標籤的公鑰。網絡服務器會將其發送給連接它的任何人。
如果G可以獲取證書,這是否意味著G能夠解密數據?
不。證書包含網絡服務器的公共密鑰。惡意代理不具有匹配的私鑰。因此,如果代理將真實證書轉發給客戶端,則它無法解密客戶端發送給Web服務器的信息。
代理服務器可能嘗試偽造證書並提供自己的公共密鑰。但是,這將破壞證書頒發機構的簽名。瀏覽器將警告無效證書。
如果您的計算機的管理員可以配合使用,則代理服務器可以嗅探https連接。在某些公司中使用此命令來掃描病毒並執行可接受的使用準則。
設置了本地證書頒發機構,管理員告訴您的瀏覽器該 CA值得信賴。代理服務器使用此CA對他的偽造證書進行簽名。
哦,當然,用戶傾向於單擊安全警告。
假設用戶沒有單擊證書警告(並假設您正在運行未修改的客戶端),答案是:否,代理無法解密數據。
有關HTTPS如何防止中間人解密流量的詳細說明,請參閱SSL / TLS上的任何標準資源,例如
PS該證書是公共數據。它包含服務器的公鑰和域名,兩者都不是秘密。遵守證書並不能幫助攻擊者解密數據。 (是的,代理可以觀察證書,但這是無害的。)
摘自 Philipp C. Heckel的技術博客,進行了一些簡短的編輯:
儘管可以處理未加密的HTTP流量,而無需處理X.509證書和證書頒發機構(CA),SSL加密的HTTPS連接對客戶端與服務器端到端之間的每個請求和響應進行加密。並且由於傳輸的數據是使用共享密鑰加密的,因此中間人(或代理)無法解密交換的數據包。當客戶端打開到安全Web服務器的SSL / TLS連接時,它將通過檢查兩個條件來驗證服務器的身份:首先,它檢查其證書是否由客戶端已知的CA簽名。其次,確保服務器的公用名(CN,也稱為主機名)與它連接的公用名匹配。如果兩個條件都成立,則客戶端將假定連接是安全的。
為了能夠嗅探到該連接,代理服務器可以充當證書頒發機構,但是,不是一個非常值得信賴的證書頒發機構:通過向實際人員或組織頒發證書,代理可以動態生成針對連接所需主機名的證書。例如,如果客戶端要連接到 https://www.facebook.com,則代理將為“ www.facebook.com”生成證書,並使用其自己的CA對其進行簽名。如果客戶端信任此CA,則上述兩個條件都為真(可信的CA,相同的CN),這意味著客戶端認為代理服務器實際上是“ www.facebook.com”。下圖顯示了此方案的請求/響應流。這種機制稱為透明HTTPS代理。
為使此攻擊有效,必須滿足一些條件:
- 代理服務器作為標準網關(HTTP和HTTPS):對於HTTP和HTTPS代理,代理服務器當然必須能夠攔截IP數據包-這意味著它必須位於IP數據包中的某個位置。數據包路徑的方式。實現此目的的最簡單方法是將客戶端設備中的默認網關更改為代理服務器地址。
- 受信任的代理CA(僅HTTPS):為了使HTTPS代理正常工作,客戶端必須知道(並信任!)代理CA,即必須將CA密鑰文件添加到客戶端的信任存儲中。
如果您對透明嗅探普通SSL套接字感興趣,則可以嘗試使用
SSLsplit
(透明的TLS / SSL中間人代理)。攻擊SSL的方法有很多,但是您不需要偽造的SSL證書,惡意的證書頒發機構(CA)或安全專家Moxie Marlinspike的中間人SSL攻擊的變體。當您只需購買SSL攔截代理(如Blue Coat Systems的ProxySG或最近購買的Netronome SSL設備)來為您完成工作時,為什麼還要麻煩呢?
摘自ZDNet上的 Steven J. Vaughan-Nichols(摘錄):
Blue Coat是SSL攔截業務中的大名,遠非唯一的提供SSL攔截功能並打破常規。例如,直到最近,Microsoft才會向您出售一個程序Forefront Threat Management Gateway 2010,它也可以為您完成這項工作。使用SSL攔截代理程序或設備後,實際發生的事情是:
如果您的公司正確設置了代理服務器,您將不會發現任何問題,因為它們將安排在您的計算機上將代理服務器的內部SSL證書註冊為有效證書。否則,您將收到一條彈出錯誤消息,如果單擊繼續,它將接受“偽造”數字證書。無論哪種情況,您都可以與代理建立安全連接,也可以與外部站點建立安全連接-通過代理髮送的所有內容都可以純文本格式讀取。哎呀。
根據您所使用的網絡的配置,管理員可能可以查看HTTPS連接(以及VPN)的內容。
顯然可以攔截網絡上的流量,但是通常的問題是它們無法為您訪問的所有站點頒發有效的證書,因此每次您都會看到很多證書警告您訪問HTTPS站點,如果他們試圖解密流量以查看它。
但是,如果您使用的是公司提供的計算機,則他們可以安裝新的證書頒發機構,然後將其用於為您訪問的站點創建SSL證書,這樣就不會出現問題。
對於VPN來說,如果VPN不使用SSL,但是理論相同,可能會更加複雜。適用。如果您從他們控制的網絡上其他人擁有的計算機訪問Internet,則他們很可能可以訪問您輸入的任何內容。
如果您希望避免此類問題,我會使用您擁有/控制的用於訪問Internet的設備,這樣一來,如果發生SSL攔截,您應該得到警告。
正確,公司網絡管理員使用自己的CA對TLS客戶端實施了中間人攻擊,以便他們可以看到離開網絡的內容。他們可能會使用一種設備,該設備會在您訪問gmail.com時即時創建對gmail.com有效的證書。他們這樣做的原因不是扮演Evil博士,而是為了防止商業秘密通過互聯網連接從建築物中竄出。認真地,不要在工作計算機上進行私人銀行業務。
如果您使用的軟件產品不使用系統證書存儲(例如OpenVPN實例),那麼,否,它們將無法攔截並解碼您的流量,因為您不信任他們的CA。例如,使用Firefox便攜式應用程序可能會獲得相同的結果。並且在大多數瀏覽器中,您可以檢查安全連接的詳細信息,並查看誰是CA,以確保誰在偵聽。
代理可以阻止https,並且僅允許瀏覽器中的http。然後,它可以啟動自己的https連接,以將請求傳遞到服務器。
大多數用戶不會注意到。
HSTS應該可以阻止這種情況,但並未得到廣泛使用。
SSL終止或Bluecoat之類的SSL代理產品需要安裝在您的網絡上,並考慮成本,涉及的安裝過程以及任何組織安裝這些產品的組織所應遵循的常規安全策略-使用商業SSL的惡意攻擊者的威脅終接乘積幾乎為零。 OTOH-可以訪問NOC(網絡運營中心)的受信任內部人員實際上可以監視SSL終止的流量並洩露敏感信息。
對於實施DLP系統的公司來說,這是一個普遍的擔憂(無論是否合理)
這一切都說明了-在家庭銀行業務領域中,有另一種常見的攻擊媒介,它不需要網絡代理,並且在瀏覽器中是“背帶式” /“ shim”式攻擊-因為DOM可以訪問在文本流量到達SSL管道之前將其清除-這是一種方便的攻擊手段,通常通過瀏覽器擴展程序進行安裝。在墊片上有一篇很好的Stackexchange文章-是否可以在用戶不知情的情況下將墊片(aka polyfill)安裝在IE,FF或Chrome中,並且它可以讀取用戶在登錄頁面上輸入的密碼嗎?