Conferência DEFCON 18. Você gastou todo esse dinheiro, mas eles continuam tendo você. Parte 2

Conferência DEFCON 18. Você gastou todo esse dinheiro, mas eles continuam tendo você. Parte 1

Eu uso uma coisa interessante de Gary O'Leary-Steele chamada Unicod-fun, que é muito boa para um utilitário escrito em Ruby. Você sabe que minhas ferramentas devem ser escritas exclusivamente em Python, então traduzimos isso para Python. Agora podemos aplicar uma codificação diferente para ferramentas projetadas para atacar aplicativos da Web e que fazem parte da estrutura WAF.



A estrutura WAF inclui WAF Fun e WAFWOOF e opera com base em multicodificação e informações recebidas do proxy, e pode funcionar através de proxies Tor ou GLib no processo de fazer todas essas coisas diferentes. Portanto, isso é realmente útil para obter as informações necessárias.

Conversamos sobre atacar sites por meio do Tor; falei sobre isso em detalhes no ano passado. O slide a seguir mostra os scripts para esse ataque:

alias hide='su -c "/home/j0e/dumbscripts/hide.sh"' $ cat /home/j0e/dumbscripts/hide.sh #!/bin/bash # Startup privoxy /usr/sbin/privoxy /etc/privoxy/config # Start Tor /usr/bin/tor $ hide 

Também deve ser mencionado o plugin, que é incorporado como um botão Tor no navegador Firefox.
Não sei se algum de vocês trabalhou com o DotNet Defender WAF usado por essas malditas empresas. Descobrimos que ele é capaz de proteger o servidor contra injeção de SQL. No slide, você vê o resultado da geração de um ataque de script entre sites - o dotDefender bloqueou nossa solicitação.



Em seguida, você vê uma tentativa de contornar esse tipo de proteção usando a injeção SQL sem nenhuma codificação. E o DotNet Defender não podia fazer nada a respeito.



O fato é que ele bloqueia apenas certas injeções de SQL, contendo principalmente a palavra selecionar. Este é o auge da tecnologia de segurança - bloqueie a palavra selecionar. Se você estiver criptografando em Unicode, poderá passar por esse defensor, para que eles corrigissem essa vulnerabilidade no ano passado, mas não fizeram nada contra outros padrões de codificação. Portanto, se você usar uma codificação diferente, poderá ignorar facilmente o DotNet Defender. Isso me permitiu redefinir o hash da senha do administrador sem nenhuma codificação.



Sinto muito, pessoal do DotNet Defender, mas você precisa consertar suas coisas.

Então, o importante que consegui fazer foi penetrar na LAN via Internet. Isso é bastante difícil, mas ainda é possível. Por isso, usei uma ferramenta simples no Perl, tive que suportá-la, apesar de ser um seguidor ardente do Python. Funciona muito bem, graças a isso você pode carregar a interface de rede shell netcat ou meterpreter através de um túnel DNS. Este é realmente um ótimo projeto e uma nova atualização foi lançada recentemente.



A seguir, é uma maneira de injetar SQL usando a ferramenta Mapa do SQL. Essa ferramenta, escrita em Python, permite fazer o download do os-shell ou do meterpreter. Ele também possui seu próprio sistema operacional, com o qual você pode mexer. Assim, você pode inserir os comandos necessários para controlar o sistema, configurar o netcat ou entrar diretamente no shell meterpreter, por isso uso essa ferramenta com bastante frequência.

E agora vamos passar para material mais importante. O nome oficial desta parte do relatório é não se deixe enganar! Não seja um tigre!



Tudo o que faço é não ser pego. Quem é o tigre? Ele é um punk, punk, quem concorda comigo? Se eu valho um bilhão de dólares e você é uma estrela pornô, sabe que tenho pessoas que estão prontas para matá-lo, se você deixar escapar. Você concorda comigo?

Portanto, o mais importante para não ser pego é definir filtros de intrusão. Muitas pessoas tentam opções diferentes. O primeiro é a filtragem do lado do cliente. Isso é ruim. Isso é ruim. E mais cinco vezes - isso é ruim! Não use scripts JavaScript ou VB ou qualquer coisa do lado do cliente para tentar filtrar a entrada que chega a um aplicativo importante. Ou, se você usar uma estrutura como J2EE que cria esses JavaScripts, precisará escrever um código no servidor que verifique se tudo o que veio do cliente está bem.



