起因
有一天早上起来,打算登上自己IPV6 only的NAS网站。结果发现持续性的connection timeout。打开Terminal一看,好啊,有人搁着搞IPV6 Router Advertise投毒(并不是故意污染的)开了,出现了一堆乱七八糟的地址。

IPV6洁癖这可忍不了,网都上不了,实验要用的包还在 。NAS里呢
更新!其实如果你发现自己有
IPv6地址但是上不去网,并且没有乱七八糟的地址。你可以看看自己的路由表。
在 2022年11月23日,我还发现了一个现象:如果是没配置ULA的路由器,会发RA包,然后让你的网关持续性丢失。
具体表现为RA包大小为56B
分析
终端分析
因为我是用的路由器做了IPV6转发(这个后续会更新一下如何做SLAAC校园网转发的文章),所以我先看路由器啥情况。

目光集中到WAN6接口,可以发现有3种地址分配:
2400:dd01:103a:4010::/64,中国科学院大学雁栖湖校区学生5公寓官方路由分配的SLAAC地址。fd30:4dcf:77f9:1|0::/64,污染源路由器分配的DHCPv6 Stateless地址(有能力Stateful,但似乎不是优先选项)。fd30:4dcf:77f9:1::/64,污染源路由器分配的DHCPv6-PD地址段。
如果不了解这SLAAC和DHCPv6地址分别是什么,可以看 IPv6 动态地址配置 答疑解惑。
然后再来看被污染的路由,因为上不了网毕竟和路由器的路由相关。

看到一堆unreachable的时候我火就上来了,我好端端一个配置优雅整洁的路由器,就被你一个坏东西糊弄成这样?当然,只是有unreachable是不能证明连不上网的,并且这张图甚至还证明了我可以连上网:
fe80::7625:8aff:fe0e:b2af是桌下网口的官方RA,mac地址是74:25:8a:0e:b2:af,查询公司可以得到是H3C,个人用户概率很小。2400:dd01:103a:4010::/64网段的路由没受干扰,子设备的网络也正常访问。
为什么能上网呢?因为这个是我处理完之后才拿到的截图,在这之前因为有DHCPv6的存在,LAN口混合模式选择服务器模式DHCPv6而非SLAAC,并且Android设备不支持DHCPv6。这导致了我的手机根本不能获得v6地址,进而无法访问。
污染溯源
局域网出问题哪家强,GNU Linux找tcpdump。指定接口,监听广播域,谁干坏事把IP连着MAC一起扬了!
这里我就示意性的放一张图,展示一下我找到的“犯罪嫌疑路由器”:

分析的过程大概分为三步:
- 首先
DHCPv6和SLAAC的源设备相同,所以可以利用SLAAC的包均为ICMP6这一特性进行分析。 - 指定接口
eth0(我的v6wan口,不确定则请使用any),过滤22ssh流量(指定wan口则不需要),使用-e选项显示mac地址。注意:如果要获得结果,需要进行重连(例如重新连接接口)。 - 找到含有
router advertisement类型的包(可以使用grep过滤),然后查看mac地址和local v6 address (fe80::/10),在网站上查找制造商。根据网卡MAC地址查询厂商信息
然后我就找到了如下几个设备:
tcpdump -i any port ! 22|grep ICMP6|grep "router"|grep "advertise"
fe80::7625:8aff:fe0e:b2af 74:25:8a:0e:b2:af 华三,桌下网口官方Router
fe80::1219:65ff:fec8:9c01 10:19:65:c8:9c:01 华三,AP网口官方Router
fe80::8ede:f9ff:fe51:7f5e 8c:de:f9:51:7f:5e 小米,污染源
PS:有没有发现
fe80::/10的地址生成规则?
这次因为发现的早,所以只有一个污染源,如果多了就更麻烦了。不过找到了地址后面就好办了。
处理
DHCPv6
因为我们亲爱的UCAS拿到的 2400:dd01:103a::/48这个地址段着实有点小,也也不该指望亲爱的网管冒着头秃的风险给每栋楼的设备搞DHCPv6-PD段的划分,降低学校设备负载balabala…
不行我摊牌了,就是因为菜+方便管理,要不然/48完全有的拆:2^16 = 65536,2^12=4096,16栋楼给划分一个/60也不是不能搞。不过就这样吧,整个中国科学院大学分/48也确实勉强,谁能保证后面不会配错,而且现在这样只玩SLAAC也算能用。
我上面扯这么多有的没的就是要引入一个:因为学校不会用DHCPv6,所以直接改成ban了就完事。

