Conferência DEFCON 20. Capture em 60 segundos: de uma conta de convidado a um administrador de domínio do Windows. Parte 1O bom é que podemos entrar na rede local falsificando o DNS. E a engenharia social que leva em consideração as preferências e inclinações do usuário? Os pentesters sabem que no IE você pode colocar tags de arquivo de imagem, por exemplo, no formato .jpg, no caminho de rede UNC, e então o IE transferirá isso de volta para o Windows e se conectará automaticamente à pasta de rede, tentando obter a imagem solicitada ou outra coisa, por exemplo , JavaScript, iFrame etc. Então, hoje, o IE tem autenticação automática.

O mesmo pode ser feito no Firefox e Chrome, embora as pessoas pensem que esses navegadores são mais seguros. Essa captura de tela mostra o console de erros do Firefox, que afirma que o navegador não pode baixar esse arquivo de imagem da rede pública, pois a política de segurança impede o download de arquivos que não estão no contexto de segurança do navegador. Um recurso interessante de nossa ferramenta é que os navegadores Firefox e Chrome podem ser forçados a baixar arquivos, simplesmente enviando cabeçalhos HTTP para forçar o Tipo de Conteúdo: application / force-download a baixar e, em seguida, abrindo esses arquivos da pasta Temp ou diretamente da área de trabalho. Assim, definimos o contexto de segurança do arquivo e ativamos a autenticação automática no SMB geral. Agora, você pode forçar os usuários a se autenticarem no seu servidor fraudulento.
Mas e se eles não clicarem em "enviar arquivo" ou abri-lo na pasta Temp? Nesse caso, você pode fazer com que os usuários se autentiquem automaticamente simplesmente ao visualizar uma página HTML em um navegador. Para fazer isso, os plug-ins devem estar conectados ao Firefox e Chrome. Minha atenção foi direcionada ao plugin QuickTime, que geralmente é instalado por padrão pelos usuários. Sei que existem dezenas de plugins diferentes, mas na maioria das vezes você encontra pessoas com o iTunes nos seus iPhones e instala o QuickTime. Examinei a lista de recursos do QuickTime e me perguntei como parafusá-lo no meu servidor de rede fraudulento para forçar as pessoas a se autenticarem, digitando seu nome de usuário e senha.
Nós pensamos um pouco e decidimos que você pode inserir uma lista de reprodução no caminho da rede UNC e, em seguida, os usuários se autenticarão e ignorarão automaticamente o contexto de segurança local. Precisamos trabalhar um pouco mais nos outros dois plugins, mas, por enquanto, o QuickTime faz um excelente trabalho de nossa tarefa.
Outra maneira de forçar as pessoas a se autenticarem automaticamente em nosso servidor é através de e-mails. Algumas pessoas sabem que no Outlook você pode usar email em HTML ou emails usando um modelo HTML. Se tivermos um recurso de rede compartilhado, podemos inseri-lo em um email e, se o usuário abrir esse email, ele se conectará automaticamente a esse recurso e o autenticará.
Para nossos propósitos, você pode usar arquivos no formato .docs. Qualquer documento pode ser usado da mesma maneira que uma imagem ou um arquivo HTML inserido em um UNC, cuja abertura se conectará automaticamente a um compartilhamento de rede.
Não se esqueça do arquivo desktop.ini. Isso não é muito conhecido, mas você pode gerar esse arquivo para instalar recursos da área de trabalho, como ícones e papéis de parede, e colocá-lo em uma pasta “compartilhada”. Nesse caso, novamente, o sistema se conectará automaticamente para receber esses ícones e “efetuar login” usando a conta de usuário atual.

Da mesma maneira, você pode alterar as configurações do arquivo de atalho com a extensão .lnk para conectar-se automaticamente ao recurso.
Assim, nossa ferramenta cria rápida e facilmente automaticamente esses arquivos .ini ou HTML.
A última coisa que quero falar é sobre o MITM, ou "o homem do meio". Você pode redirecionar solicitações de autenticação NTLM ou incorporar conteúdo HTML nas páginas, pois a ferramenta não funciona e, portanto, ajudá-la a fazer seu trabalho. Dessa maneira, você pode forçar os clientes a se conectarem a um servidor fraudulento para implementar o NTLM Relay. Existem outras ferramentas que permitem executar o NTLM Relay via SMB ou HTTP e forçar os usuários a se autenticarem.
Outro recurso interessante do Squirtle é a capacidade de torná-lo um ponto de partida para a criação de solicitações de API, onde você pode usar qualquer ferramenta que escreve para receber mensagens do tipo 2 e 3. A mensagem do tipo 3 é a última solicitação de autenticação, você deve enviar uma mensagem da API para recebê-la. Digite 2 e recupere-o. Eu escrevi rapidamente uma API que permite que você use qualquer conjunto de ferramentas que desejar, você pode alterar o código-fonte e usar servidores fraudulentos para se conectar e assim por diante.
No entanto, se você é um usuário de teste ou testador, precisa de alguns relacionamentos, interação reversa. Portanto, nossa ferramenta inclui um conjunto de regras. Eu já disse que todas as ferramentas existentes enviam usuários para a mesma fonte e precisamos determinar quem são esses usuários. Eu queria fazer isso com um clique, para que, como eu disse, seria possível obter a autoridade de um administrador de domínio em 60 segundos.
Eu escrevi nas regras de nossa aplicação com base no fato de que os usuários pertencem a grupos e as metas pertencem a grupos de metas.
Assim que descobrimos que o usuário pertence a algum grupo e pode acessar algo com conexão automática, não precisamos forçá-lo a se conectar, esperar e esperar que ele retorne. Estabelecemos uma regra simples, mais adiante mostrarei na interface do usuário que, se um usuário entra no grupo X, um determinado módulo Y é usado para executar a ação Z em relação aos grupos-alvo T. Depois de alguns segundos, demonstrarei como isso funciona.
As regras também consistem em verificar imediatamente as solicitações da API, verificar as regras gerais e repetir isso até que ocorra um tempo limite. Assim que o tempo limite ocorre, você precisa atender com uma chamada estática e manter o estado de autenticação, não permitindo que o usuário se desconecte.
Podemos usar o SMB para conectar ao SMB, HTTP para conectar ao HTTP, HTTP para conectar ao SMB e assim por diante, implementando a retransmissão NTLM. O problema é que as pessoas praticamente não usam muitos outros protocolos, então decidi examinar mais de perto protocolos como LDAP e MSSQL.
Falarei sobre o LDAP um pouco mais tarde, mas por enquanto notarei que o MSSQL é uma coisa interessante, porque podemos obter um banco de dados, podemos acessar os dados, e isso é incrível.

Como estamos lidando com clientes, queremos que as ações sejam executadas automaticamente imediatamente após a conexão. Portanto, listamos usuários e grupos usando o Metasploit, que foi apresentado na conferência BlackHat deste ano. Assim, como pentester, tive acesso a arquivos compartilhados, tive a oportunidade de executar comandos e tomei posse de informações sobre usuários e grupos-alvo, sem privilégios de administrador. No entanto, com tudo isso, não consigo me conectar aos controladores de domínio. O motivo é que, por padrão, a maioria dos controladores de domínio tem uma assinatura SMB. Para aqueles que não estão familiarizados com a assinatura SMB, direi que esse é o mecanismo de segurança do protocolo SMB, também chamado de assinaturas de segurança. Ele usa o hash NTLM original para assinar a sessão e assina cada pacote e, se não houver assinatura, ele será desconectado. Portanto, por padrão, não podemos aplicar a Retransmissão NTLM a um controlador de domínio. Isso me irritou, então decidi descobrir como era fácil e rápido chegar a esse controlador. Vamos voltar alguns slides.

