局域網 ARP 欺騙原理詳解

局域網 ARP 欺騙原理詳解

ARP 欺騙是一種以 ARP 地址解析協議爲基礎的一種網絡攻擊方式, 那麼什麼是 ARP 地址解析協議: 首先咱們要知道, 一臺電腦主機要把以太網數據幀發送到同一局域網的另一臺主機, 它的底層是經過 48bit 的 Mac 地址來肯定目的接口的, 可是咱們在應用層是使用 IP 地址來訪問目標主機的, 因此 ARP 的做用就是當一臺主機訪問一個目標 IP 地址的時候, 它爲該主機返回目標 IP 主機的 Mac 地址, 而且這個過程是自動完成的, 應用層的程序是不用關心這件事的.網絡

在講 ARP 欺騙以前咱們先來了解一下正常狀況下一臺主機是如何經過路由器上網的:併發

家庭局域網基礎網絡拓撲圖

如上圖, 咱們以 A 主機 ping 8.8.8.8 爲例:工具

  1. 主機 A 上執行 ping 8.8.8.8
  2. 主機 A 準備根據默認路由將數據包發送給 192.168.0.1, 可是最開始的時候主機 A 不知道 192.168.0.1 的 Mac 地址, 因此主機 A 廣播一條 ARP Request, 詢問 192.168.0.1 的 Mac 地址是什麼
  3. 路由器收到該 ARP 請求, 發現本身是 192.168.0.1 因而向主機 A 回覆一條 ARP Reply, 告訴主機 A 192.168.0.1 的 Mac 地址是 xxxGW.
  4. 主機 A 收到該 ARP Reply, 並使用該 Reply 中的 MAC 地址封一個 ICMP Request 包, 而後將包發出去
  5. 路由器收到該 ICMP 包, 發現目標 IP 是公網 IP, 便將該包放送到公網, 公網返回 ICMP Reply 給路由器
  6. 路由器準備將 ICMP Reply 發送給 192.168.0.100, 可是同第2步, 路由器最開始的時候也不知道 192.168.0.100 的 Mac 地址是多少, 因此路由器會廣播一條 ARP Request, 詢問 192.168.0.100 的 Mac 地址是什麼
  7. 主機 A 收到 ARP Request, 發現本身是 192.168.0.100, 因而向路由器回覆 ARP Reply, 告訴路由器 192.168.0.100 的 Mac 地址是 xxxA.
  8. 路由器收到 ARP Reply, 並使用該 Reply 中的 MAC 地址將第5步收到 ICMP Reply 包從新封包, 併發送出去
  9. 主機 A 收到 ICMP Reply

至此, 正常的上網流程結束. 而後對照上面的流程回答下面兩個問題:spa

  1. 若是主機 B 無腦的向主機 A 發送 ARP Reply, 告訴 A 192.168.0.1 的 MAC 是 xxxB, 會發生什麼?
  2. 若是主機 B 無腦的向路由器 GW 發送 ARP Reply, 告訴 GW 192.168.0.100 的 MAC 是 xxxB, 會發生什麼?

答案以下圖:code

ARP欺騙後數據流向圖

若是主機 B 作了上面說的兩件事的話, 那麼主機 A 訪問網絡的全部數據都會先通過主機 B, 而且回來的數據也都會通過 B, 至此, 整個 ARP 欺騙完成.接口

至於實際操做, 在本身的機器上安裝一個 arpspoof 工具即可以, Ubuntu 下能夠直接使用以下命令安裝:ip

apt install dsniff

安裝好以後先打開 IP 轉發:路由

echo 1 > /proc/sys/net/ipv4/ip_forward

而後使用 arpspoof 命令進行欺騙, 命令使用方法以下:rem

arpspoof -i <網卡名> -t <欺騙的目標> <我是誰>

好比上面我舉得例子, 分別開兩個終端:it

終端1, 欺騙主機 A 我是網關

arpspoof -i eth0 -t 192.168.0.100 192.168.0.1

終端2, 欺騙網關我是主機 A

arpspoof -i eth0 -t 192.168.0.1 192.168.0.100

欺騙成功以後能夠經過抓包工具查看主機 A 全部的流量, 這裏再也不多說.

相關文章
相關標籤/搜索