Início > computacao forense, invasao e protecao > Como fazer o teste de invasão? Dicas passo a passo

Como fazer o teste de invasão? Dicas passo a passo

É claro que isto aqui não é uma palavra final sobre como verificar se o sistema da empresa é vulnerável ou seguro, mas é um passo-a-passo baseado em algumas experiências (e leituras, especialmente dos casos do famoso Mitnick). Vamos considerar que seja uma empresa comum na Internet atualmente, com servidor de Internet, SQL Server, FileServer, etc.

Obtendo informação

Podemos obter informação de duas formas: furtivamente ou ofensivamente. Veja alguns casos:

  • No caso da obtenção furtiva, podemos acessar o site http://www.registro.br e verificar através da consulta do nome de domínio vários dados, especialmente sobre o responsável pelo ID. A partir desta identificação podemos partir para a obtenção ofensiva ou continuar aqui, em off.
  • Pesquisando na Internet, especialmente com o Google (recomendo ler o livro Google Hacking), conseguimos outras informações, muito além do número de IP (que poderá ser futuramente usado no teste de negação de serviço).
  • Pesquisando na Internet, em blogs e fóruns. É interessante como um cliente insatisfeito se mostra disposto a ferrar com uma empresa. Se achar uma reclamação publicada na Internet contra a empresa, aquelas onde ele falou 10 mil vezes com o atendimento ao cliente, e não teve o problema resolvido, encontramos uma mina de informações de ouro sobre a empresa. Podemos tentar entrar em contato com a pessoa, solidarizando-se com o problema, e obter dados como o tempo de resposta do atendimento, nomes e telefones de pessoas importantes na empresa (que poderão ser pesquisados a seguir para obtenção de senhas). Entra em ação uma série de procedimentos de Engenharia Social (no livro Universidade Hacker tem os detalhes).
  • Outra forma de obter dados, é simplesmente perguntando. Pois é. Apesar de muitas empresas serem claras quanto a política de divulgação de informação à imprensa (através de sua Assessoria de Imprensa somente), telefonar para a empresa pode ser muito proveitoso. Você liga em um ramal qualquer, e diz que quer falar com o TI, como o José (toda empresa tem um José trabalhando nela, nem sempre no TI, mas tem). Certamente dirão que não é aquele ramal, ou que não conhecem a pessoa. Sem problemas. Peça o ramal do TI e o nome do responsável. Porque é bom saber quem é o responsável? Vamos sequestrá-lo, hehe (brincadeira). Normalmente este pessoal de TI tem uma vida ativa na Internet. Cadastro em muitos sites, perfil em muitas redes sociais, etc. E se usarmos alguns truques, podemos descobrir a senha da pessoa. E como são muitos serviços, o cara usa a mesma senha no seu Terminal Server, por exemplo.
  • Podemos dizer que somos de uma empresa fornecedora de computadores e perguntar sobre a configuração atual. Muitos administradores de rede usam como senha a marca do teclado (sim, é verdade) ou da CPU que está na sua frente.
  • E se temos acesso físico ao local, podemos instalar um key-capture na porta do teclado, ou um keylogger (como o KeySwitch) no micro, programando para o envio para nosso e-mail.
  • Se houver tempo, além de instalar um keylogger, podemos programar um ‘defeito’ no Agendador de Tarefas, para apagar alguns arquivos do Windows, e então o suporte precisará ir ao computador, acessar com a senha de adminsitrador, etc. Mais informação para nossa etapa de obtenção de dados.
  • Se houver acesso ao lixo da empresa, alguns documentos e mídias podem ser muito úteis. Poucas empresas possuem fragmentadoras de papel e CDs, e as que tem, poucas usam.
  • Ultimamente, pesquisar em redes sociais está sendo muito mais proveitoso do que em blogs e outros sites. É que nas redes sociais, os funcionários não se sentem sujeitos às regras das empresas, e falam à vontade (até mais do que devem). Não conheço ninguém que esteja em uma rede social que separe o que é pessoal do que é profissional, especialmente após alguns elogios ‘despretenciosos’.

Mapeamento de vulnerabilidades

A partir de alguns dados, podemos iniciar um mapeamento do alvo, especialmente a partir de portas. Um servidor Internet permite acesso a serviços específicos através da inclusão do número da porta no endereço IP. Por exemplo, para configuração do PLesk, usamos a 8443. Incluímos assim: http://www.alvo.com.br:8443

