本系列將討論最常被使用的中間人攻擊形式,包括ARP緩存中毒攻擊(ARP Cache Poisoning)、DNS欺騙(DNS Spoofing)、HTTP會話劫持等。windows
導言緩存
用於攻擊我的以及企業的最多見的網絡攻擊方式就是中間人攻擊(MITM)。做爲一種主動竊聽攻擊方式,中間人攻擊方式主要是經過與目標機器創建鏈接並在目標機器間傳遞信息來發動攻擊。在這種狀況下,用戶會認爲本身正在與另外一名用戶直接通訊,而實際上,經過主機的通訊流量正在對用戶執行攻擊。最終結果是,攻擊主機不只能截取重要信息,並且可以注入數據流來進一步控制受害用戶。安全
在本系列文章中,咱們將討論最常被使用的中間人攻擊形式,包括ARP緩存中毒攻擊(ARP Cache Poisoning)、DNS欺騙(DNS Spoofing)、HTTP會話劫持等。在實際狀況中,你會發現,大多數受害用戶使用的都是windows系統,所以咱們將詳細分析運行不一樣版本的windows系統時中間人攻擊的狀況。網絡
ARP緩存中毒併發
在本文中咱們將主要探討ARP緩存中毒,這也是現代中間人攻擊中最先出現的攻擊形式,ARP緩存中毒(有時也被稱爲ARP中毒路由)可以讓與受害用戶在相同子網的攻擊者竊取用戶的全部網絡留戀。咱們首先討論這種攻擊形式是由於,它是最容易執行的攻擊形式,但也是最有效的攻擊形式。工具
正常ARP通訊編碼
ARP協議的主要目的在於簡化OSI模型第二層和第三層間地址的翻譯。第二層(也就是數據鏈層)使用MAC地址,以便硬件設備能夠在小範圍內直接進行通訊。第三層(也就是網絡層)使用IP地址(最多見的形式)來建立連通世界各地用戶的大規模網絡。數據鏈層直接處理鏈接在一塊兒的設備,而網絡層處理那些直接以及間接鏈接的設備,每一層都有本身的地址形式,他們必須合做才能實現網絡通訊。正是因爲這個緣由,ARP與RFC826(以太網地址解析協議)一塊兒被建立。翻譯
圖1:ARP通訊過程接口
ARP運做其實是圍繞兩個數據包進行的:ARP請求和ARP回覆。請求和回覆的目的在於肯定與特定IP地址相關的硬件MAC地址,這樣流量纔可以在網絡上找到目的地。請求數據包被髮送給網絡段上的每臺設備併發出信息「個人IP地址是XX.XX.XX.XX,個人MAC地址是XX:XX:XX:XX:XX:XX,我須要將信息發送給這個IP地址XX.XX.XX.XX,可是我不知道它的硬件地址,請這個IP地址將其MAC地址回覆給我?」回覆會以ARP回覆數據包的形式,並回復說「你好,傳遞設備,我就是你要找的IP地址XX.XX.XX.XX,個人MAC地址是XX:XX:XX:XX:XX:XX」,收到回覆後,傳遞設備會更新其ARP緩存表,而後設備就能夠與另外一臺設備進行通訊。進程
緩存中毒
ARP緩存中毒利用了ARP協議不安全的本質。ARP協議有別於其餘協議,例如DNS協議能夠配置爲僅接受安全動態更新,而使用ARP的設備則能夠接受任什麼時候間的更新。這意味着任何機器均可以向另外一臺主機發送ARP回覆數據包,並迫使主機更新其ARP緩存。發送ARP回覆而沒有生成請求時,此時被成爲無效ARP。當惡意攻擊者以這種方式放置一些無效ARP時,用戶就會認爲他們正在與另外一用戶通訊,而其實是與竊取信息的攻擊者通訊。
圖2: ARP緩存中毒截取通訊
使用Cain & Abel工具
讓咱們從具體狀況來分析,攻擊者會使用幾種不一樣的工具執行必要的步驟以毒化受害者的ARP緩存,咱們將使用常見的安全工具Cain & Abel來模擬緩存中毒攻擊。Cain & Abel是很是有效的安全工具,而且安裝過程也十分簡單。
在開始模擬緩存中毒前,你須要收集一些信息,包括你這次模擬攻擊但願使用的網絡接口,以及兩個通訊受害者IP地址。
當你第一次打開Cain & Abel工具時,你會發如今窗口上方有不少選項卡,咱們只須要使用Sniffer選項,當你點擊此按鈕,你會看到一個空表。爲了完成此表格,你須要激活該程序的內置嗅探器而且掃描你的網絡。
圖3: Cain&Abel工具的Sniffer選項
點擊工具欄上的第二個圖標,相似於網絡卡。首次操做時,會要求你選擇你但願嗅探的接口,這個接口應該是鏈接到你將要執行ARP緩存中毒攻擊的接口。選擇好接口後,點擊確認來激活Cain & Abel的內置嗅探器。此時,工具欄圖標會變暗。爲網絡中有效主機創建列表,你須要點擊相似+符號的主要工具欄,點擊確認。
圖4:掃描主機
以前的空表格如今以及填滿了全部鏈接網絡上的主機名,以及MAC地址、IP地址以及供應商驗證信息,這些是發動ARP緩存中毒攻擊的有利信息。
在程序窗口的地步,你會看到一組標籤,這些標籤將引領你到嗅探器的其餘窗口。如今你已經創建了主機列表,你須要從ARP標籤開始,點擊標籤以切換到ARP窗口。
打開ARP窗口後,你會看到兩個空表格:上表和下表。設置好這兩個表格後,上表會顯示ARP緩存中毒涉及的設備,下表會顯示中毒機器間的全部通訊。
點擊程序的標準工具欄上的+符號的圖標以繼續設置ARP中毒,顯示的窗口有並排兩個選擇列,在左側,你會看到全部有效主機的列表。點擊其中一個IP地址,你會看到,右邊窗口顯示的是網絡中全部主機,而沒有顯示你所選擇的IP地址。在右邊窗口,點擊另外一個受害者的IP地址,而後點擊確認。
圖5:選擇緩存中毒的攻擊主機
這些設備的IP地址如今都被列在主要程序窗口的上表中,爲了完成這個操做,請點擊標準工具欄的黃黑色放射符號。這樣將激活Cain & Abel的ARP緩存中毒功能並容許系統成爲受害機器間全部通訊的中間人。若是你很好奇背後發生的狀況,能夠安裝wireshark並竊聽接口,你很快會看到受害電腦間的通訊。
圖6:ARP通訊注射
完成以上操做後,只要再次點擊黃黑色發射符號就能夠中止ARP緩存中毒。
防護ARP緩存中毒
從防護者的角度來看ARP緩存中毒攻擊彷佛處於不利的位置,ARP進程在後臺進行,咱們很難控制。並無萬能的解決方案,你能夠採用主動和被動的立場來考慮ARP緩存中毒。
保護局域網安全
ARP緩存中毒的確是截取位於相同局域網的兩臺主機間的通訊的可行的攻擊技術,但只有當網絡上的本地設備比破壞,受信任用戶有惡意企圖,或者某用戶試圖將不可信設備接入網絡時,ARP緩存中毒攻擊纔可能形成真正的威脅。儘管咱們每每將主要精力集中在保護網絡外圍安全上,但抵禦內部威脅以及確保內部安全絕對能夠更好的確保系統安全。
硬編碼ARP緩存
抵禦ARP請求和回覆的動態本質所帶來的威脅的方法是使這個進程不那麼動態,這是由於windows系統主機容許其餘靜態表項進入ARP緩存,你能夠經過打開命令提示符並輸入arp-a命令來查看windows系統的ARP緩存。
圖7:查看ARP緩存
能夠經過使用這個命令arp –s 來添加表項到這個列表。
若是你的網絡配置並非常常變更,作靜態ARP表項的列表並經過自動化腳本將表項部署到客戶端是徹底可行的。這能夠確保設備始終依賴本地ARP緩存,而不是依賴ARP請求和回覆。
使用第三方程序監測ARP通訊
抵禦ARP緩存中毒攻擊的另外一種方法是被動方法,監控主機的網絡流量,這能夠經過入侵檢測系統(如Snort)或者其餘監測工具(如xARP)來進行監控流量。對於一臺主機而言,這多是很簡單的事情,可是對於整個網絡而言就不是那麼簡單了。
總結
ARP緩存中毒是中間人攻擊中最有效的攻擊方式,由於它很是容易執行,對於現代網絡是巨大的威脅,而且這種攻擊方式很難檢測和防護。
備註:轉自IT專家網