中間人攻擊
出自 MBA智库百科(https://wiki.mbalib.com/)
中間人攻擊(MITMA,man in the middle attack)
目錄 |
中間人攻擊是一種“間接”的入侵攻擊,這種攻擊模式是通過各種技術手段將入侵者控制的一臺電腦虛擬放置在網路連接中的兩台通信電腦之間,這台電腦就稱為“中間人”。[1]
中間人攻擊的攻擊者與通訊的兩端分別創建獨立的聯繫,並交換其所收到的數據,使通訊的兩端認為他們正在通過一個私密的連接與對方直接對話,但事實上整個會話都被攻擊者完全控制。這種攻擊可能被使用在簡單的獲得訪問消息的權利,或者能使得攻擊者在轉發消息之前先修改消息。
MITMA有的時候也叫做消防隊攻擊(FBA,fire brigade attack),這個術語起源於這種救災時排成長龍以傳水救火的隊列方法,即在水源和火災之間的一個人到另一個人之間使用手工傳遞一桶一桶的水地方法來撲滅火災的方法。
隨著電腦通信網技術的不斷發展,MITM攻擊也越來越多樣化。最初,攻擊者只要將網卡設為混雜模式,偽裝成代理伺服器監聽特定的流量就可以實現攻擊,這是因為很多通信協議都是以明文來進行傳輸的,如HTTP、FTP、Telnet等。後來,隨著交換機代替集線器,簡單的嗅探攻擊已經不能成功,必須先進行ARP欺騙才行。
中間人攻擊的方式[1]
- 1.DNS欺騙
DNS欺騙,是目標將其DNS請求發送到攻擊者這裡,然後攻擊者偽造DNS響應,將正確的IP地址替換為其他IP,之後你就登陸了這個攻擊者指定的IP,而攻擊者早就在這個IP中安排好了一個偽造的網站如某銀行網站,從而騙取用戶輸入他們想得到的信息,如銀行賬號及密碼等,這可以看作一種網路釣魚攻擊的一種方式。對於個人用戶來說,要防範DNS劫持應該註意不點擊不明的連接、不去來歷不明的網站、不要在小網站進行網上交易,最重要的一點是記清你想去網站的功能變數名稱,當然,你還可以把你常去的一些涉及到機密信息提交的網站的IP地址記下來,需要時直接輸入IP地址登錄。
- 2.ARP欺騙
在實現TCP/IP協議的網路環境下,一個ip包走到哪裡,要怎麼走是靠路由表定義,但是,當ip包到達該網路後哪台機器響應這個ip包卻是靠該ip包中所包含的硬體mac地址來識別。也就是說只有機器的硬體mac地址和該ip包中的硬體mac地址相同的機器才會應答這個ip包,因為在網路中每一臺主機都會有發送ip包的時候,所以,在每台主機的記憶體中都有一個arp-->硬體mac的轉換表。通常是動態的轉換表(該arp表可以手工添加靜態條目)。也就是說,該對應表會被主機在一定的時間間隔後刷新。這個時間間隔就是ARP高速緩存的超時時間。通常主機在發送一個ip包之前,它要到該轉換表中尋找和ip包對應的硬體mac地址,如果沒有找到,該主機就發送一個ARP廣播包,於是主機刷新自己的ARP緩存。然後發出該ip包。
防範MITM攻擊的常用方法
1.將一些機密信息進行加密後再傳輸,這樣即使被中間人截取也難以破解。
2.通過設備或IP異常檢測。如用戶以前從未使用某個設備或IP訪問系統。
3.通過設備或IP頻率檢測。如單一的設備或IP同時訪問大量的用戶帳號。
4.進行帶外認證,具體過程是:系統進行實時的自動電話回叫,將二次PIN碼發送至SMS(簡訊網關),簡訊網關再轉發給用戶,用戶收到後,再將二次PIN碼發送到簡訊網關,以確認是否是真的用戶。帶外認證提供了多種不同的認證方式及認證渠道,它的好處是:所有的認證過程都不會被MITM攻擊者接觸到。
例如MITM是通過中間的假網站來截獲敏感信息的,相關的“帶外認證”就是指通過電話認證或簡訊認證等方式確認用戶的真實性,而MITM攻擊者卻不能得到任何信息。當然,這種方式麻煩些。
許多抵禦中間人攻擊的技術基於以下認證技術:
公鑰基礎建設
在PKI方案中,主要防禦中間人攻擊的方案就是PKI的相互認證的機制。使用這樣的機制並由應用程式驗證用戶,用戶設備驗證應用程式。但在某些流氓應用的情況下,這不是很有用,所以需要註意對流氓軟體應與正規軟體進行區分。
更強壯的相互認證 ,例如:
密碼(通常是低的信息熵的密鑰,從而降低安全性)
延遲測試,例如使用複雜加密哈希函數進行計算以造成數十秒的延遲;如果雙方通常情況下都要花費20秒來計算,並且整個通訊花費了60秒計算才到達對方,這就能表明存在第三方中間人。
第二(安全的)通道的校驗
一次性密碼本可以對中間人攻擊免疫,這是在對一次密碼本的安全性和信任上建立的。
公鑰體系的完整性通常必須以某種方式得到保障,但不需要進行保密。密碼和共用密鑰有額外的保密需求。 公鑰可以由證書頒發機構驗證,這些公鑰通過安全的渠道(例如,隨Web瀏覽器或操作系統安裝)分發。 公共密鑰也可以經由Web線上信任進行線上驗證 ,可以通過安全的途徑分發公鑰(例如,通過面對面的途徑分發公鑰)。
查看密鑰交換協議以瞭解不同類別的使用不同密鑰形式或密碼以抵禦中間人攻擊的協議。
假設A希望與B通信。同時, C希望攔截竊會話以進行竊聽並可能在某些時候傳送給B一個虛假的消息。
首先,A會向B索取他的公鑰。如果將他的公鑰發送給A,並且此時C能夠攔截到這個公鑰,就可以實施中間人攻擊。C發送給A一個偽造的消息,聲稱自己是B,並且附上了C自己的公鑰(而不是B的)。
A收到公鑰後相信這個公鑰是B的,於是A將她的消息用C的公鑰(A以為是B的)加密,並將加密後的消息回給B。C再次截獲A回給B的消息,並使用C自己的私鑰對消息進行解密,如果C願意,她也可以對消息進行修改,然後C使用B原先發給A的公鑰對消息再次加密。當B收到新加密後的消息時,他會相信這是從A那裡發來的消息。
1、A發送給B一條消息,卻被C截獲:
A “嗨,B,我是A。給我你的公鑰” --> C B
2、C將這條截獲的消息轉送給B;此時B並無法分辨這條消息是否從真的A那裡發來的:
A C “嗨,B,我是A。給我你的公鑰” --> B
3. B回應A的消息,並附上了他的公鑰:
A C <-- [B的公鑰]-- B
4、C用自己的密鑰替換了消息中B的密鑰,並將消息轉發給A,聲稱這是B的公鑰:
A <-- [C的公鑰]-- C B
5、A用她以為是B的公鑰加密了她的消息,以為只有B才能讀到它:
A “我們在公車站見面!”--[使用C的公鑰加密] --> C B
6、然而,由於這個消息實際上是用C的密鑰加密的,所以C可以解密它,閱讀它,併在願意的時候修改它。他使用B的密鑰重新加密,並將重新加密後的消息轉發給B:
A C “在家等我!”--[使用B的公鑰加密] --> B
7、B認為,這條消息是經由安全的傳輸通道從A那裡傳來的。
這個例子顯示了A和B需要某種方法來確定他們是真正拿到了屬於對方的公鑰,而不是拿到來自攻擊者的公鑰。否則,這類攻擊一般都是可行的,在原理上,可以針對任何使用公鑰——密鑰技術的通訊消息發起攻擊。
信息篡改
當主機A、和主機B通信時,都由主機C來為其“轉發”,而A、B之間並沒有真正意思上的直接通信,他們之間的信息傳遞同C作為中介來完成,但是A、B卻不會意識到,而以為它們之間是在直接通信。這樣攻擊主機在中間成為了一個轉發器,C可以不僅竊聽A、B的通信還可以對信息進行篡改再傳給對方,C便可以將惡意信息傳遞給A、B以達到自己的目的。
信息竊取
當A、B通信時,C不主動去為其“轉發”,只是把他們的傳輸的數據備份,以獲取用戶網路的活動,包括賬戶、密碼等敏感信息,這是被動攻擊也是非常難被髮現的。
從被懷疑是中間人攻擊的鏈接中捕捉網路數據包併進行分析可以確定是否存在中間人攻擊。 在進行網路分析並對可疑的SSL中間人攻擊進行取證時,重要的分析證據包括:
遠程伺服器的IP地址
DNS功能變數名稱解析伺服器
X.509證書伺服器
證書是自簽名證書嗎?
證書是由信任的頒發機構頒發的嗎?
證書是否已被吊銷?
證書最近被更改過嗎?
在互聯網上的其他的客戶端是否也得到了相同的證書?