起因
有一天早上起来,打算登上自己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
(我的v6
wan
口,不确定则请使用any
),过滤22
ssh
流量(指定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防火墙里面屏蔽
不过记得要选对专用网络或者公开网络