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

一、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雙向綁定"呢?

從上圖可以看到,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協議(二)ARP攻擊篇

《TCP/IP協議棧視頻教程》

《Wireshark協議分析從入門到精通》

新浪微博:@拼客學院陳鑫傑

微信公眾號:拼客院長陳鑫傑

拼客學院:pinginglab.net


推薦閱讀:

花無涯FAQ答疑係列之「如何成為一名黑客」
姚威:我要做凌晨三點最早看見曙光的人
2億:走進史上規模最大的美國選民數據泄露案
烏雲上的白帽子有沒有出現過失誤,造成對方損失的情況?
滲透測試網站的過程中,哪個環節容易踩線?又該如何避免踩線?

TAG:TCPIP | 计算机网络 | 网络安全 |