用python實現ARP欺騙


首先介紹一個python第三方庫--Scapy,這個庫不是標准庫,默認是沒有的,需要安裝,不過在kali-linux里邊是默認安裝的,

這里我用kali做攻擊者,xp做受害者

關於Scapy

Scapy是一個功能強大的交互式數據包操作程序。它能夠偽造或解碼大量協議的數據包,通過線路發送它們,捕獲它們,匹配請求和回復等等。它可以輕松處理大多數經典任務,如掃描,跟蹤路由,探測,單元測試,攻擊或網絡發現(它可以取代hping,85%的nmap,arpspoof,arp-sk,arping,tcpdump,tethereal,p0f等)。它還能在許多其他工具無法處理的其他特定任務中表現良好,例如發送無效幀,注入自己的802.11幀,組合技術(VLAN跳躍+ ARP緩存中毒,WEP加密通道上的VOIP解碼,...... )等。

首先我們學習下Scapy的幾個函數用法,

getmacbyip----查找ip的Mac地址

get_if_hwaddr----查找網卡的Mac地址

看下圖:受害者的ip地址為192.168.122.136,網關是192.168.122.2,攻擊者ip:192.168.122.129

關於ARP欺騙
由於局域網的網絡流通不是根據IP地址進行,而是根據MAC地址進行傳輸。所以,MAC地址在A上被偽造成一個不存在的MAC地址,這樣就會導致網絡不通,A不能Ping通C!這就是一個簡單的ARP欺騙。

 

 

本來受害者是通過將請求發給網關,然后網關去訪問外面,這里ARP欺騙是將攻擊者Mac地址假裝成網關的Mac地址,完成ARP欺騙

 

 了解ARP

我們需要用到的是下邊5個,

op---   接收包數(默認為1)

hwsrc---    仿作的Mac地址(也就是攻擊者的Mac地址)

psrc---   網關的ip地址

hwsrc---    受害者的Mac地址

pdst ---     受害者的ip地址

 

因為是以太網,因此要了解下Ether()

三個參數,目的主機MAC地址,攻擊者Mac地址,

部分代碼:

這里包的地方有個/號

這是將兩者連接的意思,例子如下:

 

 接下來構造一直發送請求,來認識sendp

sendp(x, inter=0, loop=0, iface=None, iface_hint=None, count=None, verbose=None, realtime=None, return_packets=False, *args, **kargs)

x為包,inter為請求間隔,iface為網絡接口

 完整代碼:

這時我們來測試一下

不開啟ARP欺騙,ping是暢通的

開啟后:

要想恢復通訊,改一下網關所指的Mac地址

將pack包里邊的psrc改為網關Mac :gmac即可

 這里僅僅只能讓受將害者斷網,要想進一步學習

來舉個例子

 接收受害者的圖片

用到的  軟件 driftnet

開啟ip轉發代碼

sysctl net.ipv4.ip_forward=1

 

再輸入driftnet,打開窗口

然候在受害者電腦上打開圖片鏈接,即可在driftnet里邊顯示

快去試試吧!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM