标题 简介 类型 公开时间
关联规则 关联知识 关联工具 关联文档 关联抓包
参考1(官网)
参考2
参考3
详情
[SAFE-ID: JIWO-2024-2449]   作者: ecawen 发表于: [2019-08-20]

本文共 [365] 位读者顶过

IPv6 是许多测试人员不敢经常接触的恶魔,因为它仍然不是规范或广泛采用的。不要误解我,它是可用的(已经有一段时间了)。而且,许多大公司和小公司都在使用它,但这并不是很多人所习惯的。因此,关于如何破解、发现缺陷和利用它们,通常没有太多的书面记录。

0x01 前言

出于这个原因,本文将深入探讨什么是IPv6,协议中关于不同模式的一些信息以及如何攻击IPv6地址。最近有人对我说,要想破解某个东西,你必须先了解你正在破解的技术或应用程序。通过这种方法,我发现我自己和其他人不时地在晦涩的技术上即兴发挥,这在一定程度上是正确的!

0x02 关于 IPv6 的一点背景知识

对于那些不知道IPv6的人来说,IPv6在某种程度上将成为我们在互联网上访问的内容的现实。其中一个亮点指出,目前的互联网地址系统IPv4只能容纳大约40亿个地址。这是一个很大的数字,但它并没有占到地球上几乎所有人的数量,因此连接设备也没有那么多。所以IPv6通过[出自:jiwo.org]
340,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000.00
个唯一的地址解决了这个问题,这使得40亿个地址相形见绌。

与 IPv6 的交互

与IPv4地址很相似,与IPv6的交互可以通过多种方式完成,也有一些类似于IPv4的特殊地址可以做不同的事情。首先,当通过IPv4浏览web应用程序时,只需将地址放入URL栏,浏览器就会将您带到该IP上的相应站点/应用程序。

然而,当涉及到IPv6时,你需要在你的浏览器地址周围添加一组括号来识别它。因此,例如,浏览到

https://[2a00:1450:401b:803::2003]

将会在谷歌上给您一个错误,但是如果您试图在没有[和]的情况下浏览它,您的浏览器将不会理解它。

IPv6 特殊地址

和IPv4一样,IPv6也有一些特殊的地址和处理问题的方式。IPv6为不同类型的地址保留了特定的头文件。最著名的例子可能是链接本地单播地址总是以FE80开头。同样,多播地址总是以FF0x开头,其中x是一个占位符,表示1到8之间的数字。下面的列表显示了这些特殊地址类型的选择数量:

Ⅰ.链路本地地址(Link-Local)
 Ⅱ.环回地址(Loopback)
 Ⅲ.唯一本地地址(Unique-Local)

链路本地地址

链路本地地址是IPv6单播地址,可以使用本地链接前缀FE80::/10在任何接口上自动配置。IPv6主机的所有接口都需要一个本地链接地址。它仅对连接到主机的网络段(链路)或广播域内的通信有效。

简单地说,连接本地地址是从接口的MAC地址和前缀fe80::/10创建的。因此,无论何时,只要你看到一个带有fe80前缀的地址,你都可以假设这可能是一个本地链接地址,但是所有的东西都值得你反复检查。

这个过程包括用最有效位的最左边的前缀位填充地址空间,并以EUI-64格式将 MAC 地址填充到最低有效位。如果在这两部分之间还有任何位需要填充,那么这些位将被设置为零。

幸运的是,有一些工具可以创建链接本地地址,所以您不需要担心它们,address6将获取它提供的mac地址,并将其转换为链接本地地址,这个命令的运行示例类似于:

root@kali:~# address6 74:d4:35:4e:39:c8 fe80::76d4:35ff:fe4e:39c8

该工具基本上采用mac地址并直接转换它,如上所示。另外,address6可用于将本地链路地址从IPv6转换回mac地址,如下所示:

root@kali:~# address6 fe80::76d4:35ff:fe4e:39c8 74:d4:35:4e:39:c8

