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

摘要

首先还是要提醒各位同学,在学习本章之前,请认真的学习 TCP/IP 体系结构的相关知识,本系列教程在这方面只会浅尝辄止。

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 用于到达你想要的协议层。

r: 是一个标志。当使用 r 标志时,意味着显示的是参数的原始值。例如, TCP 标志中使用人类可阅读的字符串 ’SA’ 表示 SYN ACK 标志,而其原始值是 18.

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

我之前发过一篇文章《 Python 网络数据监听和过滤 》,讲了 python 中数据包解析, Scapy 数据监听的用法,大家可以作为参考。

3.0.4 小结

需要准备的基础知识不能全面罗列,你需要学习的内容和你个人目前的积累有关。希望各位同学不要放弃对基础知识的学习。

3.1 节《 ARP 缓存投毒攻击 》已经在微信订阅号抢先发布,心急的同学进入订阅号(二维码在下方),从菜单 专栏 ”—>”Python 黑帽编程 进入即可。

查看完整系列教程,请关注我的微信订阅号( xuanhun521 ,下方二维码),回复“ python ”。问题讨论请加 qq 群: Hacking 1 群): 303242737   Hacking 2 群): 147098303

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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: