感谢团队中即将研三毕业的网络安全大神小辉同学的慷慨授权。之前上课给大家演示的攻击也属于小辉同学的原创!欢迎大家关注小辉同学的网络安全公众号“七夜安全博客”

。也预祝小辉同学毕业后加入腾讯网络安全部门能够大显身手!

前言

大家可能对PPPOE不是很熟悉,但是肯定对拨号上网非常熟悉,拨号上网就是用的这种通信协议。一般PPPOE认证上网主要用于校园网或者小区网中,拨号界面如下图所示。

但是PPPOE这种通信协议,是有一些安全漏洞的。下面从三个方面讲解一下PPPOE的攻击方式,以及如何使用Python实现攻击工具。恰西电的认证方式就是这样,可以搞一搞。

第一种方式

账号密码窃取

对于PPPOE认证上网的过程如下图所示,分为发现阶段和会话阶段,发现阶段分为PADI,PADO,PADR,PADS。

其中窃取账号密码的问题就出现在第一步PADI。PPPOE客户端进行连接时,在PADI阶段会发送一个广播包,寻找局域网中的PPPOE服务器,从而完成认证。

这时候我们需要做的是伪装成PPPOE服务器,回复请求信息,抢先和客户端通信,并强制客户端使用明文传输方式,从而获取账号和密码。下面我们通过wireshark抓一下数据包,更加直观的观察一下寻找PPPOE服务器的过程。点击宽带连接,使用Wireshark监听,会发现广播包,这时候pppoe服务器会进行回复。

攻击场景:在本机电脑上开启PPPOE欺骗程序,开始进行监听,并在局域网中的其他电脑上进行宽带连接,观察欺骗效果。如下图所示,已经成功欺骗出了账号和密码。

窃取账号的部分代码内容如下:

第二种方式

客户端断网攻击

拨号客户端(宽带连接)与 PPPOE服务器成功连接后,那服务器是如何表示客户端呢?通俗的说,服务器必须要知道客户端是哪一个,这样通信才不能错乱。PPPOE采用的是分配ID的方式,也就是给每个客户端随机分配一个int型的整数。通过wireshark抓包,我们可以清晰地看到ID的分配。

乍一听是没有问题,但是问题正在于ID的范围,为int类型。PPPOE服务器通过分配给客户端一个1-65535的值来唯一标识客户端。只要知道对方电脑MAC地址,循环发送65535个PADT断网包,即可以实现断网攻击,而对方电脑的MAC可以通过ARP请求获得。

什么是PADT断网包?通过wireshark抓包,咱们看一下断网包的内容。断开宽带连接,使用Wireshark监听,会发现PADT断网包,进行数据帧分析和模拟即可。

攻击场景:一台电脑运行断网程序,通过ARP请求获取对方电脑MAC地址,模拟PADT包,将另外一台电脑的宽带连接断掉。

断网攻击的部分代码内容如下:

第三种方式

服务器DoS攻击

DoS攻击是针对PPPOE服务器的,其实原理很简单。现在基本上高级点的路由,对ARP洪水攻击都做了很好的防护,对大量的arp包进行了过滤,但是对PPPOE包却没有做防护,使大量的PPPOE包可以直达PPPOE服务器,从而打垮服务器,这样会导致大规模的断网,西电的就是这样。大约三分钟左右,整栋楼的网络都会断掉(此处有毒,请勿模仿)。不演示了,可能会有“生命”危险。。。。。。

Dos攻击的部分代码内容如下:

最后

完整代码

Python实现的PPPOE攻击工具,使用了scapy包,可不要和爬虫框架scrapy混淆了。scapy是一款非常优秀的网络协议工具包,具有发包和收包的功能,非常强大。接下来我们会接着讲解这个scapy包,至于PPPOE攻击工具的完整代码,我会优先上传到知识星球中,运行之前记得安装scapy,更多干货欢迎加入知识星球。

作业:思考如何采用FPGA的方式实现上述攻击!

温馨提示:

文中内容纯粹为学术交流,若有同学自己练习引起的一切问题,本公众号概不负责。