Verificou-se que o LDAP está ativado por padrão no controlador de domínio, o que permite o uso da autenticação NTLM, o que é ótimo. Mas não foi possível alterar a senha, porque, como regra, alterar a senha ou adicionar um usuário requer SSL e o SSL é incluído no LDAP se o domínio tiver um certificado de CA. O que fizemos foi inserir em nossa ferramenta que você pode alterar senhas de usuários, excluir e adicionar usuários, listar domínios, extrair hashes de usuários ativos da memória, fazer login no controle de domínio e fazer outras coisas legais. O melhor é que você pode adicionar usuários a grupos sem SSL e outras coisas; assim, como um provedor, você pode obter e conectar contas de outros usuários, adicioná-las ao grupo de administradores de domínio, se tiver privilégios de administrador, e assim por diante.
Voltar para SMB. Durante meu voo de 4 horas aqui de Chicago, pensei em usar o proxy SMB SOCKS para nossos propósitos. Quem sabe está ciente de que esse protocolo permite que os aplicativos se comuniquem através de um firewall que bloqueia uma conexão direta usando um servidor intermediário ao qual os dois clientes podem se conectar. Ou seja, o proxy SOCKS envia dados limpos de um cliente para outro e vice-versa. Portanto, esse proxy pode substituir pacotes NTLM por dados retransmitidos.

Usando HTTP, podemos vincular servidores do SharePoint a sites internos. Algumas pessoas acreditam que não haverá problemas com o NTLM porque você está em uma rede interna, mas e as redes externas? Às vezes, também existem servidores do SharePoint, mas não com muita frequência. Eu pensei que muitas organizações estão abertas ao acesso externo, suportam NTLM e permitem a troca de serviços web. Para aqueles que não estão familiarizados com o Exchange Web Services (EWS), direi que eles são um tipo de API HTTP, que geralmente está localizada no mesmo servidor do Outlook Web Access. Por padrão, eles usam o método de autenticação HTTP Negotiate, que suporta NTLM, para que possamos executar uma retransmissão HTTP externa para o serviço localizado no EWS.
Isso é preocupante, porque do lado de fora você pode acessar sua correspondência, contatos, calendário de eventos e definir suas próprias regras para e-mail usando os pontos de conexão do HotSpot. Você pode acessar o servidor EWS pela Internet se eles não tiverem regras de firewall para conexões de saída que não permitem a conexão com um servidor SMB fraudulento e a autenticação automática. E tudo isso é possível devido ao fato de todos terem um telefone celular conectado aos serviços EWS e sincronizado com eles.
E agora eu preciso de uma bebida, porque neste lugar eu queria começar uma demo. Portanto, este slide mostra como é a interface gráfica do usuário do meu aplicativo ZackAttack. Vou rolar a página abaixo para ver as configurações de ações, objetivos, grupos-alvo e grupos de usuários.

Assim, você pode ter uma idéia de sua funcionalidade e de quão poderosa ela pode ser. Um servidor HTTP fraudulento, um servidor SMB fraudulento e um servidor HTTP de gerenciamento estão em execução no momento. O slide mostra ainda em quais grupos os usuários estão.

Ele mostra quem e quando conectado à rede, para que você possa ver qual usuário se reconectou.

As contas do sistema e as contas dos usuários existentes são mostradas em vermelho à direita, de onde você pode listar metas via SMB com um clique, receber emails dos Serviços Web do Exchange, usar o shell de comando se for administrador de uma sessão, acessar arquivos compartilhados, SharePoint e assim por diante.

Como eu disse, podemos criar regras e adicionar usuários a grupos por enumeração automática ou por criar grupos manualmente, por exemplo, criando um grupo chamado "moo".

Algo que não posso fazer, como eu disse, os deuses da demonstração não gostam de mim. Teremos que voltar e ajustar algo no programa.

Desculpe pessoal, mas este é apenas um lançamento alfa, eu escrevi esse código sozinho em 3 semanas. Agora vou adicionar um grupo chamado "yar", agora você vê que esses dois grupos apareceram na parte inferior, no qual o usuário selecionado foi adicionado.

Como eu disse, também podemos listar vários grupos de usuários de um controlador de domínio, esta é a guia "Grupos de usuários" e criar regras para autenticação automática usando a guia "Regras de ataque" - "Regras de ataque".
Você vê aqui os usuários do grupo Yar recém-criado que podem ser conectados aos Serviços Web do Exchange para fins específicos dos grupos de destino e também pode adicionar qualquer endereço IP, por exemplo, 10.1.10.250 ao grupo de destino.

