1. 程式人生 > >圖解ARP協議(三)ARP防禦篇-如何揪出"內鬼"並"優雅的還手"

圖解ARP協議(三)ARP防禦篇-如何揪出"內鬼"並"優雅的還手"

負責任 text 介紹 成功 過濾器 現在 導致 打開 是個

一、ARP防禦概述

通過之前的文章,我們已經了解了ARP攻擊的危害,黑客采用ARP軟件進行掃描並發送欺騙應答,同處一個局域網的普通用戶就可能遭受斷網攻擊、流量被限、賬號被竊的危險。由於攻擊門檻非常低,普通人只要拿到攻擊軟件就可以擾亂網絡秩序,導致現在的公共網絡、家庭網絡、校園網、企業內網等變得脆弱無比。

所以,如何進行有效的ARP防禦?作為普通用戶怎麽防禦?作為網絡/安全管理員又怎麽防禦?有哪些ARP防禦軟件?如果被ARP攻擊了,如何揪出"內鬼",並"優雅的還手"?

接下來,我們通過圖解的方式來深入了解ARP防禦原理與解決方案。


二、ARP防禦原理與解決方案

在講解ARP防禦之前,我們先回顧下ARP攻擊最經典的一幕=>

技術分享

當PC1詢問PC2的MAC地址時,攻擊者PC3返回ARP欺騙回應包我的IP地址是IP2,MAC地址是MAC3。一旦PC1記錄了錯誤的ARP映射,則發給與PC2的數據,都會落到PC3手裏。

也就是說,ARP攻擊的罪魁禍首便是這種"欺騙包",若針對欺騙包的處理是不相信或不接收的話,則不會出現問題。處理這種欺騙行為我們沒法提前在黑客端做手腳,因為"敵在暗處我在明處"。這樣的話,我們就剩下兩個解決方法:

①保證電腦不接收欺騙包

②保證電腦收到欺騙包之後不相信

目前網絡安全行業現有的ARP防禦方案,基本都是上面兩個方法的具體實現。我們來看看這張防禦圖:

技術分享

①當黑客發起ARP欺騙包時,會途徑局域網裏面的交換機或無線路由器等網絡設備;

②如果網絡設備能夠識別這種欺騙包,並且提前丟棄掉,則電腦/手機端就不會被欺騙;

③如果網絡設備沒有攔截這種欺騙包,則電腦/手機端需要做安全防禦,然後再丟棄。

簡單來說,ARP防禦可以在網絡設備上實現,也可以在用戶端實現,更可以在網絡設備和用戶端同時實現。接下來,我們先來了解下網絡設備(例如這裏的交換機)的防禦技術。

技術分享

上面這張圖,展現的是交換機的ARP防禦能力,當PC2發送ARP回應包時,交換機將其轉發給PC1,而當PC3發送ARP回應包(欺騙)時,交換機直接丟棄。

但是,人家PC3上臉上又沒有寫著"hacker",憑什麽交換機要丟棄它的ARP回應包?憑什麽判斷它的包就是"欺騙"的呢?

接下來,我就要給大家介紹下局域網安全裏比較常用的防禦技術,這種防禦技術被稱為DAI(Dynamic ARP Inspection)- 動態ARP檢測,原理可以用兩句話簡單概括:

①交換機記錄每個接口對應的IP地址和MAC,即port<->mac<->ip,生成DAI檢測表;

②交換機檢測每個接口發送過來的ARP回應包,根據DAI表判斷是否違規,若違規則丟棄此數據包並對接口進行懲罰。

技術分享

我們知道,PC3是在交換機的Port3、MAC地址是MAC3,IP地址是IP3,所以本地DAI表項內容是<port3-mac3-ip3>。當交換機從接口Port3收到ARP回應包,內容卻是IP2和MAC3映射,即<port3-mac3-ip2>。

經判斷,這個包就是虛假的欺騙包,交換機馬上丟棄這個包,並且可以對接口做懲罰(不同設備的懲罰方式有所不同,可以直接將接口"軟關閉",直接將攻擊者斷網;也可以"靜默處理",僅丟棄欺騙包,其他通信正常)

