Escaneando portas com Nmap

Nmap é uma ferramenta muito conhecida pelo o que faz: port scanning. Seu manual pode ser um pouco assustador devido aos diversos comandos e a capacidade que esta ferramenta tem de trazer informações sobre um host.

Firewalls com sistemas de detecção e prevenção de intrusão podem identificar os pacotes enviados por ele, sendo assim você não conseguirá obter muitos resultados. Você pode ser contratado para fazer um pentest em um range de hosts e não conseguir identificar nenhuma máquina online, e isto provavelmente será porque você está sendo bloqueado por um firewall. Por outro laod, o resultado de seu escaneamento acusará que as máquinas estão respondendo e achará diversas portas abertas.

SYN Scan

Começaremos com um SYN scan contra um host. Um SYN scan é um escaneamento TCP que não finaliza o handshake. Uma conexão TCP inicia com um handshake de 3 vias: SYN; SYN-ACK; ACK. Veja abaixo:

Estabelecimento de conexão TCP - 3 way handshake

Estabelecimento de conexão TCP – 3 way handshake

É um SYN scan, o Nmap envia o SYN e espera pelo SYN-ACK se a porta estiver aberta, mas nunca enviará o ACK para completar a conexão. Se o pacote SYN não receber uma resposta SYN-ACK, a porta não está disponível, ou por estar fechada ou a conexão está sendo filtrada. Desta forma, o Nmap verifica se a porta está aberta sem completar a conexão com a máquina alvo. A sintaxe para o SYN scan é com a flag -sS

Vejamos um exemplo do uso do SYN scan e ao mesmo tempo vamos incluir a flag -o a qual é a opção de output do resultado do Nmap em um arquivo. A opção -o diz ao Nmap para logar todo o resultado em alguns formatos, como: .nmap; .gnmap (greppable Nmap) e .xml. O formato .nmap é fácil de visualizar em tela, igual ao resultado obtido durante o scan. A saída do tipo .gnmap (greppable Nmap) é formatado para ser usado com o comando grep para buscar informações específicas. XML é um formato padrão usado para importar o resultado em outras ferramentas.

Vejamos um exemplo de SYN scan:

nmap -sS scanme.nmap.org
Starting Nmap 7.12 ( https://nmap.org ) at 2016-XX-XX XX:XX Hora oficial do Brasil
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.14s latency).
Not shown: 995 filtered ports
PORT STATE SERVICE
21/tcp open ftp
1024/tcp closed kdm
1863/tcp closed msnp
2048/tcp closed dls-monitor
6901/tcp closed jetstream

Nmap done: 1 IP address (1 host up) scanned in 25.47 seconds

Como pode ser visto, o Nmap retorna as portas que foram encontradas abertas e fechadas. Veremos nas próximas postagens como prosseguir com as informações que se obtêm no escaneamento de portas. É muito provável que algumas portas que você encontre aberta tenha vulnerabilidades. A porta aberta não significa que ela tenha vulnerabilidade, mas isto nos deixa uma possibilidade que um software vulnerável possa estar rodando nas portas identificadas. Pode ser que você encontre portas abertas que são de serviços de internet, como um servidor Web (porta 80), e outra porta local (139) que é de RPC. Elas podem ter softwares exploráveis ouvindo nestas portas que não tem permissão através do firewall, e pode existir software vulnerável rodando localmente no host, mas não será possível explorá-los diretamente através da rede, com exceção do que está exposto para web. Um escaneamento básico no Nmap nos ajuda a focar nossos esforços durante o pentest.

Escaneando versões dos softwares

O SYN scan realizado acima foi furtivo (stealthy), mas não disse muita coisa sobre os softwares que estão rodando nas portas que estão escutando. Comparado com a versão detalhada de informações que se obtêm usando Netcat em uma conexão em alguma porta, o resultado do SYN scan é pouco informativo. Nós podemos utilizar um scan TCP completo (nmap -sT) ou podemos ir um pouco além e usar o scan de versão do Nmap (nmap -sV) para coletar mais dados. Com as versões exibidas na imagem abaixo, o Nmap completa a conexão e então tenta determinar que software está rodando e, se possível, a versão, usando técnicas como obtenção de banners.

