姓名:齊鵬飛 ?學(xué)號(hào):17021211161
轉(zhuǎn)載自:七夜的故事 http://www.cnblogs.com/qiyeboy/
【嵌牛導(dǎo)讀】無線安全專題_攻擊篇--MAC泛洪攻擊
【嵌牛鼻子】服務(wù)器安全
【嵌牛提問】如何成為一名合格的網(wǎng)管???
一.MAC泛洪攻擊的原理
MAC泛洪攻擊主要是利用局域網(wǎng)交換機(jī)的mac學(xué)習(xí)和老化機(jī)制。
1.1交換機(jī)的工作流程如下:
局域網(wǎng)中的pc1發(fā)送數(shù)據(jù)幀給pc2,經(jīng)過交換機(jī)時(shí),交換機(jī)會(huì)在內(nèi)部mac地址表中查找數(shù)據(jù)幀中的目標(biāo)mac地址,如果找到就將該數(shù)據(jù)幀發(fā)送到相應(yīng)的端口,如果找不到,交換機(jī)就會(huì)向入端口以外的所有端口發(fā)送此數(shù)據(jù)幀(所謂的廣播,不過不是廣播幀,廣播幀的目的mac地址是全F)。
由此可以看到交換機(jī)實(shí)現(xiàn)交換功能的關(guān)鍵就是內(nèi)部的mac地址表,那這個(gè)內(nèi)部mac地址是怎么形成的呢?有什么特性呢?接下來就要講解一下交換機(jī)的mac學(xué)習(xí)和老化機(jī)制。
1.2 交換機(jī)的mac學(xué)習(xí)機(jī)制
1.?首先咱們看一下內(nèi)部mac表的結(jié)構(gòu),內(nèi)部mac表都是有大小的,一般8k左右,一但mac表滿了,其他mac地址就加不進(jìn)來:
內(nèi)部mac表是將主機(jī)的mac地址和連接到交換機(jī)上的端口號(hào)進(jìn)行綁定,這樣可以根據(jù)mac地址找到端口進(jìn)行轉(zhuǎn)發(fā)。
2.一開始的時(shí)候,沒有主機(jī)連接,交換機(jī)內(nèi)的mac表是空白的,這時(shí)候就要進(jìn)行學(xué)習(xí)。
下面咱們幻想出一個(gè)場(chǎng)景: PC1這時(shí)候想往PC2發(fā)送數(shù)據(jù),數(shù)據(jù)幀經(jīng)過交換機(jī)的時(shí)候,交換機(jī)會(huì)把數(shù)據(jù)幀中的源mac地址和進(jìn)入的端口號(hào)記錄到mac表中; 由于一開始mac表中沒有PC2的mac地址和端口綁定,所以交換機(jī)會(huì)將這個(gè)數(shù)據(jù)幀進(jìn)行全網(wǎng)轉(zhuǎn)發(fā),就是所謂的廣播,也叫泛洪。
交換機(jī)將所有數(shù)據(jù)幀進(jìn)行全網(wǎng)轉(zhuǎn)發(fā)后,每臺(tái)主機(jī)的協(xié)議棧會(huì)比對(duì)數(shù)據(jù)幀的目的mac地址是否和自身的一樣,如果一樣就進(jìn)行應(yīng)答,如果不一樣,就進(jìn)行丟棄(注意:那些mac地址不相同的主機(jī)網(wǎng)卡也會(huì)接收到數(shù)據(jù)幀,只是不予理會(huì),對(duì)網(wǎng)卡進(jìn)行抓包是能看到數(shù)據(jù)幀的)。
這個(gè)時(shí)候,PC2接收到了數(shù)據(jù)幀,并進(jìn)行應(yīng)答。應(yīng)答數(shù)據(jù)幀經(jīng)過交換機(jī)的時(shí)候,交換機(jī)會(huì)將應(yīng)答數(shù)據(jù)幀的源mac地址和端口號(hào)學(xué)習(xí)到mac表中,也就是PC2的mac地址和端口號(hào)綁定。
交換機(jī)根據(jù)應(yīng)答數(shù)據(jù)幀的目的mac地址,開始查詢mac表,發(fā)現(xiàn)PC1的記錄存在,就根據(jù)這綁定的端口號(hào),直接將應(yīng)答數(shù)據(jù)幀發(fā)給了PC1。這就是整個(gè)mac地址表的學(xué)習(xí)過程。
1.3 交換機(jī)的mac老化機(jī)制
若交換機(jī)與某臺(tái)主機(jī)長(zhǎng)時(shí)間未通信,交換機(jī)就會(huì)把該主機(jī)的mac地址從mac地址表里刪除掉,等下次通信時(shí)重新學(xué)習(xí)地址。
1.4 泛洪攻擊的可能性
正常的通信是除非一開始mac表中沒有目標(biāo)主機(jī)的mac和端口,這樣才進(jìn)行數(shù)據(jù)廣播,只要mac表中有相應(yīng)的綁定關(guān)系,之后兩臺(tái)主機(jī)間的 通信,都是由交換機(jī)直接根據(jù)mac和端口綁定進(jìn)行轉(zhuǎn)發(fā),其他的主機(jī)是獲取不到這兩臺(tái)主機(jī)之間的數(shù)據(jù)的。
泛洪攻擊的目標(biāo)就是想獲取主機(jī)之間的通信數(shù)據(jù)。要想達(dá)到這個(gè)目的,就需要強(qiáng)迫交換機(jī)進(jìn)行數(shù)據(jù)廣播,那就要實(shí)現(xiàn)mac表中沒有目標(biāo)主機(jī) ?的mac和端口綁定。泛洪攻擊的實(shí)現(xiàn)方法就是通過偽造大量的未知mac地址進(jìn)行通信,交換機(jī)進(jìn)行不斷的學(xué)習(xí),很快mac表就會(huì)被充滿,這樣正常的主機(jī)的mac地址在經(jīng)過老化之后,就無法再添加到mac地址表中,導(dǎo)致之后的數(shù)據(jù)都變成了廣播。
二.攻擊場(chǎng)景
ftp服務(wù)器:我在一臺(tái)windows主機(jī)上使用FileZilla Server搭建了一個(gè)ftp服務(wù)器,ip地址為10.170.62.240。如何搭建ftp服務(wù)器請(qǐng)參考,http://jingyan.baidu.com/article/6079ad0e67acf828ff86db3f.html。ftp的賬號(hào)為qiye,密碼為qiye123789。
PC1: 局域網(wǎng)中的另一臺(tái)主機(jī),win7操作系統(tǒng),作為ftp的客戶機(jī),ip地址為10.170.56.82。
PC2:我的個(gè)人筆記本電腦作為攻擊機(jī),kali系統(tǒng),ip地址為10.170.39.165。
三.實(shí)戰(zhàn)攻擊
實(shí)施mac泛洪攻擊使用的工具是kali系統(tǒng)自帶的macof,用來發(fā)送大量偽造的mac地址的數(shù)據(jù)包。
第一步,我在PC2上打開macof,并且開啟多個(gè)窗口運(yùn)行,力求以盡快的速度,填滿交換機(jī)的mac表。
與此同時(shí),在開啟一個(gè)窗口,使用tcpdump進(jìn)行抓包,抓取端口為21的ftp數(shù)據(jù)包。
第二步,我使用PC1登錄ftp服務(wù)器。既可以在瀏覽器中登錄,也可以使用win7自帶的ftp客戶端。
第三步,查看PC2中是否抓包廣播出來的ftp登錄信息。
可以看到,我已經(jīng)成功抓取到PC1訪問ftp服務(wù)器的登錄賬號(hào)和密碼。我使用wireshark,也抓取了一下,可能看的更直觀一些。
四.防御手段
限定交換機(jī)接入的端口的mac數(shù)量。例如:設(shè)置該交換機(jī)的該端口可以學(xué)習(xí)8個(gè)mac地址,超過了8個(gè)mac地址就停止學(xué)習(xí),丟棄后來的mac。一般高級(jí)的交換機(jī)都有這項(xiàng)功能。