Python黑帽編程3.0 第三章 網路介面層攻擊基礎知識
3.0 第三章 網路介面層攻擊基礎知識
首先還是要提醒各位同學,在學習本章之前,請認真的學習TCP/IP體系結構的相關知識,本系列教程在這方面只會淺嘗輒止。
本節簡單概述下OSI七層模型和TCP/IP四層模型之間的對應關係,最後是本章教程需要的幾個核心Python模塊。
3.0.1 TCP/IP分層模型
國際標準化組織(ISO)在1978年提出了「開放系統互聯參考模型」,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它將計算機網路體系結構的通信協議劃分為七層,自下而上依次為:物理層(Physics Layer)、數據鏈路層(Data Link Layer)、網路層(Network Layer)、傳輸層(Transport Layer)、會話層(Session Layer)、表示層(Presentation Layer)、應用層(Application Layer)。其中第四層完成數據傳送服務,上面三層面向用戶。
除了標準的OSI七層模型以外,常見的網路層次劃分還有TCP/IP四層協議以及TCP/IP五層協議,它們之間的對應關係如下圖所示:
圖2
四層模型和五層是現實世界中真實存在的,本系列教程遵循4層模型來寫作。本章內容集中在網路介面層,實際對應到5層的數據鏈路層,因為硬體本身不是我們要關心的內容。之後的各章,都會出現這張圖,希望引起你的重視。
3.0.2 數據鏈路層
在TCP/IP協議族中,數據鏈路層主要有三個目的:
1)為IP模塊發送和接收數據
2)為ARP模塊發送ARP請求和接收ARP應答
3)為RARP模塊發送RARP請求和接收RARP應答
這裡需要強調一點的是,arp和rarp協議我們將其劃分在數據鏈路層,如果你把它當成網路層協議也無所謂,希望讀者不要在這個問題上爭論。提到數據傳輸,必須要談我們的網路環境,就我本人目前能接觸到的網路基本都是乙太網。
乙太網(Ether-net)是指 DEC 公司、Intel 公司和 Xerox 公司在 1982 年聯合公布的一個標準,這個標準裡面使用了一種稱作 CSMA/CD 的接入方法。而 IEEE802 提供的標準集 802.3(還有一部分定義到了 802.2 中)也提供了一個 CSMA/CD 的標準。
這兩個標準稍有不同,因此鏈路層數據幀的的封裝格式也有所不同(數據幀中的地址為MAC 地址):
圖3
3.0.3 SCAPY
Scapy的是一個強大的互動式數據包處理程序(使用python編寫)。它能夠偽造或者解碼大量的網路協議數據包,能夠發送、捕捉、匹配請求和回復包等等。它可以很容易地處理一些典型操作,比如埠掃描,tracerouting,探測,單元 測試,攻擊或網路發現(可替代hping,NMAP,arpspoof,ARP-SK,arping,tcpdump,tethereal,P0F等)。 最重要的他還有很多更優秀的特性——發送無效數據幀、注入修改的802.11數據幀、在WEP上解碼加密通道(VOIP)、ARP緩存攻擊(VLAN) 等,這也是其他工具無法處理完成的。
scapy在kali linux 2.0 中默認已經被安裝,如果你的系統中沒有需要手動安裝一下,下面是軟體包安裝的簡單說明。
使用pip安裝scapy。
root@kali:/home/pycharm# pip install scapy
圖4
Scapy可以單獨使用,也可以在python中調用。
了解Scapy的基本使用和支持的方法,首先我們從終端啟動scapy,進入交互模式。
圖5
ls()顯示scapy支持的所有協議。
ls()函數的參數還可以是上面支持的協議中的任意一個的類型屬性,也可以是任何一個具體的數據包,如ls(TCP),ls(newpacket)等。
lsc()列出scapy支持的所有的命令。
conf:顯示所有的配置信息。conf變數保存了scapy的配置信息。
help()顯示某一命令的使用幫助,如help(sniff)。
show()顯示指定數據包的詳細信息。例如,這裡我們先創建一個IP數據包,然後調用show方法。
sprintf()輸出某一層某個參數的取值,如果不存在就輸出」??」,具體的format格式是:%[[fmt][r],][layer[:nb].]field%,詳細的使用參考<Security Power Tools>的146頁。
%[[fmt][r],][layer[:nb].]field%
layer:協議層的名字,如Ether、IP、Dot11、TCP等。
filed:需要顯示的參數。
nb:當有兩個協議層有相同的參數名時,nb用於到達你想要的協議層。
r:是一個標誌。當使用r標誌時,意味著顯示的是參數的原始值。例如,TCP標誌中使用人類可閱讀的字元串』SA』表示SYN和ACK標誌,而其原始值是18.
我之前發過一篇文章《Python網路數據監聽和過濾》,講了python中數據包解析,Scapy數據監聽的用法,大家可以作為參考。
3.0.4 小結
需要準備的基礎知識不能全面羅列,你需要學習的內容和你個人目前的積累有關。希望各位同學不要放棄對基礎知識的學習。
第3.1節《ARP欺騙》已經在微信訂閱號搶先發布,心急的同學進入訂閱號(二維碼在下方),從菜單「專欄」—>」Python黑帽編程」進入即可。
查看完整系列教程,請關注我的微信訂閱號(xuanhun521,下方二維碼),回復「python」。問題討論請加qq群:Hacking (1群):303242737 Hacking (2群):147098303。
點擊打開二維碼
玄魂工作室,精彩不斷
推薦閱讀:
※Python 家族有多龐大
※Python數據分析及可視化實例之CentOS7.2+Python3x+Flask部署標準化配置流程
※Flask 實現小說網站 (二)