在今年前一阵子的多场攻防演练中,攻击队使用IPv6地址攻击防守单位,一些论坛和平台上都在讨论针对IPv6的攻击和防御手段。所以本文针对现阶段网络和网络安全的发展情况针对IPv6进行讲解,会包括使用IPv6进行的攻击、如何获取IPv6地址,以及针对IPv6攻击如何进行防守三个部分进行讲解,本篇文章重点讲解第一部分。
IPv6介绍
IPv6是(Internet Protocol version 6)是互联网协议的一种版本,用来为连接到互联网的设备来分配唯一的IP地址以便于标识。本身IPV6的设计是为了接替IPv4(Internet Protocol version 4),因为IPv4现在面临一个巨大的问题,那就是IPV4的地址空间不足。
IPv4地址空间不足的原因是因为它使用的是32位的地址格式它最多可支持42亿个唯一的IP地址。然而当前社会发展下,全球互联网用户数量不断增加,导致IP地址的资源紧缺。
IPv6使用的是128位数的地址格式,可以提供远超IPv4的地址空间,从而满足互联网的需求,并且提供了简化的地址配置:IPv6引入了自动地址配置机制(Autoconfiguration)使得网络设备可以自主的为自己分配IP地址,减少了对管理员的依赖;并且IPV6在设计时考虑了更强的安全性,并内置支持IPsec(Internet Protocol Security)协议,提供了端到端的加密和认证功能,用于确保数据传输的机密性和完整性。但是IPv6也存在一些弊端和问题,首先IPv6存在和IPv4不完全兼容的问题,在过渡间,需要使用转换技术来实现IPv6和IPv4之间的互联互通。其次IPv6虽然已经出现好久了,但是仍然存在很多设备和应用程序不支持或者不完全支持IPv6,会遇到兼容性问题。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
IPv6的安全性
IPv6对安全的增强
相较于IPv4来说,IPv6的安全增强源于两个方面:一是地址空间的大幅增加对安全形成了增强,二就是IPv6的协议簇中增加了很多安全特性。
首先IPv6地址长达128位,地址空间容量是IPv4的n多n多倍。这意味着当前黑客嗅探使用的大网段扫描方式,比如整个A段,整个B段扫描将会难以实现,广泛的IPv6地址扫描是不可行的,需要指定较小的IP范围。这使得业务系统被互联网探测引擎(如fofa、鹰图。shodan等)资产测绘或者扫描到的可能性降低。
其次,IPv6巨大的地址空间会为每一个网络设备分配唯一的地址,可保证路由器转发的每个数据包都有真实的源地址,而不是像IPv4一样使用NAT方式进行网络地址转换,导致难以直接访问到某个服务或设备,并且多台设备使用同一IP上网。因此IPv6具备很好的事后应急排查与溯源的能力。
IPv6支持IPSec协议,与IPv4环境相比下,无需另行部署增加加密手段(如IPsec VPN等)即可实现数据加密传输。并且IPv6协议中没有广播机制,所以IPv4网络中存在的所有利用广播机制进行攻击的现象都得以缓解,并且由于地址空间大,针对DHCP协议的攻击难度也大幅提升。
IPv6存在的安全风险
虽然IPv6的安全性在协议簇中得到了增强,但是仍然在部分方面存在安全风险;一是IPv6沿袭了IPv4存在的安全风险,二是IPv4和IPv6实施的双栈配置等过度机制可能会引入安全风险,三是新协议使用中形成的新的安全风险。
协议安全风险
虽然IPv6协议和报文结构都有所变化,但是一些存在于IPv4网络中的攻击仍然存在。将在IPv6网络中继续存在的攻击类型包括:DoS攻击、路由选择攻击、应用层攻击等。
其次,IPV6的报文结构相比于IPv4新引入了流标签、RHO、路由头等字段,还有在IPv6协议簇中引入了新的协议。这些新增加的东西都可能存在漏洞,用于发起嗅探或者DoS攻击等。IPv6特有的攻击风险包括:逐跳扩展头攻击,邻居发现协议等。
不同类型安全设备在实现IPv6协议栈时,存在因编码、实施造成的安全风险。目前CVE漏洞库中已经存在大量与IPv6相关的安全漏洞被收录。
网络层:
所有支持IPv6的机器,在不明确禁止RA(路由器公告消息)的情况下,如果在接口上配置了/64的IPv6全球单播地址(GUA)或本地唯一地址(UAL)的情况下,会周期性的以多播/组播的方式发送RA报文,同时以RA响应主机的RS(路由器请求)报文。
但是RA信息中附带可用的IPv6前缀,主机可以利用这个前缀生成自己的IPv6地址。加上主机使用link-local地址连接路由器,几乎不需要其他配置,主机即可访问内部或外部的IPv6资源。
在这种情况下,未配置的内部和边界防火墙有很大可能对IPv6流量置之不理,内部的流量可以出去,外面的流量也可以直接进入内网。(PS. 存在真实情况,在今年X月份的一场攻防演练中,我作为蓝队应急溯源组参演,在攻防演练期间,有攻击队使用IPv6地址绕过防火墙和waf,直接对内网展开了扫描和攻击)
DNS和应用层:
在实际引用中,DNS是一定会使用的,而DNS的解析器和DNS服务器默认配置早已支持IPv6资源的AAAA记录。同一个域名的AAAA请求和A请求几乎同时发出,客户端程序获得这两种地址时,IPv6的应用层请求会先于IPv4的请求发出,间隔很短只有几百毫秒,IP4实际上成为了fallback的手段。假如网站的安全策略只针对站点的IPv4地址做了限制,那么限制是无效的。
在IPv4向IPv6过渡的过程中,可以采用三种方案:隧道、翻译和双栈,但是都可能会引入新的风险问题。首先隧道机制只是对数据包进行简单封装,并不会对流量内容做检测,攻击者可以通过配置IPv4或者IPv6,将IPv6报文封装成IPv4报文进行传输,或者将IPv4流量承载在IPv6报文中进行传输,可能会直接穿过防护到达目标网络中。
翻译机制也就是协议转换,是作为IPv6网络节点和IPv4网络节点互通的路由,极易被攻击,一旦被攻击可能导致网络瘫痪。
最后双栈机制也并不安全,如果同时运行IPv4和IPv6两个逻辑通道,会增加系统的暴露面,也就意味着攻击面扩大,需要安全防护的暴露面扩大。其次部分操作系统默认启用IPv6功能,使得IPv4网络存在隐蔽的IPv6通道,并且没有安全配置,攻击者可利用该通道进行攻击。双栈还会使得网络节点负载变大,故障率增高。
安全设备风险
首先IPv6环境下所有设备均可以使用全球单播地址,不需要使用NAT转换即可实现互联互通,同时也就缺少了NAT设备造成的网络隔离的情况,因此防火墙或者其他安全设备的安全域划分和访问控制策略就需要更加严格管理。
其次在IPv6和IPv4的混合网络中,防火墙和安全网关之类的防护设备需要同时配置双栈协议,针对双栈协议增加安全策略来保障安全性,对安全设备的功能和性能的需求会更高。
在应用层中WAF、IPS、IDS等应用层安全设备的IPv6报文解析能力以及IPv6地址的黑白名单功能可能并不完善,无法达到对恶意IPv6ip限制的要求。
最后,规则库类的设备可能无法识别IPv6地址,如IP地址归属等。并且日志相关信息可能无法相互对应,导致如果出现安全事件的话,排查较为困难。
IPv6中可能存在的网络安全攻击
(1) 报文监听IPv6中可使用IPSec对其网络层的数据传输进行加密保护,但RFC6434中不再强制要求实施IPSec,因此在未启用IPSec的情况下,对数据包进行监听依旧是可行的,具体我们可以通过Wireshark工具接获报文,然在本地进行分析。
(2) 应用层攻击IPv4网络中应用层可实施的攻击在IPv6网络下依然可行,比如SQL注入、缓冲溢出等,IPS、反病毒、URL过滤等应用层的防御不受网络层协议变化的影响。
(3) 中间人攻击中间人攻击是指攻击者能够在两个通信方之间的通信链路上拦截、篡改或者窃听通信内容。攻击者可以通过欺骗的方式,使通信方误以为他们在直接通信,而实际上攻击者已经介入其中,从而窃取敏感信息或者进行其他恶意行为。 启用IPSec对数据进行认证与加密操作前需要建立SA,通常情况下动态SA的建立通过密钥交换协议IKE、IKEv2实现,由DH(Diffie-Hellman)算法对IKE密钥载荷交换进行安全保障,然而DH密钥交换并未对通信双方的身份进行验证,因此可能遭受中间人攻击。
(4) 泛洪攻击在IPv4与IPv6中,向目标主机发送大量网络流量依旧是有效的攻击方式,泛洪攻击可能会造成严重的资源消耗或导致目标崩溃。另外,由于IPv6网络通常包含更多的设备和更复杂的路由路径,因此对于网络管理员来说,识别和缓解IPv6网络上的DDOS攻击可能会更具挑战性。
(5) 分片攻击在IPv6中,中间节点不可以对分段数据包进行处理,只有端系统可以对IP数据包进行分分段与重组,因此攻击者可能借助该性质构造恶意数据包。 在RFC8200中声明禁止重组重叠的IPv6分片,且其限制最小MTU为1280字节[2],因此处理时将丢弃除最后分片外小于1280字节的分片,在一定程序上也缓解了分片攻击。
(6) 路由攻击在IPv6下,由于部分路由协议并未发生变化,因此路由攻击依旧可行。 攻击者篡改路由表,将通信流量导向攻击者所控制的路由器,然后在路由器上进行中间人攻击。这种攻击可以通过IPv6的加密和身份验证来防范,但是这需要网络管理员和网络设备厂商共同协作,实现IPv6的安全性。
(7) 地址欺骗攻击者伪造IPv6地址,使得通信双方误认为他们在直接通信,实际上攻击者在中间拦截并篡改了通信内容。这种攻击在IPv6网络中比IPv4更容易实现,因为IPv6地址空间更为广阔,而且IPv6地址可以通过随机生成来避免被识别和防御。
IPv6网络发现、扫描与攻击
这里介绍一些针对IPv6网络的攻击&扫描,或者是利用IPv6对IPv4网络进行的攻击。
IPv6资产收集
如何收集目标的IPv6资产呢?
域名AAAA查询
通过进一步查询,得知AAAA类型的解析记录,实现IPv6的解析
使用dig进行查询
dig -t AAAA [域名]
dig -t AAAA +short [域名]
使用dnsx进行查询
echo ip.sb | dnsx -silent -aaaa
echo ip.sb | dnsx -silent -aaaa -resp-only
dnsx -aaaa -o output.txt -l input.txt
通过搜索引擎查找
目前各大搜索引擎基本都支持IPv6语法,但是hunter好像不支持
## fofa
https://fofa.info/
is_ipv6=true && country="CN" && port="80" && protocol="http"
## quake
https://quake.360.net/
is_ipv6:"true" && body:"登录"
## zoomeye
https://www.zoomeye.org/
ip:"2600:3c00::f03c:91ff:fefc:574a"
ASN查找
asnmap
https://github.com/projectdiscovery/asnmap
有些ans信息中会包含IPv6地址的范围
IPv6地址扫描
首先给大家分享一个在线网站,计算IPv6掩码的
IPv6掩码计算器 https://jennieji.github.io/subipv6/
Fi6s
Fi6s是一款针对IPv6的端口扫描程序,设计扫描速度块。通过异步发送和处理原始数据包来实现的。
工具地址:https://github.com/sfan5/fi6s
在Ubuntu上安装
apt install gcc make git libpcap-dev
git clone https://github.com/sfan5/fi6s.git
cd fi6s
make BUILD_TYPE=release
Fi6s仅可在Linux上使用。
Fi6s会尝试对目标进行自动扫描检测任务,例如数据源、路由器MAC地址和源IP地址等等
./fi6s -p 80 2001:da8:9000:e013::199:4/115 --randomize-hosts 0
./fi6s -p 80,8000-8100 2001:db8::/120
实际测试速度很快,但是掩码小于/112的情况下,扫描结果数会直线下降,就很难扫出结果。
Naabu
Nabbu是用Go编写的端口扫描工具,可以以快速可靠的方式美剧主机的有效端口。可对主机或列表进行快速SYN/CONNECT/UDP扫描。
工具地址:https://github.com/projectdiscovery/naabu
echo "2001:da8:9000:e013::199:4/118" | naabu -iv 6 -p 80 -rate 4000 -retries 3 -c 30 -silent -si 60
扫描速度比fi6s慢很多,但是漏报率低,精准度高
Naabu同时支持IPv4和IPv6。这两个范围都可以作为输入一起通过管道连接在一起。如果使用 IPv6,则必须正确配置连接,并且网络接口必须分配有 IPv6 地址 () 和默认网关。
echo hackerone.com | dnsx -resp-only -a -aaaa -silent | naabu -p 80 -silent
104.16.99.52:80
104.16.100.52:80
2606:4700::6810:6434:80
2606:4700::6810:6334:80
该选项使该工具在解析域名时使用 IPv6 地址。-ip-version 6
echo hackerone.com | ./naabu -p 80 -ip-version 6
__