Verifique o código-fonte quanto a parâmetros que passam pelo site que podem ser filtrados usando JavaScript ou script VB e exclua-os. Salve a página localmente e exclua os scripts JavaScript ou VB apropriados ou use um proxy local, como Paros, Web Scarab, Burp Suite.

Se você acabou de fazer esse negócio com uma pessoa, lembre-se de que tudo de ruim acontece na máquina do cliente, portanto, você precisa ensinar essas pequenas lições aos desenvolvedores. Eu digo a eles: "OK, desenvolvedor, quero que você pense sobre isso, porque você colocará toda essa segurança em um laptop hacker!" Você acha que isso está certo? Portanto, pessoal, não use a filtragem no lado do cliente!

A seguir estão as restrições da lista negra. Muitas vezes, as pessoas tentam restringir o uso de caracteres especiais. Bem, digamos que você não pode enviar um sinal de igual, mais ou menos sinais e assim por diante.



Mas com relação à sintaxe SQL, você não precisa indicar que 1 = 1. Por exemplo, na solicitação http: // [site] /page.asp?id=2 ou 1 como 1, você geralmente pode evitar o uso do sinal de igual e do operador ou substituindo-os na barra de endereço pelas palavras "e" e " como ", por exemplo" e 1 como 1 "," e 1 como 2 "e assim por diante:

http: // [site] /page.asp?id=2 e 1 curtida 1
http: // [site] /page.asp?id=2 e 1 como 2

De fato, as injeções de SQL na maioria dos casos não usam caracteres especiais.
Em seguida, considere o IDS baseado em assinatura. Diga-me, qual de vocês tem uma mesa dessas no mouse pad? Se você tiver uma tabela de códigos decimais ASCII ou HEX, rasgue-a com este tapete.



O que eu aprendi ontem à noite quando estava bêbado na palmilha é que o ASCII realmente funciona! Portanto, quando você estiver lidando com o IDS e receber um alerta TCP de qualquer IP, de qualquer porta, chegando à porta do nosso servidor da Web, procure um tipo de dados especial 1 = 1. Vamos pensar, quantos hackers conseguiram entender isso? Vamos pensar sobre isso.



2 é 2? Quarenta onças igual a quarenta onças? 1 = 1 não é a única maneira de criar uma solicitação para a qual você pode obter uma resposta "true", você pode enviar uma solicitação do tipo "2 = 2", "1 <2" e assim por diante. Se as assinaturas são tão fáceis de obter, por que elas são necessárias? A resposta é para ferramentas automáticas e crianças.

O slide a seguir mostra minha visão IDS baseada em assinatura - este é o goleiro que pegou uma bola enquanto cem bolas voavam pelo gol.



O utilitário pentester chamado sqlmap ignora essa proteção que eu mostrei por padrão, e também está escrito em Python!

Uma coisa semelhante é mostrada no próximo slide. Aqui, para uma solução alternativa, usei a técnica 2 ou 2 e selecionei o usuário.



Nesse caso, apresentei toda a expressão em código hexadecimal, mas você pode fazê-lo em Unicode, utf7, utf-8, utf-16, em qualquer codificação, não importa, esse método ainda funciona e permite que você ignore muitas WAFs.

Há outro produto no campo do PHP - esse é o IDS do PHP, acho legal que agora eles tenham uma demonstração de seus recursos no site. Se você for para demo.phpids.net, poderá tentar o teste de fumaça. Este Smoketest permite que você tente todas as suas injeções de SQL, scripts entre sites ou ataques a aplicativos da Web e mostra quais assinaturas esses ataques detectam, para que você possa continuar praticando kung fu na Internet.



Por exemplo, você pode aplicar algum efeito, obter uma assinatura, tentar outra, obter outro conjunto de assinaturas e assim por diante. Você continua trabalhando e trabalhando até que esse garoto mau diga que está tudo em ordem, contornou a defesa e nada mais "fumou" você. Então, você aprimora suas habilidades de kung fu até encontrar algo que possa contornar a maioria das regras.



