Auditoria Teste de Invasão(Pentest) – Planejamento, Preparação e Execução

Por Rafael Soares.

Testes de invasão têm por objetivo verificar a resistência de redes, sistemas ou aplicações em relação aos atuais métodos de ataque. Diariamente são descobertas novas falhas nos mais variados sistemas, por isso é de fundamental importância auditorias preventivas, mais especificamente, Testes de Invasão, que podem dar um diagnóstico real sobre a segurança dos ativos em questão.

Algumas vezes é difícil justificar o ROI (Return of Investment) de um teste de invasão para os tomadores de decisão. É preciso mostrar os custos resultantes de um ataque bem sucedido (por exemplo, o prejuízo causado pela indisponibilidade de um site comercialmente ativo – seja um portal de vendas ou para anúncio de serviços) e compará-los ao custo de um teste de invasão, que pode indicar quão protegido o Cliente está deste risco. Além disso, cada vez mais normas internacionais estão recomendando (ou exigindo) testes de invasão periódicos a todos que querem entrar em conformidade com as mesmas.

O objetivo deste artigo é descrever as etapas de um teste de invasão, mostrando que a estrutura dos testes segue modelos cuidadosamente estruturados em passos bem definidos. Afinal, apesar das óbvias semelhanças, há uma série de diferenças entre um ataque simulado contratado e um ataque malicioso real. E é o que veremos à seguir.

  1. Planejamento e Preparação
  2. Avaliação
    1. Obtenção de Informação
    2. Sondagem e Mapeamento
    3. Identificação de Vulnerabilidades
    4. Exploração
  3. Documentação e Relatório
  4. Conclusões
  5. Recomendações de leitura

Planejamento e Preparação

Antes do início do Teste de Invasão é executado um levantamento inicial de informações para planejamento e modelagem dos testes. São levantados detalhes da infraestrutura contemplada, equipamentos e recursos que serão necessários durante os testes, bem como os tipos de ataque a compor a simulação constituem algumas das informações definidas nesta etapa. Antes do início dos testes, é necessário a assinatura do NDA (do inglês, Non-Disclosure Agreement, ou Termo de Confidencialidade) onde fica salvaguardada a confidencialidade das informações que eventualmente serão acessadas pelo analista responsável pelos testes.

É preciso estabelecer também prazos, janelas de tempo para execução dos testes e também pontos de contato para tratamento de questões especiais. Durante o planejamento também é decidido que tipo de teste será feito, pois isso implica diretamente na quantidade de informações a que o analista terá acesso. O teste pode ser classificado de 2 maneiras: Informações sobre o ambiente e Informações sobre os testes. De acordo com o nível de informações que serão passadas sobre o ambiente, o teste pode ser classificado como caixa preta, caixa branca ou caixa cinza (híbrido).

Em um teste caixa preta, há pouco ou nenhum conhecimento sobre o ambiente a ser avaliado, e tudo deve ser descoberto pelo analista. Em testes caixa branca, analogamente, o avaliador tem acesso irrestrito a qualquer informação que possa ser relevante ao teste, para conduzi-lo supondo o pior cenário, em que o atacante conseguiu obter todos os detalhes sobre o(s) alvo(s). Testes caixa cinza (ou híbridos) envolvem conhecimento limitado sobre o alvo, muitas vezes sendo o mínimo necessário para conduzir o teste da forma desejável.

Por outro lado, os testes podem ser classificados como anunciado ou não anunciado, que indicam se a equipe responsável pela TI e todos os demais colaboradores terão ciência da execução dos testes ou não. Há vantagens e desvantagens em anunciar o teste à equipe local. Por um lado, é possível evitar alardes caso o ataque seja detectado, e muita informação valiosa pode ser compartilhada para melhor orientar o ataque. Por outro lado, não é incomum ver administradores de redes e sistemas conscientes de um Teste de Invasão “burlando” o mesmo através de mudanças estruturais, comportamentais e melhorias temporárias, assumindo o serviço como um ataque pessoal ao seu trabalho e tratando o avaliador como uma ameaça ao seu emprego. Nesse tipo de teste também pode ser avaliado o tempo e a qualidade da resposta da equipe local aos ataques proferidos.

Avaliação

Esta é a fase onde os testes são efetivamente executados. Geralmente a abordagem desta fase é feita dividindo-a em várias etapas, conforme veremos detalhadamente a seguir.

Obtenção de Informação

A coleta de informações é essencial para modelar os ataques e determinar quais vetores podem ser explorados mais facilmente. O primeiro passo é vasculhar a Internet atrás de toda informação disponível sobre o alvo. As técnicas mais comuns são consultas a serviços de WHOIS e DNS (através de ferramentas como whois, dig e nslookup), sites de busca (por exemplo, Google), listas de discussão, blogs corporativos e de colaboradores, Engenharia Social e Dumpster Diving. Essa última consiste na busca por informações contidas em lixos corporativos, tais como documentos impressos e mídias descartadas sem o devido cuidado.

A coleta passiva de informações não exige nenhum contato com o sistema alvo, a informação é coletada (principalmente) a partir de fontes públicas e, geralmente, serve como uma avaliação sobre o alvo no quesito exposição de informação.