nmap -sV 192.168.1.3
Starting Nmap 7.12 ( https://nmap.org ) at XXXX-XX-XX XX:XX Hora oficial do Brasil
 Nmap scan report for 192.168.1.3
 Host is up (0.071s latency).
 Not shown: 989 closed ports
 PORT STATE SERVICE VERSION
 21/tcp open ftp OpenBSD ftpd 6.4 (Linux port 0.17)
 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 (Ubuntu Linux; protocol 2.0)
 80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
 139/tcp filtered netbios-ssn
 443/tcp open http Apache httpd 2.4.7
 3306/tcp open mysql MySQL 5.5.37-0ubuntu0.14.04.1
 5800/tcp open vnc-http x11vnc
 5900/tcp open vnc VNC (protocol 3.7)
 Service Info: Hosts: TSP-WWW-DOD, 192.168.1.3; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
 Nmap done: 1 IP address (1 host up) scanned in 31.30 seconds

Veja que o resultado é diferente e trás mais informações sobre o nosso alvo. Além de saber quais serviços estão rodando nele, podemos descobrir a versão aproximada (as vezes exata). Isto servirá para a próxima etapa do pentest, onde procuramos as versões dos softwares por possíveis vulnerabilidades.

É importante ter em mente que o Nmap pode trazer a versão errada em alguns casos, pois um software pode ser atualizado e o seu banner não ser alterado no patch de correção, mas pelo menos a versão informada nos dá uma pista para pesquisarmos mais a fundo.

Escaneamento UDP

Tanto o SYN scan e o Version scan são escaneamentos TCP que não enviam requisições para as portas UDP. Devido ao UDP ser sem conexão, o escaneamento lógico é um pouco diferente.

Em um UDP scan (nmap -sU), o Nmap envia pacotes UDP para uma porta. Dependendo da porta, o pacote enviado é um protocolo específico. Se ele receber uma resposta, a porta é considerada aberta. Se a porta estiver fechada, o Nmap receberá uma mensagem do tipo “ICMP Port Unreachable”. Se o Nmap não receber nenhuma resposta, então a porta está aberta e o programa que está ouvindo não responde a consulta do Nmap ou o tráfego está sendo filtrado.

Assim, o Nmap não consegue sempre distinguir enre uma porta UDP aberta e uma que esteja filtrada pelo firewall. Veja a imagem abaixo:

nmap -sU -F 192.168.1.3
Starting Nmap 7.12 ( https://nmap.org ) at XXXX-XX-XX XX:XX Hora oficial do Brasil
Warning: 192.168.1.3 giving up on port because retransmission cap hit (6).
Nmap scan report for 192.168.1.3
Host is up (0.068s latency).
Not shown: 55 closed ports, 44 open|filtered ports
PORT     STATE SERVICE
5353/udp open  zeroconf

Nmap done: 1 IP address (1 host up) scanned in 55.40 seconds

Escaneando uma porta específica

Por padrão, Nmap escaneia somente as 1.000 primeiras portas consideradas mais importantes, não as 65.535 portas TCP e UDP possíveis. O padrão de escaneamento do Nmap irá pegar os serviços mais comuns rodando, mas em alguns casos ele não pegaá alguma porta. Para escanear uma porta específica, use o parâmetro -p. Por exemplo, para escanear as portas 80 no alvo:

nmap -p 80 -T4 192.168.1.3
Starting Nmap 7.12 ( https://nmap.org ) at XXXX-XX-XX XX:XX Hora oficial do Brasil
Warning: 192.168.1.3
Nmap scan report for 192.168.1.3
Host is up (0.067s latency).
PORT     STATE SERVICE
80/tcp open  http
Nmap done: 1 IP address (1 host up) scanned in 5.49 seconds

É importante ter em mente que ao escanear alguns serviços, eles podem não estar preparados para receber os inputs enviados pelo Nmap, o que pode causar um travamento no serviço ou simplesmente dar um crash. Embora não é algo que desejamos que isto aconteça durante um pentest, sempre existe a possibilidade de acontecer quando se fala de computadores. Serviços de sistemas SCADA são particularmente notórios para este tipo de comportamento. Você sempre tem que explicar que existe essa possibilidade para seu cliente. Quando trabalhamos com computadores, não temos garantias.

Voltaremos a utilizar o Nmap nas próximas postagens quando usarmos os Nmap Scripting Engine (NSE) para aprender informações mais detalhadas sobre vulnerabilidade do nosso sistema alvo antes de começar a explorá-lo.

Para facilitar a consulta de possíveis comandos do Nmap, montei o mapa mental abaixo.

Mapa mental do Nmap

Mapa mental do Nmap

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *