上一篇講解了無線安全專題_攻擊篇--干擾通信,沒在首頁待多長時間就被拿下了,看來之后不能只是講解攻擊實戰,還要進行技術原理和防御方法的講解。本篇講解的是局域網內的MAC泛洪攻擊,這種攻擊方式主要目的是竊取局域網中的通信數據,例如ftp的賬號和密碼,下面的實戰也是以此為例子。接下來按照原理,場景,攻擊實戰,防御方法的層次步驟進行講解。(我的新書《Python爬蟲開發與項目實戰》出版了,大家可以看一下樣章)
一.MAC泛洪攻擊的原理
MAC泛洪攻擊主要是利用局域網交換機的mac學習和老化機制。
1.1交換機的工作流程如下:
局域網中的pc1發送數據幀給pc2,經過交換機時,交換機會在內部mac地址表中查找數據幀中的目標mac地址,如果找到就將該數據幀發送到相應的端口,如果找不到,交換機就會向入端口以外的所有端口發送此數據幀(所謂的廣播,不過不是廣播幀,廣播幀的目的mac地址是全F)。
由此可以看到交換機實現交換功能的關鍵就是內部的mac地址表,那這個內部mac地址是怎么形成的呢?有什么特性呢?接下來就要講解一下交換機的mac學習和老化機制。
1.2 交換機的mac學習機制
1. 首先咱們看一下內部mac表的結構,內部mac表都是有大小的,一般8k左右,一但mac表滿了,其他mac地址就加不進來:
內部mac表是將主機的mac地址和連接到交換機上的端口號進行綁定,這樣可以根據mac地址找到端口進行轉發。
2.一開始的時候,沒有主機連接,交換機內的mac表是空白的,這時候就要進行學習。
下面咱們幻想出一個場景: PC1這時候想往PC2發送數據,數據幀經過交換機的時候,交換機會把數據幀中的源mac地址和進入的端口號記錄到mac表中; 由於一開始mac表中沒有PC2的mac地址和端口綁定,所以交換機會將這個數據幀進行全網轉發,就是所謂的廣播,也叫泛洪。
- 交換機將所有數據幀進行全網轉發后,每台主機的協議棧會比對數據幀的目的mac地址是否和自身的一樣,如果一樣就進行應答,如果不一樣,就進行丟棄(注意:那些mac地址不相同的主機網卡也會接收到數據幀,只是不予理會,對網卡進行抓包是能看到數據幀的)。
- 這個時候,PC2接收到了數據幀,並進行應答。應答數據幀經過交換機的時候,交換機會將應答數據幀的源mac地址和端口號學習到mac表中,也就是PC2的mac地址和端口號綁定。
- 交換機根據應答數據幀的目的mac地址,開始查詢mac表,發現PC1的記錄存在,就根據這綁定的端口號,直接將應答數據幀發給了PC1。這就是整個mac地址表的學習過程。
1.3 交換機的mac老化機制
若交換機與某台主機長時間未通信,交換機就會把該主機的mac地址從mac地址表里刪除掉,等下次通信時重新學習地址。
1.4 泛洪攻擊的可能性
- 正常的通信是除非一開始mac表中沒有目標主機的mac和端口,這樣才進行數據廣播,只要mac表中有相應的綁定關系,之后兩台主機間的 通信,都是由交換機直接根據mac和端口綁定進行轉發,其他的主機是獲取不到這兩台主機之間的數據的。
- 泛洪攻擊的目標就是想獲取主機之間的通信數據。要想達到這個目的,就需要強迫交換機進行數據廣播,那就要實現mac表中沒有目標主機 的mac和端口綁定。泛洪攻擊的實現方法就是通過偽造大量的未知mac地址進行通信,交換機進行不斷的學習,很快mac表就會被充滿,這樣正常的主機的mac地址在經過老化之后,就無法再添加到mac地址表中,導致之后的數據都變成了廣播。
二.攻擊場景
ftp服務器:我在一台windows主機上使用FileZilla Server搭建了一個ftp服務器,ip地址為10.170.62.240。如何搭建ftp服務器請參考,http://jingyan.baidu.com/article/6079ad0e67acf828ff86db3f.html。ftp的賬號為qiye,密碼為qiye123789。
PC1: 局域網中的另一台主機,win7操作系統,作為ftp的客戶機,ip地址為10.170.56.82。
PC2:我的個人筆記本電腦作為攻擊機,kali系統,ip地址為10.170.39.165。
三.實戰攻擊
實施mac泛洪攻擊使用的工具是kali系統自帶的macof,用來發送大量偽造的mac地址的數據包。
第一步,我在PC2上打開macof,並且開啟多個窗口運行,力求以盡快的速度,填滿交換機的mac表。
與此同時,在開啟一個窗口,使用tcpdump進行抓包,抓取端口為21的ftp數據包。
第二步,我使用PC1登錄ftp服務器。既可以在瀏覽器中登錄,也可以使用win7自帶的ftp客戶端。
第三步,查看PC2中是否抓包廣播出來的ftp登錄信息。
可以看到,我已經成功抓取到PC1訪問ftp服務器的登錄賬號和密碼。我使用wireshark,也抓取了一下,可能看的更直觀一些。
四.防御手段
限定交換機接入的端口的mac數量。例如:設置該交換機的該端口可以學習8個mac地址,超過了8個mac地址就停止學習,丟棄后來的mac。一般高級的交換機都有這項功能。
今天的分享就到這里,下一篇繼續分析。如果大家覺得還可以呀,記得推薦呦。

歡迎大家支持我公眾號:

本文章屬於原創作品,歡迎大家轉載分享。尊重原創,轉載請注明來自:七夜的故事 http://www.cnblogs.com/qiyeboy/