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應答

這里需要強調一點的是,arprarp協議我們將其划分在數據鏈路層,如果你把它當成網絡層協議也無所謂,希望讀者不要在這個問題上爭論。提到數據傳輸,必須要談我們的網絡環境,就我本人目前能接觸到的網絡基本都是以太網。

以太網(Ether-net)是指 DEC 公司、Intel 公司和 Xerox 公司在 1982 年聯合公布的一個標准,這個標准里面使用了一種稱作 CSMA/CD 的接入方法。而 IEEE802 提供的標准集 802.3(還有一部分定義到了 802.2 )也提供了一個 CSMA/CD 的標准。

這兩個標准稍有不同,因此鏈路層數據幀的的封裝格式也有所不同(數據幀中的地址為 MAC 地址):

3

3.0.3 Scapy

Scapy的是一個強大的交互式數據包處理程序(使用python編寫)。它能夠偽造或者解碼大量的網絡協議數據包,能夠發送、捕捉、匹配請求和回復包等等。它可以很容易地處理一些典型操作,比如端口掃描,tracerouting,探測,單元 測試,攻擊或網絡發現(可替代hpingNMAParpspoofARP-SKarpingtcpdumptetherealP0F等)。 最重要的他還有很多更優秀的特性——發送無效數據幀、注入修改的802.11數據幀、在WEP上解碼加密通道(VOIP)、ARP緩存攻擊(VLAN 等,這也是其他工具無法處理完成的。

scapykali 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:協議層的名字,如EtherIPDot11TCP等。

filed:需要顯示的參數。

nb:當有兩個協議層有相同的參數名時,nb用於到達你想要的協議層。

r:是一個標志。當使用r標志時,意味着顯示的是參數的原始值。例如,TCP標志中使用人類可閱讀的字符串’SA’表示SYNACK標志,而其原始值是18.

我之前發過一篇文章《Python網絡數據監聽和過濾》,講了python中數據包解析,Scapy數據監聽的用法,大家可以作為參考。

 

3.0.4 小結

需要准備的基礎知識不能全面羅列,你需要學習的內容和你個人目前的積累有關。希望各位同學不要放棄對基礎知識的學習。

 

3.1節《ARP緩存投毒攻擊》已經在微信訂閱號搶先發布,心急的同學進入訂閱號(二維碼在下方),從菜單專欄”—>”Python黑帽編程進入即可。

 

查看完整系列教程,請關注我的微信訂閱號(xuanhun521,下方二維碼),回復“python”。問題討論請加qq群:Hacking 1群):303242737   Hacking 2群):147098303

 

 


免責聲明!

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



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