nmap
O NMAP é uma ferramenta de código aberto usada para varrer e mapear redes. Ele fornece uma variedade de opções de varredura e enumeração para descobrir informações sobre hosts e serviços em uma rede.
Tipos de Scanner
TCP Connect
- Completa o three way handshake;
- "Barulhento" e facilmente detectável;
- Gera mais trafego.
Exemplos:
nmap -sT
nmap -sV
Half Open / Syn Connect
Envia um SYS e analisa a resposta, se for SYS/ACK a porta está aberta e então já é enviado um RST sem completar o handshake.
- Não completa o three way handshake;
- Consome menos tráfego;
- Nível de detecção menor comparado com o TCP connect.
Exemplo:
nmap -sS
Opções de Varredura
- -sn: Detecção de hosts vivos.
- -sT: TCP Connect Scan.
- -sS: SYN Scan / Half Open Scan.
- -sV: Descobrir versões de serviços.
- -sU: UDP Scan.
- -Pn: Ignorar descoberta de host vivo.
- -O: Detecção de sistema operacional.
- -A: Descobrir detalhes sobre sistema operacional e serviços.
- -p-: Varredura de todas as portas (65535).
- -sF: FIN Scan (envia flag FIN).
- -sN: NULL Scan (não envia nenhuma flag).
- -sX: XMAS Scan (envia FIN+PSH+URG).
- -f: Fragmentar pacotes.
- -p: Especificar a porta.
- --open: Mostrar apenas as portas abertas.
- -oN: Salvar resultados em arquivo no formato normal.
- -oX: Salvar resultados em arquivo no formato XML.
- -oG: Salvar resultados em arquivo no formato para gráficos.
Níveis de Agressividade
- -T0: Usado para evitar IDS.
- -T1: Espera cerca de 15 segundos durante a varredura.
- -T2: Espera cerca de 4 segundos durante a varredura.
- -T3: Nível normal (padrão).
- -T4: Varredura rápida.
- -T5: Varredura muito rápida e barulhenta.
Referência: https://nmap.org/book/performance-timing-templates.html
Exemplos
Escaneamento em modo verbose para obter informações de serviços e sistema operacional:
nmap -v -A 192.168.0.0/24
Executar um SYN Scan ignorando a detecção de hosts ativos:
nmap -sS -Pn 192.168.0.0/24
Em casos em que o firewall opera efetuando o DROP, é possível realizar uma varredura com uma porta de origem diferente:
nmap -v -sS --source-port 53 192.168.1.100
No entanto, para explorar essa porta, é necessário utilizar uma porta de origem permitida pelo firewall. Por exemplo:
nc -p53 -vn 192.168.1.100 8081
Nesse caso, estamos utilizando a porta 53 como porta de origem para conectar à porta 8081.
Nesse tipo de bypass no firewall, as portas 53, 443 e 80 são normalmente permitidas.
Enumeração de SMB
O NMAP possui scripts para a enumeração de SMB, que estão localizados no diretório /usr/share/nmap/scripts.
Para descobrir o sistema operacional através do SMB, utilize o seguinte comando:
nmap -v --script=smb-os-discovery 192.168.0.114
Para enumerar compartilhamentos SMB, utilize o seguinte comando:
nmap -v --script=smb-enum-shares 192.168.0.114
Enumerando compartilhamentos quando já se possui alguma autenticação válida:
nmap -v -p 445 \
--script "smb-enum-shares" \
--script-args smbusername=administrator,smbpassword='administrator!!' \
172.16.0.200
Para enumerar usuários e compartilhamentos, utilize o seguinte comando:
nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.216.122
Também é possível executar todos os scripts relacionados ao SMB:
nmap -v --script=smb* 192.168.0.114
Enumeração de DNS
Para obter uma lista de subdomínios, execute o seguinte comando:
nmap 131.221.240.0/22 -sn | grep "inatel.br" | awk '{print $5}'
Enumeração de NFS
Para enumerar serviços NFS, utilize o seguinte comando:
nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.216.122
Conversão de XML para JSON
Para converter um arquivo XML para JSON, utilize os seguintes comandos:
cat port_scan.xml | xq . | tr -d '@' | jq
Antes de executar o comando acima, é necessário instalar alguns pacotes adicionais:
sudo apt install jq
pip install yq
Referência: https://www.howtogeek.com/devops/how-to-convert-xml-to-json-on-the-command-line/