今天一早接到一个客户电话,说他有一个交换机下面的用户,大面积和上线下线。

由于之有已建议用户在主干换了普通VLAN交换机。所以这次出现问题概率较小,只在一条支路的交换机下面。

下面我对这个情况的发生做一下分析:

PPPoE认证分为两个阶段:

第一阶段:发现阶段

1.客户端以向FFFF-FFFF-FFFF广播发送PADI数据包寻找AC,即服务端

2.服务端回复一个PADO单播帧;

3.农牧民端回复一个PADR单播请求,期望进行会话

4.服务端回复一个PADS数据包,同意进行下一步协商(包中携带一个sessionid,作为用户的凭证之一)

第二阶断:会话阶段

双方使用PPP的LCP协议协商链路,NCP进行用户名密码检验,双方完成通讯。

在第一阶段pppoe会话重要依据就是双方的mac地址,在和sessionid

在用户下线的时候,用户会发送PADT数据包进行协商,断开会话连接

大家可以想象一下:病毒模拟发包的方式,向服务端发送PADT数据包?服务端以为是客户端请求下线,就会断开客户端,导致客户端掉线,多可怕的事啊。

具体数据包看附图

有人要问了,病毒没有客户端与服务端通讯的seddionid,如何断开?这个问题,我晚点再给大家解释,大家先看图

图上第一段是客户机正常下线的数据图片。

过程是客户端向服务端发送一个PADT,然后服务端收到PADT包,然后再回馈一个PADT包,客户端下线,这个过程服务端只收到一个PADT数据包的。

图上第三段是大面积掉线用户的数据图片。

大家仔细看,服务端收到两个PADT包,多了一个PADT?这要如何解释?

原因是病毒模拟客户端向服务端发送PADT,服务端回馈一个PADT,此时按理如果是由客户端自己主动发起的断开,他是不会再回馈一个PADT包的。

可是我们服务端确实是收到了两个PADT,这是因为第一个不是我们的客户端发送的(是病毒发送的),所以客户端以为是服务端主动断开,所以再回复一个PADT,才有上面的2个PADT包。

我仔细看了一下日志,大部分用户都是2个PADT的数据包,印证了这一点。

接下去,我向大家解释一下,为什么没有sessionid,病毒为什么能模仿发送数据包

发送PADT起码要知道客户端MAC和sessionid,我在抓包的时候发现:中毒的客户机,一秒钟发起5000多个ARP请求,而且是获取其他客户机MAC地址的ARP数据包。

这说明病毒一直在扫描内网的MAC,这个因为是二层通讯,这人以很简单可以获取的,而且在三层是禁止不了的。

接下去说一下sessionid吧

由于session是0xFFFF,也就是65536,网上有人说,病毒要断开一个客户端,要发送65536个数据包?

其实不然的,病毒没有这么傻吧?断开一个客户端,要这么麻烦,6万多个数据包,也得发送好一会儿。

病毒其实可以模拟一个pppoe认证过程的,自己就会获取一个sessionid,或者根本不需要,因为本身就是pppoe 上网的,直接获取。

大家都清楚,PPPOE的sessionid是累加的,这个看日志就知道了,所以病毒只要往他的MAC地址库里面取出来的地址(这个数量就很少了吧),然后发送session为当前sessionid的数值就可以了

想想,是不是太可怕了?

又有人要问了,这样之前上网的不就没事?确实是,但是你总要下线吧,下线后,你的sessionid就在病毒扫描范围内了,有甚者,全网扫描

有人要问了,这个要怎么防呢?其实这是二层通讯,除非你每个端口用VLAN隔离,才可以完全避免啊,

其实只要增加VLAN交换机使用,8口的才50多一个,以后还会更便宜,出了问题,影响的面积就不会是全网,不但有些用户不受影响,而且也好找

如果有遇到这个问题要咨询详细处理的,可以加我的Q561454825