Como nós já temos alguns dados, podemos testar eles ao acessar o PLesk do webiste. Número de telefone do administrador de redes, sua data de nascimento, a placa de seu carro, etc.

Outra forma, um pouco mais demorada, é garimpar portas. Acrescentando o número à frente do endereço, se o serviço estiver ativo, será permitido acesso, às vezes mediante identificação, outras vezes com senha em branco (pois é, às vezes o servidor é instalado, o serviço é instalado, mas não é configurado e esquecido). Esta é uma brecha (para os adminsitradores de redes, verifiquem os serviços instalados em seu servidor. Não precisa dele, remova)

A identificação do sistema operacional é interessante para identificar vulnerabilidades. Por exemplo, se usam Windows 7, acesse o site Windows Update da Microsoft, entre nas opções avançadas de administrador e descubra quais foram as últimas correções publicadas. Explore estas vulnerabilidades primeiro. Porque? Se o servidor da empresa não tem WSUS (Windows Server Update Service) ou as atualizações são manuais (muitos administradores de rede suspendem a instalação das atualizações imediatamente a pedido dos usuários. Quando alguma atualização crítica é instalada, o Windows deve ser reiniciado. Só que o usuário reclama que o Windows fica enviando mensagem para ele reiniciar o computador, e bla bla bla. O usuário está ocupadíssimo conferindo as últimas fotos da Cleo Pires, logo não quer ter o seu computador reiniciado naquele momento. E assim o administrador cria uma brecha temporal na sua rede, que pode ser de algumas horas até dias seguindos à publicação da correção no site Windows Update).

Identificando as rotas (com comandos como o router), podemos verificar quem é o calcanhar-de-aquiles da rede. Pode ser um roteador que pode ser acessado remotamente com o uso da senha padrão do fabricante (poucos administradores trocam a senha dos seus roteadores, deixando o 1111 padrão-fabricante lá, afinal, ninguém vai acessar a sala Shaft, trancada 24 horas por dia, né). Alguns switchs permitem a configuração porta-a-porta para amarrar o IP com o endereço MAC, evitando que algum engraçadinho leve um notebook, retire o seu micro da rede e navegue à vontade. Ou instale um roteador wireless embaixo da mesa, permitindo acesso pelo seu desktop e seu smartphones (ver TV digital no horário de serviço, por exemplo).

Acesso remoto

Quando o servidor oferece acesso remoto, podemos tentar via console TS, ou Telnet, ou FTP, ou até pelo ingênuo compartilhamento padrão. A ideia inicial de um servidor é ser acessível aos usuários. Então, existem 1000 (ou melhor, 65536) formas diferentes de acesso, e muitas vezes o administrador da rede esquece de bloquear, suspender ou excluir alguns deles.

Conta convidado, permissões de acesso remoto, quantidade de acessos simultâneos, arquivos de registro, configurações do Windows (e outros) públicos, além dos usuários que insistem em criar vulnerabilidades na rede (obrigado ‘especial’ a todos que usam o MSN escondido, acessam o Orkut no horário de serviço, usam proxys, etc).

A partir destes ‘espertinhos’, dados internos são publicados na Internet (eles acham que estão navegando anonimamente na rede, haha). As conexões P2P como o MSN criam um ‘túnel’ dentro da rede, onde podemos explorar através de software de captura de tráfego. Nesta captura encontramos reclamações sobre o chefe, um serviço do CPD que não funciona, uma senha que não entra (ops), além de fotos pessoais e todo tipo de assunto.

Buffer overflow

A partir da mudança de dados nos pacotes (aqueles capturados pela análise de tráfego dos espertinhos que usam o MSN via web), podemos causar um estado de buffer overflow (entre outros), sobrecarregando o servidor com instruções impossíveis (como por exemplo, loop eterno). Em http://mixter.void.ru/exploit.html existem algumas informações sobre como produzir o problema. Se não sabe inglês, a dica é: não use Windows ou Mac para tentar. O feitiço pode virar contra o feiticeiro.

Descoberta de senhas

Conforme comentei anteriormente, algumas pessoas usam a marca do computador como senha de acesso. E ainda fazem com requintes de dificuldade, como a primeira letra em maiúscula, por exemplo (sic). Outras formas são através de análise do perfil de redes sociais dos alvos, através da leitura de números como o telefone, CEP, data de nascimento (dos filhos, especialmente), nome de animal de estimação, marca de algum produto idolatrado pelo alvo, etc.