Agora, o Modsecurity se uniu ao PHP IDS e eles têm seu próprio teste de fumaça. Eu não o adicionei aos meus slides devido a uma ressaca matinal, mas direi que eles conseguiram combinar a regra de Modsecurity com a regra de IDS do PHP definida em uma interface da web, então basta inserir suas explorações até ignorar todas as regras. Em resumo, o IDS baseado em assinatura é apenas uma piada estúpida. Pelo menos eu não tinha clientes que conheciam esses produtos, mas eles os compraram de qualquer maneira. Mas essa é uma história um pouco diferente.

Entendo perfeitamente aqueles que são analistas do IDS e WAF. Sei que falo muito, mas sinto sua dor porque costumava fazer seu trabalho, e não há bebida suficiente no mundo para suportar o trabalho que você faz.



Portanto, a grande maioria das coisas que acabei de mostrar é feita através da rede. Como eu disse, você interage com o IDS e o IPS remotamente, carregando várias explorações. Quantos de vocês lidaram com o JBoss, um servidor de aplicativos de código aberto, sabe que a maioria dos arquivos é baixada usando-o. A injeção de SQL simplesmente codifica alguns caminhos que eu posso acessar, o que geralmente me dá acesso ao shell e à DMZ, e tento trabalhar a partir daí.

Depois disso, faço uma coisa incrível e envio um email para o cliente, porque funciona. Seu lado do cliente com a estrutura Metasploit parece maravilhoso, então você pode escolher tudo que suporta o navegador, PDF, ActiveX ou exploração de arquivos mais recente, verifique se ele inverte o shell TCP, após o que o Metasploit transforma essa mensagem em HTTPS. Tudo está ótimo, a única coisa ruim é que está escrito em Ruby. Mas a ferramenta Python SET é um nível totalmente novo de pentesting.



Esta ferramenta permite que você faça coisas incríveis. O SET foi criado por David Kennedy, do grupo ReLic, vamos aplaudi-lo por isso. É exatamente disso que precisamos para ilustrar a essência do que está acontecendo. Os hackers não examinam mais as portas da sua rede, se não estão tentando fazer isso, então, de qualquer forma, provavelmente não vão assumir o controle. Os hackers tentam fazer o download de algo malicioso usando email ou algo assim.

Portanto, é necessário que o cliente entenda que, durante o teste, é necessário testar seu sistema quanto à resistência aos efeitos de sites fraudulentos, phishing e similares. Especialmente se você se deparar com um cliente que eu tinha, ele se levantou e disse: "OK, Joe, não vou pagar por conselhos para ensinar aos funcionários da empresa como usar a rede corretamente". Portanto, você deve reproduzir todas as ameaças reais do lado do cliente para que ele entenda o quanto isso é sério.

Portanto, o próximo estágio do teste é o Ataque Pivot, ou "ataque de virada", no qual um host hackeado é usado para atacar outros hosts. O “Turning Attack” na LAN é uma parte importante do pentesting do lado do cliente.



O Metasploit oferece suporte ao Pivot e, se eu não puder fazer o download do arquivo .cab com todos os arquivos executáveis ​​que foram estaticamente compilados com antecedência, não será necessário instalar nada. Eu uso isso no meu workshop para fazer um lançamento do Pivot em uma LAN, para que eu "pule" nela e comece a me mover a partir daí.

A próxima coisa que considero são soluções gerais de segurança para a LAN. Essa falta de DHCP, ou seja, endereços IP estáticos, endereços MAC DHCP, segurança de portas, soluções NAC, são coisas que me tornam incapaz de acessar a rede. Então, o que faço se não conseguir acessar a rede?

Se o DHCP estiver ausente e os endereços IP forem estáticos, eu roubo um endereço IP válido do host. Meus filhos me ensinaram isso porque endereços IP estáticos são uma coisa incrivelmente ineficiente. Espero que você não tenha clientes que digam que vão impedir que hackers usem endereços IP estáticos. Eu faço o mesmo na presença de endereços MAC DHCP - eu roubo um endereço MAC válido. Se tivermos uma porta segura, também roubo um endereço IP ou MAC válido. Por fim, se houver soluções NAC, você pode simplesmente pegar o computador, entregá-lo e verificar seu endereço MAC ou tentar encontrar exceções no protocolo 802.1x, ou seja, dispositivos que não suportam o 802.1x, como impressoras, copiadoras, racks de CD-ROM e telefones VoIP.