python上网_西电免流量限制上网攻略!Python实现PPPOE攻击工具,秒杀拨号上网相关推荐

  1. python pppoe拨号_Python实现PPPOE攻击工具

    前言 大家可能对PPPOE不是很熟悉,但是肯定对拨号上网非常熟悉,拨号上网就是用的这种通信协议.一般PPPOE认证上网主要用于校园网或者小区网中,拨号界面如下图所示. 但是PPPOE这种通信协议,是有 ...

  2. Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略

    Python语言学习之双下划线那些事:python和双下划线使用方法之详细攻略 目录 双下划线介绍 1.关于双下划线的函数或方法或属性 双下划线介绍 1.关于双下划线的函数或方法或属性 __name_ ...

  3. Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略

    Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略 目录 Python与文件夹那些事 1.创建/删除文件/文件夹 1.创建文件夹

  4. Python爬虫辅助利器PyQuery模块的安装使用攻略

    这篇文章主要介绍了Python爬虫辅助利器PyQuery模块的安装使用攻略,PyQuery可以方便地用来解析HTML内容,使其成为众多爬虫程序开发者的大爱,需要的朋友可以参考下 Windows下的安装 ...

  5. 爬虫_西电研究生教务系统_技术文档

    教务系统爬虫工作初步完成 关于教务系统的一系列爬取工作已经初步完成,Holi爬虫组的工作也算正式进入优化阶段. 我们需要根据后台组的需要,转换成CVS或数据库形式.需要和后台组进行商量. 实现的功能 ...

  6. 西电java实验报告 界面_西电计算机Java上机实验报告.docx

    西电计算机Java上机实验报告.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

  7. 如何在mac终端运行python程序_如何在mac上的终端上运行python?

    First, the lesson said to simply type, python, into terminal to start coding in python (I don't know ...

  8. 转行学python后悔_月薪13k的我为什么要转行学Python?

    在职业规划包括人生方向上,选择很重要. 一句很经典的话做总结"方向不对,努力白费". 选择自己感兴趣的工作,全力以赴投入其中,"唯有爱的深,才能做的好" 当你付 ...

  9. java执行python脚本_使用Runtime.getRuntime().exec()在java中调用python脚本

    举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用ja ...

最新文章

  1. 常用软件架构模式分类
  2. Hard Calculation 模拟(200)
  3. keras从入门到放弃(十三)卷积神经网络处理手写数字识别
  4. cocos2dX改变锚点位置
  5. 关于CSS3圆角矩形的一些学习探讨
  6. [转]Stream 和 byte[] 之间的转换
  7. 去年写的测试GDAL用法的一些函数
  8. discard python_Python学习第三天
  9. 数据库能查出数据,但mybatis查询出返回的结果是null
  10. android夸项目调用
  11. Python与Json、pickle模块
  12. QT 5.9.0下载安装及配置教程(自动化运维环境)
  13. java调用接报400_java调用webservice报400错误,请大神赐教
  14. 纠错码与魔术(一)——纠错码与汉明码简介
  15. python英寸和厘米互换_将厘米转换为英寸的Python程序
  16. 让计算机提速的方法,如何让电脑提速(让电脑提速的方法步骤详解 )
  17. 普林斯顿陈丹琦组:以实体为问题中心,让稠密检索模型DPR光环暗淡
  18. 线程 线程的创建与回收
  19. 钱符号怎么打出来(如何在文档中输入人民币符号?)
  20. C# 关于递归算法 具象化

热门文章

  1. unionid openid微信php,openid与unionid
  2. 对list集合重新排序
  3. 机器学习笔记 - 用于颜值评分的数据集和算法
  4. Scratch(四十四):打地鼠
  5. 【无标题】ARCGIS 多个线段组成区域如何转面
  6. 即时通讯源代码,im源码功能全套
  7. SNMP TRAP报文解析
  8. android 通过手机号码查询联系人,android获取手机通讯录联系人
  9. 解二元一次方程组 含MOD26
  10. 在Win7下通过SecureCRT 远程配置DynamipsGUI中的路由器--转载