上面這個動態ARP監測技術,可以說是目前防禦ARP攻擊最有效的方法之一。但是,作為初學者,大家可能還會有疑問:

①一般的交換機或網絡設備能部署動態ARP監測技術嗎?

②連接用戶的交換機,怎麽能識別IP地址信息呢?

③上面這張DAI表是如何生成的?是不是像CAM表一樣能自動識別?

這裏要給大家說個稍微悲傷一點的事實,大部分能支持這種動態ARP監測技術的交換機或者無線路由器,都基本是企業級的產品。即便是企業級交換機,具備局域網安全防禦功能的設備,價格都要高出不少,所以很多中小型企業網或校園網,基本都願意買"閹割版"網絡接入產品,因為"能通就行",至於安全性怎樣,這是另外要考慮的問題。

所以,簡單的交換機不具備動態ARP監測技術,即便市面上有帶安全防禦的網絡產品,企業、學校、醫院等大量網絡,仍然在早期采購的時候,用的是比較基礎版本的交換機。當然,隨著網絡與安全市場的激烈競爭和網絡安全意識的增強,以後會越來越好。

另外,交換機能識別IP地址信息嗎?

從現在的網絡技術來看,分層界限越來越模糊,融合式的網絡設備才是主流,現在的接入交換機基本能被Telnet/SSH/Web管理,更專業的交換機同時支持動態ARP監測(dai)、IP源防護(ipsg)、DHCP偵聽(dhcp snooping)、端口安全、AAA、802.1x等局域網安全技術,已經超越了原有二層交換機的定義。

所以,交換機能讀三層甚至七層的數據包已經不是什麽新鮮事了,不要被"交換機就是二層設備"給束縛了,這只是紙面上的定義。

最後一個問題,DAI檢測表是如何生成的?

在上面圖解中,我們看到交換機查看的表已經不是原來的CAM表了,內容也不太一樣,CAM表的內容主要是MAC和Port的映射,而DAI檢測表則是Port、MAC、IP三個信息映射。

目前這張表支持兩種方式來生成=>

第一種方式就是手工靜態綁定:即用戶接入網絡之後,管理員根據此用戶電腦的MAC和IP地址,然後在接口上綁死,缺點就是用戶數太多的話,手工綁定管不過來。

第二種方式就是目前最主流的做法,即在交換機上開啟DHCP偵聽技術,當用戶第一次通過DHCP獲取到地址的時候,交換機就把用戶電腦的IP、MAC、Port信息記錄在DHCP偵聽表,後面ARP檢測直接調用這張DHCP偵聽表即可。

小結:以上便是在網絡設備上部署的ARP防禦技術,通過動態ARP監測技術(DAI),可以很好的解決ARP欺騙問題。技術雖好,但局域網內的交換機、無線路由器是否支持DAI,這個則取決於實際網絡情況,尤其是十面埋伏的公共WiFi網絡、脆弱無比的家庭網絡、能通就行的校園網絡...... 我們都應該持懷疑態度,至少不能完全信任這些網絡。

既然這樣的話,普通用戶有沒有"自救"的方法,能夠抵擋ARP攻擊呢?答案是肯定的=>

技術分享

對於普通用戶,陌生網絡不要隨意接入,肯定是首選考慮的;當然,這裏研究的是用戶已經接入了網絡,如何做安全防禦的問題。從上圖可以看到,用戶(電腦或手機)最重要的便是通過安裝ARP防火墻做安全防禦,很多普通用戶甚至“以電腦裸奔為豪,以罵安全廠商為榮”,這是對技術的嚴重藐視,對自己隱私的不負責任。普通小白一定要記住一句話:你沒有被黑,只是你還沒有到達被黑的價值。

ARP防火墻在技術實現上,一般都有以下功能:

①綁定正確的的IP和MAC映射,收到攻擊包時不被欺騙。

②能夠根據網絡數據包特征(參考上一篇講解的ARP攻擊數據包溯源分析),自動識別局域網存在的ARP掃描和欺騙行為,並做出攻擊判斷(哪個主機做了攻擊,IP和MAC是多少)。

那麽,有哪些常見的ARP安全產品呢?

