1. 程式人生 > >流量劫持與HTTPS

流量劫持與HTTPS

 

流量劫持  

檢測網站是否被劫持
域名是否被牆
DNS汙染檢測
網站開啟速度檢測
網站是否被黑
被入侵
被改標題
被掛黑鏈 網站劫持檢測  遠端桌面連線軟體

什麼是流量劫持?

流量劫持,就是通過某種手段得到我們上網的時候傳輸的資料,然後對這些資料進行篡改或者窺探,以達到劫持者的目的。在我們生活中最常見的應該就屬運營商流量劫持了,比如我們流量一個網頁的時候,如果我們輸錯了網址,可能就會跳到一個運營商的提示頁面,提示網址錯誤,同時這個頁面裡會有運營商的一些廣告等資訊。 
由於網路分為很多層,典型的OSI模型,網路分為七層:物理層,資料鏈路層,網路層,傳輸層,會話層,表示層,應用層。每一層都有發生流量劫持的可能。下面是常見的一些流量劫持: 


* Hub 嗅探 
* MAC 欺騙 
* MAC 沖刷 
* ARP 攻擊 
* DHCP 釣魚 
* DNS 劫持 
* CDN 入侵 
* 路由器 弱口令 
* 路由器 CSRF 
* PPPoE 釣魚 
* 蜜罐代理 
* WiFi 弱口令 
* WiFi 偽熱點 
* WiFi 強制斷線 
* WLAN 基站釣魚

根據手段的不同,基本可以分為兩類: 
1. DNS劫持:通過將通過劫持掉域名的DNS解析結果,將HTTP請求劫持到特定IP上,使得客戶端和攻擊者的伺服器建立TCP連線,而非和目標伺服器直接連線,這樣攻擊者就可以對內容進行竊取或篡改。在極端的情況下甚至攻擊者可能偽造目標網站頁面進行釣魚攻擊。 


2. 直接流量修改:在資料通路上對頁面進行固定的內容插入,比如廣告彈窗等。在這種情況下,雖然客戶端和伺服器是直接建立的連線,但是資料內容依然可能遭到野蠻破壞。

流量劫持的危害

不同網路層次上發生的劫持造成的危害可能不太一樣,但是都會造成使用者資訊洩露,隱私被窺探。 
不同的劫持方式,獲得的流量也有所差異。DNS劫持,只能截獲通過域名發起的流量,直接使用 IP 地址的通訊則不受影響;CDN入侵,只有瀏覽網頁或下載時才有風險,其他場合則毫無問題;而閘道器被劫持,使用者所有流量都難逃魔掌。 
但流量劫持也有有用的一面,比如我們現在經常用的CDN,就可以算作一種流量劫持,它通過DNS解析,把域名解析到距離使用者近的伺服器上,減少了資原始檔的響應時間。

各種流量劫持的原理

Hub嗅探

Hub的工作原理是通過廣播將一個介面收到的資料包群發到所有的介面上,這樣任意介面都能獲取到所有資料,使用者隱私也就無從談起。 
這種裝置目前唯一可用之處就是旁路嗅探。利用廣播的特性,可以非常方便分析其他裝置的通訊,例如抓取機頂盒的資料包而不影響正常通訊。

MAC欺騙(交換機)

交換機的工作原理與Hub不同,交換機可以繫結MAC地址和介面,資料包只發送到一個終端。但是如果沒有事先配置好MAC地址和介面,而是採用自動學習的方式,即根據某個介面發出的包,自動關聯該包的源地址到此介面。那麼就可以被黑客通過偽造某個使用者的MAC地址,而導致交換機將該使用者的所有資料都發到黑客機器上。同時,被劫持的使用者將無法上網。

MAC沖刷(交換機)

如果交換機發現了一個之前沒有遇到過的MAC地址,那麼就會將資料包廣播到所有的介面。由於交換機的硬體配置有限,顯然不可能無限多的記錄地址對應條目。我們不停偽造不重複的源地址,交換機裡的記錄表很快就會填滿,甚至覆蓋原有的學習記錄,使用者的資料包無法正常轉發,只能廣播到所有介面上了。

ARP攻擊

