# Resumo do Nmap (ESP)
Aprenda hacking no AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)! Outras formas de apoiar o HackTricks: * Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)! * Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com) * Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos * **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.** * **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**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 * **`,`:** Indique os ips diretamente * **`-iL `:** list\_IPs * **`-iR `**: Número de Ips aleatórios, você pode excluir Ips possíveis 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 se, por exemplo, www.prueba.es/24 todas as Ips são nossos alvos. * **`-Pn`**: **No ping**. Isso é útil se você sabe que todos eles estão ativos (se não, você poderia perder muito tempo, mas essa opção também produz falsos negativos dizendo que eles não estão ativos), evita a fase de descoberta. * **`-sn`** : **No port scan**. Após completar a fase de reconhecimento, não escaneia portas. É relativamente furtivo e permite um pequeno escaneamento 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, só usa 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 terminar a conexão), se responder RST está fechado e se não responder está inacessível. Caso não tenha privilégios, é usado automaticamente uma conexão total. Se nenhum porto for dado, ele joga 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 só verificam conexões TCP. Se estiver fechado, é respondido com porta inacessível, se for respondido com outro icmp ou não respondido, é deixado como destino inacessível. * **`-PE, -PP, -PM`** : ICMP PINGS: replay de eco, timestamp e addresmask. 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) pode ser respondido. * **`-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 resto, apenas o cabeçalho IP é enviado. O propósito disso é que, devido à má formação dos cabeçalhos, Protocolo inacessível ou respostas do mesmo protocolo são respondidas para saber se está ativo. * **`-n`**: No DNS * **`-R`**: DNS sempre ### Técnicas de escaneamento de portas * **`-sS`**: Não completa a conexão, então não deixa rastro, muito bom se puder ser usado.(privilégios) É o que é usado por padrão. * **`-sT`**: Completa a conexão, então deixa 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). Em 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`**: Protocolo SCTP falha em estabelecer a conexão, então não há logs, funciona como -PY * **`-sN,-sX,-sF`:** Null, Fin, Xmas, podem penetrar em alguns firewalls e extrair informações. Baseiam-se no fato de que máquinas em conformidade com o padrão devem responder com RST todas as solicitações que não têm as flags SYN, RST ou ACK 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`**: Maimon scan: Envia flags FIN e ACK, usado para BSD, atualmente retornará todos como fechados. * **`-sA, sW`**: ACK e Janela, é usado para detectar firewalls, para saber se os portos estão filtrados ou não. O -sW distingue entre aberto/fechado, pois 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 maneira, então se tudo estiver fechado, não está funcionando, se for alguns abertos, está funcionando bem, e se for muitos abertos e poucos fechados, está funcionando ao contrário. * **`-sI`:** Idle scan. Para os casos em que há um firewall ativo, mas sabemos que ele não filtra para um certo Ip (ou quando simplesmente queremos anonimato), podemos usar o scanner zumbi (funciona para todos os portos), para procurar possíveis zumbis podemos usar o script ipidseq ou o exploit auxiliary/scanner/ip/ipidseq. Este scanner baseia-se 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 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`:** Protocolo Ip scan. Envia cabeçalhos ruins e vazios nos quais às vezes nem o protocolo pode ser distinguido. Se chegar ICMP protocolo inacessível está fechado, se chegar porta inacessível está aberto, se chegar outro erro, filtrado, se não chegar nada, aberto|filtrado. * **`-b `:** FTPhost--> É usado para escanear um host a partir de outro, isso é feito conectando-se ao ftp de outra máquina e pedindo para enviar arquivos para os portos que você deseja escanear de outra máquina, de acordo com as respostas saberemos se estão abertos ou não. \[\:\@]\\[:\] Quase todos os servidores ftp não permitem mais fazer isso e, portanto, é de pouca utilidade prática. ### **Centrar análisis** **-p:** Serve para dar os portos 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** (fast scan) analisa os 100 principais. Com **--top-ports \** Analisa esse número de principais (de 1 até 65335). Verifica os portos em ordem aleatória, para que isso não aconteça **-r**. Também podemos selecionar portos: 20-30,80,443,1024- Isso último significa que olhe para frente do 1024. Também podemos agrupar os portos por protocolos: U:53,T:21-25,80,139,S:9. Também podemos escolher um intervalo dentro dos portos populares do nmap: -p \[-1024] analisa até o 1024 dos incluídos em nmap-services. **--port-ratio \** Analisa os portos mais comuns que uma proporção 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 só lançará as sondas mais prováveis, mas não todas. Com isso podemos reduzir consideravelmente o tempo de escaneamento UDP **-O** Detecção de os **--osscan-limit** Para escanear bem um host é necessário que pelo menos haja 1 porto aberto e outro fechado, se não for dada essa condição 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, and vuln * **Auth:** executa todos seus _scripts_ disponíveis para autenticação * **Default:** executa os _scripts_ básicos por defeito da ferramenta * **Discovery:** recupera informação 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:** revisa 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 no 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ó tem que colocar: namp --script Nome\_do\_script objetivo** --> Ao colocar o script, será executado tanto o script quanto o escaner, então também se podem colocar opções do escaner, podemos adicionar **“safe=1”** para que se executem só os que são seguros. **Controle de tempo** **Nmap pode modificar o tempo em segundos, minutos, ms:** --host-timeout arguments 900000ms, 900, 900s, and 15m all do the same thing. Nmap divide o número total de host a escanear em grupos e analisa esses grupos em blocos de forma que até que não tenham sido analisados todos, não passa ao seguinte bloco (e o usuário também não recebe nenhuma atualização até que se tenha analisado o bloco) de esta forma, é mais ótimo para nmap usar grupos grandes. Por defeito em classe C usa 256. Pode-se mudar com\*\*--min-hostgroup\*\* _**\**_**;** **--max-hostgroup** _**\**_ (Adjust parallel scan group sizes) Pode-se controlar o número de escaners em paralelo, mas é melhor que não (nmap já incorpora controle automático baseado no estado da rede): **--min-parallelism** _**\**_**;** **--max-parallelism** _**\**_ Podemos modificar o rtt timeout, mas não costuma ser necessário: **--min-rtt-timeout** _**\