Python黑帽編程3.0 第三章 網絡接口層攻擊基礎知識

3.0 第三章 網絡接口層攻擊基礎知識

首先仍是要提醒各位同窗,在學習本章以前,請認真的學習TCP/IP體系結構的相關知識,本系列教程在這方面只會淺嘗輒止。html

本節簡單概述下OSI七層模型和TCP/IP四層模型之間的對應關係,最後是本章教程須要的幾個核心Python模塊。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)。其中第四層完成數據傳送服務,上面三層面向用戶。linux

除了標準的OSI七層模型之外,常見的網絡層次劃分還有TCP/IP四層協議以及TCP/IP五層協議,它們之間的對應關係以下圖所示:web

 

2編程

四層模型和五層是現實世界中真實存在的,本系列教程遵循4層模型來寫做。本章內容集中在網絡接口層,實際對應到5層的數據鏈路層,由於硬件自己不是咱們要關心的內容。以後的各章,都會出現這張圖,但願引發你的重視。緩存

3.0.2 數據鏈路層

  TCP/IP協議族中,數據鏈路層主要有三個目的:微信

          1)爲IP模塊發送和接收數據網絡

          2)爲ARP模塊發送ARP請求和接收ARP應答app

          3)爲RARP模塊發送RARP請求和接收RARP應答tcp

這裏須要強調一點的是,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

 

相關文章
相關標籤/搜索