Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

Python黑帽编程3.0 第三章 网络接口层攻击基础知识

$
0
0

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 五层协议,它们之间的对应关系如下图所示:


Python黑帽编程3.0 第三章 网络接口层攻击基础知识

图 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 地址):


Python黑帽编程3.0 第三章 网络接口层攻击基础知识

图 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


Python黑帽编程3.0 第三章 网络接口层攻击基础知识

图 4

Scapy 可以单独使用,也可以在 python 中调用。

了解 Scapy 的基本使用和支持的方法,首先我们从终端启动 scapy ,进入交互模式。


Python黑帽编程3.0 第三章 网络接口层攻击基础知识

图 5

ls() 显示 scapy 支持的所有协议。


Python黑帽编程3.0 第三章 网络接口层攻击基础知识

ls() 函数的参数还可以是上面支持的协议中的任意一个的类型属性,也可以是任何一个具体的数据包,如 ls(TCP),ls(newpacket) 等。


Python黑帽编程3.0 第三章 网络接口层攻击基础知识

lsc() 列出 scapy 支持的所有的命令。


Python黑帽编程3.0 第三章 网络接口层攻击基础知识

conf :显示所有的配置信息。 conf 变量保存了 scapy 的配置信息。


Python黑帽编程3.0 第三章 网络接口层攻击基础知识

help() 显示某一命令的使用帮助,如 help(sniff) 。


Python黑帽编程3.0 第三章 网络接口层攻击基础知识

show() 显示指定数据包的详细信息。例如,这里我们先创建一个 IP 数据包,然后调用 show 方法。


Python黑帽编程3.0 第三章 网络接口层攻击基础知识
sprintf() 输出某一层某个参数的取值,如果不存在就输出 ”??” ,具体的 format 格式是 :%[[fmt][r],][layer[:nb].]field% ,详细的使用参考 <Security Power Tools> 的 146 页。 %[[fmt][r],][layer[:nb].]field%

layer: 协议层的名字,如 Ether 、 IP 、 Dot11 、 TCP 等。

filed: 需要显示的参数。

nb: 当有两个协议层有相同的参数名时, nb 用于到达你想要的协议层。

Viewing all articles
Browse latest Browse all 9596

Trending Articles