明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ARP協(xié)議區(qū)分_ARP原理

[摘要]ARP(AddressResolutionProtocol)地址解析協(xié)議用于將計(jì)算機(jī)的網(wǎng)絡(luò)地址(IP地址32位)轉(zhuǎn)化為物理地址(MAC地址48位)[RFC826]。 ARP協(xié)議是屬于鏈路層的協(xié)議,...

ARP(AddressResolutionProtocol)地址解析協(xié)議用于將計(jì)算機(jī)的網(wǎng)絡(luò)地址(IP地址32位)轉(zhuǎn)化為物理地址(MAC地址48位)[RFC826]。 ARP協(xié)議是屬于鏈路層的協(xié)議, 在以太網(wǎng)中的數(shù)據(jù)幀從一個(gè)主機(jī)到達(dá)網(wǎng)內(nèi)的另一臺(tái)主機(jī)是根據(jù)48位的以太網(wǎng)地址(硬件地址)來確定接口的, 而不是根據(jù)32位的IP地址。 內(nèi)核(如驅(qū)動(dòng))必須知道目的端的硬件地址才能發(fā)送數(shù)據(jù)。 當(dāng)然, 點(diǎn)對(duì)點(diǎn)的連接是不需要ARP協(xié)議的。

ARP協(xié)議的數(shù)據(jù)結(jié)構(gòu):

typedefstructarphdr

{

unsignedshortarp_hrd;/*硬件類型*/

unsignedshortarp_pro;/*協(xié)議類型*/

unsignedchararp_hln;/*硬件地址長(zhǎng)度*/

unsignedchararp_pln;/*協(xié)議地址長(zhǎng)度*/

unsignedshortarp_op;/*ARP操作類型*/

unsignedchararp_sha[6];/*發(fā)送者的硬件地址*/

unsignedlongarp_spa;/*發(fā)送者的協(xié)議地址*/

unsignedchararp_tha[6];/*目標(biāo)的硬件地址*/

unsignedlongarp_tpa;/*目標(biāo)的協(xié)議地址*/

}ARPHDR,*PARPHDR;

為了解釋ARP協(xié)議的作用, 就必須理解數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸過程。 這里舉一個(gè)簡(jiǎn)單的PING例子。

假設(shè)我們的計(jì)算機(jī)IP地址是192.168.1.1, 要執(zhí)行這個(gè)命令:ping192.168.1.2。 該命令會(huì)通過ICMP協(xié)議發(fā)送ICMP數(shù)據(jù)包。 該過程需要經(jīng)過下面的步驟:

1、應(yīng)用程序構(gòu)造數(shù)據(jù)包, 該示例是產(chǎn)生ICMP包, 被提交給內(nèi)核(網(wǎng)絡(luò)驅(qū)動(dòng)程序);

2、內(nèi)核檢查是否能夠轉(zhuǎn)化該IP地址為MAC地址, 也就是在本地的ARP緩存中查看IP-MAC對(duì)應(yīng)表;

3、如果存在該IP-MAC對(duì)應(yīng)關(guān)系, 那么跳到步驟9;如果不存在該IP-MAC對(duì)應(yīng)關(guān)系, 那么接續(xù)下面的步驟;

4、內(nèi)核進(jìn)行ARP廣播, 目的地的MAC地址是FF-FF-FF-FF-FF-FF, ARP命令類型為REQUEST(1), 其中包含有自己的MAC地址;

5、當(dāng)192.168.1.2主機(jī)接收到該ARP請(qǐng)求后, 就發(fā)送一個(gè)ARP的REPLY(2)命令, 其中包含自己的MAC地址;

6、本地獲得192.168.1.2主機(jī)的IP-MAC地址對(duì)應(yīng)關(guān)系, 并保存到ARP緩存中;

7、內(nèi)核將把IP轉(zhuǎn)化為MAC地址, 然后封裝在以太網(wǎng)頭結(jié)構(gòu)中, 再把數(shù)據(jù)發(fā)送出去;

使用arp-a命令就可以查看本地的ARP緩存內(nèi)容, 所以, 執(zhí)行一個(gè)本地的PING命令后, ARP緩存就會(huì)存在一個(gè)目的IP的記錄了。 當(dāng)然, 如果你的數(shù)據(jù)包是發(fā)送到不同網(wǎng)段的目的地, 那么就一定存在一條網(wǎng)關(guān)的IP-MAC地址對(duì)應(yīng)的記錄。