ARP:地址解析協議,即根據IP地址,解析出對應的MAC地址。主機A為了獲取主機B的對應的MAC地址,需要廣播ARP資料包,包中包含了主機B的IP地址,ARP資料包會被同一鏈路上的所有主機和路由器接收,主機B收到資料包之後發現自己的IP地址與ARP資料包中的IP地址一致,就將自己的MAC地址響應給主機A。 
ARP攻擊就是通過冒充主機B,將自己的MAC地址搶在主機B之前傳送給主機A,這樣,傳送到主機B的IP地址的資料就會被錯誤的傳送給冒充方。

DHCP釣魚

DHCP(Dynamic Host Configuration Protocol):動態主機配置協議。作用是為主機動態分配IP地址。DHCP的工作機制簡單來說就是需要分配IP地址的主機向DHCP伺服器廣播發送報文(目的地址是255.255.255.255,由於自己還沒有IP地址,所以將源地址設定為0.0.0.0),在本網路上的所有主機都能收到這個廣播的資料包,但是隻有DHCP伺服器才對此廣播報文進行回答,然後該機器分配一個IP地址。如果存在多個DHCP伺服器,則分別予以回覆;使用者則選擇最先收到的。 
DHCP釣魚就是利用這個機制,如果一個黑客自己也啟動了DHCP伺服器,那麼就可以收到客戶主機的DHCP請求報文,如果黑客在真正的DHCP伺服器返回資料之前返回一個IP地址,那麼客戶主機的所有資料就可以被黑客控制。

DNS劫持

DNS的作用就是將域名轉換成IP地址。DNS劫持就是將某個域名解析到黑客指定的IP地址,而如果黑客在此IP地址所在機器上設定了HTTP代理,那麼使用者將幾乎看不出任何破綻,但是黑客就可以獲取所有資料流量。

CDN入侵

CDN主要用來快取網站的靜態資料檔案,以提高網站載入速度,分擔網站壓力。如果CDN伺服器被入侵,那麼落到CDN伺服器上的請求響應內容就可以被篡改。有些CDN廠商不太靠譜,為了省流量不按套路出牌,超過了快取時間也不更新,甚至還有忽略URL問號後面的引數,導致程式猿們在資源更新的問題上頭疼不已。

HTTPS與流量劫持

對於通過HTTP協議通訊的應用來說,發生流量劫持的根本原因是HTTP協議沒有辦法對通訊對方的身份進行校驗以及對資料完整性進行校驗。沒有辦法校驗通訊對方的身份,所以DNS劫持就大行其道。而無法對資料完整性進行校驗舊導致了直接資料內容的篡改。而HTTPS卻能解決這兩個問題。 
因為HTTPS的證書認證能夠解決無法對通訊對方的身份認證的問題,而內容加密傳輸則達到了對資料完整性校驗的目的。

HTTPS原理簡介

HTTPS是在HTTP與TCP層之間增加了安全層,安全層是通過SSL以及其現代替代協議TLS來實現的。 
HTTPS在請求開始之前客戶端和伺服器端有一個握手機制,握手的主要作用有兩個: 
1. 服務端認證:客戶端通過判斷服務端的證書是否合法有效,以決定是否信任該服務端。 
2. 協商祕鑰:客戶端服務端協商確定一個祕鑰,用於資料傳輸過程中對資料進行加密。 

關於HTTPS握手,可以參考下面兩篇文章 
1. http://www.fenesky.com/blog/2014/07/19/how-https-works.html 
2. http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html

總結

  1. 流量劫持可能發生在網路通訊中的多個層次。
  2. 流量劫持大致可以分為DNS劫持和直接內容修改兩種,雖然實施的手段不同,但本質都是一樣的。
  3. 之所以能夠發生流量劫持,原因有兩個:1)無法對通訊雙方身份做認證2)無法對資料的完整性進行校驗。HTTPS能解決這個問題,但僅限於HTTP協議應用。

參考資料

    1. http://yq.aliyun.com/articles/2666 (非常推薦)
    2. http://div.io/topic/907
    3. http://www.huxiu.com/article/135293/1.html
    4. http://fex.baidu.com/blog/2014/04/traffic-hijack/(非常推薦)
    5. http://fex.baidu.com/blog/2014/04/traffic-hijack-2/(非常推薦)