COVIL HACKER

, ! .


» COVIL HACKER » Vulnerabilidades de rede » Artigo ataques de retransmissão


Artigo ataques de retransmissão

1 2 2

1

Autor do artigo: Alexander Kolesnikov
O artigo foi elaborado na véspera do início do curso: Pentest. A Prática do Teste de Penetração" .

Nesta série de artigos, tentaremos reproduzir o número máximo de ataques de retransmissão na infraestrutura do Windows. Considere configurar a infraestrutura, sua composição e versões do Windows.

Retransmissão
A melhor descrição deste termo é uma descrição da situação onde ele pode ser aplicado. Relay é um ataque no qual o invasor conseguiu enganar o sistema e criou condições de ataque man-in-the-middle, nas quais ele pode controlar o tráfego entre o cliente e o servidor.

Em essência, isso significa que você pode transferir qualquer informação em nome do cliente para o lado do servidor e vice-versa. Portanto, não é difícil para um invasor passar por solicitações de autenticação sem alterações e obter condições ideais para um ataque de retransmissão.

As infraestruturas que executam o sistema operacional Windows podem ser vulneráveis ​​a esses ataques, mas, para realizá-los, o invasor deve entrar na rede local.

Em nossos artigos, assumiremos que o invasor já conseguiu entrar na rede local e agora precisa aumentar seus privilégios ou coletar mais informações sobre o sistema. Para fazer isso, ele tentará usar ataques de retransmissão.

Os ataques de retransmissão são restritos? Na verdade, o Relay inclui toda uma gama de ataques, o objetivo desses ataques pode ser várias ações e coleta de dados adicionais. No entanto, para aprender a aplicá-los corretamente, você precisa entender quais possibilidades existem.

O primeiro ponto que você precisa saber é quais protocolos existem na infraestrutura para a qual o Relay pode ser organizado. Na rede, você pode encontrar diagramas bastante interessantes que mostram quais protocolos podem ser enviados para onde. Alguns exemplos de fotos são mostrados abaixo:

https://forumupload.ru/uploads/001b/c9/09/2/t177237.png

O vermelho destaca as interseções de protocolo que o Windows não permite que o Relay execute e o verde destaca os protocolos que dão ao ataque uma chance de sucesso. Por que tudo é tão impreciso? Cada versão do KB pode quebrar padrões, então você precisa verificar os dados que estão localizados na imagem em cada versão específica do Windows.

Também na rede você pode encontrar a seguinte imagem sobre possíveis protocolos para conduzir o Relay:

https://forumupload.ru/uploads/001b/c9/09/2/t634049.png

No total, temos um conjunto de limites aproximados onde o Relay deve funcionar, agora vamos tentar fazer alguns testes.

Configuração do suporte
Nem sempre é possível configurar máquinas na nuvem, onde não há limite de capacidade computacional. Portanto, tentaremos otimizar o suporte para trabalhar com ataques de retransmissão para um sistema com pelo menos 400 GB de espaço livre no disco rígido e 8 GB de RAM.

Para montar o estande, precisamos:
Virtual Box ou sistema de virtualização similar
Um conjunto de imagens do sistema operacional (você também pode encontrá-lo na rede)
Faremos os principais testes utilizando o sistema operacional Windows Server 2016 na versão Core e na modalidade Desktop Experience.

Serão 4 carros no total:
O Kali Linux acabou sendo muito glutão, então você pode simplesmente pegar o Ubuntu Server e instalar todo o software necessário. Levará muito menos espaço e, na inicialização, você pode instalar pelo menos 512 MB de RAM, isso não afetará a velocidade do trabalho.
Windows Server 2016 Core - controlador de domínio relay.lab
Windows Server Core 2016 - adicionado ao domínio Relay.lab
Windows Server Core 2016 - adicionado ao domínio Relay.lab
Realizar a configuração para a versão Core do Windows Server requer conhecimento de powershell, pois na verdade não há mais nada no sistema. No entanto, se a façanha for muito difícil de configurar, esse servidor sempre poderá ser adicionado à versão Desktop usando o "Gerenciador de servidores". Então a configuração não será diferente da configuração normal do servidor Windwos.