SLAAC
这个就比较麻烦了,但是因为伟大的IP桌子神器支持根据MAC过滤,那就相对好办了。
需要进行一个组合规则:
- 放行来自白名单
MAC地址的。 - 阻止所有
ICMPv6的Router Advertisement包。
因为IP6桌子的匹配是顺序匹配,所以先匹配到的就会直接放行/丢弃/拒绝,因此顺序很重要。

并且一定要排在这一条前面

反攻
溯源及尝试
首先,我们的终端设备获得了fd30:4dcf:77f9::/48下的IPV6地址,所以我们已经属于该设备的内网(LAN)。众所周知,内网地址可以访问路由器的管理页面。
因此,我只需要访问 http://[fd30:4dcf:77f9::1]/ 就可以访问到Web管理界面,再配合一个经典的弱密码,我就进去了。(省省力气,我把这个洞修复后堵上了)

这未免有点容易,但是我还是不太满足,打算进一步深挖。在这之前,我要先看看他的配置

我基本可以确定他的连接方式了:
- 宿舍网口 <===> 路由器LAN口-1
- 路由器LAN口-2 <===> 路由器WAN口
获取更多信息
如果这位用的是普通的小米路由器,这事也就到此为止了,我虽然可以通过拦截DNS去钓鱼 http://portal.ucas.ac.cn这个认证网址(谁让信息中心不用https,活该),但我倒也不至于这么富有进攻性,顶多关掉路由器功能罢了。
但很可惜,这位用的是openwrt,里面还有一些有趣的东西。

看到srun我就来劲了,这是UCAS的网关登录认证,和负责所有学生个人信息的SEP系统密码完全相同。那我自然是打开配置文件并观察验证一下:

试验了一下发现不大对劲,密码错误,我想着应该不会犯这种错误。然后就选择看看有没有其他配置文件:

里面是经过base64编码的用户名密码json文件

然后用这个密码登录相关的系统。

然后试试能不能看到对应的个人信息:

后面还用对应的信息查到了宿舍号,不过这都是后话了。我要是上门八成会被打
其他隐患

如果是觉得外网登录不上去WIFI还很合理,但是WIFI密码也设的这么弱,我真的不知道该说什么了。
修复
因为如果我改了WIFI密码,这位老哥多少是上不去了。所以我就先修复IPV6的遗留问题,免得大家都把这个路由器当后花园乱玩,堵上了这个洞后,只有他WIFI密码的问题需要解决了,这我就无能为力了。

总结
没有金刚钻,别揽瓷器活。网络安全,人人要注意。
- 如果他知道
LAN口暴露出来的风险,我就不会受影响,也不会受干扰。 - 如果他知道弱密码的风险,密码很强,进不去后台,那最多最多通过查找
MAC地址巡楼找找到人(我疯了?) - 如果他
WIFI密码设的很强,也不会存在别人连到后台搞ARP攻击的风险。
综上,建议所有看到这篇文章的人:
- 永远不要把
LAN口连出去,除非你十分清楚你在干什么。 - 路由器后台设置强密码,不然迟早痛苦面具,尤其是你放了重要数据的时候。
- WIFI设置强密码,不然别人连到后台搞
ARP,一样能骗到密码。
顺便建议UCAS的信息化,为SRUN认证网页,加上HTTPS,虽然我没进行攻击,但我感觉这种只是换个字母表的操作是无法解决中间人攻击的。不行可以学SEP,搞个RSA加密上去,这样中间人了也最多只能影响流量。

经典lan口上宿舍网口,两个dhcp养蛊了。openwrt用弱密码双杀了
😭带我走吧
你好,我想问一下校园网如何连接路由器分配一个ipv6公网呀?
https://makiras.org/archives/49
我按照您的教程,尝试了一下,wifi里有ipv6的公网,DHCPv6分配显示没有已分配的租约,我尝试远程桌面也无法连接上。
SLAAC倒是没有DHCPv6 租约很正常,有邻居就行,连上WiFi有公网v6也说明已经走通。请route -6 PRINT查看网关,以及添加防火墙拦截恶意来源RA包,可以ping一下你们楼的v6网关(一般是xxxx::1/64),以及访问test-ipv6.com看看通不通。
嗯,我test-ipv6测试是有公网ipv6的,我是尝试用手机流量通过远程桌面连接到我宿舍电脑的ipv6,但是这是无法连接的,分配的ipv6只能访问外面,而外面无法访问到里面吗?
电脑防火墙问题,或者路由器or学校防火墙问题。openwrt记得添加wan到lan的允许转发规则。
应该就是学校校园网防火墙的问题,ipv6只能访问外网,不能外网访问。
目前五公寓有脏RA,会出现路由干扰的情况,请自己添加白名单
Windows有办法屏蔽这个污染吗……
有办法,使用wireshark抓包,再在windows防火墙里面屏蔽
不过记得要选对专用网络或者公开网络