Sondagem e Mapeamento

Após a coleta de informações públicas sobre o alvo, inicia-se o processo de mapeamentos e varreduras da rede e dos recursos em questão. Dentre as atividades executadas nessa etapa, destacamos:

  • Identificação de hosts vivos
  • Portas e serviços em execução
  • Mapeamento da rede
  • Identificação de sistemas operacionais
  • Identificação de rotas

Esse mapeamento ajudará no refino das informações adquiridas anteriormente e para confirmar ou descartar algumas hipóteses sobre os sistemas alvo.

Identificação de Vulnerabilidades

Uma vez identificados os sistemas e serviços pertencentes à rede em questão, o próximo passo é detectar qual deles possui vulnerabilidades conhecidas ou caminhos que possam ser explorados para a invasão. Vulnerabilidades conhecidas (e documentadas) podem ser encontradas em listas especializadas, sites de fornecedores de softwares e portais especializados.

Após a enumeração das vulnerabilidades descobertas, é feita uma estimativa de impacto de cada uma delas, além da identificação dos vetores de ataque e cenários para exploração.

Exploração

Através das vulnerabilidades e vetores de ataque encontrados, são disparados os ataques visando a obtenção de acesso não autorizado com o maior nível de privilégios possível. Para cada vulnerabilidade identificada, busca-se o seguinte:

  • Encontrar ou desenvolver código/ferramenta para prova de conceito (é recomendado que tais provas sejam testadas em ambiente controlado, principalmente se forem desenvolvidas por terceiros)
  • Confirmar ou refutar a existência de vulnerabilidades
  • Documentar o caminho utilizado para exploração, avaliação do impacto e prova da existência da vulnerabilidade
  • Obter acesso e, se possível, escalar privilégios.

Para explorar as vulnerabilidades encontradas podem ser utilizados inúmeros ataques, dependendo do tipo de falha encontrada. Veremos a seguir como funcionam os principais ataques.

Captura de Tráfego
É o processo de interceptar e examinar informações que trafegam pela rede, visando testar se os algoritmos e protocolos utilizados na comunicação dos sistemas garantem a integridade e privacidade das informações em trânsito.

Buffer Overflow
É quando um buffer de tamanho determinado recebe mais dados do que o esperado. A idéia é sobrescrever parte da pilha, mudando o valor de variáveis, parâmetros e até endereço de retorno, culminando em execução arbitrária de código.

Quebra de Senha
Geralmente feito através do ataque de força bruta que consiste em enumerar todos os possíveis candidatos e verificar qual deles satisfaz o problema. O custo computacional de ataques deste tipo é proporcional ao número de candidatos a solução e, em casos de senhas que seguem as boas práticas, pode demorar muito tempo. Um ataque particular de força bruta é o chamado “ataque dicionário” que busca quebrar senhas que consistem em palavras existentes em dicionário, independente do idioma.

Injeção de Código
Busca explorar aplicações que não tratam as entradas do usuário de forma correta. Dessa forma um atacante pode “injetar” códigos que serão interpretados pela servidor que os está recebendo. Essa injeção pode ser feita via formulários, URIs, Cookies, parâmetros e etc. O caso mais comum é a injeção de consultas SQL (SQL injection) que visa exposição e/ou alteração de informações contidas no banco de dados utilizado pela aplicação.

Cross-site Script (XSS)
Ataques XSS não persistentes surgem quando dados passados pelo Cliente são utilizados sem validação para gerar uma página de resultados. Podem acontecer também de forma persistente, no caso dos dados passados pelo cliente serem gravados diretamente no servidor, estando publicamente acessíveis, sem a devida validação ou limitação. Um exemplo típico é quando fóruns web interpretam tags html escritas por usuários dentro de seus posts.

Negação de Serviço
Ataques que visam submeter a máquina alvo a uma situação de desempenho extremamente baixo ou indisponibilidade completa , geralmente através de esgotamento de recursos.

Documentação e Relatório

Deve ser gerada uma documentação ao longo de todo o teste, a fim de manter registros de todas as atividades de forma transparente, informações como escopo do projeto, ferramentas utilizadas, datas e horas dos testes, lista de todas as vulnerabilidades identificadas e exploradas, assim recomendações para execução de melhorias.

Conclusões

Testes de invasão devem fazer parte do programa de segurança da informação das empresas. Há diversas formas de se tratar a segurança de uma rede, sistema ou aplicação, e o teste de invasão é apenas uma das possíveis ferramentas, porém é a que apresenta resultados mais concretos, com o mínimo de falsos positivos/negativos. É preciso atentar para a importância de auditorias preventivas, além de compreender a necessidade da percepção exata da exposição dos ativos de TI aos riscos existentes.

Em uma próxima oportunidade serão abordados mais detalhadamente os tipos de ataques e ferramentas relacionadas, entre outros temas sobre Testes de Invasão.

Recomendações de leitura

Pra terminar, algumas sugestões de leitura. São metodologias para testes de invasão que vão ajudar a ter uma visão mais ampla sobre o assunto e a modelar testes deste tipo para qualquer realidade.