A anotomia de uma invasão

A anotomia de uma invasão

A anatomia de uma invasão

Enquanto isso, no outro lado de Gothan…

No silêncio da madrugada, num quarto sombrio, à penumbra de uma luminária sobre uma mesa cheia de livros e papéis, um sujeito com cara de Nerd tecla freneticamente no de seu computador. Eles está tentando invadir um sistema. Após alguns segundos, dispara um programa que exibe em posições fixas da tela, seqüências de caracteres aleatórios de tamanhos garrafais. Lentamente, um caracter após o outro, começam a parar revelando a senha correta do sistema. Invariavelmente uma frase pisca algumas vezes na tela: “Access Granted” e abre-se uma tela do sistema de uma agência de segurança governamental….

Isso lhe soa familiar? Parece coisa de filme… E só pode ser coisa de filme, mesmo! No mundo real, as invasões não ocorrem dessa forma. Isso não passa de pirotecnia hollyoodiana. Também não vamos considerar como invasões, as decorrentes de pragas como worms, pichações em páginas web decorrentes de vulnerabilidades descobertas por ferramentas automatizadas que varrem a internet indiscriminadamente disparadas porScript Kiddies, muito menos os ataques de phishing, feitos por pessoas as quais a mídia insistem em chamar de hacker.

Worms, são programas semelhantes aos vírus de computador, que se propagam pelas redes explorando vulnerabilidades e compartilhamentos de rede. As ferramentas automatizadas utilizadas por Script Kiddies são encontradas prontas pela net, eles as usam sem saber o que realmente elas fazem. Phishers fazem parte de uma categoria que nem considero como parte do mundo de TI (Tecnologia da Informação), já que muitos usam programas prontos comercializados no submundo da internet. Para mim, não passam de simples criminosos.

As invasões “reais” são realizadas por pessoas com elevado nível de conhecimento técnico, com focos específicos em determinadas instalações ou empresas. Eles podem ser movidos pelo desafio de violar sistemas de seguranças, por mero prazer pessoal ou pela busca de prestígio nas comunidades crackers. Pode ser que eles sejam movidos por questões financeiras, na intensão de cometer fraudes ou até mesmo contratados por empresas concorrentes para espionagem ou sabotagem.

Existe também uma categoria de profissionais que são contratados pelas empresas para testar seus próprios sistemas de segurança, desenvolvendo a atividade se chama dePenTest (Penetration Test ou Teste de Penetração).

Esse tipo de invasão é uma atividade coordenada e cuidadosamente planejada, que invariavelmente passa por diversas etapas, conforme vamos ver a seguir.

1. Coleta de informações

Antes de iniciar qualquer tentativa de invasão, devemos coletar o máximo de informações a respeito da empresa atacada. Uma pesquisa no Google pode ser um bom começo para saber o que existe de informação disponível na internet, a respeito de:

  • Atividades da empresa;

  • Composição acionária;

  • Nomes de sócios, diretores, gerentes de TI, administradores da rede;

  • Filiais e empresas coligadas;

  • Endereços de homepages e e-mails;

Ainda nessa fase, considerando que a empresa possua um site na internet, podemos coletar as informações sobre endereços de servidores DNS (Domain Name Service ou Serviço de Nome de Domínio), nome do responsável técnico (geralmente é o administrador da rede), endereço e cnpj.

Toda e qualquer informação deve ser considerada para que possamos ter uma visão global e um bom nível de entendimento sobre a empresa. Nomes de sócios, diretores, funcionários e parceiros comerciais podem ser utilizados para ataques de Engenharia Social. A existência de filiais e coligadas pode significar a existência de conexões VPN (Virtual Private Network ou Rede Privada Virtual), que a princípio é uma forma segura de interconectar redes pela internet. Endereços web servem para descobrir os endereços IP por onde a rede corporativa geralmente se conecta na internet.

2. Mapeamento da rede