自帶ARP防禦功能:騰訊電腦管家、360安全衛士……

專業的ARP防火墻:彩影ARP、金山貝殼、360ARP防火墻……

采用安全產品肯定是普通用戶最省時省力的做法,而對於技術人/工程師而言,如果不屑於使用安全產品,並且希望解決ARP攻擊行為,也可以通過"ARP雙向綁定"的技術來實現。什麽是"ARP雙向綁定"呢?板面的做法和配料m.beefsoup.cn

技術分享

從上圖可以看到,PC1和PC2通信雙方都靜態綁定對方的IP和MAC映射,即便收到ARP欺騙包,由於靜態綁定的ARP映射條目優先級高於動態學習到的,所以可以保證不被欺騙。

這種做法非常"綠色無汙染",因為不需要額外的軟件安裝,但是缺點也非常明顯,例如普通用戶不知道如何在電腦上做ARP靜態綁定,另外工作量也比較大,每個主機和網關設備都需要綁定整個局域網的ARP靜態映射。以下面的家庭WiFi網絡為例:

技術分享

像這個WiFi網絡,如果通過ARP雙向綁定來解決安全問題,配置量其實蠻大的,當然,這就基本能夠保障內網主機間通過以及主機訪問互聯網的安全性了。

Windows arp靜態綁定方法=>

①進入命令行cmd界面;

② [arp -s ip地址 mac地址],例如:arp -s 192.168.1.1 00-11-22-a1-c6-09

註:家用無線路由器若要進行ARP綁定,則需要通過web登錄並進行圖形操作

小結:用戶端的ARP防禦方法,要麽安裝ARP防火墻,要麽做ARP雙向綁定。對於絕大部分用戶來講,雖然安裝防火墻不是保證百分百安全了,但是能夠解決很大一部分的隱患。


三、如果被ARP攻擊了,如何揪出"內鬼"並"優雅的還手"?

相比"如何防禦ARP攻擊",我相信更多人感興趣的是"如何揪出內鬼並進行還手",因為"揪出內鬼"的時候,我們充當著"網絡警察"的角色(把小偷逮住),而"優雅的還手"又充當著"法官"的角色(懲治小偷)。

而充當網絡警察或法官這種角色,我可能算是比較有經驗的...... 從我剛接觸網絡/安全到現在,充當的次數多的數不過來:在學校外面租房的時候(別想歪)、在網吧上網的時候、在音樂餐吧吃飯的時候、在麥當勞/德克士蹭網的時候......可能普通用戶覺得稀疏平常的地方,在網絡世界裏實則暗流湧動。

我第一次"抓內鬼當法官"應該是在2010年的時候,當時在學校旁邊租了一個房子自己做技術研究。有一天晚上,網速變得特別慢,網頁基本沒法打開,QQ勉強還能掛著,但是租房以來網絡一直還可以,雖然不算快,但是也至少滿足平常上網需求啊。我心想:算了,畢竟租的房子一般,每個月網費也就30快,房東拉的寬帶可能比較垃圾不穩定吧,明天再看看。

第二天早上爬起來,發現網絡一點問題都沒有,該開的網頁,該下載的資料,都沒有任何影響,恩,心情不錯,不用專門跑回學校一趟下載資源之類的。但是到了晚上七八點的時候,網絡又出現問題了,跟昨天晚上的情況一模一樣,基本沒法上網,但是網卡又顯示連接著,這讓我非常的郁悶。

然後我突然想起這幾天,這棟樓好像新來了一個租客,這棟樓一共就四層,一層就3戶租客,一共也就10來戶,而一樓還是房東自己一家人住,我自己住二樓。基本上這棟樓裏的租客都能記得七七八八,所以如果有陌生面孔的話,一眼就能認出來,我們暫且把這個人稱為H,看上去是個上班族。

雖然當時還是個小菜鳥,但是畢竟學這塊的,還是有點敏感:擦,會不會是這個人白天去上班,晚上回來宿舍,就開始限制我們的網速啊?

你不犯我,相安無事,你若範我,我必搞你。(年輕人還是有點浮躁啊....)

