Android中Https通訊實現_中間人攻擊、DNS欺騙和會話劫持
上一篇文章記述了在Android中使用Https進行單向認證的配置,但單向認證存在中嚴重的安全漏洞,其中最容易受到中間人攻擊和DNS欺騙以及會話劫持,本文主要講述進行中間人攻擊、DNS欺騙和會話劫持的方式。
概覽
- 什麼是中間人攻擊
- 模擬中間人攻擊
- 防禦中間人攻擊
- 什麼是DNS欺騙
- 防禦DNS欺騙
- 什麼是會話劫持
- 防禦會話劫持
什麼是中間人攻擊
中間人攻擊(Man-in-the-MiddleAttack)簡稱(MITM),是一種“間接”的入侵攻擊,這種攻擊模式是通過各種技術手段將受入侵者控制的一臺計算機虛擬放置在網路連線中的兩臺通訊計算機之間,這臺計算機就稱為“中間人”。
中間人攻擊是一種由來已久的網路入侵手段,並且當今仍然有著廣泛的發展空間,如SMB會話劫持、DNS欺騙等攻擊都是典型的MITM攻擊。簡而言之,所謂的MITM攻擊就是通過攔截正常的網路通訊資料,並進行資料篡改和嗅探,而通訊的雙方卻毫不知情。
模擬中間人攻擊
- 中間人攻擊第一種方式:
客戶端向伺服器發起請求,中間人攔截請求,並擷取到客戶端傳送的訊息(如果使用Http 請求,這裡就會收到明文的訊息,而使用Https則攔截的是密文訊息),然後中間人使用代理伺服器將客戶端資訊傳送到服務端,服務端此時不知道是中間人傳送來的訊息,以為收到的是客戶端訊息,就把公開金鑰證書傳送給代理伺服器,代理伺服器此時就可以選擇使用公開金鑰將加密的資料惡意傳送到服務端,或者將公開金鑰證書再發給客戶端,客戶端收到公開金鑰證書,然後使用公鑰對報文進行加密,再將加密後的報文傳送給服務端,而代理伺服器沒有私鑰進行解密,所以只好將報文再發給服務端,但是代理伺服器此時可以做一些破壞操作。 - 中間人攻擊第二種方式:
客戶端向伺服器發起請求,中間人使用代理伺服器攔截,而中間人也有CA證書,所以將代理伺服器的公開金鑰證書傳送給客戶端,而客戶端收到代理伺服器的證書,驗證沒問題。客戶端和代理伺服器就建立了信任通道。
代理伺服器再將客戶端發來的訊息傳送給伺服器,伺服器收到請求後將真正的公開金鑰證書傳送給代理伺服器,代理伺服器此時就擁有公鑰,然後使用公鑰將客戶端發來的訊息進行加密,再發送給服務端,服務端並不知道是中間人發來的訊息,所以會將結果返回給代理伺服器,這樣代理伺服器和伺服器也建立了信任通道。此時代理伺服器就擁有了客戶端的私鑰和服務端的公鑰,就可以做到欺上瞞下的,也就是中間人攻擊。
防禦中間人攻擊
客戶端內建證書公鑰,客戶端使用公鑰加密訊息,傳送給伺服器;代理伺服器攔截後沒有私鑰無法解析,就將訊息傳送給伺服器,伺服器使用私鑰解密,驗證客戶端合法,然後將私鑰加密證書傳送給客戶端,代理伺服器收到服務端訊息,因為沒有公鑰所以無法解密,只好再轉發給客戶端,客戶端收到證書,然後通過公鑰解密證書,再進行驗證簽名,和服務端協商對稱金鑰。
什麼是DNS欺騙
DNS欺騙(DNSSpoofing),就是其中的一種慣用手法。攻擊者通過入侵DNS伺服器、控制路由器等方法把受害者要訪問的目標機器域名對應的IP解析為攻擊者所控制的機器,這樣受害者原本要傳送給目標機器的資料就發到了攻擊者的機器上,這時攻擊者就可以監聽甚至修改資料,從而收集到大量的資訊。如果攻擊者只是想監聽雙方會話的資料,他會轉發所有的資料到真正的目標機器上,讓目標機器進行處理,再把處理結果發回到原來的受害者機器;如果攻擊者要進行徹底的破壞,他會偽裝目標機器返回資料,這樣受害者接收處理的就不再是原來期望的資料,而是攻擊者所期望的了。例如讓DNS伺服器解析銀行網站的IP為自己機器IP,同時在自己機器上偽造銀行登入頁面,那麼受害者的真實賬號和密碼就暴露給入侵者了。
防禦DNS欺騙
DNS欺騙的攻擊模型太理想了。在實際生活中,大部分使用者的DNS解析請求均是通過自己的ISP伺服器進行的,換句話說,就是系統在連線網路時會獲取到ISP伺服器提供的DNS伺服器地址,所有解析請求都是直接發往這個DNS伺服器的,攻擊者根本無處入手,除非他能入侵更改ISP伺服器上DNS服務的解析指向。所以這種手法在廣域網上成功的機率不大。
什麼是會話劫持
會話劫持(SessionHijack)是一種結合了嗅探以及欺騙技術在內的攻擊手段。廣義上說,會話劫持就是在一次正常的通訊過程中,攻擊者作為第三方參與到其中,或者是在資料里加入其他資訊,甚至將雙方的通訊模式暗中改變,即從直接聯絡變成有攻擊者參與的聯絡。簡單地說,就是攻擊者把自己插入到受害者和目標機器之間,並設法讓受害者和目標機器之間的資料通道變為受害者和目標機器之間存在一個看起來像“中轉站”的代理機器(攻擊者的機器)的資料通道,從而干涉兩臺機器之間的資料傳輸,例如監聽敏感資料、替換資料等。由於攻擊者已經介入其中,他能輕易知道雙方傳輸的資料內容,還能根據自己的意願去左右它。這個“中轉站”可以是邏輯上的,也可以是物理上的,關鍵在於它能否獲取到通訊雙方的資料。
防禦會話劫持
至於區域網內各種各樣的會話劫持(區域網內的代理除外),因為它們都要結合嗅探以及欺騙技術在內的攻擊手段,必須依靠ARP和MAC做基礎,所以網管應該使用交換式網路(通過交換機傳輸)代替共享式網路(通過集線器傳輸),這可以降低被竊聽的機率,當然這樣並不能根除會話劫持,還必須使用靜態ARP、捆綁MAC+IP等方法來限制欺騙,以及採用認證方式的連線等。