O objetivo dessa fase é tentar descobrir a topologia da rede: quantos computadores existem e como estão interligados. Para isso, podemos iniciar com uma pesquisa nos servidores de DNS da empresa.

Um servidor DNS é responsável pela mapeamento dos nomes de domínio (ex: servidor.empresa.com) para endereços IP (ex: 200.100.200.50). Ele é naturalmente acessível pela internet para determinados tipos de consultas, entretanto, existe um recurso, chamado de Transferência de Zona, que serve para sincronização de registros entre servidores primários e secundários. Alguns administradores de rede permitem que esse tipo de consulta seja feita de qualquer lugar da internet, por descuido ou desconhecimento, e simplesmente fornece o “mapa da mina” para um atacante, porque esse tipo de consulta permite que se obtenha todo os nomes e endereços de todos os servidores da rede. Se esse servidor DNS também for responsável pela resolução de nomes da rede interna, pode ser que o atacante obtenha não só os endereços dos computadores acessíveis pela internet, mas simplesmente de TODOS os computadores da rede interna da empresa.

Uma outra possibilidade para descobrir os computadores que existem no domínio da empresa, é através de consultas de DNS “reverso”, quando informamos o endereço IP e o servidor retorna o nome da máquina que responde por aquele endereço. Sabendo o endereço de um servidor, é possível inferir a faixa de endereços possivelmente destinados à empresa e limitar a pesquisa reversa nessa faixa.

Existe inclusive uma técnica sofisticada de mapeamento, chamada de firewalking, que permite “enxergar” quais são as máquinas que estão por trás do firewall. Seria mais ou menos como se pudéssemos ver através das paredes.

3. Enumeração de serviços

Uma feita já foram descobertas as máquinas existentes na rede, procuramos descobrir quais os serviços que estão sendo executados em cada uma delas. Um serviço não é nada mais do que um programa que fica aguardando conexões numa determinada “porta”. Por exemplo, todas as conexões de páginas web são feitas para a porta de número 80. Quem responde às solicitações de conexão nessa porta é um software servidor web como por exemplo, Apache, IIS (Internet Information Service) da Microsoft ou qualquer outro software com a mesma finalidade.

As portas de numeração 1 à 1024 (de um total de 65.535) são padronizadas de acordo com o tipo de serviço. Assim, se encontramos a porta 22 aberta, podemos ter quase certeza que existe um serviço SSH (terminal remoto), assim como a porta 25 implicaria num serviço de e-mail. Só não podemos ter certeza sobre o serviço que está “escutando” uma determinada porta porque essas numerações são padronizadas, mas não obrigatórias. Nada impede que o administrador disponibilize um serviço SSH na porta 25, por exemplo.

Nessa etapa também procuramos identificar as versões dos sistemas operacionais e de cada software servidor, com uso de ferramentas adequadas. Essa informação será útil na próxima etapa.

4. Busca por vulnerabilidades

Uma vulnerabilidade de um software é decorrente de um projeto deficiente ou erro de programação. Quando uma vulnerabilidade é descoberta por incontáveis pesquisadores (os verdadeiros Hackers) ao redor do mundo, o fabricante do software é notificado e a vulnerabilidade é divulgada em sites especializados para que todos tomem conhecimento da sua existência e tomem as providências necessárias para eliminar esse risco. Isso geralmente é atingido com a aplicação de uma Correção ou Patch (traduzindo literalmente: remendo), disponibilizado pelo fabricante do software.

Se o administrador da rede não aplicou as devidas correções num determinado software, pode ser que ele possa ser explorado para a invasão. Para isso, basta um pesquisa na internet para descobrir se aquela versão de software que está sendo usada, possui alguma vulnerabilidade e como ela é explorável.

Algumas ferramentas já automatizam todo o processo de identificação dos softwares, suas versões, assim como a vulnerabilidades existentes para aquelas versões específicas, simplificando o trabalho do atacante.

