Python寫ARP區域網主機存活掃描與ARP欺騙工具
起源
最近一直在研究網路協議,為了加深理解就自己構造了資料包傳送並用抓包工具進行分析,在研究arp協議時順便寫了一個簡單的類似網路剪刀手的小指令碼用於測試,下面開始我們的arp研究吧。
簡單協議分析
網路協議大致分為應用層•傳輸層•網路層•鏈路層,以http為例,傳輸層封裝tcp頭,網路層封裝ip頭,鏈路層封裝以太頭(如下圖所示),而arp報文就是包含在鏈路層以太幀的資料包裡面,下面我們來講講以太幀格式。
以太幀
以太幀工作在鏈路層,以太幀格式多達五種,但今天的tcp/ip應用都是用Ethernet V2格式,下面我們分析Ethernet V2格式(如圖),各資料段的解釋圖上也標出來了,其中“型別”是指明上層協議,0x800代表網際協議,0x0806代表arp協議
下面我用wireshark抓一個arp回覆包來分析一下是否能與上面資料格式對應上(如下面截圖)此處wireshark把前導碼與CRC包給丟棄了,截圖中的“資料”裡面就包含著我們要研究的arp報文
Arp報文資料結構的研究
Arp報文資料結構就是對上面截圖中“資料”的具體研究,arp報文格式如下圖,操作型別有四種,這裡只講arp的兩種:1表示傳送的包為請求包,2表示傳送的包為回覆包:
下面我用wireshark對上面截圖“資料”展開進行研究:
好,說了這麼多我們下面來講講arp欺騙的原理吧!
Arp欺騙
兩臺計算機通訊需要ip地址與mac地址,此時把兩臺計算機當作快遞的起始站和終點站,要傳送的資料當作你要郵寄的物品,那麼ip地址就相當於起始站的寄件地址和終點站的收件地址,而mac地址就相當於中間要經過的中轉站地址。當一個資料發出後,要經過一個一個mac中轉站才能到達終點站。
(1)此時如果你把起始站要發往中轉站的mac地址改為你的mac地址,那麼起始站的資料包就直接發到你手中,如果你做一個路由轉換,再轉換到正確的mac地址,那麼起始站能正常收發郵件,而你卻能看其中的內容,如果不做路由轉換便實現了斷網功能
(2)如果你把mac中轉站(閘道器)要發往起始站的mac地址改為你的mac地址,那麼回覆的請求包就發到你手中,起始站就得不到回覆包,實現斷網功能。
方法一是欺騙目標機,修改目標機的mac快取表,如果目標機有arp防火牆便成功不了;
方法二是欺騙路由器,修改路由器的mac快取表,即使目標機有arp防火牆,也能實現斷網功能,因為目標機的mac快取表並沒有修改
Arp協議是一個不安全的協議,只要你傳送資料包就能修改目標的mac快取表,基於這種不安全性,便能實現arp欺騙。
Python寫arp欺騙工具
思路(及資料包的構造):不斷髮送修改對方mac快取表的arp
欺騙目標機:以太頭:本機mac•目標機mac資料(Arp包):目標機mac•目標機ip•操作型別請求或回覆都行•本機mac•閘道器ip
欺騙路由器:以太頭:閘道器mac•本機mac資料(arp包):閘道器mac•閘道器ip•操作型別請求或回覆都行•本機mac•目標機ip
Arp主機存活掃描
遍歷你要掃描的ip段地址併傳送一個廣播mac地址的請求包,收到回覆則代表這臺主機存活,並列印其ip地址及mac地址,用於arp欺騙。
Python寫掃描工具
思路:
以太頭:本機mac•ff:ff:ff:ff:ff:ff
資料:00:00:00:00:00:00(因為不知道目標mac於是用0填充)•目標機ip(一個一個遍歷)•操作型別請求•本機mac•本機ip
具體程式碼如下:
程式碼效果(以欺騙目標機為例):
注意
使用arp欺騙路由器時,不能用本機和虛擬機器做路由欺騙實驗,因為無論你怎麼分配虛擬機器mac地址,在路由器上的mac快取表中本機和虛擬機器mac地址都是用的本機mac地址,如下圖
原文釋出時間為:2016-12-03
本文作者:exploit
本文來自雲棲社群合作伙伴“Python中文社群”,瞭解相關資訊可以關注“Python中文社群”微信公眾號
相關文章
- Kali 實現區域網 ARP 欺騙和 ARP 攻擊
- 網路安全測試---ARP欺騙
- DNS欺騙和ARP欺騙是什麼?有何區別?DNS
- ARP欺騙與中間人攻擊
- Linux獨享主機繫結IP和MAC地址,防止ARP欺騙LinuxMac
- arp欺騙實驗及預防方法
- .net6+wpf製作指定區域網ip無法上網的arp欺詐工具
- 基於ARP的網路掃描工具netdiscover常用命令集合大學霸IT達人
- 主機安全掃描工具-- vuls
- 【滲透測試培訓】什麼是ARP欺騙攻擊?攻擊方法有哪些?
- ARP協議介紹與ARP協議的攻擊手法協議
- 一篇故事講述了計算機網路裡的基本概念:閘道器,DHCP,IP定址,ARP欺騙,路由,DDOS等......計算機網路路由
- 【論文】網路安全與入門-ARP攻擊
- Linux 核心引數 arp_ignore & arp_announce 詳解Linux
- 系列TCP/IP協議-ARP與RARPTCP協議
- arp命令 引數
- Python獲取網路中的存活主機以及哪些主機是LinuxPythonLinux
- 網路層協議及ARP攻擊協議
- ARP 地址解析協議協議
- Linux基礎命令---arpLinux
- icmp和arp協議協議
- 網路欺騙工具Ettercap大學霸IT達人
- [專業術語]什麼是ARP攻擊?如何防範ARP攻擊?
- C# 透過ARP技術來觀察目標主機資料包C#
- TESTBASE-ARP快速控制原型原型
- MPLS ARP的常用方法——VecloudCloud
- 掃描王 for Mac專業圖片掃描工具Mac
- IP Scanner Pro for mac(區域網IP掃描軟體) 5.0啟用版Mac
- python掃描埠Python
- Zenmap(埠掃描工具)
- 綜合掃描工具
- ARP協議:網路世界的地址翻譯官協議
- 詳述網路中ARP安全的綜合功能
- 區域網IP掃描軟體 IP Scanner Pro免啟用最新版
- HCNP Routing&Switching之代理ARP
- Arturia ARP 2600 V3 for Mac(音響模擬合成工具)Mac
- 欺騙機器學習模型機器學習模型
- mac網路掃描工具:iNet Network Scanner for MacMac