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.
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,443ou-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-sLativa 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
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
O comando nmap --script-help=all traz uma explicação de cada categoria
Técnicas de bypass de Firewall, IDS e IPS
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
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.1warningEntre o T1 e T2 está bom
-
Define uma quantidade de portas a buscar
nmap --top-ports=10 127.0.0.1 --openinfoBusca 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)
infoEle 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 -