Abaixo estão os comandos para configurar cada servidor com comentários.

Para o primeiro servidor, digitamos sequencialmente os comandos da lista abaixo:

Rename-computer -newname DC1

$ipaddress = "192.168.56.100"

New-NetIPAddress -InterfaceAlias Ethernet -IPAddress $ipaddress -AddressFamily IPv4 -PrefixLength 24

Restart-Computer

Install-WindowsFeature AD-Domain-Services -IncludeManagementTools

Install-ADDSForest -DomainName "relay.local" -CreateDNSDelegation:$False -DomainMode Win2012R2 -ForestMode Win2012R2 -DomainNetbiosName RELAY -InstallDns:$True -DatabasePath "C:\NTDS" -SysvolPath "C:\SYSVOL" -LogPath "C:\Logs"

Todos os comandos devem permitir que você instale as configurações necessárias no servidor para criar um controlador de domínio. Os comandos contêm dados para o nome do servidor e domínio, eles podem ser substituídos por aqueles que você deseja usar.

Em seguida, você precisa ir para cada um dos 2 servidores restantes e inserir os seguintes dados:
Nome do computador
Servidor DNS, será o primeiro servidor que fizemos o controlador de domínio.
Adicionar servidores ao domínio
Todas as manipulações necessárias podem ser realizadas no menu chamado no comando sconfig:

https://forumupload.ru/uploads/001b/c9/09/2/t435042.png

Os nomes dos menus sconfig

podem ser selecionados pelos números correspondentes na lista, após inserir os dados, você terá uma mini infraestrutura pronta para testar ataques de retransmissão. Outras configurações para realizar ataques serão consideradas como parte do ataque. a primeira parte da descrição mostrará o que precisa ser configurado se a configuração padrão não permitir que o ataque seja executado.

Conjunto de ataques
Vamos definir a lista completa de ataques possíveis para o Relay. Em nosso artigo, vamos aderir à classificação, que se baseia nas ações que o Relay permite realizar.
Credenciais de despejo
Retransmitir para SOCKS
Enumeração do Active Directory
Novo computador criado
Escalação de Privilégios
delegação
DCSync
Como você pode ver, a lista é bastante impressionante, mas ainda pode ser complementada com os dados das fotos acima. Ou seja, cada ataque pode ser realizado apenas nas condições de operação de cada um dos protocolos. Portanto, o Relay é considerado um dos conjuntos de ataques mais complexos.

Credenciais de despejo
Um ataque que implica a emissão de um comando que forçará os usuários a copiar remotamente os dados do usuário do armazenamento do sistema operacional. Esse dump é chamado por meio de um serviço que mantém o acesso ao registro no sistema.

Como o Ubuntu estará configurado para o ataque, vale a pena colocar as seguintes ferramentas no sistema:
embalar
Crack Map Exec (cme)
Todas as ferramentas e instruções para instalá-las podem ser encontradas em seus repositórios.

Qualquer ataque de retransmissão começa coletando dados sobre os sistemas que estão sendo executados na rede. A coleta pode ser feita mais facilmente com a ferramenta cme:

cme smb 192.168.56.1/24

A lista de dados resultante pode ser usada para o método Relay SMB->SMB mais simples. Agora vamos tentar um ataque de retransmissão.

A propósito, para que o ataque consiga executar o payload, o usuário precisa querer enviar algo para o servidor, caso contrário nenhuma ação de Relay pode ser executada, então os usuários precisam começar a trabalhar com compartilhamentos de rede (no caso de trabalhar com SMB).

ntlmrelayx.py -t smb://$TARGET -smb2support

Em seguida, você precisa abrir o acesso ao nosso sistema a partir das máquinas do estande, ou seja, o sistema onde o Ubuntu está instalado. Em geral, para esses fins, você pode e deve usar vários truques para que o usuário precise realizar menos ações, mas falaremos sobre isso na próxima parte do artigo.