由于PADT伪造攻击带来的大面积掉线原因分析的更多相关文章

  1. [转]Android WiFi 掉线原因分析

    看到一个比较详细的分析wifi断开的文章.收藏一下. 原文: http://blog.csdn.net/chi_wy/article/details/50963279 原因1 .从Log分析来看,这个 ...

  2. (28)django的中间件(自定义中间件和防范跨站请求伪造攻击)-重要的概念

    Django中间件和中间件不是同一种东西 什么是中间件:中间件是一个很大的概念,只要程序和程序之间还有一层程序,用来处理两个程序的整个交互过程的请求.数据等等就叫中间件 Django中间件:是介于re ...

  3. (22)Ajax的基本使用(实现登录功能和局部刷新以及防止跨站请求伪造攻击)

    Ajax的作用 前后端分离的项目,需要交互,就要通过Ajax来完成交互 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即 ...

  4. discuzX3.2 X3.4网站漏洞修复 SQL注入与请求伪造攻击利用与修复

    2018年12月9日,国内某安全组织,对discuz X3.2 X3.4版本的漏洞进行了公开,这次漏洞影响范围较大,具体漏洞是discuz 的用户前段SQL注入与请求伪造漏洞,也俗称SSRF漏洞,漏洞 ...

  5. 安全性测试入门 (三):CSRF 跨站请求伪造攻击和防御

    本篇继续对于安全性测试话题,结合DVWA进行研习. CSRF(Cross-site request forgery):跨站请求伪造 1. 跨站请求伪造攻击 CSRF则通过伪装成受信任用户的请求来利用受 ...

  6. XSS跨站脚本攻击与CSRF跨站请求伪造攻击的学习总结(转载)

    转载自 https://blog.csdn.net/baidu_24024601/article/details/51957270 之前就了解过这方面的知识,但是没有系统地总结.今天在这总结一下,也让 ...

  7. JWT伪造攻击

    JWT修改伪造攻击 什么是JWT? JSON Web Token(JSON Web令牌)是一种跨域验证身份的方案.JWT不加密传输的数据,但能够通过数字签名来验证数据未被篡改(但是做完下面的WebGo ...

  8. SpringSecurity原理解析以及CSRF跨站请求伪造攻击

    SpringSecurity SpringSecurity是一个基于Spring开发的非常强大的权限验证框架,其核心功能包括: 认证 (用户登录) 授权 (此用户能够做哪些事情) 攻击防护 (防止伪造 ...

  9. 教你轻松解决CSRF跨站请求伪造攻击

    摘要:CSRF(Cross-site request forgery)跨站请求伪造,通过伪装来自受信任用户的请求来利用受信任的网站.与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也 ...

随机推荐

  1. iOS高版本备份恢复到低版本系统的方法

    一般来说,在更新iOS系统的时候我们都会建议大家先用iTunes对系统进行完整备份.但时不时都会有人偷懒,或者使用手机OTA升级而没有对系统备份,最终导致不满意新系统了,想降级却无备份可以恢复的尴尬局 ...

  2. django —— Celery实现异步和定时任务

    1. 环境 python==2.7 djang==1.11.2 # 1.8, 1.9, 1.10应该都没问题 celery-with-redis==3.0 # 需要用到redis作为中间人服务(Bro ...

  3. JAVA-JSP内置对象之application对象

    相关资料:<21天学通Java Web开发> application对象1.application对象用来取得和设置Servlet的相关信息.2.application对象的生命周期是从服 ...

  4. WCF 服务应用程序与 服务库之间的区别

    简单理解, WCF服务库,可以认为是一个包含WCF服务以及契约定义的类库.这儿库还不能直接运行,你可以在其他项目里引用,在宿主里启用托管这个库. 而WCF应用程序,是一个可以执行的程序,它有独立的进程 ...

  5. 微服务之springCloud-docker-hystrix-dashboard-turbine(九)

    简介 Hystrix的主要优点之一是它收集关于每个HystrixCommand的一套指标.Hystrix仪表板以有效的方式显示每个断路器的运行状况,通过Hystrix Dashboard我们可以在直观 ...

  6. jvm面试题

     1.虚拟机的类加载机制 1.1.什么是虚拟机的类加载机制 在代码编译后,就会生成JVM(Java虚拟机)能够识别的二进制字节流文件(*.class).而JVM把Class文件中的类描述数据从文件加载 ...

  7. for语句查看js对象

    for (var obj in o.curform) { document.write("<p>" + obj + " = " + o.curfor ...

  8. 经常遇到的http状态码

    200 success成功 301 MovedPermanently 永久性跳转 302 Found 临时性跳转 304 Not modified 未修改,不返回任何响应主体 400 Bad Requ ...

  9. [dig]使用dig查看当前网络连通情况

    1. dig domain, 通过server可以查到该域名被哪个server给解析了 2. dig @dns domain 不走/etc/resolve.conf,直接走指定的dns ------- ...

  10. Android——ContentProvider

    xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= ...