# Resumo do Nmap (ESP)
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com) * **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
``` nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24 ``` ## Parâmetros ### IPs para 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 solicitações **DNS** para resolver nomes. É útil para saber, por exemplo, se todos os IPs de www.prueba.es/24 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 pode produzir falsos negativos dizendo que eles não estão ativos. Ela impede a fase de descoberta. * **`-sn`** : **Sem varredura de porta**. Após concluir a fase de reconhecimento, não faz a varredura de portas. É relativamente furtivo e permite uma pequena varredura de rede. Com privilégios, envia um ACK (-PA) para a porta 80, um SYN(-PS) para a porta 443 e uma solicitação de eco e uma solicitação de carimbo de data/hora. Sem privilégios, sempre completa as conexões. Se o alvo for a rede, ele 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 as portas, se responder SYN/ACK, está aberta (responde com RST para não encerrar a conexão), se responder RST, está fechada e se não responder, está inacessível. Caso não tenha privilégios, é usada uma conexão total. Se nenhuma porta for fornecida, é enviada para a porta 80. * **`-PA `**: Semelhante ao anterior, mas com ACK, a combinação de 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 fechada, é respondida com "porta inacessível", se for respondida com outro ICMP ou não for respondida, é considerada como "destino inacessível". * **`-PE, -PP, -PM`** : PINGS ICMP: resposta de eco, carimbo de data/hora e máscara de endereço. São lançados para descobrir se o alvo está ativo. * **`-PY`**: Envia sondas SCTP INIT para a porta 80 por padrão, pode responder com INIT-ACK(aberta) ou ABORT(fechada) ou nada ou ICMP inacessível(inativo). * **`-PO `**: Um protocolo é indicado nos cabeçalhos, por padrão 1(ICMP), 2(IGMP) e 4(Encap IP). Para os protocolos ICMP, IGMP, TCP (6) e UDP (17), os cabeçalhos do protocolo são enviados, para o restante, apenas o cabeçalho IP é enviado. O objetivo disso é que, devido à má formação dos cabeçalhos, sejam respondidos Protocolo inacessível ou respostas do mesmo protocolo para saber se está ativo. * **`-n`**: Sem DNS * **`-R`**: Sempre DNS ### 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 usado por padrão. * **`-sT`**: Completa a conexão, portanto, deixa rastros, mas pode ser usado com segurança. 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): aberta(resposta), fechada(porta inacessível), filtrada(outro ICMP), aberta/filtrada (nada). No caso de aberta/filtrada, -sV envia várias solicitações para detectar qualquer uma das versões que o nmap suporta e pode detectar o estado real. Isso aumenta muito o tempo. * **`-sY`**: O protocolo SCTP falha ao estabelecer a conexão, portanto, não há registros, funciona como -PY. * **`-sN,-sX,-sF`:** Null, Fin, Xmas, podem penetrar em alguns firewalls e extrair informações. Eles se baseiam no fato de que máquinas compatíveis com os padrões devem responder com RST a todas as solicitações que não possuem flags SYN, RST ou ACK levantadas: aberta/filtrada(nada), fechada(RST), filtrada(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, usada para BSD, atualmente retornará todas como fechadas. * **`-sA, sW`**: ACK e Window, são usados para detectar firewalls, para saber se as portas estão filtradas ou não. O -sW distingue entre aberta/fechada, pois as abertas respondem com um valor de janela diferente: aberta (RST com janela diferente de 0), fechada (RST com janela = 0), filtrada (ICMP inacessível ou nada). Nem todos os computadores funcionam dessa maneira, portanto, se estiverem todos fechados, não está funcionando, se alguns estiverem abertos, está funcionando corretamente e se muitos estiverem abertos e poucos fechados, está funcionando ao contrário. * **`-sI`:** Varredura ociosa. 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 auxiliary/scanner/ip/ipidseq. Esse 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 eco de cookie, eles devem ser descartados se estiverem abertos ou respondidos com ABORT se estiverem fechados. Ele pode passar por firewalls que o init não passa, o ruim é que ele não distingue entre filtrado e aberto. * **`-sO`:** Varredura de protocolo IP. Envia cabeçalhos incorretos e vazios, nos quais às vezes nem mesmo o protocolo pode ser distinguido. Se chegar um protocolo ICMP inacessível, está fechado, se chegar uma porta inacessível, está aberto, se chegar outro erro, está filtrado, se não chegar nada, está aberto|filtrado. * **`-b `:** FTPhost--> É usado para escanear um host de outro, isso é feito conectando o FTP de outra máquina e pedindo para 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. \[\:\@]\\[:\] A maioria dos servidores FTP não permite mais fazer isso e, portanto, tem pouco uso prático. ### **Análise Centralizada** **-p:** Define as portas a serem escaneadas. Para selecionar todas as 65335 portas: **-p-** ou **-p all**. O Nmap possui uma classificação interna com base em sua popularidade. Por padrão, ele usa as 1000 portas mais comuns. Com **-F** (escaneamento rápido), ele analisa as 100 portas mais comuns. Com **--top-ports \**, ele analisa o número especificado de portas principais (de 1 a 65335). Ele verifica as portas em ordem aleatória para evitar detecção, usando **-r**. Também é possível selecionar portas específicas: 20-30,80,443,1024- Isso significa que ele irá verificar a partir da porta 1024. Também é possível agrupar portas por protocolos: U:53,T:21-25,80,139,S:9. Também é possível escolher um intervalo dentro das portas populares do Nmap: -p \[-1024] verifica até a porta 1024 das incluídas no nmap-services. **--port-ratio \** Verifica as portas mais comuns com uma taxa que deve estar entre 0 e 1. **-sV** Verificação de versão, a intensidade pode ser ajustada de 0 a 9, sendo 7 o padrão. **--version-intensity \** Ajusta a intensidade, de forma que quanto menor for, ele enviará apenas as sondas mais prováveis, mas não todas. Isso pode reduzir significativamente o tempo de escaneamento UDP. **-O** Detecção de sistema operacional. **--osscan-limit** Para escanear um host corretamente, é necessário que pelo menos uma porta esteja aberta e outra esteja fechada. Se essa condição não for atendida e essa opção estiver ativada, ele não tentará fazer uma previsão do sistema operacional (economizando tempo). **--osscan-guess** Quando a detecção do sistema operacional não é perfeita, isso faz com que ele faça um esforço adicional. **Scripts** \--script _\_|_\_|_\_|_\_\[,...] Para usar os scripts padrão, basta usar -sC ou --script=default. Os tipos disponíveis são: 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 padrão da ferramenta. * **Discovery:** recupera informações do alvo ou vítima. * **External:** script para utilizar recursos externos. * **Intrusive:** utiliza scripts considerados intrusivos para o alvo ou vítima. * **Malware:** verifica se há conexões abertas por códigos maliciosos ou backdoors. * **Safe:** executa scripts que não são intrusivos. * **Vuln:** descobre as vulnerabilidades mais conhecidas. * **All:** executa todos os scripts NSE disponíveis. Para buscar scripts: **nmap --script-help="http-\*" -> Aqueles que começam com http-** **nmap --script-help="not intrusive" -> Todos, exceto esses** **nmap --script-help="default or safe" -> Aqueles que estão em um ou em outro ou em ambos** **nmap --script-help="default and safe" --> Aqueles 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 ---> Fornece informações sobre o andamento do script. \--script-updatedb **Para usar um script, basta digitar: nmap --script Nome_do_script alvo** --> Ao especificar o script, ele será executado juntamente com o scanner, portanto, também é possível adicionar opções do scanner. Podemos adicionar **"safe=1"** para executar apenas os scripts considerados seguros. **Controle de tempo** **O Nmap pode ajustar 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 serem escaneados em grupos e analisa esses grupos em blocos, de forma que ele só passa para o próximo bloco quando todos os hosts do bloco atual forem analisados (e o usuário não recebe nenhuma atualização até que o bloco seja concluído). Isso torna mais eficiente para o Nmap usar grupos grandes. Por padrão, ele usa 256 para classe C. Isso pode ser alterado com **--min-hostgroup** _**\**_**;** **--max-hostgroup** _**\**_ (Ajusta o tamanho dos grupos de escaneamento paralelo) É possível controlar o número de scanners paralelos, mas é melhor deixar o Nmap fazer isso automaticamente com base no estado da rede: **--min-parallelism** _**\**_**;** **--max-parallelism** _**\**_ Podemos ajustar o tempo limite do RTT, mas geralmente não é necessário: **--min-rtt-timeout** _**\