上一篇講解了無(wú)線安全專題_攻擊篇--干擾通信坝撑,沒(méi)在首頁(yè)待多長(zhǎng)時(shí)間就被拿下了盈蛮,看來(lái)之后不能只是講解攻擊實(shí)戰(zhàn),還要進(jìn)行技術(shù)原理和防御方法的講解婶肩。本篇講解的是局域網(wǎng)內(nèi)的MAC泛洪攻擊捌袜,這種攻擊方式主要目的是竊取局域網(wǎng)中的通信數(shù)據(jù)说搅,例如ftp的賬號(hào)和密碼,下面的實(shí)戰(zhàn)也是以此為例子虏等。接下來(lái)按照原理弄唧,場(chǎng)景适肠,攻擊實(shí)戰(zhàn),防御方法的層次步驟進(jìn)行講解候引。(我的新書《Python爬蟲開發(fā)與項(xiàng)目實(shí)戰(zhàn)》發(fā)布了侯养,大家在這里可以看到樣章)
一.MAC泛洪攻擊的原理
MAC泛洪攻擊主要是利用局域網(wǎng)交換機(jī)的mac學(xué)習(xí)和老化機(jī)制。
1.1交換機(jī)的工作流程如下:
局域網(wǎng)中的pc1發(fā)送數(shù)據(jù)幀給pc2,經(jīng)過(guò)交換機(jī)時(shí),交換機(jī)會(huì)在內(nèi)部mac地址表中查找數(shù)據(jù)幀中的目標(biāo)mac地址澄干,如果找到就將該數(shù)據(jù)幀發(fā)送到相應(yīng)的端口逛揩,如果找不到,交換機(jī)就會(huì)向入端口以外的所有端口發(fā)送此數(shù)據(jù)幀(所謂的廣播麸俘,不過(guò)不是廣播幀辩稽,廣播幀的目的mac地址是全F)。
由此可以看到交換機(jī)實(shí)現(xiàn)交換功能的關(guān)鍵就是內(nèi)部的mac地址表从媚,那這個(gè)內(nèi)部mac地址是怎么形成的呢逞泄?有什么特性呢?接下來(lái)就要講解一下交換機(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)來(lái):
內(nèi)部mac表是將主機(jī)的mac地址和連接到交換機(jī)上的端口號(hào)進(jìn)行綁定,這樣可以根據(jù)mac地址找到端口進(jìn)行轉(zhuǎn)發(fā)赴穗。
2.一開始的時(shí)候憔四,沒(méi)有主機(jī)連接,交換機(jī)內(nèi)的mac表是空白的望抽,這時(shí)候就要進(jìn)行學(xué)習(xí)加矛。
下面咱們幻想出一個(gè)場(chǎng)景: PC1這時(shí)候想往PC2發(fā)送數(shù)據(jù)履婉,數(shù)據(jù)幀經(jīng)過(guò)交換機(jī)的時(shí)候煤篙,交換機(jī)會(huì)把數(shù)據(jù)幀中的源mac地址和進(jìn)入的端口號(hào)記錄到mac表中; 由于一開始mac表中沒(méi)有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)過(guò)交換機(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í)過(guò)程蘸际。
1.3 交換機(jī)的mac老化機(jī)制
若交換機(jī)與某臺(tái)主機(jī)長(zhǎng)時(shí)間未通信,交換機(jī)就會(huì)把該主機(jī)的mac地址從mac地址表里刪除掉徒扶,等下次通信時(shí)重新學(xué)習(xí)地址捡鱼。
1.4 泛洪攻擊的可能性
正常的通信是除非一開始mac表中沒(méi)有目標(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表中沒(méi)有目標(biāo)主機(jī) 的mac和端口綁定。泛洪攻擊的實(shí)現(xiàn)方法就是通過(guò)偽造大量的未知mac地址進(jìn)行通信谅将,交換機(jī)進(jìn)行不斷的學(xué)習(xí)漾狼,很快mac表就會(huì)被充滿,這樣正常的主機(jī)的mac地址在經(jīng)過(guò)老化之后饥臂,就無(wú)法再添加到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借嗽,用來(lái)發(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中是否抓包廣播出來(lái)的ftp登錄信息晕换。
可以看到,我已經(jīng)成功抓取到PC1訪問(wèn)ftp服務(wù)器的登錄賬號(hào)和密碼站宗。我使用wireshark闸准,也抓取了一下,可能看的更直觀一些梢灭。
四.防御手段
限定交換機(jī)接入的端口的mac數(shù)量夷家。例如:設(shè)置該交換機(jī)的該端口可以學(xué)習(xí)8個(gè)mac地址,超過(guò)了8個(gè)mac地址就停止學(xué)習(xí)敏释,丟棄后來(lái)的mac库快。一般高級(jí)的交換機(jī)都有這項(xiàng)功能。
今天的分享就到這里钥顽,下一篇繼續(xù)分析义屏。如果大家覺(jué)得還可以呀,記得打賞呦耳鸯。