Todos esses métodos funcionam para mim, e os melhores dispositivos para penetrar nas LANs são os telefones VoIP. Eu tinha muitos clientes que usavam a autorização automática de telefones VoIP na rede de voz com base no endereço MAC e na etiqueta VLAN. Assim, você pode criar uma "caixa" do Linux semelhante a um telefone VoIP e colidir com uma rede LAN de voz virtual, ignorando as soluções NAC.

A maioria dos telefones dos meus clientes precisava ser conectada diretamente ao centro de software do CallManager na DMZ interna, porque todos os centros do CallManager deveriam funcionar com o restante dos servidores, portanto minha recepção funcionou bem em toda a rede.

Existe uma coisa chamada Voip Hopper que automatiza o processo de penetração em uma VLAN de voz. Você pode baixar esse exploit do voiphopper.sourceforge.net e usá-lo para "pular" diretamente na VLAN.

Quando entro na rede, geralmente descubro quem é o administrador do domínio. No slide, você vê uma lista de comandos que eu uso: set - para descobrir informações sobre o domínio e os usuários, net view - para ver computadores da rede, domínios de usuários e outros domínios, net localgroup - para encontrar grupos locais de computadores e assim por diante.



Faço isso para descobrir quem e em quais grupos trabalha na rede para tentar atacar seus computadores. Melhor ainda, se eu conseguir um administrador local ou sistema local, a próxima coisa que faço é verificar a rede para determinar quem é o usuário específico deste computador.



Você pode usar vários scripts para inspecionar a rede e descobrir onde, em qual máquina a “caixa” do administrador está localizada. Se você "capturou" um administrador local ou um sistema local, pode "pular" na "caixa" deles e usar o shell pcexec a partir daí.



Depois que pulo para a "caixa", começo a procurar uma maneira de aumentar meus privilégios. Construir privilégios é uma coisa realmente difícil. No Windows XP, essas coisas funcionam mesmo com o service pack Sp3, que usa essa linda interface de linha de comando cmd.exe, o que é ótimo.

Quando pré-teste um banco, tive que "matar" o serviço de estrutura da McAfee, que se refere ao sistema de prevenção de intrusões HIPS. Para isso, usei o comando pskill.exe. Desabilitei a McAfee, HIPS, o interceptador e o firepm e todos os outros processos iniciados pelo sistema de prevenção de intrusões.



Outra coisa que não tive tempo de mostrar no slide é que, quando você desativa a McAfee, primeiro precisa aumentar os privilégios, e isso também funciona com relação à proteção de pontos de extremidade da Symantec. O fato é que, depois que você "mata" todos esses processos, depois de um tempo, eles começam novamente. Portanto, você precisa “soltar” os arquivos DLL na memória para parar de reiniciar a proteção. Não postei isso nos slides, mas se você se lembrar mais tarde, darei a sintaxe para esse truque.
Outra coisa que aprendi sobre a McAfee é que os arquivos na lista de exclusão aparecem com um nome específico, não com um hash ou algo semelhante. Portanto, os arquivos incluídos na lista de exclusão de antivírus da McAfee não são protegidos contra estouros de buffer e eu usarei esse fato para meus próprios fins.

A seguir, mostramos a "morte" do HIPS como um sistema com o Metasploit. Agora eles têm algo chamado getsystem, então você pode simplesmente escrever o Metasploit, o sistema gets e ele o lançará diretamente no sistema usando um dos quatro métodos: interrompa a proteção antivírus geral, interrompa o HIPS, "mate" os processos da McAfee ou "mate" Processos HIPS.



A última coisa que eu queria mostrar era captura de domínio.



Assim que chego à "caixa" do administrador, uso todos os tokens que roubei e começo a usar seus poderes. Representando um administrador de domínio, crio um grupo de usuários e os adiciono ao grupo de administradores. Para meus propósitos, isso funciona muito bem.



Quanto à proteção, tenho de 1 a 2 páginas de documentação sobre proteção contra cada um dos ataques de que falei hoje. Diz como realizar um ataque e como se defender. Portanto, se você precisar dessas informações, entre em contato comigo, todos os contatos estão no slide.

Se não tiver perguntas, terminarei aí.



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 de 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é janeiro de graça quando pagar por um período de seis meses, 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/pt432496/


All Articles