戰術攻防之近距離搏擊篇(ARP)攻擊作者:紫天星
生活在網絡時代里,我們的生活里多了黑客這樣一群神秘人物。傳說中他們放蕩不羈,崇尚自我并行事詭異,攪動著整個網絡命脈,使其生機無限。然而現實中,他們超然的生活于我們周圍。假想在一間忙碌的Office中,每個員工在自己狹窄的工作空間中埋頭于自己手頭的事物;能聽到的聲音是手指在鍵盤揮舞的呵咔聲和此起彼伏的電話鈴,有誰有注意到那狹窄的個人空間里,思維的放任超乎尋常。飛快的手指間,各種指令和運作的程序隊列般的游行著。表面上似乎一切都正常,然而,或許那里正進行著激烈的電子對抗……。
SANS公布2001來自于內部入侵攻擊雖然只占30%左右,然而產生的危害也最大,因此局域網絡的入侵和滲透更具有實足的硝煙氣息。利用二層鏈路上ARP協議漏洞而產生的各種攻擊方式無疑是局部網絡戰爭最精妙的特技。

一、 基礎知識預備
精巧程序的后面藏匿著簡單的原理和聰穎的智慧。為了順利闡述ARP本身的協議漏洞以及后面將要闡述的各種ARP攻擊思維(同時,我必須顧及那些初次接觸網絡的朋友,以致不挫傷他們對網絡攻擊防御的興趣),我們將粗淺的概覽ARP協議和相關的網絡鏈路層的一些概念。
ARP(Address Resolution Protocol)簡稱地址解析協議,主要用于把以太網卡硬件地址和IP地址捆綁起來。當主機之間發生通信要求,則ARP協議通過廣播請求/單播回應方式建立主機間通信連接。大家熟悉的IP地址采用32位長度,在以太局域網中網卡設備地址是48位長度(也稱為MAC地址)。一張稱為ARP緩存的表單用于維護MAC地址和其所對應的IP地址的相關性。ARP則提供用于在網絡設備間進行地址轉換和創造MAC-IP相關性的協議規則。
網絡鏈路層的建立通信關系的準則:網絡主機A欲與網絡主機C建立通信連接,主機A在網絡中廣播ARP的請求數據包(REQUEST),如圖一:

主機A欲與IP地址為192.168.1.3的目標主機通信,則發送的廣播的數據包中包含本身的IP地址、網卡的MAC地址、目標主機的IP地址以及廣播MAC地址(FF-FF-FF-FF-FF-FF)。
(注:Mac地址是媒體接入層上使用的地址,直觀的概念就是網卡的物理地址,Mac地址一般都采用6字節48bit。)

主機C接收到ARP的REQUEST廣播包,發現目標地址中IP地址與自身IP地址一致,接收該數據請求,并作出響應。

從圖二中,可以看到主機C發現主A的ARP請求符合要求,在自身ARP緩存表中添加主機A的IP-MAC綁定映像記錄,并發送單播ARP回應數據包(RELAY)給主機A。主機A接收到回應數據包,更新其ARP緩存表記錄,綁定主機C的IP-MAC映像記錄。至此,二層通信關系建立完畢。而網絡中其他主機則忽略此請求包。

這種關系可以類似于情景會話↓
主機A:嗨,誰主機的IP地址是192.168.1.3?
主機B:嗨,我主機地址是192.168.1.3,我的門牌號是00-50-56-C0-08,記得來找我啊。
其他主機:NO,這不是我的IP地址。

從原理分析發覺ARP本身是無類協議,本身不能攜帶任何狀態信息。因此ARP協議不能進行任何認證,這樣就導致協議本身具有安全威脅性。造成這種安全威脅的歷史原因在于:早先的網絡創造者們是在一個平和自由的環境中設計ARP協議,因而安全問題在當時幾乎是瑣碎的事情。然而網絡集聚膨脹,破壞性攻擊和入侵事件的增加,使得ARP協議脆弱不堪。
了解ARP工作原理之后,可以得出:大部分網絡系統中的ARP緩存列表根據所接收的ARP REPLAY數據包動態增加或更新緩存表中IP-MAC映射記錄。根據這樣一條簡單規則,我們將看到各種絢麗的入侵和攻擊手法。

二、 攻擊分類
*ARP緩存中毒
這是個非常有意思的標題—“中毒”,這能讓我聯想到霉綠色的空氣和腐銹的紅色河水,畢竟地球區域生態環境令人擔心?。
ARP緩存中毒其實質并沒有字面含義那么可怕。還記得前面所提高過ARP緩存表的概念吧,事實上每個網絡設備都有一個APR表,其中臨時記錄著匹配的設備MAC和IP地址映射對。它保證這些記錄具有唯一性,即一個IP只單獨映射一個MAC。又由于ARP本身不具備認證信任機制,因此欺騙行為變的泛濫。當網絡設備發送ARP REQUEST時,它完全相信ARP REPLY回應是來自于正確設備,因為它不能驗證回應數據包是否確切從正確的設備發送的。更糟糕的是,許多操作系統并不需要發送ARP請求數據包就直接承認其他設備發送的ARP回應數據包。
這樣垃圾方式的設計讓入侵變的肆意,而防御卻無奈了許多。假設我是一個黑帽,我知道ARP并無驗證行為,而且系統不需要發送請求數據包就可接收ARP的回應數據包。我會怎么做?創建一個貌似合法的ARP REPLY數據包,其中偽造我所希望的MAC和IP地址,并發送給盲目接收此類數據包的主機系統。結果,這種方式欺騙主機使其更新我所希望的MAC-IP地址映射對。當然,我可以肆意廣播這種ARP REPLY數據包,愚弄整個網絡系統所有主機(?冷)。
現在你知道了ARP的一個小技巧,我們稱其為:ARP緩存中毒。正是通過它,無數的發明創造出來,正如輪子的發明可以和人類登月媲美,簡單的發明可以翹動地球。
*MAC泛洪攻擊(Flooding)
現在的網絡結構大多數使用交換方式(Switched)結構取代早先的的廣播方式(Broadcast),這樣的優勢在于交換機不會向每個端口無聊的推送廣播風暴,它稍微智能的判斷需要推送數據的端口,這讓那些層在HUB方式連接的下大顯神威的嗅探器(snffer)感到憋足。
然而進步的力量有時候令“安全”變的很嬌嫩。交換機啟用端口安全特性(Port security)需要消耗部分的CPU,當交換處理超負載后,交換機就無法處理端口安全,此時交換機陷入了HUB模式,數據被簡單的廣播到網絡中的每臺計算機中,于是竊聽活動仍然可以繼續。于是利用大量的偽造ARP REQUEST數據包對交換機的ARP表進行泛洪攻擊(ARP緩存表中毒的典型運用),可以輕易使很多廠商交換機負荷過載(CISCO 1900和3COM superstackII就容易遭受攻擊),此刻交換機處于類似HUB工作方式,因而可輕松使用包嗅探器刺探整個網絡。
macof的小程序輕松了實現了這樣的功能,其代碼實現如下:
—————snip——————-
/* 本程序的作者是Dug Songdugsong@m.org,由于這里只需要實現MAC FLOODING的攻擊,所以我對程序做了精簡,便于讀者直觀了解MAC FLOODING的攻擊原理。另外,macof的最早作者是Ian Vitek,采用Perl進行編寫的,我在軟件包中收錄了這兩個程序,提供讀者參閱。
*/

Related Posts:

written by lina \\ tags: , , , , ,

Comments

Leave a Reply

You must be logged in to post a comment.