这个工具是THC-IPv6的一部分,将在本文后面进一步讨论。

环回地址

在 IPv4 中,称为环回地址的指定地址指向本地计算机。任何启用IPv4的设备的环回地址为127.0.0.1/8,这也称为localhost。类似地,IPv6也有一个指定的 IPv6 回环地址:

0000:0000:0000:0000:0000:0000:0000:0001

但是,一旦所有0被抑制,IPv6环回地址甚至看起来都不是有效地址。环回地址通常显示为::1。因此,如果您看到::1,您可以安全地认为这是针对本地计算机的,并且不会通过互联网路由。

唯一本地地址

唯一的本地地址(ULA)是IPv6相当于 IPv4 私有地址;当前的IPv4私有地址范围如下表所示。这些都是用于单个组织的内部网络。作为RFC 4193的一部分,地址块fc00::/7保留用于私有IPv6网络。

IPv4 私有地址如下

10.0.0.0/8       IP 地址:10.0.0.0 - 10.255.255.255。
172.16.0.0/12    IP 地址:172.16.0.0 - 172.31.255.255。
192.168.0.0/16   IP 地址:192.168.0.0 - 192.168.255.255。

了解本地地址非常重要,因为您可能会在外部测试中遇到它们,并发现自己无法联系到它们。

fd00::/8范围中的前缀具有类似于IPv4私有地址范围的属性:

1.它们不是由地址注册中心分配的,任何没有外部参与的人都可以在网络中使用它们。

2.它们不能保证是全球唯一的。

