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欺騙只是打個前站,欲知後事如何且聽下回分解!linux

筆者能力有限,若有不對,還請大牛不吝指導。郵箱:aq_ss@qq.com編程

相關文章
相關標籤/搜索