行,開幹吧,多想沒用。然後便拿出了P2P終結者(忘了當時用什麽軟件了,不過八九不離十)一掃描,想探探網絡究竟。

萬萬沒想到啊,居然遇到老司機了,人家局域網權限比我還高(很多局域網流控軟件都有權限的概念,若同一個局域網同時有多個使用這個流控軟件,則權限高的優先控制,其他人的軟件會自動退出),網絡掃描進行一半,就提示"局域網有多人使用,由於你權限較低暫停退出"這樣的提示,這樣一來,就驗證了我的判斷,這個內鬼應該是H。自從他來了之後,這個網絡就出了問題。這棟樓的網絡拓撲結構是這樣的=>

技術分享

普通小白遇到這種情況,裝個ARP防火墻,咬咬牙也就過去了。但是咋們學網絡和安全的,遇到這種情況,感覺就好像被人騎在頭上一樣。那咋辦呢?作為一個理科男,做事情還是得按步驟走,不能被脾氣牽著走,雖然當時已經非常生氣了,但是基本定下來這個解決流程:

第一:馬上給電腦安裝防火墻,先脫離H的控制(當時電腦居然是裸奔的...);

第二:想盡辦法找到H的IP和MAC地址(很多小夥伴看到這裏可能會想:直接上去樓上揍他一頓不就得了,還費什麽勁找地址啊。這個有必要說明下:①我個頭沒人家大只 ②人家要是問:你有證據嗎,你取證了嗎? 所以,武力不能解決問題,但是技術能力可以。)

第三:想方設法拿到網絡控制權,把他踢下去。

第一步:具體就不說了,也忘了當時裝的什麽安全軟件了;

第二步:怎麽找到攻擊者的IP和MAC地址呢?2010年的安全軟件,不像現在的ARP防火墻,能夠主動告警,並且說明攻擊次數和攻擊源,所以還是需要自己折騰下:熟練的打開電腦之前安裝好了的wireshark,監聽自己電腦網卡的流量,設置流量過濾器(僅過濾arp協議),不出意外,接下來就是一堆"帶有節奏的ARP掃描包"(還記不記得之前章節說過的,ARP攻擊一般會涉及到持續的內網掃描和欺騙攻擊)。當時收到的數據包大概這樣的:

技術分享

通過流量數據包分析,很快就確定了攻擊者的IP和MAC地址。這裏要註意:雖然抓到了攻擊者的IP和MAC地址,但是!我們還是沒法實錘的證明:攻擊者就是H。

這個攻擊者是不是真的H啊?怎麽確定就是這個人幹的呢?如何把虛擬世界裏的地址跟真實世界的人匹配起來?

接下來我便想到了一個方法:如果我們能先拿到網絡的控制權,然後把攻擊者給踢下去直接斷網,同時保證其他人網絡連通;然後,誰要是下去跟房東溝通反饋不能上網,不就可以基本斷定這個人就是攻擊者? 說白了,就是"誰叫誰小狗"......

好,到了計劃的第三步:如何拿到整個網絡的控制權?這裏就沒走的那麽順暢了:現在的實際情況是:我和攻擊者同時開啟局域網流控軟件,而是我被踢下來了,因為我權限低一些。當時的第一個想法是:我換一個流控軟件不就得了?這樣我不跟你拼這個軟件的權限。但是仔細想了想,即便換一個流控軟件能用,但是頂多也就是打個平手,我控制不了你,你也控制不了我,但最終遭殃的還是其他普通小白,這個方法不能"斬草除根"啊。

怎麽辦呢?是不是只能跟他打個平手。在這裏卡了很久但又心有不甘,然後到了大半夜了突然頓悟:擦,為什麽要跟他"限來限去"呢,直接上整棟樓的出口路由器,把他踢出去不就得了?路由器(應該是TP-LINK)就在一樓樓梯口,然後其他樓層加一個hub級聯上去,所以大家都在一個網絡裏面。

但問題是沒有路由器的後臺登錄密碼,怎麽解決呢?抱著僥幸的心理,查看電腦網關地址,然後瀏覽器輸入網關地址,彈出了登錄頁面,嘗試admin/admin?不行,再嘗試admin/123456?還是不行...... 就這樣嘗試了常見的十幾二十個賬號密碼,都提示賬號密碼錯誤,看來運氣不是很好。