Assim que alguém do grupo de usuários recebe uma solicitação de autenticação, nós nos conectamos automaticamente ao EWS e retiramos todas as letras da Caixa de entrada, da pasta Rascunhos, e podemos adicionar facilmente outra pasta, como a pasta Enviados.

A melhor parte dessa ferramenta é que, após a autenticação, a sessão é mantida aberta durante toda a conexão com o servidor fraudulento e todas essas ações são executadas. Portanto, não precisamos nos autenticar novamente para receber e-mails recebidos.
Como temos 30 solicitações vindas do sistema, primeiro podemos estabelecer cerca de 30 regras e, em seguida, executar uma variedade de ações nessa conexão específica. Como eu disse, podemos repetir todas essas etapas para todos os usuários e para todos os fins desta conexão ou para fins específicos.
Ao mesmo tempo, podemos gerar uma carga clicando na guia Cargas de autenticação. A partir daqui, você pode criar arquivos HTML para determinar o OC do usuário e usar um dos 3 métodos para forçar o navegador a se autenticar automaticamente.

Aqui, você pode criar o desktop.ini para fazer upload de arquivos para pastas compartilhadas e usar o gerador de arquivos para injetar o Caminho UNC em um arquivo xml .doc, criar arquivos de atalho .lnk e arquivar arquivos Zip, assim como criar automaticamente arquivos de correio XTML. Tudo isso é feito da maneira mais simples possível, com a ajuda do Firesheep e do NTLM Relaying.
Por fim, na guia Resultados + Logs, minha ferramenta rastreia os hashes do usuário como antes da autenticação estática e, assim, você pode tentar quebrar senhas.

Portanto, essa foi uma demonstração dos recursos do ZackAttack. Então, como nos protegemos disso? A defesa é limitar a superfície do ataque.

Cada um tem seus próprios métodos de defesa contra ataques desse tipo. As pessoas sugerem o uso da versão 2. do NTLM. Minha ferramenta suporta esta versão, mas não há diferenças significativas entre a versão 2 e a versão 1.
Você pode instalar um firewall na porta de saída 445, que o protegerá de qualquer pessoa que envie cargas úteis fraudulentas que forçam a autenticação automática. No entanto, isso não protege contra a penetração através de dispositivos móveis.
Você pode configurar diretivas de grupo para restringir o uso de programas GPO no Windows 7 para limitar os objetivos de autenticação NTLM. Todo mundo afirma que a melhor solução é o Kerberos. No entanto, o problema é que a organização precisará mudar tudo para o Kerberos, e isso não funcionará, porque há muitas coisas que não oferecem suporte ao Kerberos. Outra coisa é que, se você habilitar o Kerberos, não será capaz de oferecer suporte ao NTLM, o mesmo vale para assinatura, pois para aqueles que você não conhece, será necessário assinar cada pacote com um hash de senha original. Assinando LDAP, assinaturas SMB, autenticação HTTP avançada - tudo isso não é suportado pela Cerberus; portanto, as pessoas se enganam ao pensar que as assinaturas resolverão todos os problemas. Se você aplicar assinaturas obrigatórias, isso pode desativar várias coisas.
Portanto, para proteger a organização, você deve manter algum equilíbrio. Se você é um usuário final, geralmente não se preocupa com essas coisas, mas se é um administrador de sistemas de uma corporação, o maior problema para você será a necessidade de se recusar a usar o NTLM.
Como o Windows 8 e o Windows 2012 ainda oferecem suporte ao NTLM por padrão, levará algum tempo para desistir disso e continuar usando o Kerberos, e espero que minha ferramenta ajude. Será publicado na terça-feira, 31 de julho, assim que eu chegar em casa em
zfasel.com/tools . Também está disponível no DVD desta conferência, bem como nos meus slides. Se você quiser me dizer o quão ruim foi meu desempenho e minha demonstração, envie e-mails para dc20@zfasel.com ou pesquise no Twitter meu apelido @zfasel.
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?