201703 - 蚂蚁网-多维人生,三实而立!
欢迎关注:1,欢迎关注本博客,你可点击右手边的【QQ邮件订阅】订阅本博客!2,本博客推出江湖救急计划,主要为工作中遇到疑难杂症的兄弟提供远程技术支持和分析,如有需要,请在江湖救急计划页面给我留言!

脑洞大开-一种特殊的二层流控协议

作者:飞鸟 发布于:2017-3-16 15:18 Thursday 分类:网络分析

脑洞大开-一种特殊的二层流控协议

1、前因

一用户网络出现访问公网时断时续的现象,基本上每隔半小时网络都会断了,然后过一段时间自动好了,然后过半小时左右又断了,然后又自动好了。一整天都在这样的循环,用户经过常规的设备、链路排查,并没有发现奇常。在这种情况下,“捕影”应急响应小组接手处置。

2、应急处置

针对这种这种全局的故障,相对还是比较容易处置的。在交换机上抓包,在故障出现时,选择故障时间点的数据包。发现其平均流量为82.433MBps,平均每秒发包数为171385个。

点击查看原图

 

流量明显不正常。对这些数据包进行深入分析。发现其流量都为二层的流量。

点击查看原图

对二层的流量进行分析,发现一些很有意思的事情。

(1).MAC都为随机伪造的。

我们知道MAC地址一共48位,前24位表示OUI,即厂商信息,后24位表示其MAC地址。这里面我们发现前24位是随机变换的,后24位是相同的。

(2).目的MAC为非设备MAC,其后24位为全0

点击查看原图

3、分析与处置

    故意伪造数据包向一个不存在的MAC发包有意义吗?对网络有影响吗?

答案肯定是有的?对交换机的性能有影响。我们知道交换机是根据MAC和接口的对应关系进行数据包转发,如果交换机收到一个数据包,会调用CPU查找该MAC所对应的接口。使用CPU处理的地方一般情况下都存在被攻击性能的可能。这里面我们看到平均每秒171385个数据包,交换机收到这些数据包以后会利用CPU进行查找MAC所对应的接口,这样的话对交换机的CPU存在性能方面的消耗。

    找到相应的原因以后,处理起来就非常容易了。虽然源MAC是伪造的,但是其肯定是通过交换机的物理端口转发过来的。一般情况下查找MAC表即可查找到相应的接口。注意这里面说的是一般情况下,并不是一定可以找到。难道有MAC过来交换机不会学习MAC与接口的对应关系?在这里,大家可以先思考一下,什么情况下存在这种可能。

    找到接口以后,处置就比较简单了,通过接口找到对应的机器,然后再对该机器进行分析,查找相应的进程即可。

    将该机器物理线拔掉以后,网络正常,再也没有出现过中断的情况。至此该故障已经解决。

    但是我们在他们内网另外一台交换机抓包的时候发现另外一个MAC存在可疑。其发包频率与流量都很大,但是其网络却很正常,和前面所说貌似矛盾,但是仔细想了一下,和交换机有关系,前面抓包在出口处的一台低端交换机上抓到的,这里面是在一台高端交换机上抓取到的,两个不同档次的交换机的性能肯定不一样。所以导致在这里虽然抓取到相应的数据包,但是没有出现网络中断的情况。

点击查看原图

点击查看原图

虽然网络正常,但是这种二层大流量高频率肯定不正常。这台机器肯定存在异常。

点击查看原图

根据上面的思路找到MAC所对应的接口,即可找到相应的机器。但是当我们在交换机上敲上dis mac-addree e411-5be9-9600时却发现找不到相应的接口,多次反复测试均找不到相应的接口。按照交换机源地址学习的工作机制,只要这个MAC从相应的接口发包,交换机就会学习将相应的MAC与接口的对应关系加入到MAC表中。但是这里面却找不到相应的接口,这令我百思不得其解。完全不符合交换机的源地址学习的工作机制。

由于在用户现场,先管不得这么多了,先把问题解决再考虑这个问题,直接通过交换机找到流量最大的接口,直接拔线,简单粗暴酸辣爽。拔完线以后,流量立马下来。问题肯定出现那台机器上了,直接反馈用户,由于是托管在用户方的机器,所以需要沟通再做一步处理。

回过头来,再看看这些包有什么特别之处。发现其目的MAC为组播MAC

点击查看原图

点击查看原图

该组播MACMAC control包。这个MAC control 协议是做什么的?大家可以先google下。

这种帧用来做流控的,当一接口流量过大时,可以通过发送这种帧来让相应的接口暂停一段时间发包来达到流控的目的。但是这里,我们发现流量也不大,不应该有设备发送这种流控的帧的。后来仔细想了一下,前期该用户被黑产控制过两台肉机对外网进行DDOS。黑产DDOS时最理想的情况就占据所有的带宽,但是这种情况只是理想情况,在实际情况下很难达到,因为其他机器也可以占用网络带宽。在这里,黑客比较脑洞大开的一面展现了,他们控制一台机器专门发送这种流控数据包,让收到、理解并响应的机器暂停一段时间再发包。这里,暂停发包的时间,在mac control帧的pause_time字段来控制。这样的话,如果其他机器理解并响应这种数据包的话,这台机器可以充分的占用带宽来进行DDOS。给黑产的这种思路点个赞。

4、问题

另外,上文还留一个问题:只要有数据包从该接口发出,交换机都会进行MAC地址学习吗?答案是不一定。为什么呢?大家可以先思考一下,或者做实验验证一下,下一期给出答案。

阅读全文>>

标签: DOS 二层流控 MAC地址学习 流控

评论(1) 引用(0) 浏览(1077)

Powered by 易隐者 基于emlog 皖ICP备12002343号-1