簡介
向下兼容(downward compatibility),在計算機中指在一個程式、庫或硬體更新到較新版本後,用舊版本程式創建的文檔或系統仍能被正常操作或使用(包括輸入數據)、在舊版本庫的基礎上開發的程式仍能正常編譯運行,或較舊版的硬體仍可在新版使用的情況。
降級攻擊是一種間接攻擊計算機系統的方式,使系統放棄安全度較高的工作方式,使用向下兼容的工作方式。降級攻擊常被用於
中間人攻擊,將加密通訊的安全性大幅削弱,得以進行原本不可能做到的攻擊。SSL/TLS協定是降級攻擊的重災區,長期面臨這類問題,例如POODLE(Padding Oracle On Downgraded Legacy Encryption)攻擊。去除向下兼容往往是解決降級攻擊的較好手段。
降級過程
降級過程通過翻轉兩端的認證協定來實現。具體來說, 由於對認證協定選項的配置是從伺服器端開始的,當伺服器傳送出第一個 configure-request 報文時,伺服器端 PPTP 程式記錄了當前伺服器認可的認證協定選項, 這個認證協定是 CHAP。 當客戶端接收到這個 configure-request 報文時,必然會傳送 Ack 報文對伺服器傳送的上一個配置報文進行確認。此時,中間人攻擊程式將這個 Ack 報文攔截掉並偷偷丟棄,然後自己偽造一個 Nak 報文並在其中添加 PAP 選項之後傳送給伺服器端。伺服器接收到這個報文以後,其認證協定選項就從 CHAP 翻轉成 PAP。 但是此時客戶端事實上已經接受了伺服器傳送的上一個配置報文, 所以客戶端所記錄的認證協定狀態是 CHAP。下面我們需要通過偽造 configure- request報文對客戶端的認證協定狀態進行翻轉。
由於伺服器接收到了客戶端傳送過來的 Nak 報文,它就會進入重協商過程, 重新傳送一個新的 configure-request 報文,這個配置報文中不包含對認證協定的協商。 當這個報文到達中間人主機時,中間人攻擊程式將這個報文攔截,並在它的選項欄位添加一個新的PAP 選項,然後繼續轉發給客戶端。 客戶端接收這個新的配置報文以後,其認證協定就從 CHAP 翻轉為PAP。 此時客戶端會對這個配置報文重新進行確認,傳送一個Ack 報文,當這個 Ack 報文到達中間人主機時,中間人攻擊程式攔截這個報文,刪除其中的 PAP 選項,並繼續轉發給伺服器端。
至此,整個降級攻擊過程完成。這個降級攻擊方式不會對 GRE 隧道的序列號造成混亂,因為中間人並沒有憑空偽造一個報文來消耗兩端的序列號, 而是通過替換原有的報文,占用了原有的序列號。從上面的分析可見,降級過程是通過偽造 Nak 報文來讓兩端進行強制重協商狀態,只有通過 Nak 報文強制翻轉伺服器端的認證協定選項,才可以實現降級。 強制重協商過程也是中間人攻擊的典型攻擊模式。
中間人攻擊
中間人攻擊(Man-in-the-Middle Attack),是一種間接攻擊模式。 黑客通過某種技術控制一個處於通信兩端的主機之間的某個路由,在這個路由上,中間人可以嗅探、攔截或修改兩端通信過程中的數據包。 能夠實現中間人攻擊的技術很多,比如:ARP 欺騙 ,為了欺騙一個處於同一區域網路的某台主機 ,可以使用 ARP 配置報文,使目標主機誤認為攻擊者主機是該區域網路的默認網關。 這樣受害者主機所有的出口流量就都會傳送到中間人主機上。
DNS 欺騙 :在域名解析過程中 ,客戶端首先需要通過域名向 DNS 伺服器傳送一個請求報文,以獲得目的主機的 IP。 攻擊者可以通過劫持這個請求報文,然後傳送一個虛假的回覆報文,將一個虛假的目的 IP 地址傳送給客戶端。 客戶端就會被帶到一個中間人預先設定好的目的主機上。
釣魚網路:無線接入是非常普遍的區域網路接入方式。中間人可以通過在一台安裝有無線收發網卡的設備上開啟無線網路誘導被害者使用該網路。由於被害者一旦接入該網路,他的所有數據都是通過這個釣魚網路進行轉發的,因此在中間人的機器上可以很容易的攔截和修改數據包。而且相比於前兩種策略,搭建釣魚網路的成本非常小,配置也比較簡便。總體來說,在公共場所開放一個免費Wi-Fi是一個非常隱蔽和簡單快捷的攻擊方案。
一個中間人攻擊能成功的前提條件是攻擊者能將自己偽裝成每一個參與會話的終端,並且不被其他終端識破。中間人攻擊是一個(缺乏)相互認證的攻擊。大多數的加密協定都專門加入了一些特殊的認證方法以阻止中間人攻擊。例如,
SSL協定可以驗證參與通訊的一方或雙方使用的證書是否是由受信任的數字證書認證機構頒發,並且能執行雙向身份認證。
傳輸層安全性協定
傳輸層安全性協定(Transport Layer Security,TLS),及其前身安全套接層(Secure Sockets Layer,縮寫作 SSL)是一種安全協定,目的是為網際網路通信,提供安全及
數據完整性保障。網景公司(Netscape)在1994年推出首版網頁瀏覽器,網景導航者時,推出HTTPS協定,以SSL進行加密,這是SSL的起源。IETF將SSL進行標準化,1999年公布第一版TLS標準檔案。隨後又公布RFC 5246 (2008年8月)與 RFC 6176 (2011年3月)。在瀏覽器、電子郵件、即時通信、VoIP、網路傳真等應用程式中,廣泛支持這個協定。主要的網站,如Google、Facebook等也以這個協定來創建安全連線,傳送數據。已成為網際網路上保密通信的工業標準。
SSL包含記錄層(Record Layer)和傳輸層,記錄層協定確定傳輸層數據的封裝格式。
傳輸層安全協定使用X.509認證,之後利用非對稱加密演算來對通信方做身份認證,之後交換對稱密鑰作為會談密鑰(Session key)。這個會談密鑰是用來將通信兩方交換的數據做加密,保證兩個套用間通信的保密性和可靠性,使客戶與伺服器套用之間的通信不被攻擊者竊聽。
TLS協定採用
主從式架構模型,用於在兩個應用程式間透過網路創建起安全的連線,防止在交換數據時受到竊聽及篡改。
TLS協定的優勢是與高層的套用層協定(如HTTP、FTP、Telnet等)無耦合。
套用層協定能透明地運行在TLS協定之上,由TLS協定進行創建加密通道需要的協商和認證。套用層協定傳送的數據在通過TLS協定時都會被加密,從而保證通信的私密性。
TLS協定是可選的,必須配置客戶端和伺服器才能使用。主要有兩種方式實現這一目標:一個是使用統一的TLS協定通信連線埠(例如:用於HTTPS的連線埠443);另一個是客戶端請求伺服器連線到TLS時使用特定的協定機制(例如:郵件、新聞協定和STARTTLS)。一旦客戶端和伺服器都同意使用TLS協定,他們通過使用一個握手過程協商出一個有狀態的連線以傳輸數據。通過握手,客戶端和伺服器協商各種參數用於創建安全連線:
當客戶端連線到支持TLS協定的伺服器要求創建安全連線並列出了受支持的密碼組合(加密密碼算法和加密哈希函式),握手開始。
伺服器從該列表中決定加密和散列函式,並通知客戶端。
伺服器發回其數字證書,此證書通常包含伺服器的名稱、受信任的證書頒發機構(CA)和伺服器的公鑰。
客戶端確認其頒發的證書的有效性。
為了生成會話密鑰用於安全連線,客戶端使用伺服器的公鑰加密隨機生成的密鑰,並將其傳送到伺服器,只有伺服器才能使用自己的私鑰解密。
利用隨機數,雙方生成用於加密和解密的對稱密鑰。這就是TLS協定的握手,握手完畢後的連線是安全的,直到連線(被)關閉。如果上述任何一個步驟失敗,TLS握手過程就會失敗,並且斷開所有的連線。