Passo a Passo para um Teste de Penetração (PenTest)
Segue
uma republicação do post sobre teste de penetração, pois comentei esse
nome com um grupo colegas, a maioria riram pensando que era algum tipo
teste próstata, bem, para quem não tem conhecimento segue.
As invasões “reais” são realizadas por
pessoas com alto nível de conhecimento técnico, com focos específicos em
determinadas instalações ou empresas. Existe vários motivos pessoal,
por questões financeiras, na intençã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, essa atividade se
chama de PenTest (Penetration Test ou Teste de Penetração). Entenderam né ! posso continuar !
Esse tipo de
invasão é uma atividade coordenada e cuidadosamente planejada, que
passa por diversas etapas, conforme vamos ver a seguir.
1. Coleta de informaçõesAntes 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, 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.
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.
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
Existe Varias formas de proteção que é da nossa responsabilidade de tomar medidas preventivas necessária
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.
0 comentários:
Postar um comentário