# Nmap Summary (ESP)
{% hint style="success" %}
Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
{% endhint %}
{% embed url="https://websec.nl/" %}
```
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
```
## Parâmetros
### IPs a escanear
* **`,`:** Indica os ips diretamente
* **`-iL `:** lista\_IPs
* **`-iR `**: Número de Ips aleatórios, você pode excluir possíveis Ips com `--exclude ` ou `--excludefile `.
### Descoberta de equipamentos
Por padrão, o Nmap inicia uma fase de descoberta consistindo em: `-PA80 -PS443 -PE -PP`
* **`-sL`**: Não é invasivo, lista os alvos fazendo **DNS** solicitações para resolver nomes. É útil para saber se, por exemplo, www.prueba.es/24 todos os Ips são nossos alvos.
* **`-Pn`**: **Sem ping**. Isso é útil se você sabe que todos estão ativos (caso contrário, você pode perder muito tempo, mas essa opção também produz falsos negativos dizendo que não estão ativos), impede a fase de descoberta.
* **`-sn`** : **Sem varredura de portas**. Após completar a fase de reconhecimento, não escaneia portas. É relativamente furtivo e permite uma pequena varredura de rede. Com privilégios, envia um ACK (-PA) para 80, um SYN(-PS) para 443 e uma solicitação de eco e uma solicitação de timestamp; sem privilégios, sempre completa conexões. Se o alvo for a rede, usa apenas ARP(-PR). Se usado com outra opção, apenas os pacotes da outra opção são descartados.
* **`-PR`**: **Ping ARP**. É usado por padrão ao analisar computadores em nossa rede, é mais rápido do que usar pings. Se você não quiser usar pacotes ARP, use `--send-ip`.
* **`-PS `**: Envia pacotes SYN para os quais, se responder SYN/ACK, está aberto (para o qual responde com RST para não encerrar a conexão); se responder RST, está fechado e se não responder, está inacessível. No caso de não ter privilégios, uma conexão total é usada automaticamente. Se nenhuma porta for fornecida, é direcionado para 80.
* **`-PA `**: Como o anterior, mas com ACK, combinando ambos dá melhores resultados.
* **`-PU `**: O objetivo é o oposto, são enviados para portas que se espera que estejam fechadas. Alguns firewalls verificam apenas conexões TCP. Se estiver fechado, é respondido com porta inacessível; se for respondido com outro icmp ou não for respondido, é deixado como inacessível.
* **`-PE, -PP, -PM`** : ICMP PINGS: resposta de eco, timestamp e máscara de endereço. Eles são lançados para descobrir se o alvo está ativo.
* **`-PY`**: Envia sondas SCTP INIT para 80 por padrão; INIT-ACK(aberto) ou ABORT(fechado) ou nada ou ICMP inacessível(inativo) podem ser respondidos.
* **`-PO `**: Um protocolo é indicado nos cabeçalhos; por padrão, 1(ICMP), 2(IGMP) e 4(Encap IP). Para protocolos ICMP, IGMP, TCP (6) e UDP (17), os cabeçalhos de protocolo são enviados; para os demais, apenas o cabeçalho IP é enviado. O objetivo disso é que, devido à má formação dos cabeçalhos, respostas de Protocolo inacessível ou do mesmo protocolo são respondidas para saber se está ativo.
* **`-n`**: Sem DNS
* **`-R`**: DNS sempre
### Técnicas de varredura de portas
* **`-sS`**: Não completa a conexão, portanto não deixa rastros, muito bom se puder ser usado. (privilégios) É o que é usado por padrão.
* **`-sT`**: Completa a conexão, portanto deixa um rastro, mas pode ser usado com certeza. Por padrão, sem privilégios.
* **`-sU`**: Mais lento, para UDP. Principalmente: DNS(53), SNMP(161,162), DHCP(67 e 68), (-sU53,161,162,67,68): aberto(resposta), fechado(porta inacessível), filtrado (outro ICMP), aberto/filtrado (nada). No caso de aberto/filtrado, -sV envia numerosas solicitações para detectar qualquer uma das versões que o nmap suporta e pode detectar o verdadeiro estado. Aumenta muito o tempo.
* **`-sY`**: O protocolo SCTP falha ao estabelecer a conexão, portanto não há logs, funciona como -PY
* **`-sN,-sX,-sF`:** Null, Fin, Xmas, podem penetrar alguns firewalls e extrair informações. Eles se baseiam no fato de que máquinas compatíveis com o padrão devem responder com RST a todas as solicitações que não têm SYN, RST ou ACK. Respostas levantadas: aberto/filtrado(nada), fechado(RST), filtrado (ICMP inacessível). Não confiável no Windows, Cisco, BSDI e OS/400. No unix sim.
* **`-sM`**: Varredura Maimon: Envia flags FIN e ACK, usado para BSD, atualmente retornará tudo como fechado.
* **`-sA, sW`**: ACK e Window, é usado para detectar firewalls, para saber se as portas estão filtradas ou não. O -sW distingue entre aberto/fechado, uma vez que os abertos respondem com um valor de janela diferente: aberto (RST com janela diferente de 0), fechado (RST janela = 0), filtrado (ICMP inacessível ou nada). Nem todos os computadores funcionam dessa forma, então se tudo estiver fechado, não está funcionando; se estiverem poucos abertos, está funcionando bem; e se estiverem muitos abertos e poucos fechados, está funcionando ao contrário.
* **`-sI`:** Varredura Idle. Para os casos em que há um firewall ativo, mas sabemos que ele não filtra para um determinado Ip (ou quando simplesmente queremos anonimato), podemos usar o scanner zumbi (funciona para todas as portas); para procurar possíveis zumbis, podemos usar o script ipidseq ou o exploit auxiliar/scanner/ip/ipidseq. Este scanner é baseado no número IPID dos pacotes IP.
* **`--badsum`:** Envia a soma errada, os computadores descartariam os pacotes, mas os firewalls poderiam responder algo, é usado para detectar firewalls.
* **`-sZ`:** Scanner SCTP "estranho", ao enviar sondas com fragmentos de cookie echo, eles devem ser descartados se abertos ou respondidos com ABORT se fechados. Pode passar por firewalls que o init não passa, o ruim é que não distingue entre filtrado e aberto.
* **`-sO`:** Varredura de protocolo IP. Envia cabeçalhos ruins e vazios nos quais às vezes nem o protocolo pode ser distinguido. Se chegar um protocolo ICMP inacessível, está fechado; se chegar uma porta inacessível, está aberta; se chegar outro erro, filtrado; se nada chegar, aberto|filtrado.
* **`-b `:** FTPhost--> É usado para escanear um host a partir de outro, isso é feito conectando o ftp de outra máquina e pedindo para ela enviar arquivos para as portas que você deseja escanear de outra máquina; de acordo com as respostas, saberemos se estão abertas ou não. \[\:\@]\\[:\] Quase todos os servidores ftps não permitem mais que você faça isso e, portanto, é de pouca utilidade prática.
### **Centralizar análise**
**-p:** Serve para dar as portas a escanear. Para selecionar os 65335: **-p-** ou **-p all**. O nmap tem uma classificação interna de acordo com sua popularidade. Por padrão, usa os 1000 principais. Com **-F** (varredura rápida) analisa os 100 principais. Com **--top-ports \** Analisa esse número de principais (de 1 até 65335). Verifica as portas em ordem aleatória; para que isso não aconteça, use **-r**. Também podemos selecionar portas: 20-30,80,443,1024- Isso último significa que olhe adiante do 1024. Também podemos agrupar as portas por protocolos: U:53,T:21-25,80,139,S:9. Também podemos escolher um intervalo dentro das portas populares do nmap: -p \[-1024] analisa até 1024 dos incluídos em nmap-services. **--port-ratio \** Analisa as portas mais comuns que um ratio que deve estar entre 0 e 1
**-sV** Escaneamento de versão, pode-se regular a intensidade de 0 a 9, por padrão 7.
**--version-intensity \** Regulamos a intensidade, de forma que quanto mais baixo, apenas lançará as sondas mais prováveis, mas não todas. Com isso, podemos encurtar consideravelmente o tempo de escaneamento UDP
**-O** Detecção de os
**--osscan-limit** Para escanear bem um host, é necessário que haja pelo menos 1 porta aberta e outra fechada; se essa condição não for atendida e tivermos colocado isso, não tenta fazer previsão de os (economiza tempo)
**--osscan-guess** Quando a detecção de os não é perfeita, isso faz com que se esforce mais
**Scripts**
\--script _\_|_\_|_\_|_\_\[,...]
Para usar os de por efeito, vale com -sC ou --script=default
Os tipos que há são de: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, e vuln
* **Auth:** executa todos os _scripts_ disponíveis para autenticação
* **Default:** executa os _scripts_ básicos por padrão da ferramenta
* **Discovery:** recupera informações do _target_ ou vítima
* **External:** _script_ para utilizar recursos externos
* **Intrusive:** utiliza _scripts_ que são considerados intrusivos para a vítima ou _target_
* **Malware:** verifica se há conexões abertas por códigos maliciosos ou _backdoors_ (portas traseiras)
* **Safe:** executa _scripts_ que não são intrusivos
* **Vuln:** descobre as vulnerabilidades mais conhecidas
* **All:** executa absolutamente todos os _scripts_ com extensão NSE disponíveis
Para buscar scripts:
**nmap --script-help="http-\*" -> Os que começam por http-**
**nmap --script-help="not intrusive" -> Todos menos esses**
**nmap --script-help="default or safe" -> Os que estão em um ou em outro ou em ambos**
**nmap --script-help="default and safe" --> Os que estão em ambos**
**nmap --script-help="(default or safe or intrusive) and not http-\*"**
\--script-args _\_=_\_,_\_={_\_=_\_},_\_={_\_,_\_}
\--script-args-file _\_
\--script-help _\_|_\_|_\_|_\_|all\[,...]
\--script-trace ---> Dá info de como vai o script
\--script-updatedb
**Para usar um script, só é necessário colocar: namp --script Nome\_do\_script objetivo** --> Ao colocar o script, ele será executado tanto o script quanto o escaneador, assim também podem ser colocadas opções do escaneador; podemos adicionar **“safe=1”** para que sejam executados apenas os que sejam seguros.
**Controle de tempo**
**O Nmap pode modificar o tempo em segundos, minutos, ms:** --host-timeout arguments 900000ms, 900, 900s, e 15m fazem a mesma coisa.
O Nmap divide o número total de hosts a escanear em grupos e analisa esses grupos em blocos, de forma que até que não tenham sido analisados todos, não passa para o próximo bloco (e o usuário também não recebe nenhuma atualização até que o bloco tenha sido analisado); dessa forma, é mais otimizado para o nmap usar grupos grandes. Por padrão, na classe C, usa 256.
Pode-se mudar com **--min-hostgroup** _**\**_; **--max-hostgroup** _**\**_ (Ajusta tamanhos de grupos de varredura paralela)
Pode-se controlar o número de escaneadores em paralelo, mas é melhor não (o nmap já incorpora controle automático com base no estado da rede): **--min-parallelism** _**\**_; **--max-parallelism** _**\**_
Podemos modificar o tempo de rtt timeout, mas não costuma ser necessário: **--min-rtt-timeout** _**\