*本文原创作者:qingxp9,本文属FreeBuf原创奖励计划,未经许可禁止转载
随着宽带用户爆发性增长,PPPoE被带进了各家各户,而它的安全缺陷却一直没有受到足够关注,直至今日成为了一种低成本的通杀型路由器攻击手段。
PPPoE(Point-to-Point Protocol Over Ethernet),是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。其由UUNET、Redback Networks和RouterWare所开发的,并于1999年发表于RFC 2516说明中。
近二十年过去了,PPPoE被广泛应用在网络接入场景,较为有名的ADSL便使用了PPPoE协议,其成为了几乎所有家用路由器的默认功能之一。随着宽带用户爆发性增长,PPPoE被带进了各家各户,然而它所存在的安全缺陷却一直没受到足够的关注,直达今日成为了一种对路由器攻击成本极低、效果极好的攻击方式。
以下是本文讨论的重点——“古老的漏洞、上亿级受影响设备、极低的攻击门槛、没有完善的修复方案,危害极大的攻击场景—从获取宽带密码到隐蔽性后门”
极低的攻击门槛
我们可以轻易的在互联网上搜索到各种使用Linux、Windows平台上的工具来捕获PPPoE密码的文章,按照描述相信各位都可以在短时间内复现。
由于这些文章多是用于验证性质的,在考虑实际的攻击场景时往往会陷入误区认为需要物理接触的同时动静很大。于是我在自己的Android手机上移植了一个PPPoE嗅探器,在开启程序后几秒钟内便可以获得账号信息,参见以下demo:
PPPoE工作原理及缺陷
PPPoE协议的工作流程包含两个阶段—发现阶段和会话阶段,见以下两图。
在发现阶段,Client通过发送广播PADI寻找PPPoE Server。攻击者可通过自建PPPoE Server来接收PADI请求并与Client建立会话。进入会话阶段后,通过在LCP协商时要求使用PAP(一种明文传输的认证方式),随后利用Wireshark等工具就能嗅探到明文传输的PAP账号及密码,如下图所示。
没有完善的修复方案
缺陷的关键在于Client广播寻找Server时遭受钓鱼,并被要求通过明文认证方式传递账号密码。
协议中的Client与Server分别对应到用户得路由器设备和运营商的认证设备。很容易想到,只要路由器阉割掉PAP认证便能抵御该攻击。不过任何一个商业产品都是以保障可用性为首要条件,目前还有许多的使用场景(如小运营商或校园宽带)只能使用PAP认证,所以要求商业产品减少其使用范围的方案是不可能的。
宽带账号一键学习功能
相比于对安全缺陷的无奈,路由器厂商们反而借此解决了一个痛点——“路由器一键换机功能”。在更换新路由器时,许多用户会经历“找回密码”的流程,需要呼叫运营商进行重置或者上门帮助,这带来许多不变。而利用PPPoE的缺陷正好就能解决“找回宽带账号”这一问题。他们通过在路由器中内置嗅探器,只需将旧路由器与之连接就能自动学习,非常方便。
危险的攻击场景
通过前面的内容,我们大致了解该攻击的原理及攻击条件。该攻击需要与目标设备保持二层网络可达(如通过网线直接连接)。当你在朋友家可以接触到路由器时,你可以像演示demo中那样直接进行连接捕获账号(好吧,这好像只有娱乐性没有其他价值)。另外呢,在小运营商或校园网络这样的大型二层网络里边,可以进行批量的钓鱼。有些意思,但还有其他危害大些的攻击场景吗?
前些年,许多家庭无线路由器都因为默认密码的问题可以被轻易黑掉。比如到别人家串门,我往往会跑到路由器旁按WPS按钮来自助连上无线网,接着通常默认密码就能进后台了。如今的路由器都做了改进,初始化时就要求设置具有一定强度的密码,这样看上去只要密码不被泄露就很安全了。
不久前一次出差的经历,让突然我发现了一个有趣的攻击场景。
为了节省经费我们选择了一家民宿就住。当晚的无线网络不太好,自然就想进后台查看一番而后台密码拦住了我。我想到要是知道宽带账号不就可以无所顾虑的重置路由器。我跑到路由器旁,嗅探到了PPPoE账号,重置路由器并迅速将原有配置进行还原(宽带、无线热点等),整个过程大概用了大概2分钟。值得注意的是,由于还原后的网络通讯、无线热点配置都与之前无异,我的几位同事甚至没有发现明显异常,但我已经可以进入路由器后台啦!
我把这种方式称之为“路由器无感知重置绕过法”,通杀所有家用路由器。拿到后台权限后,我除了可以篡改DNS外,还可以开启远程Web管理、绑定动态域名解析弄成一个的远控后门。
我查阅了《2017年民宿产业发展研究报告》,报告指出2017年民宿客栈总量已达20万。对于规模较小的民宿而言,价格低廉实施容易的家庭宽带几乎是最主流的入网方式,同时路由器会被放置在客人可接触的区域。这几乎完美匹配了PPPoE嗅探的攻击场景,每一位入住用户都有潜在可能对路由器实施无感知重置绕过攻击植入后门,也都有潜在可能被之前用户植入的后门所监听流量。我将整个攻击流程总结为下图:
缓解方案
完善的修复办法其实是禁用PAP认证或更新替换PPPoE,这种涉及到产业上下游不同行业的方案按照惯例是行不通的。在过去几个月,我以“利用Android手机窃取路由器宽带账号”为题做了几次演讲(如[FIT HackDemo](http://www.freebuf.com/articles/wireless/160697.html)),希望有一点对该问题的关注,但效果不是很好。
后来,我想到一个混淆方案来缓解这种重置绕过攻击:宽带密码的格式常见有身份证末几位、固定数字编号或者其他乱码。在用户填写账号后,我们可以据此生成一批相似度高的字串,加上内置常见格式字串构成混淆字典。在PAP认证时,随机发送混淆字串进行迷惑。从理论上讲,在可接受等待时间内尽可能多的发送出混淆账号可以很大程度上缓解该重置绕过攻击。(未实际测试,厂商的朋友请参考、指点可行性)
后记
虽然该漏洞的发现与利用都很“陈旧”,但希望能通过一些小小的推动来帮助早日达到“解决”的状态。
*本文原创作者:qingxp9,本文属FreeBuf原创奖励计划,未经许可禁止转载
来源:freebuf.com 2018-03-02 08:00:59 by: qingxp9
请登录后发表评论
注册