CEH – Scanning Networks – Parte 1
Fala galera! No post de hoje, dando continuidade a série CEH, iremos começar a ver o módulo de scanning de rede cobrado na certificação. Nesse módulo iremos ver os tipos de scanning, fluxo de funcionamento, além de cobrir todos os passos da metodologia de scanning de redes. Estou tentando deixar os posts da melhor forma possível, mas sempre tem algo que podemos melhorar, por isso o feedback de vocês é muito importante, use e abuse dos comentários 🙂
Caso você ainda não tenha visto os outros posts da série CEH, recomendo fortemente a leitura antes de continuar aqui. Já falamos sobre a certificação como um todo, sobre o universo e caracteristicas do ethical hacking, padrões e normas de mercado, footprinting e reconnaissance, e muito mais. Para checar acesse Série Certified Ethical Hacker.
Visão Geral
Como vimos no post anterior, o footprinting é a primeira fase do processo de hacking em que o atacante obtém informações sobre um alvo em particular. O footprinting por si só não é suficiente para a atividade de hacking, porque no footprinting você só vai reunir informações primárias sobre o alvo. No entanto, você vai usar estas informações na próxima fase. O processo de coleta de informações adicionais sobre o alvo usando uma abordagem mais agressiva é chamado de scanner. A ideia é descobrir o máximo de portas abertas possível e principalmente, as que são “exploráveis”.
Na fase de scanning, você vai ter acesso a mais informações sobre o alvo, tais como sistema operacional usado, quais os serviços que estão em execução e se existem ou não quaisquer erros de configuração no sistema. Com essas informações em mãos você já vai identificar formas de explorar o alvo.
Quando olhamos para o mundo real, os pontos de acesso que um ladrão olha são as portas e janelas das casas. Estes são geralmente os pontos de vulnerabilidade da casa devido a sua acessibilidade relativamente fácil. Quando falamos do mundo tecnológico, os pontos de acessos são as portas ativas em um host. Quanto mais portas abertas, mais pontos de vulnerabilidade, quanto menos portas abertas, mais seguro é o sistema. Isto é simplesmente uma regra geral.
Se você tem uma grande quantidade de informações sobre o alvo, as chances de você identificar as brechas dele e consequentemente, obter acesso não autorizado à rede são maiores. Antes de executar o ataque, o atacante observa e analisa a rede a partir de diferentes perspectivas, através da realização de diferentes tipos de reconhecimento.
Como realizar a verificação e que tipo de informações devem ser alcançadas durante o processo de scanning depende inteiramente do ponto de vista do atacante. Podem haver muitos objetivos para a realização da varredura, mas aqui vamos discutir os objetivos mais comuns durante a fase de scanning:
- Descobrir hosts ativos, endereços IP e portas abertas.
- Descobrir as versões e arquitetura do SO.
- Descobrir os serviços em execução e suas versões.
- Descobrir vulnerabilidades.
TCP/IP
Antes de mais nada, precisamos entender algumas coisas básicas sobre o protocolo TCP. Eu só vou explicar os pontos necessários para dar continuidade no post, mas é dever de qualquer um que queira atuar, ou que já esteja atuando, na área conhecer esses dois protocolos a fundo.
O TCP é um dos protocolos sob os quais assenta a Internet, ele é complementado pelo protocolo IP, sendo normalmente chamado de TCP/IP. A versatilidade e robustez do TCP tornou-o adequado a redes globais, já que este verifica se os dados são enviados de forma correta, na sequência apropriada e sem erros, pela rede.
O TCP é um protocolo de nível da camada de transporte (camada 4) do modelo OSI e é sobre o qual que se assentam a maioria das aplicações, como o SSH, FTP, HTTP e etc. O Protocolo de controle de transmissão provê confiabilidade, entrega na sequência correta e verificação de erros dos pacotes de dados, entre os diferentes nós da rede, para a camada de aplicação. Aplicações que não requerem um serviço de confiabilidade de entrega de pacotes podem utilizar de protocolos mais simples como o User Datagram Protocol (UDP), que provê um serviço que enfatiza a redução de latência da conexão. Algumas características do TCP são:
Orientado à conexão – A aplicação envia um pedido de conexão para o destino e usa a “conexão” para transferir dados. Portanto, se faz necessário o estabelecimento de uma conexão, por meio de uma sequência de passos definida no protocolo para que os dois pontos da conexão possam interagir entre si.
Handshake – Mecanismo de estabelecimento e finalização de conexão a três e quatro tempos, respectivamente, o que permite a autenticação e encerramento de uma sessão completa. O TCP garante que, no final da conexão, todos os pacotes foram bem recebidos.
Confiabilidade – O TCP usa várias técnicas para proporcionar uma entrega confiável dos pacotes de dados que, dependendo da aplicação, gera uma grande vantagem que tem em relação ao UDP. O TCP permite a recuperação de pacotes perdidos, a eliminação de pacotes duplicados, a recuperação de dados corrompidos e pode recuperar a ligação em caso de problemas no sistema e na rede.
As comunicações TCP padrão monitoram o cabeçalho do pacote TCP que contém as flags. Estas flags administram a conexão entre os hosts e dão instruções ao sistema. A seguir estão as flags de comunicação TCP:
- Synchronize “SYN”: O SYN notifica a transmissão de um novo número de sequência.
- Acknowledgement “ACK”: O ACK confirma a recepção da transmissão, e identifica o próximo número de sequência esperado.
- Push “PSH”: O sistema aceita pedidos e dados de encaminhamento em buffer.
- Urgent “URG”: Instrui os dados contidos nos pacotes a ser processado o mais rápido possível.
- Finish “FIN”: Anuncia que não serão mais enviadas transmissões para sistema remoto.
- Reset “RST”: Restaura uma conexão.
Three-way handshake
O protocolo TCP especifica três fases durante uma conexão: estabelecimento da ligação, transferência e término de ligação. O estabelecimento da ligação é feito em três passos, enquanto que o término é feito em quatro. Durante a inicialização são inicializados alguns parâmetros, como o Sequence Number para garantir a entrega ordenada e robustez durante a transferência.
Para estabelecer uma conexão, o TCP usa um handshake de três vias (Three-way handshake). Antes que o cliente tente se conectar com o servidor, o servidor deve primeiro ligar e escutar a sua própria porta, para só depois abri-la para conexões: isto é chamado de abertura passiva. Uma vez que a abertura passiva esteja estabelecida, um cliente pode iniciar uma abertura ativa. Para estabelecer uma conexão, o aperto de mão de três vias é realizado:
SYN: A abertura ativa é realizada por meio do envio de um SYN pelo cliente ao servidor. O cliente define o número de sequência de segmento como um valor aleatório A de 32bits.
SYN+ACK: Em resposta, o servidor responde com um SYN-ACK. O número de reconhecimento (acknowledgment) é definido como sendo um a mais que o número de sequência recebido, i.e. A+1, e o número de sequência que o servidor escolhe para o pacote é outro número aleatório B de 32bits.
ACK: Finalmente, o cliente envia um ACK de volta ao servidor. O número de sequência é definido ao valor de reconhecimento recebido, i.e. A+1, e o número de reconhecimento é definido como um a mais que o número de sequência recebido, i.e B+1.
Neste ponto, o cliente e o servidor receberam um reconhecimento de conexão. As etapas 1 e 2 estabelecem o parâmetro (número de sequência) de conexão para uma direção e ele é reconhecido. As etapas 2 e 3 estabelecem o parâmetro de conexão (número de sequência) para a outra direção e ele é reconhecido. Com isto, uma comunicação full-duplex é estabelecida. PAra ficar um pouco mais visual, vamos analisar esse processo no wireshark:
A fase de encerramento da sessão TCP é um processo de quatro fases, em que cada interlocutor responsabiliza-se pelo encerramento do seu lado da ligação. Quando um deles pretende finalizar a sessão, envia um pacote com a flag FIN ativa, ao qual deverá receber uma resposta ACK. Por sua vez, o outro interlocutor irá proceder da mesma forma, enviando um FIN ao qual deverá ser respondido um ACK. Pode ocorrer, no entanto, que um dos lados não encerre a sessão. Chama-se a este tipo de evento de conexão semi-aberta. O lado que não encerrou a sessão poderá continuar a enviar informação pela conexão, mas o outro lado não.
Tipos de Scanning
Nem todas as varreduras estarão procurando a mesma coisa ou tentando alcançar o mesmo resultado, por isso é importante que você entenda quais são suas opções no processo. Todas as varreduras compartilham o mesmo tema geral, que é o de obter informações sobre um host ou grupo de hosts, mas se você cavar um pouco mais as diferenças começam a surgir. Cada teste fornecerá um nível e um tipo de informação diferente dos outros e assim cada um fornecerá algum valor para você. Para simplificar, dividimos os tipos de varreduras em três categorias diferentes, cada uma com suas próprias características:
Port Scan: A varredura de porta é o processo de enviar mensagens ou pacotes cuidadosamente criados para um alvo para identificar quais portas estão abertas ou fechadas. Essas probes são normalmente associadas a portas conhecidas, porém podem ser enviadas para qualquer porta (0-65535).
Network Scan: A varredura de rede é projetada para localizar todos os hosts ativos em uma rede. Esse tipo de verificação identificará os sistemas que podem ser atacados mais tarde ou aqueles que podem ser examinados um pouco mais de perto. Uma varreduras que se encaixa nessa categoria é a ping sweep, que varre rapidamente um intervalo de IPs e determina se um endereço tem ou não um host ativo.
Vulnerability Scan: Uma varredura de vulnerabilidade é aquela usada para identificar brechas ou vulnerabilidades em um sistema. Esse tipo de verificação é comumente feita como uma medida proativa, com o objetivo de detectar problemas internamente antes que um invasor consiga localizar essas mesmas vulnerabilidades e agir de acordo com elas. Uma varredura de vulnerabilidade típica descobre hosts ativos, pontos de acesso e portas abertas, analisa a resposta do serviço, classifica ameaças e gera relatórios.
Técnicas de Scanning
As técnicas de varredura de porta são projetadas para identificar as portas abertas em um alvo. Isto é frequentemente usado pelos administradores para verificar as políticas de segurança de suas redes e por atacantes para identificar os serviços em execução em um host com a intenção de comprometê-lo. Na imagem abaixo podemos ver as principais técnicas de scanning de redes:
TCP Connect / Full Open Scan
Esse método é a forma mais confiável de TCP scanning. A chamada connect() fornecida pelo SO é usada para abrir uma conexão com cada porta desejada com o alvo. A desvantagem desse tipo de scan é que ele é facilmente detectável pois gera muito ruído no alvo, uma vez que ele completa todo o fluxo do Three-way handshake.
Stealth Scan / Half-open Scan
Esta técnica é frequentemente chamada de escaneamento de porta entreaberta (half-open scanning), porque você não abre uma conexão TCP completamente. Você envia um pacote SYN, como se fosse abrir uma conexão real e então espera uma resposta. Um SYN/ACK indica que a porta está ouvindo (aberta), enquanto um RST (reset) é indicativo de uma não aberta.
Xmas Scan
Esse tipo de scan explora uma brecha sutil na RFC 793 do TCP para diferenciar entre porta aberta e fechada. Quando se faz um scan em sistemas padronizados com o texto desta RFC, qualquer pacote que não contenha os bits SYN, RST, ou ACK irá resultar em um RST como resposta se a porta estiver fechada, e nenhuma resposta se a porta estiver aberta.
ACK Flag Scan
Esse scan é diferente dos outros discutidos até agora pelo fato de que ele nunca determina se uma porta está aberta. Ele é utilizado para mapear conjuntos de regras do firewall, determinando se eles são orientados à conexão ou não e quais portas estão filtradas.
Inverse TCP Flag Scan
Atacantes enviam os pacotes TCP habilitando várias flags TCP (FIN, URG, PSH) ou sem nenhuma flag. Quando a porta está aberta, o atacante não recebe qualquer resposta do host, enquanto que, quando a porta está fechada, ele recebe um RST/ACK do host de destino.
IDLE Scan
Este método avançado de scan permite um scan TCP realmente cego das portas do alvo (significando que nenhum pacote é enviado para o alvo com seu endereço IP real). Ao invés disso, um ataque canal-lateral (side-channel) explora a previsibilidade de geração de sequência de ID. Sistemas IDS irão mostrar o scan como se viessem da máquina zumbi que você especificou (que deve estar ativa e obedecer a alguns critérios). Perceba que caso a porta do alvo esteja aberta a numeração do IPID será incrementada por 2, como é mostrado na fase 3. Caso a porta esteja fechada, o IPID será incrementado por 1, como também é mostrado na fase 3:
UDP Scan
Embora os serviços mais populares na Internet trafeguem sobre o protocolo TCP, os serviços UDP são amplamente difundidos. O DNS, SNMP, DHCP e SNMP são alguns desses protocolos. Pelo fato do escaneamento UDP ser normalmente mais lento e mais difícil que o TCP, alguns atacantes ignoram essas portas. Isso é um erro, pois serviços UDP passíveis de exploração são bastante comuns (ex: SNMPv1/v2) e invasores certamente não ignoram o protocolo inteiro.
Questionário
1. ________ is a method developed to avoid the false positive from other scans, due to a packet filtering device present on the target machine. a)ACK flag scanning b)SYN/FIN scanning c)Banner grabbing d)Vulnerability scanning
2.Which of the following is a port scanning countermeasure? a)All of these b)A strong firewall c)Network intrusion detection systems d)Keeping only necessary ports open
3.ICMP echo scanning is used to: a)Discover live machines by pinging one machine in the target network b)Discover live and dead machines by pinging all the machines in the target network c)Discover live machines by pinging all the machines in the target network d)Port scan
4.NULL scans send TCP packets with all flags turned on. a)FALSE b)TRUE
5.Which of the following is not a type of scanning? a)Virus scanning b)Port scanning c)Network scanning d)Vulnerability scanning
6.The process of gathering additional details about the target using highly complex and aggressive reconnaissance techniques is known as ______. a)Footprinting b)Spoofing c)Scanning d)Proxy chaining
7.If a host does not respond to a ping, it means that host is not alive. a)FALSE b)TRUE
As respostas do questionário do post anterior são: 1. A / 2. A / 3. D / 4. A / 5. A
Bem pessoal é isso ai, espero que tenham curtido. No próximo post da série eu vou passar as respostas do questionário de hoje e dar continuação ao post de hoje, abraços. Não esqueçam de curtir nossas páginas nas redes sociais, Facebook, G+ e seguir o Guia do Ti no Twitter. Compartilhem e comentem esse artigo, isso é muito importante para divulgação do nosso trabalho.
Referências
CEH v9: Certified Ethical Hacker Version 9 Study Guide CEH v9: Certified Ethical Hacker Version 9 Practice Tests https://tools.ietf.org/html/rfc793 https://en.wikipedia.org/wiki/Transmission_Control_Protocol https://en.wikipedia.org/wiki/Nmap https://en.wikipedia.org/wiki/Idle_scan https://www.greycampus.com/opencampus/ethical-hacking/scanning-methodology https://nmap.org/book/idlescan.html https://thesprawl.org/research/port-scanning/ https://nmap.org/book/man-port-scanning-techniques.html
- Metasploit Framework de cabo a rabo – Parte 6 - 4 de junho de 2018
- Metasploit Framework de cabo a rabo – Parte 5 - 28 de maio de 2018
- CEH – Scanning Networks – Parte 2 - 24 de maio de 2018
Bom dia Ricardo, parabéns pelo post, desde que conheci o site venho acompanhando direto as matérias estou aprendendo muito com vocês.
Este questionário no final ótima ideia só vi em livros essa dinâmica.
Tenho uma sugestão para este post, após o descritivo de cada tipo de scan poderia ser colocado um exemplo de comando para podermos testar em nosso ambiente e ter um ponto de partida para as novas possibilidades.
Muito bom o artigo aguardando os próximos.