Skip to main content

Nmap | Port Scanner | Solyd One

  • Nmap | Port Scanner | Solyd One

TCP

TCP Scanning Scanning mais simples, se conecta ao host remoto e tenta estabelecer uma conexão na porta especificada. Também é conhecido por Connect Scan. Espera pelo 3-way handshake de uma conexão TCP. Utiliza as funções de conexão do sistema operacional e não precisa de privilégios administrativos. É um método barulhento e pode deixar logs com o IP do atacante.

SYN Scanning Também um TCP Scan, porém dessa vez não utiliza por funções prontas de conexão do sistema operacional e sim forja seus próprios pacotes de SYN que são enviados ao alvo, que por sua vez se estiver com a porta aberta responde com um pacote SYN ACK, então o atacante responde com pacote RST que fecha a conexão nunca completando o 3-way handshake. Como os pacotes são forjados tem-se um maior controle sobre o scan.

UDP

UDP Scanning O scan UDP é possível, porém lento e não tão confiável. Como o protocolo UDP não emite respostas em uma conexão fica difícil saber se a porta está aberta ou fechada, porém quando a porta está fechada é emitido um pacote ICMP (ping) com a mensagem de porta fechada. Portanto quando não é recebido mensagem alguma a porta é declarada como aberta, o que pode causar falsos positivos já que alguns firewalls cortam o envio do ICMP, fazendo assim que a porta seja declarada como aberta quando na verdade está fechada. Uma outra abordagem seria enviar pacotes específicos de um serviço e esperar pela resposta de tais serviços.

FIN Scanning Com o uso em grande escala do SYN Scanning, a maioria dos firewall bloqueia tais tipos de pacotes, enquanto o uso do FIN pode fazer o by-pass do mesmo. A porta fechada então responde com um RST enquanto a porta aberta simplesmente ignora a conexão.

info

O Nmap possui scripts para obter vulnerabilidades

Sintaxe básica

nmap [opções] <alvo>

Modos de varredura de portas

  • -sS → TCP SYN (stealth scan)
  • -sT → TCP connect (completa conexão)
  • -sU → UDP scan
  • -sN → TCP Null scan
  • -sF → TCP FIN scan
  • -sX → TCP Xmas scan
  • -sC → Executar os scripts padrão do NSE (Nmap Scripting Engine) - Aplica scripts para identificar vulnerabilidades

Detecção de serviços e SO

  • -sV → detectar versões de serviços
  • -O → detectar sistema operacional
  • --osscan-guess → tentar adivinhar o SO mesmo com baixa certeza
  • --version-all → tenta identificar todas as versões com mais agressividade

Opções comuns

  • -p <portas> → especifica portas (ex: -p 80,443 ou -p 1-1000)
  • -T<0-5> → define agressividade (0 = paranoid, 5 = insane)
  • -Pn → não faz ping (assume que o host está ativo)
  • -n → não resolve DNS
  • -v / -vv → modo verboso (nível de detalhes)
  • -oN arquivo.txt → saída normal em arquivo
  • -oX arquivo.xml → saída XML
  • -oA prefixo → salva em todos os formatos (.nmap, .xml, .gnmap)
  • --max-retries <n> → define o número máximo de tentativas
  • --open → mostra apenas portas abertas
  • --reason → mostra por que a porta foi classificada como aberta/fechada

Scripts NSE (Nmap Scripting Engine)

  • --script <nome> → executa script específico
  • --script-help <nome> → mostra detalhes do script
  • --script vuln → executa scripts de detecção de vulnerabilidades
  • --script ftp-* → scripts relacionados a FTP
  • --script smb-* → scripts relacionados a SMB

Exemplos

Realizar Scan com Nmap

  • O comando abaixo ele faz um scan nas 1000 portas mais populares
nmap <host> -p <range ex 1-1000>
  • -p: range das portas que você quer. Pode colocar um range e também colocar com , para especificar portas específicas. Ex: 1-3000. 3306

Scan pelo range de ips

nmap 192.168.100.0/24 -sL
  • -sL: O -sL ativa o List Scan. Isso significa que o Nmap não faz varredura de portas nem envia pacotes de varredura ativos. Ele apenas resolve os endereços IP e nomes de host dentro do intervalo especificado. Valida quais host existem na rede

Usando um arquivo de host

nmap -iL <caminho_do_arquivo>
  • -iL: faz o scan baseado em arquivos

Obter serviços rodando no host

nmap -sV <host>
  • -sV: obter os serviços rodando

Descobrir versão do sistema operacional

nmap -O <host>

Syn Scanning

nmap <host> -p <port> -sS
  • -sS: ativa o famoso SYN Scan, também chamado de half-open scan ou stealth scan. É menos intrusivo e gera menos ou nenhum log no atacante

Scan de portas UDP

info

Para descobrir serviços que rodam em UDP, como:

  • DNS (53/udp)
  • DHCP (67/udp, 68/udp)
  • SNMP (161/udp)
  • NTP (123/udp)
  • Syslog (514/udp)
nmap -sU <host>

Salvar Output do Scanning

nmap <host> -oN <name_file>
  • -oN: Salva o resultado

Rodando scripts

🗂️ Categorias principais dos scripts NSE

Os scripts são organizados em categorias, cada uma com uma função específica:

  • auth → testes de autenticação em serviços (ex.: brute force de login).
  • broadcast → descoberta de hosts/serviços via broadcast.
  • brute → ataques de força bruta a senhas/usuários.
  • default → scripts básicos executados com -sC (como banner grabbing).
  • discovery → informações adicionais sobre a rede/host.
  • dos → scripts para DoS (não são recomendados em ambientes de produção).
  • exploit → exploração de vulnerabilidades conhecidas.
  • external → usam serviços externos para auxiliar na enumeração.
  • fuzzer → fuzzing de protocolos/serviços.
  • intrusive → podem gerar tráfego agressivo (não stealth).
  • malware → detectam backdoors, bots e malware.
  • safe → garantidamente não intrusivos.
  • version → coleta informações detalhadas sobre serviços.
  • vuln → detecção de vulnerabilidades conhecidas.

Exemplo de comando com script

  nmap --script vuln 192.168.100.10
info

O comando nmap --script-help=all traz uma explicação de cada categoria

Técnicas de bypass de Firewall, IDS e IPS

danger

Abaixo estão algumas técnicas para evasão desses sistemas de segurança. Para ver o funcionamento, utilize o comando tcpdump -i <nome_da_interface>. Por exemplo pode ser o lo para ver a rede local e em outro terminal rode os comandos nmap

success

Para saber o significado de IDS e IPS clique aqui

  • Diminuir o tempo do scan, demora mais, porém faz menos barulho dentro da rede

    nmap -T2 127.0.0.1
    warning

    Entre o T1 e T2 está bom

  • Define uma quantidade de portas a buscar

    nmap --top-ports=10 127.0.0.1 --open
    info

    Busca pelas 10 principais portas abertas

  • O Scan sai de uma porta específica

      nmap -g 53 127.0.0.1 -p 80 
  • Fragmentar pacotes

      nmap -g 53 127.0.0.1 -f -p 80 
  • Deploys (simula vários ips fazendo o scan)

    info

    Ele não vai conseguir identificar tão cedo o nosso ip

    nmap -g 53 127.0.0.1 -f -p 80 -D 10.10.20.20, 59.68.20.3

Script para escanear

import socket
import sys


def scan(host, ports):
try:
for port in ports:
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.settimeout(0.5)
code = client.connect_ex((host, int(port)))
if code == 0:
print("[+] {} open".format(port))
except:
print("Error, something is wrong.")


if __name__ == "__main__":
if len(sys.argv) >= 2:
host = sys.argv[1]
if len(sys.argv) >= 3:
ports = sys.argv[2].split(",")
else:
ports = [21, 22, 23, 25, 80, 443, 445, 8080, 8443, 3306, 139, 135]

scan(host, ports)
else:
print("Usage: python portscan.py google.com 22,23,80,443")

Snipets de comandos

Varredura UDP em todas as portas (Extremamente lento)

  nmap xxx.xxx.xx.xx -T4 -sU -p -
  • -p -: todas as portas
  • -sU: UDP Scan
  • --open: mostra só portas que parecem abertas (ou open|filtered).

Varredura nas top 100 portas UDP

  sudo nmap -T4 -sU --top-ports 100 -v xx.xxx.xx.xxx 

Obter as versões dos serviços e portas

  nmap xxx.xxx.xx.xx -T4 -sV 

Obter todas as portas (lento)

 nmap xxx.xxx.xx.xx -p -