NMAP

NOTA: Use sempre o Nmap com permissões de root, pois só assim ele será capaz de montar os pacotes corretamente e trazer melhores resultados.

Atualizando o Nmap

nmap --script-updatedb

NSE (Nmap Scripting Engine)

Script automatizados escrito em linguagem Lua, que pode realizar ataques de Brute Force, enumeração de informações, detecção de vulnerabilidades, etc. Todos os scritps NSE estão localizadas em /usr/share/nmap/scripts/.

Descrição do Script

nmap --script-help <script-name>

Executando um script

nmap --script=<script_name> -p <port> <ip>

Exibindo as Interfaces

Mostra as interfaces de rede e algumas informações adicionais

nmap --iflist

Definindo a Interface

Realiza o scanner especificando qual interface de rede irá utilizar

nmap -e <interface>

Trabalhando com IPv6

A opção -6 define que é um scanner em IPv6 e o ::1 é o endereço de loopback IPv6

nmap -6 ::1

Utilizando Proxy

Caso precise, utilize um proxy para camuflar seu IP

nmap <ip> --proxies

Selecionando as Portas

OBS.: Por padrão, o Nmap varre somente até a porta 1024 e portas superiores importantes, como a 3306 do MySQL

# Varrendo a porta 80
nmap -p80 <ip>

# Varrendo todas as portas
nmap -p1-65535 <ip>
# ou
nmap -p* <ip>
# ou
nmap -p- <ip>

# Varrendo portas selecionadas
nmap -p80,153,443 <ip>

# Varrendo range de portas
nmap -p80-83 <ip>

# Buscando por todas as portas que trabalham com serviço HTTP
nmap -p http* <ip>

Port Spoofing

Realiza um Port Spoofing, ou seja, o alvo vai pensar que a requisição está partindo da porta 53. Isso é útil para enganar firewall, pois geralmente quando se acessa uma porta, esse acesso é realizado por portas altas (acima de 1024), por exemplo, ao acessarmos o FTP (21), utilizamos uma porta aleatória (ex 50301) e quando forçamos uma porta baixa, dificulta o trabalho do firewall para rastrear um Port Scanner

nmap -p80 -g53 <ip>

Spoof MAC

No lugar de <mac_address>, pode-se colocar também nome de fabricantes como Dell, Apple, etc, assim o nmap já emula um MAC Address compatível com o fabricante

nmap --spoof-mac <mac_address> <ip>

Decoy (Chamariz)

Este sem dúvida é um bom trick para fazer bypass em IDS, pois podemos realizar um scan utilizando IP's aleatórios, a fim de confundir o IDS. Dependendo da situação, nosso IP nem se quer é bloqueado, pois o IDS registrou somente alguns dos IP's falsos que enviamos, então o nosso IP passou despercebido.

Podemos então, falsificar o IP, da seguinte forma"

nmap -D 192.168.1.2,192.168.1.10,192.168.1.78 <ip_alvo>

Caso não queira ficar definindo o IP manualmente, use o modo random:

nmap -D RND:<quantidade_de_IP> <ip>

Idle Scan

Para saber o IP da máquina zumbi, veja no metasploit como fazer isso

nmap -PN -sI <ip_zumbi> <ip_alvo>

Determinando Protocolos com Portas

Os comandos abaixo especifica uma determinada porta para trabalhar com determinado protocolo, porém todas as outras portas serão scaneadas. Utilize o -p caso queira filtrar as portas:

# Scan utilizando TCP/SYN na porta 80
nmap -PS80 <ip>

# Scan utilizando TCP/ACK na porta 80
nmap -PA80 <ip>

# Scan utilizando UDP na porta 80
nmap -PU80 <ip>

# Scan utilizando SCTP na porta 80
nmap -PY80 <ip>

# Scan utilizando ICMP Echo na porta 80
nmap -PE80 <ip>

# Scan utilizando ICMP Timestamp na porta 80
nmap -PP80 <ip>

# Scan utilizando IP/Ping na porta 80
nmap -PO80 <ip>

# Scan utilizando ARP/Ping na porta 80
nmap -PR80 <ip>

SYN Stealth Scan

