宋崟川先生是美国领英(LinkedIn)的工程师,也是“IPv6产业生态圈”和“IPv6头跳读者群”活跃的技术型群友之一。他维护的网站https://IPv6-CN.com向广大朋友提供原创和翻译的IPv6资料。
宋崟川先生的家庭网络已经接入了IPv6带宽。9月20日宋先生在群里通报:家中路由器的防火墙日志显示9月份有三次(截至本文发稿时有六次)来自AWS云主机对家庭内网主机IPv6地址80端口的精准扫描。
以下是事件发生的经过,以及宋崟川先生对攻击事件的深度分析。
谁在扫描我家的 IPv6 地址
首次发现对内网主机真实 IPv6 地址的
精准扫描
在IPv4环境下,对TCP和UDP的端口扫描非常常见,而且攻击者经常扫描整个网络的所有地址。这种肆无忌惮的扫描每分钟可能有几十或上百次。
到了IPv6的时代,IPv6一个子网的大小就是整个IPv4地址数量的232倍,非常不利于攻击者扫描目标网络。通常我们认为在IPv6上对网段的扫描不会发生,起码对于了解IPv6的攻击者来说不会选择这样浪费时间。
然而在本文的例子中,我们看到了针对家庭宽带用户的单个IPv6地址的单一端口扫描,为什么会发生这样的事情呢?我们作为网络的维护者又应该如何保护好自己,防止受到这种攻击呢?
网络环境
我家中接入互联网的运营商是AS7922美国Comcast公司。使用的路由器是思科ISR(集成业务路由器)。与一般企业网络边界部署的大型路由器相比,除了吞吐量不同,功能和操作方式上没有太大区别,运行Cisco IOS系统。
此路由器中防火墙功能的配置使用思科的传统CBAC(基于上下文的访问控制)模式,通过ACL与inspect命令跟踪返回的数据包相结合来实现包过滤防火墙和有状态防火墙。
Comcast使用DHCP给我的路由器分配了1个IPv4地址,使用DHCPv6-PD(前缀下发)分配了一个/60大小的前缀,这样我最多有16个/64(这是IPv6环境下通行的网络前缀长度,适合给一个VLAN分配)大小的IPv6子网。
我为家中的设备配置了可以通过IPv4和IPv6访问的DNS服务器,这些DNS服务器都可以正常返回一个域名的A以及AAAA记录。
攻击记录
2018年9月20日,在完善家中路由器的防火墙设置时,我发现了三条不寻常的日志(本文撰写时又发现三条)。以第一条日志为例,解释一下各个字段的含义(见表1):
注: 源地址和目的地址在不影响理解的前提下都做了适当简化。 第 1 条日志中的目的地址简化后保留最后的 1,表示这是一个手工分配的地址。 第 2-6 条日志中的源地址的 17-64 位被略去,因为与第 1 条重复。 所有日志条目中的目的地址第 17-64 位被改写,是出于隐私保护的考虑。
日志分析
时间
几次扫描分别发生在:下午1:51,凌晨1:00,下午1:28,凌晨4:47,下午4:44,凌晨4:19。这些时段我是不会活跃地使用家中网络的,可以排除与我的操作直接相关的实时在线扫描。即这种扫描不是request-response形式的,而是一种收集与扫描分开的形式。
源地址
这几次扫描都来自同一个/64前缀——2600:1F18:6058:A200::/64,此前缀属于AS14618亚马逊AWSEC2云主机。亚马逊云计算的IPv6分配策略如下:AWSVPC会被分配一个/56,其中有256个/64的子网可供分配。地址的来源是亚马逊自己的全球单播地址池。
根据以上分配策略,很容易得出结论,这六次扫描是同一个AWS账号所为。
从这几个源地址的接口标识符(IID,即后64位)来看,这些主机的角色并不是服务器,而是一些使用SLAAC获得前缀自行分配地址的客户机。因为服务器的地址通常是方便人类阅读和配置,最起码也是有一定规律的形式。
目的地址
除了第1条日志条目中的目的地址是手工分配的以外(没有使用SLAAC,并且此地址对应的设备并不是一直在线)。后面第2-6条日志的目的地址所在的子网均开启了路由器宣告(RA),所以主机会使用SLAAC及其隐私扩展生成自己的全球单播IPv6地址。
综上所述,可以排除一直开着的设备callhome触发扫描的可能性。
通常Windows和Mac都会生成两个地址,一个叫“临时IPv6地址(TemporaryIPv6address)”,默认用于对外发起连接,一个叫“公有IPv6地址(PublicIPv6address)”。
临时地址的接口标识符(即后64位)是随机生成的,会在较短的时间内过期,除非应用程序要求使用公有IPv6地址,否则系统默认优先使用临时地址对外发起连接。
公有IPv6地址的生命周期有两种,分别为有效期(ValidLifetime,30天),优选期(PreferredLifetime,7天)。应用程序可以向操作系统请求选择使用相对稳定的公有IPv6地址。地址选择的算法详见RFC6724。
临时地址的使用不仅能降低此类扫描的风险,还能在如今广告提供商无下限地跟踪用户的环境下尽可能在地址层面保护用户的隐私。
目的端口
目的端口都是80,这也是我一眼能识别出这是扫描而不是正常访问的依据,因为我没有在80端口上提供服务。攻击者试图连接TCP80端口(即HTTP服务使用的端口)的行为目前也没有合适的解释。由于我的防火墙对ICMPv6是放行且不写入日志的,所以攻击者是否先尝试ping几个地址无从得知。
以上对日志的分析,引出了一个新问题:我家内网的IPv6地址是如何被攻击者所知晓的?
前面已经讲到,针对IPv6的网络扫描,不可能是对一个/64内的所有地址进行扫描,一定是针对单独IPv6地址的扫描,地址的获得既可以通过猜测,也可以通过采集。
在这个案例中,通过日志中有限的几个条目,以及目的地址处在两个不同的/64子网,完全可以排除攻击者使用扫描整个网络这种愚蠢的方法。通过对目的地址的分析,可以排除攻击者猜测一些常见的诸如——“::”,“::1”,“::123”,“::abc”,“:192:168:1:1”形式作为接口标识(IID,后64位)的IPv6地址。
网络中一个使用过/使用中的GUAIPv6地址可能出现的位置有:
1.本机的网络接口配置
2.本地应用程序日志
3.本机在DNS中的动态条目
4.应用层协议的Payload中嵌入了IPv6地址
5.路由器/多层交换机和同网段其他机器的ND缓存
6.DNS服务器查询日志
·DNS提供商自身的日志
·网络中对DNS请求的嗅探和劫持
7.NetFlow导出日志
8.Web服务器和应用服务器访问日志
·所访问网站的日志泄露
a.一般网站
b.IPv6测试网站(志愿加入提供服务,不排除有恶意设置的服务器)
·CDN提供商的访问日志泄露
9.代理服务器访问日志
·未授权WPAD代理配置下发服务造成客户端使用攻击者设置的代理服务器
·透明代理和HTTP劫持代理的日志泄露
10.交换机端口镜像流量
·合法或非法嗅探用户流量(以上十条是我个人的总结,有疏忽和遗漏的地方欢迎大家指正。)
由于IPv6端到端的特性,任何一个数据包的地址在其整个生命流程中都不大可能被改变。即使有NPTv6这种无状态修改前缀的设备在使用,TCP、UDP、ICMP等不依赖IPv6地址进行认证的协议还是不会给攻击者造成任何不便。
所以上述任何一个位置如果被攻击者控制,均会造成客户端IPv6地址落入攻击者手中,使其可以为进一步内网渗透做准备。
目前分析较为可能的是某Web服务器上的日志被有意无意滥用,造成客户端IPv6地址落到攻击者手中,攻击者收集了一定量的数据后开始对这些地址进行了扫描。
发现基础设施的不足之处
1.设备的IPv6地址没有跟踪和溯源机制,事后无从追查当时使用某个目的地址的机器是哪一台。
2.访问控制列表中的放行策略也许还是不够严格,有没有漏网之鱼无从得知。
3.对每一个自内而外发起的连接/会话没有跟踪,网络上发生了什么,哪些前缀、哪些协议、哪些TCP/UDP端口比其他的要更活跃,流量都去哪里了……这些基础网络情报都没有收集,出现问题没有深入调查的条件。
4.设备(此案例中是路由器)的日志仅仅保存在设备内存当中,一旦断电重启,本文可能不会出现在读者面前。
如何防范此类攻击
第一,完善企业网络安全制度。如果IPv4的安全制度已经成熟可靠,则要尽快将其应用到IPv6环境下。如果IPv4下的安全制度缺失,那么在IPv6的推广部署过程中,企业没有历史包袱,就有机会站在更高的起点上,借鉴行业内领先的网络安全策略和实施方案,建立健全企业网络安全规范制度。
第二,理解并配置IPv6防火墙。理解IPv6包结构与IPv4包的本质不同,即IPv6包头是类似链表的结构,而IPv4包头是层层嵌套结构。使用白名单模式配置防火墙,只放行已知合法的流量及其返回的数据包。部署支持IPv6的IDS/IPS。
第三,主机的防火墙也应该打开,只放行本机对外必需的服务。万物互联的时代,应用和环境千差万别,仅依赖网络设备上的防护是远远不够的。安全是网络和应用共同协作的结果。
第四,企业环境中应使用有状态DHCPv6为客户端分配地址,但是不应该让客户端长时间采用同一个地址,而是应该设置较短的地址生命周期,并采用好的随机算法生成客户端后缀。要完成国家对IPv6地址溯源的需求,只需要保留好DHCPv6服务器日志,并定期从接入交换机、AP上采集MAC地址与IPv6地址的对应关系即可。切不可图省事,为客户端分配长久不变的地址。这种做法,为自己的网络带来安全隐患的同时,彻底毁掉了IPv6为终端客户带来的一点隐私保护措施。
观察
宋崟川先生遭遇对内网主机IP地址的精准扫描,虽然是“第一次发现”,但是绝对不能说这种情况是“第一次出现”,因为很可能以前出现了很多次,但是一直没有被发现。只是本次比较偶然被发现。
同时,这种情况不可能仅仅发生在美国的IPv6网络中,中国的IPv6网络有没有遭遇到这种精准扫描?在没有确凿证据的前提下,我们不敢轻易下结论。
两办《推进IPv6规模部署行动计划》文件的基本原则里明确要求“两并举、三同步:发展与安全并举,网络安全要同步规划、同步建设、同步运行”。因此各单位的IPv6升级工作,网络安全工作必须也要同步进行,不能只顾一头。
随着三大电信运营商和CNGICERNET2开通IPv6网络接入服务,现在一些企业、教育、IDC和ISP等单位的网络已经接入了IPv6。但是有几个问题必须引起足够的关注:
(1)已接入IPv6的单位,对IPv6网络安全管理是否给予了足够的重视?是否采取了针对IPv6网络安全的必要措施?
(2)升级后的IPv6网络是否已经妥善配置良好支持IPv6的防火墙、入侵检测等安全防护设备,可以抵御来自IPv6线路的网络攻击?
(3)运维人员的技术能力,是否能满足IPv6网络安全建设和突发事件应急处置的需要?
这几个问题,扪心自问,做到了吗?IPv6网络有很多新的特性,将会产生很多新的网络安全场景,这些场景与IPv4网络并不一样,所需的防护策略也会不一样。但是,无论IPv6还是IPv4,网络安全在本质上并没有根本变化,最关键的问题是网络管理者的安全意识、安全措施、应急方案和技术人员的应急处置能力,这些是一切网络安全运维的核心。(赵肃波)
本文刊载于《中国教育网络》10月刊