1. 程式人生 > >ARP欺騙分析

ARP欺騙分析

arp

1.arp介紹
arp:地址解析協議;將IP地址映射為MAC地址。

2.為什麽要有arp
平時上網我們都知道要有一個IP地址才能上網,那arp用來幹嘛的呢?如果我們學習過計算機網絡,就應該知道,上網需要網絡協議-》TCP/IP協議(抽象上)有四層,上三層傳輸數據需要IP地址傳輸,最底一層數據傳輸則需要ARP解析成MAC地址進行傳輸。

3.簡單介紹局域網中兩臺電腦之間數據傳輸
假設:
源主機 A ip:192.168.1.1
目標主機 B ip:192.168.1.2
A要向B發送數據,A如何發給B呢?
A先通過軟件編寫好要發送的內容,點擊發送 -》解釋:此時,電腦將要發送的內容,從軟件中(或者可以理解為:軟件界面中的文本框中)讀取數據,將數據從內存中復制到網卡緩存中,在這期間電腦軟件自動將要發送到的目標主機地址(這裏的目標主機地址是指IP地址)寫好。


註意:網卡發送到的目標地址是MAC地址(只能發送到MAC地址,網卡屬於網絡接口層,即最下層,只能接觸MAC地址,並不接觸IP),但現只知道IP如何知道MAC呢?
這時就要用arp協議了,這時,網卡向整個局域網發送一個廣播:誰是 192.168.1.2?把他的MAC地址告訴192.168.1.1。如果B在局域網中,收到該條廣播將自己的IP 地址和廣播的IP地址進行比對,如果相同則向A發送一個響應包:我的IP是192.168.1.2,我的MAC 地址是BB-BB-BB-BB-BB-BB。其他主機收到後比對IP,IP不同則忽略廣播包。如果B不在局域網中,則廣播後無響應,則向該局域網連接的路由器發送請求,得到路由器的MAC地址,將剛才的廣播信息發給路由器,路由器再進行轉發(這裏已經不屬於局域網的範疇了,我們不在討論)。

為什麽要用arp轉發?答:局域網由交換機組成(不考慮其他原因,這裏僅是為了講解問題),交換機中存儲的MAC地址,A->B發送信息,兩臺主機如果在一個局域網中,且AB都互相知道對方的IP和MAC,這時,消息從網卡發出(包括地址信息)-》到交換機,交換機從MAC表中查找目標主機的MAC,查找到MAC->端口(端口指的主機網線連接到交換機上的口),將消息轉發給這個端口,B網卡收到該消息比對MAC->比對ip->交給軟件.(傳輸層的端口用來表示給那個軟件(進程),這裏不討論),最終從A發出的消息被B收到。

4.arp欺騙
假設:C 攻擊者
這裏可以看出在A發送廣播的時候,如果C冒充B,則可以將自己MAC告訴A,說我就是192.168.1.2,我的MAC是CC-CC-CC-CC-CC-CC(其實這個MAC地址是C的)。如何偽造這份信息呢?這就要用到內核編程了(之前我也很好奇,如果做到偽造,比如說偽造IP,冒充網關進行DNS欺騙)在我慢慢看書積累的過程中,《Linux網絡編程》(第二版)宋敬彬P492,寫道在linux內核中的netfilter框架(自行百度這個框架的信息吧),框架中有5個鉤子點(鉤子:程序在系統處理之前,先讓用戶程序處理一遍,這個用戶程序就是鉤子程序),在IP層(arp協議屬於ip層)最後一個鉤子點處,即數據包即將要通過網卡出去的包,這裏進行偽裝,發送虛假信息給A。

這裏讀者可能又問了,我怎麽知道A什麽時候發消息給B呢?地址解析協議ARP是有一定時間的,即需要不停的發送,指出,其實每臺主機都要維護一個ARP表,這個表就是緩解網絡壓力,剛發的IP對應的MAC我們先放到這個表中,不需要每次都要發送ARP廣播,但不是一直都是固定的ARP信息,因為這裏有很多情況出現,比如A關機了/換網卡了等,所有這裏雖然有ARP表進行記錄,但也是要經常更新滴。所以我們可以主動向A主機發送虛假的ARP信息,A就會以為B-IP對應的MAC就是B的(其實C已經欺騙了A)。A-》B發送信息,其實是發送給了B,這樣就完成了ARP欺騙。

ARP欺騙分析