Não completa as 3 etapas do Three-way Wayhandshake SYN - SYN/ACK - ACK. Só vai até o segundo passo (SYN/ACK). Isso dificulta os firewalls a localizar o scan, pois ele faz o scan com menos ruído.

nmap -sS <ip>

Varredura sem Portas

Sem varredura de porta. Portas fechadas enviam um pacote RST como resposta a pacotes FIN, enquanto portas abertas ignoram esses pacotes. Nenhuma flag é ligada no pacote FIN. Este substitui a antiga opção -sP.

OBS.: Esse método não funciona com a plataforma Windows, uma vez que a Microsoft não seguiu RFC 973

nmap -sn <ip>

Varredura sem Portas (Somente IP's)

Comando semelhante ao de cima, porém esse filtra para nos retornar somente os IP's

sudo nmap -sn 192.168.0.0/24 | grep for | cut -d " " -f5,6

Mapeando Regras de Firewall

O objetivo desta varredura é mapear as regras de um firewall para determinar se o mesmo faz tratamento completo de conexão ou não. Esse scan inicia uma comunicação com o alvo usando uma flag de confirmação ACK ligada (último passo do Handshake de 3 vias) sem nem mesmo ter enviado alguma solicitação. Uma resposta reset (RST) indica que a porta consultada não está sendo filtrada.

Os únicos resultados neste tipo de varredura são:

  • Filtered: A porta está protegida por firewall

  • Unfiltered: A porta não está protegida por firewall

    nmap -sA <ip>

TCP Connect() Scan

É a técnica mais básica de TCP scanning. É utilizada a chamada de sistema (system call) connect() que envia um sinal as portas ativas. Caso a porta esteja aberta recebe como resposta connect(). É um dos scan mais rápido e consegue retornar mais informações que o -sS, pois completa o Handshake de 3 vias, porém é fácil de ser detectado, devido ao seu alto ruído

nmap -sT <ip>

UDP Scan

Este método é utilizado para determinar qual porta UDP está aberta em um host. A técnica consiste em enviar um pacote UDP de 0 byte para cada porta do host. Se for recebida uma mensagem ICMP Port Unreachable, então a porta está fechada, senão a porta pode estar aberta. Para variar um pouco, a Microsoft ignorou a sugestão da RFC e com isso a varredura de máquinas Windows é muito rápida.

nmap -sU <ip>

É comum recerbemos open|filtered como resposta de uma porta UDP. Caso isso ocorra, podemos fazer o nmap executar alguns scripts NSE para tentar identificar o serviço (e sua respectiva versão) da determinada porta e trazer assim um resultado mais preciso. Esse processo também se aplica para portas TCP, pois é o mesmo que -sV.

nmap -p <port> -sUV <ip>

TCP e UDP ao mesmo tempo

nmap <ip> -sS -sU -p T:22,80,111,U:161 -sV -A -sC

TCP NULL

Envia uma flag Nula, se receber uma resposta TCP RST, a porta está fechada e, caso não tenha resposta, significa que a porta está aberta

nmap -sN <ip>

Script

Executa scripts básicos (semelhante ao script=default) que somente realizam scan e jamais atacam de fato, como Brute Force, DoS, etc

nmap -sC <ip>

Scan FIN

Scan utilizando o flag FIN, útil para burlar firewalls

nmap -sF <ip>

Script

Scan utilizando o flag FIN, útil para burlar firewalls

nmap -sF <ip>

Xmas Scan

Utiliza Xmas Scan, ou seja, todas as flags. Quase todos os servidores bloqueiam esse tipo de scan

nmap -sX <ip>

Top Ports

Pega as 10 primeiras portas principais

nmap --top-ports 10 <ip>

Versionamento

Retorna o versionamento das portas como versão do Apache, SSH, SMTP, etc

nmap -sV <ip>

Intensidade

Parâmetro adicionado do -sV para definir a intensidade do versionamento de porta. Essa intensidade varia de 0 a 9, sendo 0 o default e 9 o mais intensivo possível

nmap -sV --version-intensity 9 <ip>

Alvos Aleatórios

Realiza um scanner em 4 alvos aleatórios na rede

nmap -iR 4 192.168.0.0/24

Pegando o Sistema Operacional

Ao realizar esse tipo de scan, podemos passar mais informações para o nmap, como portas que sabemos que estão abertas, opção -sV para versionar, etc, assim aumenta a probabilidade de conseguirmos descobrir o SO.

Modo Simples

nmap -O <ip>

Modo Agressivo

nmap -O -osscan_guess <ip>

Fast Mode

Filtra somente as portas principais

nmap -F <ip>

Varredura sem usar Ping

Útil para os burlar sistemas que bloqueam o ICMP

nmap -P0 <ip>

O Nmap trabalha com o hping3 (programa muito bom que foi descontinuado desde 2005) integrado. Para utilizá-lo, use o nping (também como root)

sudo nping -c 2 --icmp --icmp-type time <ip>

Com/Sem Resolução de Nome

# Não resolve o nome do alvo quando escaneia pelo IP
nmap -n <ip>

# Este sempre resolve o nome do alvo
nmap -R <ip>

Agressive Scan

Ativa o script enginer padrão com um scanner bem refinado, trazendo assim diversas informações, como se estivesse utilizando vários parâmetros como -sC, -sV e --traceroute de uma só vez

nmap -A <ip>

Ping Null

Ignora as opções de descoberta de host, pois não utiliza ping

nmap -Pn <ip>

TCP Null

Também mostra todas as máquinas que estão na rede, pois utiliza TCP NULL na flag. Desse modo faz com que não varra as portas e utilize somente a varredura ARP

nmap -sn -PR 192.168.0.0/24

Alvos a Partir de um Arquivo

Lê um arquivo com os IP's a serem scaneados. Esse arquivo deve ter cada IP em uma linha

nmap -iL <lista.txt>

Excluindo um Alvo

Caso esteja usando o -iL ou um 192.168.0.0/24 e deseja excluir determinado IP, utilize o --exclude

nmap --exclude <ip-excluido> -iL <lista.txt>
# ou
nmap 192.168.0.0/24 --exclude <ip-excluido>

Excluindo Alvos com Arquivo

Varre todos os IP's, exceto os que estão contidos no arquivo

nmap 192.168.0.0/24 --excludefile <lista.txt>

Random Host com Pausas

Não utilize esse scan em um host alvo, mas sim em toda a rede. O nmap vai fazer um scan em um host, vai pular para outro, depois outro, depois volta no primeiro host para continuar o scan, e assim por diante, para dificultar o que seja pego por um IDS

nmap --randomize-hosts 192.168.0.0/24

Bypass ICMP

Máscara de endereço ICMP. Utilizado quando o host está configurado para ignorar mensagens ICMP ECHO, mas não pode ignorar outros tipos de mensagens ICMP

nmap -PM <ip>

Fragment Packets

Fragmenta os pacotes. Utilizado quando o alvo utiliza um dispositivo de filtagem de pacotes simples como firewall. Essa opção divide o cabeçalho TCP de 20 bytes em 3 pacotes, sendo 2 pacotes com 8 bytes e 1 pacote com 4 bytes. Isso deixa o scan com mais ruído, mas ao memos tempo fica mais difícil para o IDS detectar

nmap -f <ip>

Cabeçalho Personalizado

Envia um cabeçalho normal e insere bytes (nesse caso 80) de textos aleatórios adicionais no cabeçalho dos pacotes, para confundir o firewall que acha que são pacotes verdadeiros. Utilize em Pings e Port Scans. É um pouco mais lento, porém é mais discreto

nmap --data-length 80 <ip>

Mensagens nos Pacotes

Irá enviar a string "Hackeado!" nos pacotes. Os administradores de rede poderão ver essa mensagem no pacote/log. Serve só para irritar alguém

nmap <ip> --data-string "Hackeado!"

Checksum

Checksum é útil para validar se os pacotes TCP/IP chegam íntegros. Bad CheckSum utiliza Checksum mal configurado, alterando a sequência do Checksum, tirando assim a validação e fazendo com que o firewall se perca. Caso não retorne nada , é porque a rede está o checksum bem configurado

nmap --badsum <ip>

Maximum Transmition Unique

Semelhante a opção -f, porém temos a liberdade de escolher quantos bytes queremos dividir, lembrando que o MTU, deve ser sempre um valor divisível por 8. Por padrão, vem como MTU 24. Quanto menor o MTU, mais pacotes são fragmentados e enviados e, ao mesmo tempo mais difícil fica para o firewall detectar a varredura

nmap -mtu 32 <ip>

Flag de Privilégio

Adiciona a Flag de privilégio para acessar o host. Os firewalls checa essa flag para determinar você está na rede e pode ou não acesso o alvo. Esse parâmtro é muito útil, principalmente para realizar varreduras em IP's externos

nmap --privileged <ip>

Enviando IP ao invés de ARP

Por padrão o nmap utiliza o protocolo ARP pra fazer varredura. Utilize esse parâmetro para enviar IP no lugar de ARP

nmap --send-ip <ip>

Mostrando os pacotes

Mostra os pacotes que estão sendo enviados

nmap --packet-trace <ip>

Salvando os Resultados

É possível salvar os resultados do Nmap em alguns formatos

# Output Normal, salva o resultado em um formato legível
nmap -oN <ip>

# Salva a saída em um arquivo separado
nmap -o <ip>

# Salva o resultado em um formato legível para outras ferramentas como o AMAP
nmap -oM <ip>

# Salva o resultado em um arquivo chamado outfile
nmap <ip> -oN <file-name-output>

# Saída do terminal salvo em um arquivo GREPable (delimitado por tabulação), podendo assim ser lido por outros programas, como o GREP
nmap -oG <ip> <file-name-output>

# Salva o resultado em um arquivo XML
nmap -oX <ip> <file-name-output.xml>

# Saída de arquivo semelhante ao comando -oG, porém escrito em "leetspeak", letras escritas com números utiliza por "Script Kiddies". Não utilizar isso em conteúdos profissionais
nmap -oS <ip> <file-name-output>

# Salva o resultado em todos os formatos de arquivo (XML, nmap e gnmap)
nmap -oA <ip> <file-name-output>

Velocidade da Varredura

Rápido

nmap -p- <ip> -T4 --min-parallelism=50 --min-rate=3000

Lento

Quanto mais devagar o Scan, mais difícil de ser detectado será e quanto mais rápido, o inverso. O Nmap também pode trazer falsos-positivos quando está realizando um Scan em uma velocidade muito rápida

# Mais demorado (média de espera de 5 minutos para cada requisição), utilizado em redes onde o scan não pode ser detectado. O parâmetro "max_scan_delay" é ignorado.
# Pode ser substituído por: --timing paranoid
-T0

# Mais rápido que o T0, mantendo ainda sua discrição para não fazer ruídos na rede. Reduz o scan_delay par 15 segundos. O parâmetro "max_scan_delay" é ignorado
# Pode ser substituído por: --timing sneaky
-T1

# Mais rápido que o T0 e o T1. É o último scan utilizando a técnica "scanning serial". A partir deste, pode usar o "max_scan_delay"
# Pode ser substituído por: --timing polite
-T2

# É o scan default do nmap, caso não seja definido um. É o primeiro a usar a técnica de processamento paralelo, enviando vários probes simultaneamente e aumentando a velocidade
# Pode ser substituído por: --timing normal
-T3

# Velocidade mais ráido que o T3
# Pode ser substituído por: --timing agressive
-T4

# É o scan mais rápido de todos, porém pode causar certos erros devido a sua alta velocidade
# Pode ser substituído por: --timing isane
-T5

Traceroute

Realiza um traceroute junto com o port scanner

nmap --traceroute <ip>

Modo Debug

Este é mais voltado para os desenvolvedores, muitas coisas não são legíveis até mesmo para programadores e administradores de redes

nmap -d <ip>

Verbose

O Verbose Mode pode ser acessado em dois níveis

# Modo verbose
nmap <ip> -v

# Modo verbose mais detalhado
nmap <ip> -vv

Entendendo o Porque do Resultado

Explica o porque que o Nmap definiu determinada porta como aberta, fechada ou filtrada

nmap <ip> --reason

Last updated