E quando a senha é limitada? Se o serviço pede uma senha de 6 dígitos, 99% das pessoas colocam uma senha de 6 dígitos. Devia ser o contrário. Se o limite são 256 caracteres, aproveite-os. Uma senha de 7 a 12 caracteres é relativamente fácil de ser quebrada através de softwares de quebra de senha pela força bruta.

E quem quiser aproveitar as vulnerabilidades que os novos mouses e teclados wireless criaram, podemos usar as dicas (claro que não aparecem as dicas no vídeo, mas se pensar um pouquinho…) exemplificadas em http://idgnow.uol.com.br/seguranca/2008/10/21/teclados-sao-vulneraveis-a-ataque-que-usa-antena-para-roubar-dados/

Negação de serviço

Basicamente existem duas formas de efetuar um ataque de negação de serviço (existem outras, mas é segredo, hehe). Baseado no número de IP do servidor (que é fixo), efetuamos o lançamento de pacotes (pode ser pelo PING, mas se o servidor estiver configurado para não responder aos PINGs, ponto para o administrador da rede). É conhecido como ‘esgotamento de serviços’.  Aqui eu citei o PING, mas ele é apenas um exemplo didático.

  • ataque direto – envio de pacotes diretamente para o endereço IP do servidor, sobrecarregando-o para atender aos pedidos. Um único computador enviando, não deve fazer estrago, mas se configurar vários micros zumbis para efetuarem a tarefa em determinada data/hora, podemos comprometer o servidor remoto.
  • ataque indireto – através de comandos como o ROUTER, descobrimos quem são os equipamentos que apóiam a operação do servidor (hubs, switchs, roteadores, outros servidores), e efetuamos um ataque coordenado a todos eles simultaneamente (sem atacar o servidor alvo). O administrador da rede deve ficar doidinho (como já fiquei), ao ver que o seu servidor está OK, não tem nada de errado no Event View, etc.

Injeção de código

Se existem serviços SQL em execução, a inserção de códigos pode ser uma chance de obter dados das bases de dados da empresa em questão. Muitos programadores não costumam mudar a terminologia padrão do banco de dados, usam campos em inglês como referência. Nome aparece como name, endereço aparece como address, e assim por diante. O uso de palavras em inglês no cabeçalho dos banco de dados é para evitar inconsistências devido à acentuação latina, por exemplo, além das traduções automáticas entre as páginas de caracteres que o Windows (e até o Adobe Acrobat Reader) fazem para nós.

Inclusão de código poderá ser por URL, cookies (aqueles que foram capturados na navegação), formulários, parâmetros JSP ou ASP ou PHP, etc. Quer saber mais? Veja http://www.macoratti.net/sql_inj.htm

Cross-site Script (XSS)

Antigamente, a página HTML que acessávamos era uma só, e pronto. Se o webmaster/digitador não mudasse, a página ficava lá, estática, original, etc. Hoje em dia é difícil encontrar uma página onde os dados não tenham sido construídos a partir de um programa. Este post aqui na WordPress é um exemplo. Esta página não existe, mas o que existe é um banco de dados com todas as minhas postagens. Na hora em que solicitou esta página, uma pesquisa foi realizada no banco de dados da WordPress e o resultado está aqui, na sua tela.

Esta técnica é amplamente utilizada hoje em dia, porque podemos ter conteúdo separado do formato. Se eu mudar a aparência de meu blog, nada acontece com as postagens. Ninguém precisará reconstruir o blog, e ele será adaptado. A página de extrato de seu banco também é assim. Como ela é construída (a página do extrato bancário)? Como este blog é montado? É passado para a página de construção uma série de parâmetros, como o login, data inicial, data final, etc.

Por exemplo, em uma página verPerfil.php se informarmos à sua frente ?teste estamos esperando como resultado o perfil do usuário teste, certo? Sim, certo. E se colocarmos apenas o ? sem nenhum login na frente? Muitos administradores esquecem das páginas de erro (afinal, ele não erra, não é), e neste caso, uma página de erro inexistente ou configurada incorretamente pode entregar o banco de dados. Uma forma de evitar, é criar um usuário ‘sem nome’, ou incluir páginas de redirecionamento para a página principal.

Amanhã tem mais.

  1. 22 de maio de 2012 às 01:46

    claro que é verdade iventar coisas por que é´muito
    fasio .mas quem faz?em
    cha sei o iventor

  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: