《内网下的自我修养》--- 基于交换机的常见攻击方式

作者:Joe

导语:

作为一名局域网下的黑客,我的每一次攻击都有着暴露自身的危险,如果没有足够高的自我修养,我也就不会活到现在了~


0x1:交换机基础知识速学

交换机是一种在通信系统中完成信息交换功能的设备,应用在数据链路层。

交换机有多个端口,每个端口都具有桥接功能,可以连接一个局域网或一台高性能服务器或工作站,并且每个端口有自己的专用带宽,可以连接不同的网段。

交换机各个端口之间的通信是同时的、并行的。

交换机的三大基本功能:地址学习、数据包过滤转发以及消除回路。

什么是交换模式:将数据从一个端口转发至到另一个端口的处理方式。

工作过程:

当接受到帧时,他会检查其目的地址并对应自己的MAC地址表,如果存在目的地址,则转发,如果不存在则泛洪(广播),广播后如果没有主机的MAC地址与帧的目的MAC地址相同,则丢弃,若有主机相同,则会将主机的MAC自动添加到其MAC地址表中。

知道这些差不多就够了,知道的太多你会后悔的!

0x2:局域网下的常见攻击手段

【+】ARP攻击

一台主机和另一台主机之间进行通信需要知道目标的IP地址,在局域网中进行传输数据的网卡不能直接识别IP地址,所以会用ARP解析协议将IP地址解析成MAC地址。

说白了,就是就是通过目标设备的IP地址,来查询目标设备的mac地址,ARP协议就这么简单。

在任何局域网的任意一台主机中,都有一个ARP缓存表,里面保存本机已知的此局域网中各主机和路由器的IP地址和MAC地址的对照关系。但这个表的生命周期是有时限的(一般不超过20分钟)

图解攻击(图片采集至百度知道):

当PC1 发包进行询问 PC2 的 MAC 地址时,黑客 PC3 则当一个中间人来欺骗PC1和PC2

的交流,于是所有的情报就让黑客PC3得到了。

至于这个过程,这篇博文就很不错:http://blog.51cto.com/chenxinjie/1960336

实际上地址解析协议(ARP)利用的是第2层物理MAC地址来映射第3层逻辑IP地址,如果设备知道了IP地址,但不知道被请求主机的MAC地址,它就会来发送ARP请求。

但正好是因为ARP请求通常以广播形式发送,所以我们便有了利用的契机。

相关的小工具

       Ettercap

Ettercap is a comprehensive suite for man in the middle attacks. It features sniffing of live connections, content filtering on the fly and many other interesting tricks. It supports active and passive dissection of many protocols and includes many features for network and host analysis.(摘自Ettercap官网主页)

EtTCAP是一个全面的套件,用于中间人攻击。它的特点是嗅探实时连接、动态过滤内容和许多其他有趣的技巧。它支持对许多协议的主动和被动剖析,并且包括用于网络和主机分析的许多特性。

不要问我为啥还要把英文翻译一遍,因为这个小工具用着确实比较舒服,首先我这个人比较懒(貌似每个人都这样子,仅个人意见),其次是因为简单(有现成的傻瓜式操作的工具为什么不用)。

值得注意的是Arpspoof使用前得开启“流量转发”因为arp欺骗后,受害者的流量转发到你的机子,你的机子又不会去处理这些数据包(不是我的东西干嘛要处理,对吧?),所以这会导致受害者上不了网,假如你在国企,你这样就凉了。

【+】mac洪水攻击

MAC地址存储在内容可寻址存储器(CAM)里面,CAM是一个128K大小的保留内存,专门用来存储MAC地址,以便快速查询。如果黑客向CAM发送大批数据包,快到在刷新时间内把CAM填满,就会导致交换机开始向各个地方发送大批信息流,从而埋下了一颗隐形炸弹,甚至会导致交换机在拒绝服务攻击中崩溃。

这个时候交换机跟HUB(集线器)也没啥太大的区别了,于是我们可以得到交换机的某些信息。

用python简单的编写下脚本

我们使用scapy来编程

只要数据包里有指定的源ip和mac,交换机就会记录下来,所以我们可以这样干:随机发送随机mac和ip,然后一直发直到快过刷新时间。

使用randip函数生成ip

RandIP(“x.x.x.x”)

这样就随机生成了一个ip

再来生成个mac地址

RandMac()

接下来构造并发送数据包了(在这里其实我更推荐用go来写,嘿嘿~)

循环发送一个虚假源ip到虚假目的ip的包(而且带有mac地址)

#!/usr/bin/python
Import sys
Import scapy.all import *
Iface = “网卡”
While True:
        Payload = Ether(src = RandMac(), dst=RandMac())
//src为源mac,dst是目标的mac
        IP(src = RandIP(), dst=RandIP())
Icmp()
//发送icmp包
        Sendp(payload, iface,loop=0)
 //发送二层数据帧

(实验环境有限,就不给出实际演示了,只是演示个思路~)

【+】vlan跳跃攻击

虚拟局域网(VLAN)是一种对广播域进行分段的方法。

VLAN还经常用于为网络提供额外的安全,因为一个VLAN上的计算机无法与没有明确访问权的另一个VLAN上的用户进行对话。

不过VLAN本身不足以保护环境的安全,恶意黑客通过VLAN跳跃攻击,即使未经授权,也可以从一个VLAN跳到另一个VLAN。

VLAN跳跃攻击(VLANhopping)依靠的是动态中继协议

DTP(动态中继协议)如果有两个相互连接的交换机,DTP就能够对两者进行协商,确定它们要不要成为802.1Q中继,而这个过程是通过检查端口的配置状态来完成的。

在VLAN跳跃攻击中,黑客可以欺骗计算机,冒充成另一个交换机发送虚假的DTP协商消息,宣布它想成为中继;真实的交换机收到这个DTP消息后,以为它应当启用802.1Q中继功能,而一旦中继功能被启用,通过所有VLAN的信息流就会发送到黑客的计算机上。

中继建立起来后,黑客可以继续探测信息流,也可以通过给帧添加802.1Q信息,指定想把攻击流量发送给哪个VLAN

因为涉及到交换机配置,在错综复杂的内网世界,根本不知道到底是什么配置,所以仅仅一下思路

影分身之术

攻击者位于VLAN10 中, ATTACK 在把FRAME经过一次标签,即加入INNER ON VLAN20,到达第一个交换机时,第一个交换机与第二个交换机通过TRUNK 把FRAME发给第二个交换机,同时二次标签为OUTTER ON VLAN10。当FRAME到达第二个交换机时,这时交换机要把接收到且经过自己标签的FRAME发给具体的PC,这时第二个交换机会读取内部标签INNER ON VLAN20,这样,通过HOOPING 技术就会不通过层三设备,而完成对不同的VLAN之间的访问。对于这种类型的攻击,根本原因是由于ATTACK处于的端口的模式为DYNAMIC DESIRABLE。也就是说,在数据帧里面有两个“标签”,过vlan的时候就要脱掉一个标签,我们还有一个标签,可以传到别的vlan。这种技术可以发现网络里面存在多少个vlan,可以把数据包传到某台主机上面。

用python来贴出一段我自己参考资料后修改的代码

#! /usr/bin/python

From scapy.all import *
Vlanhopping = Dot1Q(vlan = 1) 
#和下面的标签,指定两个标签,一个是自身vlan,还有一个是我们想测试的vlan
Dot1Q(vlan = 2)
Ether(dst = ”目标mac地址”) 
IP(dst = “目标ip地址”)
ICMP()
#发送icmp包(ping)
Sendp(packet)
#发送二层数据帧

值得注意的是:此方法针对801.Q协议,实际物理端口隔离的vlan无效。

这种攻击是因为ATTACK处于的端口模式为DYNAMICDESIRABLE

可做如下设置来修复:

switch(config)#interface-range type mod/port-port      

switch(config-if)# switchport mode access

switch(config-if)# switchport access vlan vlan-id


 第一篇到此结束啦~

未完待续!

原文地址:https://www.cnblogs.com/anbus/p/10114800.html