知道了ARP協(xié)議的作用, 就能夠很清楚地知道, 數(shù)據(jù)包的向外傳輸很依靠ARP協(xié)議, 當(dāng)然, 也就是依賴ARP緩存。 要知道, ARP協(xié)議的所有操作都是內(nèi)核自動(dòng)完成的, 同其他的應(yīng)用程序沒有任何關(guān)系。 同時(shí)需要注意的是, ARP協(xié)議只使用于本網(wǎng)絡(luò)。

ARP協(xié)議的利用和相關(guān)原理介紹。

一、交換網(wǎng)絡(luò)的嗅探

ARP協(xié)議并不只在發(fā)送了ARP請(qǐng)求才接收ARP應(yīng)答。 當(dāng)計(jì)算機(jī)接收到ARP應(yīng)答數(shù)據(jù)包的時(shí)候, 就會(huì)對(duì)本地的ARP緩存進(jìn)行更新, 將應(yīng)答中的IP和MAC地址存儲(chǔ)在ARP緩存中。 因此, 在上面的假設(shè)網(wǎng)絡(luò)中, B向A發(fā)送一個(gè)自己偽造的ARP應(yīng)答, 而這個(gè)應(yīng)答中的數(shù)據(jù)為發(fā)送方IP地址是192.168.10.3(C的IP地址), MAC地址是DD-DD-DD-DD-DD-DD(C的MAC地址本來應(yīng)該是CC-CC-CC-CC-CC-CC, 這里被偽造了)。 當(dāng)A接收到B偽造的ARP應(yīng)答, 就會(huì)更新本地的ARP緩存, 將本地的IP-MAC對(duì)應(yīng)表更換為接收到的數(shù)據(jù)格式, 由于這一切都是A的系統(tǒng)內(nèi)核自動(dòng)完成的, A可不知道被偽造了。

ARP欺騙的主要用途就是進(jìn)行在交換網(wǎng)絡(luò)中的嗅探。 有關(guān)交換網(wǎng)絡(luò)的嗅探不是本文的討論內(nèi)容。

二、IP地址沖突

我們知道, 如果網(wǎng)絡(luò)中存在相同IP地址的主機(jī)的時(shí)候, 就會(huì)報(bào)告出IP地址沖突的警告。 這是怎么產(chǎn)生的呢?

比如某主機(jī)B規(guī)定IP地址為192.168.0.1, 如果它處于開機(jī)狀態(tài), 那么其他機(jī)器A更

改IP地址為192.168.0.1就會(huì)造成IP地址沖突。 其原理就是:主機(jī)A在連接網(wǎng)絡(luò)(或更改IP地址)的時(shí)候就會(huì)向網(wǎng)絡(luò)發(fā)送ARP包廣播自己的IP地址, 也就是freearp。 如果網(wǎng)絡(luò)中存在相同IP地址的主機(jī)B, 那么B就會(huì)通過ARP來reply該地址, 當(dāng)A接收到這個(gè)reply后, A就會(huì)跳出IP地址沖突的警告, 當(dāng)然B也會(huì)有警告。

因此用ARP欺騙可以來偽造這個(gè)ARPreply, 從而使目標(biāo)一直遭受IP地址沖突警告的困擾。

三、阻止目標(biāo)的數(shù)據(jù)包通過網(wǎng)關(guān)

比如在一個(gè)局域網(wǎng)內(nèi)通過網(wǎng)關(guān)上網(wǎng), 那么連接外部的計(jì)算機(jī)上的ARP緩存中就存在網(wǎng)關(guān)IP-MAC對(duì)應(yīng)記錄。 如果, 該記錄被更改, 那么該計(jì)算機(jī)向外發(fā)送的數(shù)據(jù)包總是發(fā)送到了錯(cuò)誤的網(wǎng)關(guān)硬件地址上, 這樣, 該計(jì)算機(jī)就不能夠上網(wǎng)了。

這里也主要是通過ARP欺騙進(jìn)行的。 有兩種辦法達(dá)到這樣的目的。

1、向目標(biāo)發(fā)送偽造的ARP應(yīng)答數(shù)據(jù)包, 其中發(fā)送方的IP地址為網(wǎng)關(guān)的地址, 而MAC地址則為一個(gè)偽造的地址。 當(dāng)目標(biāo)接收到該ARP包, 那么就更新自身的ARP緩存。 如果該欺騙一直持續(xù)下去, 那么目標(biāo)的網(wǎng)關(guān)緩存一直是一個(gè)被偽造的錯(cuò)誤記錄。 當(dāng)然, 如果有些了解的人查看ARP-a, 就知道問題所在了。

2、這種方法非常狠, 欺騙網(wǎng)關(guān)。 向網(wǎng)關(guān)發(fā)送偽造的ARP應(yīng)答數(shù)據(jù)包, 其中發(fā)送方的IP地址為目標(biāo)的IP地址, 而MAC地址則為一個(gè)偽造的地址。 這樣, 網(wǎng)關(guān)上的目標(biāo)ARP記錄就是一個(gè)錯(cuò)誤的, 網(wǎng)關(guān)發(fā)送給目標(biāo)的數(shù)據(jù)報(bào)都是使用了錯(cuò)誤的MAC地址。 這種情況下, 目標(biāo)能夠發(fā)送數(shù)據(jù)到網(wǎng)關(guān), 卻不能接收到網(wǎng)關(guān)的任何數(shù)據(jù)。 同時(shí), 目標(biāo)自己查看ARP-a卻看不出任何問題來。

四、通過ARP檢測(cè)混雜模式節(jié)點(diǎn)

在混雜模式中, 網(wǎng)卡進(jìn)行包過濾不同于普通模式。 本來在普通模式下, 只有本地地址的數(shù)據(jù)包或者廣播(多播等)才會(huì)被網(wǎng)卡提交給系統(tǒng)核心, 否則的話, 這些數(shù)據(jù)包就直接被網(wǎng)卡拋棄。 現(xiàn)在, 混合模式讓所有經(jīng)過的數(shù)據(jù)包都傳遞給系統(tǒng)核心, 然后被sniffer等程序利用。

通過特殊設(shè)計(jì)的ARP請(qǐng)求可以用來在一定程度上檢測(cè)處于混雜模式的節(jié)點(diǎn), 比如對(duì)網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都發(fā)送MAC地址為FF-FF-FF-FF-FF-FE的ARP請(qǐng)求。 對(duì)于網(wǎng)卡來說這不是一個(gè)廣播地址(FF-FF-FF-FF-FF-FF), 所以處于普通模式的節(jié)點(diǎn)就會(huì)直接拋棄該數(shù)據(jù)包, 但是多數(shù)操作系統(tǒng)核心都認(rèn)為這是一個(gè)廣播地址, 如果有一般的sniffer程序存在, 并設(shè)置網(wǎng)卡為混雜模式, 那么系統(tǒng)核心就會(huì)作出應(yīng)答, 這樣就可以判斷這些節(jié)點(diǎn)是否存在嗅探器了。

可以查看, 很多基于ARP的攻擊都是通過ARP欺騙實(shí)現(xiàn)的。 至于ARP欺騙的防范, 還是盡可能使用靜態(tài)的ARP。 對(duì)于WIN, 使用arp-s來進(jìn)行靜態(tài)ARP的設(shè)置。 當(dāng)然, 如果能夠完全使用靜態(tài)的IP+MAC對(duì)應(yīng), 就更好了, 因?yàn)殪o態(tài)的ARP緩存只是相對(duì)的。

當(dāng)然, 可以有一些方法來實(shí)現(xiàn)ARP欺騙的檢測(cè)。 設(shè)置一個(gè)ARP的嗅探器, 其中維護(hù)著一個(gè)本地網(wǎng)絡(luò)的IP-MAC地址的靜態(tài)對(duì)應(yīng)表, 查看所有經(jīng)過的ARP數(shù)據(jù), 并檢查其中的IP-MAC對(duì)應(yīng)關(guān)系, 如果捕獲的IP-MAC對(duì)應(yīng)關(guān)系和維護(hù)的靜態(tài)對(duì)應(yīng)關(guān)系對(duì)應(yīng)不上, 那么就表明是一個(gè)欺騙的ARP數(shù)據(jù)包了。

一個(gè)ARP數(shù)據(jù)包發(fā)送程序源代碼和編譯好的EXE程序可以參考ARPSender程序。 注意:需要先安裝WinPcap。


上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識(shí),學(xué)習(xí)了安全知識(shí),幾乎可以讓你免費(fèi)電腦中毒的煩擾。