既然這樣的話,就只能拿出暴力破解軟件跑幾個詞典看看,用hydra掛著用戶名和密碼詞典,慢慢的看著命令行輸出,但輸出結果基本都是failed...... 所以,第二天晚上雖然發現了攻擊者的IP和MAC地址信息,但是拿他沒辦法,只能先忍著。

到了第三天白天,腦子裏想的都是如何登錄這個路由器後臺管理界面,嘗試跑了幾個詞典都沒法登錄,心理又在想:房東不應該會設置太復雜的密碼啊,四五十歲的阿姨,完全不懂技術啊,網絡應該也是叫人搞的,即便別人設置密碼也應該給阿姨設置比較簡單的讓她好記的,方便後面維護之類的...... 一想到這裏,趕緊從櫃子裏掏出之前的租房合約和房東名片,然後把房東的手機號碼、房東的姓名拼音等信息做成簡單的密碼詞典,再重新跑一次,還沒反應過來,就顯示密碼嘗試成功:admin/房東手機號碼。萬萬沒想到,以為只要6位或者8位的密碼,居然是一個11位的手機號碼,之前嘗試的詞典都是8位以內的

接下來用瀏覽器訪問路由器後臺管理界面,進入主機列表,還沒發現這個昨晚攻擊者的IP地址上線。等到了晚上七八點的時候,終於在路由器上發現這個IP地址,而且,wireshark同時也抓到了這個攻擊者發起的掃描包。看來是攻擊者一回到宿舍,打開電腦,就直接掛著攻擊軟件,確實是個"慣犯"啊。好吧,看到這個情況,我直接在出口路由器上把這個IP和MAC地址禁用,看接下來發生什麽。

果然,大概過了半個鐘,有人從樓上下來,直接去一樓找房東阿姨去了,具體說什麽這個不清楚,但是應該是詢問是不是寬帶欠費之類的導致不能上網。

過了一會,阿姨帶著他上來二樓..... 然後敲門詢問:你們二樓能不能上網啊?大家都陸續回答:可以啊、沒問題啊。與此同時,我已經確定了:眼前的這個人,H就是攻擊者!他大概沒料到,自己已經控制了內網,怎麽可能被踢掉之類呢。

阿姨也不知道怎麽辦,只能說明天看看吧。看著他無辜的眼神回樓上去了,我也覺得抓到內鬼也就算了,先把他解禁看看。然後"慣犯"又上線了,看來沒有吃夠苦頭啊,當天晚上直接讓他斷網。之後的幾個晚上類似的情況慢慢少了,因為只要他一掃描發起攻擊,我這邊就斷他網,然後隔10分鐘或者半個鐘看看他反應,就這樣慢慢地把他制服了,整棟樓的網絡也就逐漸恢復了平靜……


四、ARP防禦總結

①ARP攻擊非常低門檻,但是造成的影響卻很大,包括斷網攻擊、流量被限、賬號被盜等;

②ARP防禦可以在網絡端(網絡設備)上部署,也可以在用戶端(電腦/手機)上部署;

③網絡設備(例如交換機)部署ARP防禦,通常需要用到DAI(動態ARP監測)技術,更加專業的局域網安全防禦,還可能結合DHCP偵聽、IP源防護、端口安全、AAA、802.1X等技術,這些專業的防禦技術,是由網絡運維和安全運維工程師來實施的。

④用戶端(電腦/手機)實施ARP防禦,最好的方法就是不要隨意接入陌生網絡,並且安裝ARP防火墻。當然,技術宅的話,可以采用"ARP雙向綁定"的方法,相對比較麻煩,但是也奏效。

⑤作為一名有素養的網絡/安全工程師,應該不作惡。但是如果遭受攻擊,應該揪出內鬼並"優雅的還手",做一個網絡警察,還普通用戶一個幹凈的網絡環境。

圖解ARP協議(三)ARP防禦篇-如何揪出"內鬼"並"優雅的還手"