Conferência DEFCON 20. Capture em 60 segundos: de uma conta de convidado a um administrador de domínio do Windows. Parte 1

Olá, sou Zach Feysel, falo rápido, se for rápido demais, você pode me atrasar. Durante o dia, sou penteado, à noite sou DJ e fotógrafo, posso ser encontrado no Twitter usando o apelido @zfazel. As pessoas sempre me perguntam sobre diplomas. Eu não sou uma dessas pessoas que listam vários diplomas, então é melhor você me julgar com base nesta apresentação, e não pelo número de certificados que tenho.



Um comentário sem vergonha: temos pouca concorrência aqui, agora os caras de Chicago estão na pista 4, somos todos de Chicago, levante rapidamente suas mãos que está aqui de Chicago. Então, acho que perdi a aposta. Estarei como DJ esta noite na piscina. Se você estiver livre, seja bem-vindo à batalha com Kate Myers. Depois disso, voltarei a Chicago para outra conferência sobre hackers. No ano passado, 500 pessoas compareceram, este ano esperamos que haja mais convidados. Meus 312 funcionários também estarão lá, mais informações sobre esta conferência podem ser encontradas em thotcon.org.

Portanto, para não perder tempo: falaremos sobre uma alternativa ao ataque Pass-the-hash chamado NTLM-Relay, sobre um novo conjunto de ferramentas para transmissão entre protocolos de retransmissão de protocolo cruzado para solicitações de autenticação NTLM, sobre novos métodos de autenticação automática de clientes e sobre novos fins para os quais você pode usar o Pass-the-hash.
Vamos começar com o NTLM, para aqueles que não sabem o que é o NTLM 101, o ponto todo pode ser declarado em menos de 10 minutos. Então, o que é LM / NTLM? É um repositório de senhas e um protocolo de autenticação de rede desenvolvido pela Microsoft para uso no Windows. Porra, meus slides estão fora de ordem! Portanto, o hash LM é um formato para armazenar senhas de usuário com menos de 15 caracteres, a senha é dividida em 2 partes de 7 bytes e é convertida em maiúsculas. Espero que você possa ver como são os hashes LM e NTLM. Não vou perder tempo dizendo como o LM é ruim e fraco, todos vocês sabem disso e, se não, pesquisam no Google.



Um hash NTLM geralmente diferencia maiúsculas de minúsculas, tem um comprimento ilimitado, não é dividido em grupos de caracteres e é um pouco mais forte que o LM, mas também não é sem problemas. Agora vou falar sobre eles. A primeira vulnerabilidade é a possibilidade de um ataque Pass-the-hash, que permite que um hacker efetue login em um servidor remoto que usa autenticação de cliente com base nos protocolos NTLM / LM. Desculpe, pessoal, eu misturei os slides, eu os fiz 5 minutos atrás, em suma, LM é uma porcaria.

Então, o que é autenticação NTLM? Esta é a autenticação de rede para serviços remotos. Ela é necessária para provar que você realmente é o que você se chama. O serviço geralmente é executado em um computador separado, onde você deseja acessar os recursos oferecidos pelo serviço, por exemplo, um servidor de arquivos é um serviço e arquivos são recursos. Em um minuto, veremos quais são esses serviços.

Podemos ficar confusos quando falamos sobre NTLM v1, v2, NTLM 2, assinado ou não, por isso vamos examinar rapidamente a autenticação NTLM. Durante a autenticação, três tipos de mensagens são enviadas.



O tipo 1 é a solicitação do cliente ao servidor para estabelecer um contato, algo como "Quero me autenticar". Você vê o pacote em pedaços, capturado pelo Wireshark, há sinalizadores para dar suporte à autenticação, o nome da estação de trabalho e seu nome de domínio.

A mensagem do tipo 2 é uma resposta do servidor. Se você notou na mensagem do Tipo 1 que ainda não sabemos quem é esse usuário, ele apenas pediu para se conectar ao servidor e deseja descobrir se a solicitação é suportada.



Você vê aqui a resposta do servidor NTML Challenge como um conjunto de números que muda sempre. A captura de tela mostra uma resposta estática que pode ser usada para criar "tabelas arco-íris". Então, o servidor responde com uma mensagem do segundo tipo: “é isso que eu apoio, aqui está o meu nome de domínio, aqui está o nome do meu servidor”. Esta resposta é usada para "salgar" o hash da sua senha, portanto, sempre que uma resposta única for obtida, você não poderá repeti-la várias vezes com a mesma solicitação.

Mensagem do tipo 3 - esta é a mensagem de autenticação do cliente.