O resultado do ataque pode ser visto abaixo:

https://forumupload.ru/uploads/001b/c9/09/2/t808934.png

smb->smb

Nas partes seguintes, tentaremos realizar um ataque sem interação do usuário com o sistema do invasor e exploraremos o Relay para os protocolos HTTP e LDAP.





No artigo, continuaremos a nos familiarizar com os ataques de retransmissão na infraestrutura do Windows Active Directory. As configurações iniciais da bancada de testes podem ser encontradas na primeira parte desta série de artigos. E agora vamos tentar realizar ataques de retransmissão na comunicação por meio dos protocolos SMB->LDAP, HTTP->LDAP e HTTP->RPC.

Protocolos usados
A lista de protocolos que podem ser usados ​​para realizar ataques de retransmissão é bastante extensa. Todos os protocolos utilizados são ditados pela funcionalidade do sistema operacional Windows, ou seja, NTLMSSP (NT Lan Manager (HTLM) Security Support Provider), esse mecanismo só funciona automaticamente no sistema operacional quando é necessário passar pelo procedimento de autenticação. O único problema com esse mecanismo é que a autenticação é baseada em métodos de desafio-resposta, que inicialmente não foram protegidos de forma alguma, e apenas com o tempo mitigações foram adicionadas ao Windows que exigem verificações de integridade e autenticidade dos dados enviados. Portanto, hoje o usuário de qualquer protocolo utilizado pode configurar o estado dos mecanismos de verificação de integridade e assinatura de solicitações e respostas.

Por exemplo, aqui está parte da lista de protocolos que podem usar o NTLM como método de autenticação:
RPC
PME
http
LDAP
IMAP
SMTP
POP3
...
Vale ressaltar também que os protocolos listados acima podem ser utilizados pelo software cliente instalado no sistema operacional e também podem se tornar alvo de um ataque. A propósito, se falamos de software que pode ser atacado por meio do Relay, podemos nos lembrar de um exemplo interessante.

Um uso interessante de ataques de retransmissão
Provavelmente, um dos primeiros ataques de retransmissão relativamente simples e fáceis de usar para escalonamento de privilégios é o Hot Potato. Sim, o ataque é bastante antigo, mas o método subjacente apenas demonstra que o uso de ataques de retransmissão, mesmo em uma máquina local, pode trazer muitos benefícios.

A essência do ataque é que o atacante precisa cumprir várias condições:
Forçar o sistema a solicitar WPAD
Alterar endereço para WPAD 127.0.0.1
Envie seu próprio WPAD
Autenticar em nome do sistema operacional
Visualmente, todo o algoritmo se parece com isso:

https://forumupload.ru/uploads/001b/c9/09/2/t514262.png

HotPotato

Claro, o conjunto de vulnerabilidades que tornava tão legal obter os privilégios do usuário SYSTEM foi corrigido no 16º ano. No entanto, para escalonamento de privilégios em sistemas Windows 7 que não contêm os patches MS16-077 e MS16-075, o método ainda pode funcionar.

Os ataques de retransmissão para obter privilégios elevados ainda estão evoluindo hoje, uma lista de Potatos conhecidos pode ser encontrada abaixo:

https://github.com/foxglovesec/Potato

https://github.com/breenmachine/RottenPotatoNG

https://github.com/decoder-it/juicy-potato

https://github.com/decoder-it/juicy-potato

https://github.com/antonioCoco/RoguePotato

https://github.com/CCob/SweetPotato

https://github.com/micahvandeusen/GenericPotato

https://github.com/decoder-it/LocalPotato

https://github.com/BeichenDream/GodPotato

Para cada ataque, você pode escolher o sistema operacional Windows da versão vulnerável.

prática de revezamento
Então, depois de dar uma olhada em ataques de retransmissão, vamos tentar realizar um ataque HTTP-> LDAP. Para isso precisamos:
O Windows Server Core 2016 é um controlador de domínio.
Windows Server 2016 Desktop Experience - um servidor no AD (você pode torná-lo um controlador, você pode apenas um servidor no AD).
Ubuntu Server 20.04 como o sistema que realizará o ataque.
Ferramentas no sistema Ubuntu Server 20.04:
embalar
mitm6
Os ataques de retransmissão, em que o LDAP se torna o protocolo de comunicação final, são complicados pelo fato de que este último, mesmo na configuração padrão, pode exigir uma confirmação de integridade especial, sem a qual o sistema não se conectará e interagirá. Portanto, um ataque SMB-> LDAP só pode ser realizado com o seguinte resultado:

https://forumupload.ru/uploads/001b/c9/09/2/t646481.png

Comandos smbToLdap

da imagem:

ntlmrelayx.py -t ldap://192.168.56.101 -smb2support

Algo pode ser feito sobre isso? Sim, mas é necessário que a configuração de Sign forçado para interação LDAP não esteja definida no servidor (não é definida por padrão). Assim, podemos recorrer a uma ligeira modificação do pedido, é bastante simples fazê-lo através da flag ntlmrelayx - remove-mic.

Remove-mic é um sinalizador que simplesmente removerá o parâmetro Message Integrity Check dos dados enviados pelo cliente. Vamos tentar:

https://forumupload.ru/uploads/001b/c9/09/2/t879476.png

removeMicSMBToLdap

Parece funcionar.

Agora vamos tentar fazer o Relay HTTP->LDAP, a complexidade desse ataque é essencialmente a mesma do anterior, a única diferença é rodar ntlmrelayx, ao invés de smb você precisa escrever ldap. Para este ataque, vale lembrar que iniciar a autenticação para o servidor a partir do powershell ou simplesmente chamar o Relay server não é suficiente, você precisa do NTLM SSP para realmente iniciar o processo de autenticação. Na maioria dos casos, Relay HTTP->LDAP é feito com um pouco mais - o servidor Relay solicitará a senha do usuário.

Abaixo está um exemplo de tais ações

https://forumupload.ru/uploads/001b/c9/09/2/t382004.png

HTTPToLDAPPassword

Acontece que, se o usuário não inserir um login e senha, um milagre não acontecerá, portanto, essa pode ser uma opção de retransmissão mais complexa

https://xss.is/proxy.php?image=https://habrastorage.org/r/w1560/webt/ec/-w/lv/ec-wlvmw62kpiijol9cs55uyis8.png&hash=bfb0963ca999b8a729e277da0e04c245

HTTPToLdapRelay

A última variante do Relay que eu gostaria de analisar de forma prática é HTTP->RPC. O protocolo RPC é interessante porque permite acessar não apenas aplicativos padrão, como servidores da Web, mas também "comunicar" com o sistema operacional. Veja como é o ataque:

ntlmrelayx -t rpc://192.168.56.101 -c "echo 'test' >> C:\test.txt"

https://xss.is/proxy.php?image=https://habrastorage.org/r/w1560/webt/vc/y2/uz/vcy2uzvrgf3stoqbjuykaeigy38.png&hash=9a1df54c7a493e075d3feb2809d448f2

ntlmrelayxRPC

E verificando o resultado:

https://xss.is/proxy.php?image=https://habrastorage.org/r/w1560/webt/rm/vr/fq/rmvrfqhunkllxfaop0znac-lj7y.png&hash=6b3783cd76bb8265a9479dc5efbaf145

relayResult

A propósito, além de executar comandos e criar um usuário do qual agora você pode obter uma cópia do banco de dados com hashes de senha do usuário, você também pode coletar dados sobre o Active Directory

https://xss.is/proxy.php?image=https://habrastorage.org/r/w1560/webt/vi/ps/ki/vipskitejfqfsdpzki3xfi4c5bu.png&hash=58722bfbfb8ec1847b130f0808f28cba

ADData

No próximo artigo, tentaremos entender as versões mais recentes dos exploits Potato e forçar sistemas sem interação do usuário.

0

2


» COVIL HACKER » Vulnerabilidades de rede » Artigo ataques de retransmissão


|