天天看點

arp欺騙進行流量截獲-1一、什麼是arp 二、arp欺騙的工作原理

這邊博文主要講一下怎麼使用arp欺騙進行流量截獲,主要用于已經攻入内網以後,進行流量監聽以及修改。

一、什麼是arp

    arp協定是以太網的基礎工作協定,其主要作用是是一種将IP位址轉化成實體位址的協定,在以太網上進行通信的時候并不直接使用ip位址作為主機辨別,而是使用MAC位址,也就是實體位址。

    某機器A要向主機B發送封包,會查詢本地的ARP快取記錄,找到B的IP位址對應的MAC位址後,就會進行資料傳輸。如果未找到,則A廣播一個ARP請求封包(攜帶主機A的IP位址Ia——實體位址Pa),請求IP位址為Ib的主機B回答實體位址Pb。網上所有主機包括B都收到ARP請求,但隻有主機B識别自己的IP位址,于是向A主機發回一個ARP響應封包。其中就包含有B的MAC位址,A接收到B的應答後,就會更新本地的ARP緩存。接着使用這個MAC位址發送資料(由網卡附加MAC位址)。是以,本地高速緩存的這個ARP表是本地網絡流通的基礎,而且這個緩存是動态的。

    本地的arp緩存可以通過arp –a指令檢視。

二、arp欺騙的工作原理

    假定C想監聽A和B之間的通信,那麼第一步就是C告訴A,我是B;同時高速B,我是A,這樣A和B都會把發給對方的資料發送到C這裡。

第二步C對收到的資料進行處理,然後再轉發給真正的接收者。

    基本原理非常簡單,就上面兩句話,但是怎麼做到的呢?我稍微詳細說一下。

    第一步MAC 位址誤導

    C怎麼欺騙A,告訴他我才是B呢?

    這就是利用了ARP協定的一個标準請求,大家想一下,如果B想要給A發送資料的時候,如果他不知道A的MAC位址,就會在以太網(可以認為是這個區域網路)廣播一下,我是B,誰知道A的MAC位址是什麼?為什麼C不可以僞造這個過程呢?如果C僞造一個請求,在請求裡面把IP位址下成B的,但是這個IP位址對應的MAC位址寫成C自己的,那麼A收到以後自然就會認為B的MAC位址是MAC C了。

    不過這樣做有一個問題就是,網絡上所有的主機都會形成這種錯誤認識,這個顯然是不行的,因為我就想監聽A和B之間的通信,不想監聽A和所有主機的通信啊,那麼怎麼辦呢?

    其實也很簡單,就是一個小技巧,正常的ARP請求包中,因為不知道對方的MAC位址是什麼,是以目的MAC填寫的是廣播位址FF:FF:FF:FF:FF:FF,這也就導緻了所有的人都收的到,因為我們知道A的真實MAC位址是MAC A,是以在以太網幀中的目的MAC填寫上MAC A,這樣其他主機就會忽略該ARP請求,也就不會幹擾其他主機的正常通信。

    同理,C也可以這樣欺騙B,告訴它其實A的MAC位址是MAC C。

    第二步 進行包轉發

    A和B發給對方的資料包都發到了C這裡,那麼肯定就不能正常通信,這樣A和B就無法進行正常通信了,自然也就沒必要進行監聽了。

    所有C在收到包以後就必須進行轉發,比如收到A發送給B的包以後,再将目的MAC位址修改為B真正的MAC B,然後再發送出去,這樣B才能收到。同理對于B給A的資料包也一樣。

    這裡其實還有一個問題就是我們怎麼判斷這個資料包是A發送給B的呢?這個可以通過IP頭中的目的IP是B和源IP是A來判斷。那麼會不會出現是A發送給B,但是目的IP不是B的這種情況呢?基本上隻有一種例外情況,就是B是網關,那麼A發送到外網的IP資料包都要發送到B,但是目的IP卻可能是任意IP,不過這個IP位址卻一定不是本區域網路的IP。

    是以後一種情況可以通過指明B是網關,想監聽A的一切外網通路來識别。

繼續閱讀