Essa é a resposta do servidor, que é o hash da senha do hash NTML, juntamente com o nome de usuário, o nome da estação de trabalho e o nome do domínio e sua chave de sessão, se você assinar a sessão.

É a versão NTML 1. A versão 2 da NTML é muito semelhante a ela, mas há parâmetros adicionais adicionados na senha de resposta e na chamada do cliente para proteger contra o uso de "tabelas arco-íris", ou seja, o cliente usa um elemento de aleatoriedade contra elas.

Outra coisa sobre a qual precisamos falar é a autenticação integrada do Windows. É necessário para que cada vez que você não precise entrar novamente no sistema com uma senha, a fim de usar recursos e serviços. Se você estiver conectado a um servidor de domínio ou a um servidor Web interno, o Windows não solicitará a senha, apenas solicitará uma API e receberá informações que o sistema deve usar para autenticação.
No contexto da segurança local, o HTTP protege usando zonas de segurança confiáveis, sites confiáveis ​​ou sites locais, verificando apenas um nome de domínio com uma única palavra. Vou tentar atualizar rapidamente sua memória. Um domínio de uma palavra primeiro procura um nome DNS nos servidores DNS, depois verifica seu host ou nome de host DNS e o passa de volta. Ele verifica a estrutura do seu nome completo e executa o NBNS, que é a solicitação de transmissão para esse nome de domínio. De fato, ele pergunta à rede: “ei, estou procurando um nome , você conhece alguém com esse nome?”, Distribuindo essa solicitação pela rede local no modo de transmissão multimídia MBNS.

Como eu disse, como usamos o protocolo SMB em todos os lugares, não há restrições, apenas temos autenticação automática usando SMB. Isso causa alguns problemas.

Considere o método Pass-the-hash. Pode ser visto pelos protocolos que o NTML não usa a senha original para autenticação, portanto, tudo o que precisamos é do próprio hash NTML. Podemos acessar o hash NTML usando várias ferramentas do Windows, ou seja, extrair esse hash do armazenamento local ou da memória. Tudo isso foi descrito em outros discursos, apenas lembro rapidamente a essência da questão para mostrar as diferenças entre os dois métodos.
O fato é que, geralmente, para esse passe-de-hash, você precisa acessar no nível de administrador do sistema local, porque com uma conta de convidado, você não terá acesso ao armazenamento local ou à memória local.

Então, o que é retransmissão NTLM e como ele é diferente do método Pass-the-hash? Eles me dizem constantemente: “Ah, você está falando sobre Pass-the-hash!”, E eu respondo: “Não, estou falando sobre a retransmissão NTLM!”. A diferença é que a retransmissão NTLM não requer privilégios de administrador para acessar a rede ou o sistema. De fato, você se conecta à rede de dentro ou de fora e começa a trabalhar como convidado. Não há credenciais, não há acesso ao sistema, apenas a solicitação é autenticada se você retornar aos tipos de mensagens acima 1,2,3. Não há verificação quando o host responde à sua solicitação e garante que você é você.
O que fazemos é criar um servidor fraudulento para receber solicitações de autenticação e retransmiti-las ao servidor de destino.

Vamos ouvir a história para que você entenda a essência do problema. Em 1996, quando Dominic Brezinsky descobriu uma vulnerabilidade no processo de autenticação usando o protocolo de acesso CIFS, a primeira versão do protocolo SMB. Depois disso, eles primeiro conversaram sobre a possibilidade de usar o NTLM Relaying. Em 2001, o NTLM conseguiu encontrar um buraco no SMB. Primeiro, o funcionário da Veracode, Christian Ryu (também conhecido como Dildog) disse isso em uma conferência da DefCon, e o hacker Josh Bushbinder (também conhecido como Sir Dystic) publicou um código de exploração que funciona com essa vulnerabilidade. Usamos o protocolo Telnet e a vulnerabilidade do navegador IE, onde você pode digitar telnet: // ip e se autenticar automaticamente.



Depois disso, o método de retransmissão NTLM começou a ser usado para redirecionar solicitações SMB para outros hosts ou para seu próprio host. Isso continuou até novembro de 2008, quando o Microsoft Windows corrigiu os furos onde podiam, impedindo que a solicitação de autenticação NTLM retornasse com o patch MS08-068.

Assim, perdemos a capacidade de retornar uma solicitação de autenticação ao nosso host e só podíamos encaminhá-la para outros hosts devido aos recursos de design do protocolo. Em 2008, um cara sob o apelido Grutz fez uma declaração sobre a morte do DefLon NTLM. Acho que esse foi um dos melhores desempenhos dos últimos anos, porque teve um enorme impacto no ambiente corporativo.



Ele chamou seu instrumento de nome de Pokemon Squirtle e a tecnologia - "macaco no meio" por analogia com "homem no meio". Essa ferramenta permitiu que o NTLM Relaying fosse executado via HTTP e também funcionou bem com o SMB, recebendo solicitações de autenticação.



Esta captura de tela foi tirada há dois dias e o desenvolvimento de seu aplicativo Squirtle ainda está em andamento. Decidi que todos vocês estão familiarizados com essas vulnerabilidades, cujos problemas estamos falando repetidas vezes, porque elas não podem ser consertadas de maneira alguma e se manifestar em todos os lugares. Eu pertenço ao ambiente corporativo, portanto, estou bem ciente do problema sobre o qual sempre reclamo - que os sites não fazem criptografia SSL de solicitações de autenticação, assim como eles não criptografam seus cookies. Em 2010, uma extensão do navegador Firefox chamada Firesheep foi lançada.

Você provavelmente conhece essa ferramenta para interceptar cookies HTTP não criptografados de sites populares e outras sessões de trabalho com sites via Wi-Fi ou sniffing de rede, posando como outros usuários.



Perguntei-me, de onde as pessoas tiveram vontade de criar essas ferramentas. Acontece que tudo se resume à facilidade de uso. É fácil criar um aplicativo que permita a representação de outra pessoa. Decidi começar do mesmo e criar um aplicativo que permitisse o uso do método NTLM Relaying para mostrar às pessoas que é tão simples quanto o Firesheep.



Comecei a trabalhar no NTLM Relaying para ver como o suporte a multiprotocolo é possível. Muitas pessoas falaram sobre a possibilidade teórica de tal apoio, mas ninguém a colocou em prática. Então, meu objetivo era criar o Firesheep para NTLM.
Decidi começar a aprender Ruby porque originalmente ia integrar minha exploração ao Metasploit. Em 2012, eu queria abordar esse tópico nas conferências Black Hat e DefCon, mas meu relatório foi rejeitado. Meus discursos não foram apenas rejeitados, recebi um e-mail falso que a DefCon aceitou meu relatório. Um amigo achou que seria muito engraçado me trollar, ele é um idiota. Ele tinha um amigo aqui cuja performance foi aprovada, e meu amigo pegou e me enviou o conteúdo do email dele. Não prestei atenção ao cabeçalho, que dizia “De Nikita” e entrei em pânico, percebendo que deveria falar na DefCon em uma hora e meia, mas então recebi uma carta real com uma recusa.

Você acha que isso termina a história? Não, três semanas depois, Nikita me diz: “ei, temos uma abertura no domingo, alguém se recusou a participar, você quer falar em seu lugar?” Eu pensei que era ótimo, mas então percebi que tinha muito pouco tempo antes da apresentação e comecei a codificar como um louco, tentando terminar tudo na hora certa.

Então, quais foram meus problemas? Em primeiro lugar, as ferramentas estrangeiras não podiam executar o trabalho do Pentester de que eu precisava; faltavam muito vários protocolos que poderiam retornar solicitações de autenticação. A maioria dos protocolos estava relacionada ao uso de SMB e HTTP, e nenhum deles suportava LDAP para autenticação MySQL, ou pelo menos testava desktops remotos, VPNs e similares.

Outro problema foi que todos encaminharam cada solicitação para o mesmo destino. Ou seja, recebemos dados do usuário, contas de computador e enviamos toda a autenticação para uma única finalidade; portanto, não conseguimos identificar os usuários antes da autenticação, ou seja, antes de receber uma mensagem do Tipo 3. Se você se lembrar dessas mensagens do tipo 1,2,3, a mensagem do Tipo 2 é a resposta do servidor. É exclusivo para cada sessão, e eu não sei quem são esses usuários até que eles enviem a última mensagem do Tipo 3, e não sei qual resposta e de qual servidor o usuário é. Eu estava interessado em saber por que não existem ferramentas que fariam isso, então examinei mais de perto protocolos como SMB e HTTP, depois falaremos sobre isso com mais detalhes.

O Windows 8 e o Windows 2012 ainda oferecem suporte ao NTLM por padrão. Isso é assustador, porque sabemos da vulnerabilidade desses protocolos, mas o NTLM não desapareceu. Portanto, nós, como manifestantes, informamos às organizações que elas devem se proteger de tais ataques.
Então, eu queria resolver esse problema e criei uma ferramenta chamada ZackAttack. Eu sei que parece feio, mas nós passamos por vários nomes, eu pessoalmente gostei mais do último - “NTLMv2? Cadela, por favor ... ".



