# 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** _**\