5. Exploração das vulnerabilidades

Essa é a etapa onde efetivamente ocorre a invasão. Dependendo do tipo de vulnerabilidade encontrada, a invasão será mais ou menos efetiva. Algumas vulnerabilidades permitem apenas a interrupção do serviço, ao qual damos o nome de ataque DOS (Denial of Service ou Negação de Serviço).

As vulnerabilidades mais perigosas são as que permitem a execução de programas e comandos no computador remoto. O Buffer Overflow (estouro de memória) é um exemplo de vulnerabilidade que pode permitir que o atacante obtenha acesso à uma tela de terminal remoto, podendo executar os comandos que desejar, como se estivesse sentado diante do computador atacado e geralmente com privilégios de administrador.

Outro exemplo de ataque perigoso é o do tipo SQL Injection, feito em aplicações web mal feitas, permite desde a consulta direta à um banco de dados (onde o atacante pode obter informações sigilosas como números de cartões de crédito) à execução comando do sistema operacional.

Existem inúmeros tipos de vulnerabilidades que me permitiriam discorrer em páginas e mais páginas, mas como não é o objetivo transforma-lo em um especialista em segurança, vamos nos restringir a esses exemplos.

Muitos desses ataques podem ser feitos com uso de programas ou scripts prontos, chamados de sploits.

6. Implantação de Backdoors e Rootkits

Uma vez que o invasor tenha obtido sucesso na sua investida, é comum que ele implante programas que facilitem o seu retorno. São os chamados Backdoors, ou literalmente “porta dos fundos”. Além disso ele pode implantar os chamados Rootkits, que são programas que se agregam ao núcleo do sistema operacional, dificultando a sua localização.

7. Eliminação de Vestígios

Toda invasão deixa rastros no computador atacado, seja nos logs (históricos) do sistema seja em forma de arquivos temporários. Para dificultar a identificação da sua presença, o bom atacante procura eliminar esses vestígios, requerendo uma intervenção muito mais minuciosa na investigação do incidente e muitas vezes impossibilitando rastrear sua origem.

Formas de prevenção

Se você é um usuário comum não há muito o que fazer, mas se você é um administrador de redes, é sua responsabilidade tomar as medidas preventivas necessárias para minimizar esses riscos.

  • Uso de firewall, IDS e IPS: o firewall é um elemento indispensável na sua rede, para controlar e impedir os acessos indesejáveis. Hoje é simplesmente inaceitável que se tenha uma rede conectada na internet sem um firewall. O uso de IDS (Intrusion Detection System ou Sistema de Detecção de Intrusão) e um IPS (Intrusion Prevention System ou Sistema de Prevenção de Intrusão), são elementos desejáveis para uma defesa efetiva.

  • Serviços desnecessários: todos os serviços que não estiverem sendo efetivamente usados, devem ser desabilitados. Além de serem itens adicionais para atualizações de segurança, são pontos adicionais em potencial para serem explorados.

  • Atualização e Configuração: é indispensável que todos os serviços disponíveis para internet estejam com as últimas atualizações de segurança aplicadas e, principalmente, corretamente configurados. Falhas de configurações são grandes causas de incidentes de segurança.

  • Monitoração constante: a monitoração das atividades da rede devem fazer parte da rotina diária de um administrador de redes. Só assim você poderá perceber anomalias no seu funcionamento. Deve ser incluída nessa rotina, a monitoração dos logs, também para detectar registros de ocorrências anormais. O uso de ferramentas que detectem modificações nos arquivos do sistema também é uma medida desejável. Uma ferramenta gratuita que pode ser utilizada para esse fim, é o tripwire.

A melhor forma de defesa, entretanto, é o conhecimento. Fique sempre atualizado quanto as novas formas de ataque e vulnerabilidades descobertas para poder agir de forma proativa, antecipando-se aos movimentos dos invasores.

Comentários