O que está contido nesta ferramenta? Analisarei rapidamente esses slides, porque acho que você já se divertiu o suficiente. O ZackAttack consiste em vários componentes diferentes, falaremos sobre cada um deles e como eles se relacionam.

Primeiro de tudo, existe um servidor HTTP SMB - este é um servidor fraudulento que aceita solicitações de autenticação. Portanto, os clientes direcionam esse servidor, autenticam e o servidor os mantém autenticados. Em seguida, temos um conjunto de regras para operação automática.

Temos clientes para essas explorações automáticas, bem como APIs que podemos associar a qualquer aplicativo de terceiros que transfira solicitações de retransmissão de NTLM.



Por fim, temos uma geração de cargas úteis que forçam os clientes a se autenticarem automaticamente.

O que são servidores fraudulentos? Em primeiro lugar, eles autenticam os usuários e os salvam para nós; depois, mostrarei como os usamos.



Precisamos de todas essas pessoas para manter seu estado de autenticação. Existem muitas ferramentas que desativam os usuários após a primeira autenticação bem-sucedida, mas nossa ferramenta ZackAttack mantém os usuários autenticados pelo maior tempo possível. Na LAN do Windows para SMB, isso é cerca de 30 vezes antes da conexão ser desconectada. Portanto, precisamos descobrir quem é esse usuário, mantendo-o autenticado.

A primeira solicitação de autenticação é uma chamada estática do tipo 112233. Aqueles que estão envolvidos no pentesting sabem que esse é um tipo de tarefa para "tabelas arco-íris". Como eu disse, precisamos descobrir quem é esse usuário, mas não sabemos disso até chegarmos à mensagem do Tipo 3, por isso enviamos várias chamadas. Eu chamo isso de "elemento de Alzheimer" quando o sistema esquece quem é o usuário e pede que ele se autentique a cada vez para se conectar sem fechar a sessão.

A razão pela qual fazemos isso é porque o HTTP, o WPAD e outras solicitações nem sempre suportam cookies; além disso, a identificação SMB via IP ou porta de origem A Porta de Origem não funcionará se você tentar fazer isso remotamente pela Internet.

Portanto, para o servidor HTTP, usamos um redirecionamento 302 com o parâmetro Keep-Alive, que nos permite manter a sessão aberta enquanto o soquete está fechado e, após a autenticação, sabemos quem eles são e o sabemos até o final desta sessão.

Com o SMB, foi mais difícil, tive que escrever um servidor SMB personalizado, é um pouco complicado, mas funciona de qualquer maneira. Não vou me aprofundar no mecanismo de autenticação do protocolo SMB, porque levará algumas horas, então explicarei brevemente. Depois que o servidor recebe a solicitação de autenticação, parece esquecer quem é esse usuário e diz: "Oh, olá, prazer em conhecê-lo!" "Legal, eu quero me conectar!" "Espere, e quem é você?" E novamente requer uma solicitação de autenticação.

Portanto, precisamos receber solicitações de autenticação que chegam aos servidores HTTP e SMB. Muitas pessoas perguntam como realizamos o ataque do “homem do meio”. Existem várias maneiras diferentes de fazer com que as pessoas se autentiquem no nosso servidor e depois as enviem para fazer outras coisas. Portanto, considere qual é a carga útil em nossa ferramenta.

Primeiro de tudo, esse é o WPAD - um protocolo para configuração automática de proxy, que permite determinar a localização do arquivo de configuração. No Windows, quando você tenta conectar, como você sabe, uma janela aparece com uma pequena marca de seleção “encontrar automaticamente minhas configurações de conexão” que ativa o WPAD. Esse protocolo envia solicitações para verificar as transmissões de DNS e de rede, para que você possa falsificar essas solicitações e responder a elas.

Por padrão, no Windows, o computador autentica automaticamente o servidor WPAD via HTTP com as credenciais do usuário atual.

18:00 min

Conferência DEFCON 20. Capture em 60 segundos: de uma conta de convidado a um administrador de domínio do Windows. Parte 2



Obrigado por ficar conosco. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um desconto de 30% para os usuários da Habr em um análogo exclusivo de servidores básicos que inventamos para você: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps da US $ 20 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 núcleos) 10 GB DDR4 240 GB SSD de 1 Gbps até a primavera, gratuitamente, ao pagar por meio ano, você pode fazer o pedido aqui .

Dell R730xd 2 vezes mais barato? Somente nós temos 2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?

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


All Articles