3.fd00::/8 ULAs 不能在全局`DNS 中委托。

由于fd00::/8 ULAs不打算在其管理域(站点或组织)之外路由,互连网络的管理员通常不需要担心ULA前缀的唯一性。

Windows 仍然不完全支持 IPv6 …

尽管微软一直在努力推动IPv6的使用,但Windows并没有像期望的那样完全支持IPv6。例如,在Windows中,可以在通用命名约定中包含IP地址(例如\ 127.0.0.1 \ ADMIN $)。但是,您无法使用IPv6地址执行此操作,因为当Windows看到冒号时,它会假设你引用的是一个驱动器号。

为解决此问题,微软已为IPv6地址转换建立了一个特殊域:如果要在通用命名约定中包含IPv6地址,则必须使用短划线-替换冒号并将.ipv6.literal.net附加到地址末尾。例如:

FE80-AB00-200D-617B.ipv6.literal.net

0x03 Attacking IPv6

现在我们已经了解了一些关于IPv6地址的知识,接下来有趣的是…hacking它们。虽然有一些测试和破解IPv6的工具包,但是仍然有很多开发和创建处理IPv6的工具的空间。

任何pentester在某种程度上都将使用Linux,更具体地说,标准是使用Kali Linux或Debian Variant。幸运的是,Kali Rolling(2016-Present)预装了IPv6工具包,适用于很多不同的攻击场景。

用于基础设施评估的主要工具内置了IPv6模块,以便我们测试人员做更多工作!传统的nmap和Metasploit类型的工具将使用IPv6,它们只需要一些调优,并有一些专门针对IPv6的特殊选项。

THC-IPv6(Penetration Testing Tools)

THCTHC

The Hacker Choice’s IPv6 Attack Toolkit

是一组用于探测和测试IPv6的工具。我不打算在这篇博客文章中重申每个的描述,查看此页面可以获取详细信息。以下是我推荐使用的一些功能:

alive6 -在给定的段中显示有效地址,用于快速识别范围内的潜在目标。

dnsrevenum6 -执行反向 DNS 查找 IPv6 地址,如果你有 IP 并且你想找到与它相关的域,这很有用。

exploit6 - 执行各种 CVE 攻击,但是要小心一些漏洞是不稳定的,可能导致主机崩溃......

firewall6 - 运行大量访问控制列表(ACL),尝试绕过防火墙的检查和限制。

passive_discovery6 - 被动地嗅探网络并转储所有客户端的 IPv6 地址,这对于内部基础架构评估非常有用,可用于识别潜在的 IPv6 目标。

trace6 - IPv6 的 traceroute 实现,比 traceroute6 运行的快一些。

上面的工具是我在有限的IPv6测试中发现非常有用的少数几个工具。如果你有更多的建议,请发推特给我。

Port Scanning

传统上,当涉及端口扫描时,有一种工具是国王:NMAP!
请放心,nmap适用于IPv6,您知道和喜欢的IPv4的所有标志都将主要用于IPv6。为了能够扫描IPv6,你需要在你的目标前添加-6,不管它是一个单独的地址还是一个包含地址列表的文件。典型的用法是:

sudo nmap -6 -sSV -p- -iL targets.txt -oA example_IPv6 --version-all --max-retries 3 -T4 -Pn -n --reason –vvv

成功运行后,这个命令的细分如下:

nmap:启动程序

-6:告诉 nmap 目标是 IPv6 主机

-sSV:指示 nmap 执行 syn 半开扫描和版本扫描

-p-:扫描所有 65535 端口的注释

-iL:该标志告诉 nmap 从文件路径加载目标,从当前文件夹加载。

-oA:注意输出为 nmap 支持的所有三种格式; XML,nmap 和 greppable nmap 输出。

--version-all:发送其他版本探测以尝试发现在每个开放端口上运行的软件版本。

--max-retries:注意 nmap 将为每个端口执行的最大重试次数

-T4:为 nmap 调整并行进程和其他超时设置添加其他计时选项

-Pn:指示 nmap 假定主机已启动,并且不向目标发送 ICMP 数据包。

-n:告诉 nmap 不要执行目标的 DNS 解析。

--reason:告诉 nmap 根据响应显示端口被确定为打开或关闭的原因。

-vvv:这会增加扫描输出的详细程度。

在nmap之上,还有其他出色的端口扫描工具。例如zmap,它已经过修改以支持IPv6扫描,修改后的版本可以在这里找到。它支持的修改版本的GitHub 页面列出:

ICMPv6 回应请求
IPv6 TCP SYN(任何端口)
IPV6 UDP(任何端口和有效负载)

Metasploit Framework

和端口扫描一样,Metasploit框架等工具也支持针对IPv6的攻击。目前,Metasploit提供了一些用于IPv6发现的扫描模块,以及支持IPv6的传统有效负载版本。一个快速和简单的方法来定位IPv6模块是在Metasploit控制台运行命令:

search ipv6

IPv6MSF-1

大多数模块在编写时都与有效负载相关,这些有效负载专门用于与攻击者的机器通信。然而,Metasploit的本质是这在未来可能会改变。

公开资源情报计划(OSINT)

从扫描的角度来看,IPv6不仅是一个很好的目标,还有很多工具可以利用IPv6地址进行侦察和开源情报收集。
Shodan是一个很好的工具,我经常使用它来发现关于一个组织的信息。有一个简单的搜索词可以附加到shodan搜索:

has_ipv6:1

可以找到与搜索词绑定的实时IPv6主机。

潜在的金矿

相对而言,IPv6系统的安全堆栈不如IPv4系统成熟。这意味着有一些潜在的问题会被忽视。我以前发现,有时候一个公司会锁定他们的服务器的IPv4地址和接口,但完全忘记了IPv6。这意味着通常的端口:3389,3306,445等在IPv4接口上没有暴露在互联网上,但在IPv6上是完全开放的!

这就是端口扫描和其余部分发挥作用的地方,允许您戳戳系统(您有权查看系统)以发现漏洞和bug。一旦你找到了一个应用程序或任何其他东西,直接简单的:

http://[ipv6 address]:port/path

就可以走了。

所以希望你已经从这篇文章中学到了一些东西,抱歉我花了这么长时间来整理,但总的来说我从写这篇文章中学到了很多,希望你也学到了!

评论

暂无
发表评论
 返回顶部 
热度(365)
 关注微信