使用Lns防范Arp欺騙
發(fā)表時(shí)間:2023-07-16 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]為了便于說(shuō)明, 我們先假設(shè)一個(gè)子網(wǎng)環(huán)境: 網(wǎng)關(guān) : IP = IP-1, MAC = 11:11:11:11:11:11 本機(jī) : IP = IP-2, MAC = 22:22:22:22:22...
為了便于說(shuō)明, 我們先假設(shè)一個(gè)子網(wǎng)環(huán)境:
網(wǎng)關(guān) : IP = IP-1, MAC = 11:11:11:11:11:11
本機(jī) : IP = IP-2, MAC = 22:22:22:22:22:22
主機(jī)A: IP = IP-A, MAC = AA:AA:AA:AA:AA:AA
主機(jī)B: IP = IP-B, MAC = BB:BB:BB:BB:BB:BB
主機(jī)C: IP = IP-C, MAC = CC:CC:CC:CC:CC:CC
子網(wǎng)內(nèi)的任意兩臺(tái)主機(jī)(網(wǎng)關(guān)也可看作一臺(tái)主機(jī))要正常通訊, 需要互相知道對(duì)方的網(wǎng)卡地址MAC。 如果一方不知道對(duì)方的MAC, 就要進(jìn)行ARP查詢。
ARP 查詢過(guò)程
在一個(gè)正常的子網(wǎng)內(nèi), 一次完整的 ARP 查詢需要一次查詢廣播和一次點(diǎn)對(duì)點(diǎn)的應(yīng)答。 查詢廣播中包含了要查詢主機(jī)的IP, 此廣播可以被子網(wǎng)內(nèi)的每一臺(tái)主機(jī)的網(wǎng)卡收到, 網(wǎng)卡會(huì)檢查要查詢的IP是否與自己的IP相等, 不等則直接丟棄, 相等則將此數(shù)據(jù)包提交給系統(tǒng)內(nèi)核(一個(gè)中斷), 內(nèi)核調(diào)用網(wǎng)卡驅(qū)動(dòng)解析收到的數(shù)據(jù)包, 然后構(gòu)建一個(gè)應(yīng)答數(shù)據(jù)包回送到查詢的主機(jī), 查詢主機(jī)收到應(yīng)答后更新自己的ARP緩存表。
對(duì)應(yīng) LnS 的設(shè)置, 此通訊過(guò)程需要兩條規(guī)則,以本機(jī)查詢主機(jī)B的MAC為例
① 22:22:22:22:22:22 => FF:FF:FF:FF:FF:FF (允許本機(jī)廣播出站)
② 22:22:22:22:22:22 <= BB:BB:BB:BB:BB:BB (允許主機(jī)B應(yīng)答本機(jī)入站)
規(guī)則說(shuō)明方式:=> 表示傳出, <= 表示傳入, == 表示雙向。
注意按此設(shè)置 LnS 規(guī)則時(shí), 有方向規(guī)定的始終要將源放在左邊, 目標(biāo)放在右邊, 對(duì)方向?yàn)殡p向的始終將本機(jī)放在左邊, 遠(yuǎn)端放在右邊。
只要將此查詢過(guò)程中的任何一步掐斷, 則該查詢過(guò)程就會(huì)失敗。 比如有人找你公司的討債, 總經(jīng)理秘書(shū)可以想各種理由使債主見(jiàn)不到總經(jīng)理, 即使見(jiàn)到了, 總經(jīng)理也可以找財(cái)務(wù)不在或目前實(shí)在沒(méi)錢為由不付錢, 討債就失敗了。 這兩個(gè)方法就好比攔截廣播和攔截應(yīng)答。
子網(wǎng)內(nèi)的兩臺(tái)主機(jī)要能夠完整的通訊(雙方都可收發(fā)數(shù)據(jù))必須互知對(duì)方的MAC地址, 比如本機(jī)要跟主機(jī)B完整通訊, 還必須讓主機(jī)B也能查詢到自己的 MAC。
① 22:22:22:22:22:22 => FF:FF:FF:FF:FF:FF (允許本機(jī)廣播出站)
② 22:22:22:22:22:22 <= BB:BB:BB:BB:BB:BB (允許主機(jī)B應(yīng)答本機(jī)入站)
③ FF:FF:FF:FF:FF:FF <= BB:BB:BB:BB:BB:BB (允許主機(jī)B廣播入站)
④ 22:22:22:22:22:22 => BB:BB:BB:BB:BB:BB (允許本機(jī)應(yīng)答主機(jī)B出站)
顯然規(guī)則②④在LnS中是可以合并的, 則兩臺(tái)機(jī)器完整通訊只須 3 條規(guī)則:
① 22:22:22:22:22:22 => FF:FF:FF:FF:FF:FF (允許本機(jī)廣播出站)
② FF:FF:FF:FF:FF:FF <= BB:BB:BB:BB:BB:BB (允許主機(jī)B廣播入站)
③ 22:22:22:22:22:22 == BB:BB:BB:BB:BB:BB (允許本機(jī)與主機(jī)B相互應(yīng)答)
簡(jiǎn)單的 ARP 欺騙
前面說(shuō)了, 一次查詢過(guò)程需要一次廣播和一次應(yīng)答, 但 ARP 協(xié)議中并不要求廣播與應(yīng)答成對(duì)出現(xiàn), 也就是可以沒(méi)有廣播, 任何一臺(tái)主機(jī)都可以主動(dòng)發(fā)送應(yīng)答數(shù)據(jù)包, 如果目標(biāo)主機(jī)沒(méi)有使用靜態(tài)MAC, 則只要收到應(yīng)答廣播就會(huì)更新自己的ARP緩存表。 因此, 我們可以人為的構(gòu)建一個(gè)錯(cuò)誤的應(yīng)答數(shù)據(jù)包讓目標(biāo)主機(jī)更新自己的ARP緩存。
比如從本機(jī)控制, 不讓主機(jī)A與主機(jī)B通訊:
本機(jī)向主機(jī)A發(fā)送應(yīng)答數(shù)據(jù)包, 告訴它 IP-B 的 MAC 是 XX:XX:XX:XX:XX:XX
本機(jī)向主機(jī)B發(fā)送應(yīng)答數(shù)據(jù)包, 告訴它 IP-A 的 MAC 是 YY:YY:YY:YY:YY:YY
此時(shí)主機(jī)A和主機(jī)B的 ARP 緩存中關(guān)于對(duì)方的MAC都錯(cuò)誤的, 他們互發(fā)數(shù)據(jù)時(shí)就會(huì)發(fā)到一個(gè)錯(cuò)誤或都根本不存在(取決于偽造的MAC)的網(wǎng)卡, A、B 間的通訊自然失敗。 (其實(shí)只要其中一臺(tái)的ARP緩存錯(cuò)誤, A、B 間的通訊就會(huì)表現(xiàn)不正常)
想想, 如果偽造的應(yīng)答數(shù)據(jù)包是告訴主機(jī)B:IP-1 的 MAC 是 ZZ:ZZ:ZZ:ZZ:ZZ:ZZ 會(huì)怎么樣?則主機(jī)B與網(wǎng)關(guān)通訊會(huì)不正常, 就會(huì)表現(xiàn)為斷網(wǎng)。 如果同時(shí)對(duì)網(wǎng)關(guān)欺騙, 告訴它主機(jī)B的MAC為一個(gè)錯(cuò)誤值, 且這種欺騙一直持續(xù), 則主機(jī)B無(wú)法上網(wǎng)了。
大家常說(shuō)的網(wǎng)絡(luò)執(zhí)法官就是利用ARP欺騙來(lái)踢人的。 執(zhí)法官運(yùn)行時(shí)首先會(huì)大量發(fā)送廣播, 獲得所有主機(jī)的MAC地址, 然后, 想欺騙誰(shuí), 就向誰(shuí)發(fā)送偽造的應(yīng)答數(shù)據(jù)包。
當(dāng)然, ARP欺騙決不僅止于此, 比如還可以使目標(biāo)主機(jī)斷線后將自己的MAC偽造成被欺騙主機(jī)的MAC達(dá)到特殊目的, 或者同時(shí)欺騙網(wǎng)關(guān)與目標(biāo)主機(jī), 但是用自己的MAC代替?zhèn)卧鞈?yīng)答數(shù)據(jù)包中的隨機(jī)MAC并開(kāi)啟本機(jī)的數(shù)據(jù)轉(zhuǎn)發(fā)功能, 插入到網(wǎng)關(guān)與目標(biāo)主機(jī)通訊中充當(dāng)代理, 達(dá)到監(jiān)聽(tīng)目標(biāo)主機(jī)的目的。 但本文的目是要說(shuō)明LnS中的ARP規(guī)則如何設(shè)置, ARP欺騙不是重點(diǎn)。
ARP 防范
說(shuō)到這樣, 大家肯定已經(jīng)發(fā)現(xiàn)一個(gè)問(wèn)題:欺騙者必須能與被欺騙者通訊, 以便發(fā)送偽造的應(yīng)答數(shù)據(jù)包, 否則欺騙過(guò)程就不能完成。 基于這點(diǎn), 我們可以從幾個(gè)地方來(lái)防止 ARP 欺騙:
一、不讓非信任的主機(jī)查詢自己的MAC, 欺騙者不能與本機(jī)通訊, 自然無(wú)從欺騙了
可以攔截它的查詢廣播(要錢的一律不許進(jìn)門(mén))
可以攔截本機(jī)對(duì)它的應(yīng)答(都來(lái)要吧, 我就一句話, 沒(méi)錢, 死豬不怕開(kāi)水燙)
二、使用靜態(tài)MAC, 拒絕更新ARP緩存。
即使有仿造應(yīng)答到達(dá)本機(jī), 但本機(jī)不使用該包更新自己的ARP緩存, 欺騙失敗。 那么為什么使用變種二方法的網(wǎng)友實(shí)際中“可行”了?說(shuō)可行是因?yàn)檫^(guò)濾太嚴(yán)格, 能防止絕大數(shù)大ARP欺騙, 加引號(hào)是因?yàn)榭尚惺菚簳r(shí)的, 連續(xù)的長(zhǎng)時(shí)間測(cè)試, 很可能會(huì)斷網(wǎng)的。
這跟具體的網(wǎng)絡(luò)環(huán)境有關(guān)系, 可能的原因比較多。 一種可能的原因是LnS有BUG, 過(guò)濾起作用在本機(jī)與網(wǎng)關(guān)建立連接之后, 或者使用了靜態(tài)MAC、指定IP避免DHCP租約失效之類, 具體的我也分析不清楚。 但從原理上說(shuō), 這方法是錯(cuò)誤的。
安全是相對(duì)的
防止ARP欺騙最好的辦法在網(wǎng)關(guān)和各子機(jī)上均采用靜態(tài)MAC綁定。 防火墻只能增加安全系數(shù), 不能保證絕對(duì)完全, 一是因?yàn)榉阑饓赡苡蠦UG或者功能本身不完善又或者設(shè)置不善, 二是現(xiàn)實(shí)中的妥協(xié)可能存在漏洞。 比如本機(jī)為了上網(wǎng)信任了網(wǎng)關(guān), 同時(shí)為了共享信任了主機(jī)B, 但主機(jī)B是沒(méi)有任何安全防護(hù), 攻擊者可以從主機(jī)B下手, 迫使主機(jī)B當(dāng)機(jī)后將自己偽造主機(jī)B的IP與MAC, 獲得與本機(jī)通訊的能力后再用其它辦法攻擊, 更嚴(yán)重的情況是如果網(wǎng)關(guān)本身不安全, 那么在本機(jī)上如何防護(hù)都不能取得較好的效果。
上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識(shí),學(xué)習(xí)了安全知識(shí),幾乎可以讓你免費(fèi)電腦中毒的煩擾。