mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-20 18:14:15 +00:00
169 lines
14 KiB
Markdown
169 lines
14 KiB
Markdown
# Resumo do Nmap (ESP)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras maneiras de apoiar o HackTricks:
|
|
|
|
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* 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)
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
|
|
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
```
|
|
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
|
|
```
|
|
## Parâmetros
|
|
|
|
### IPs a serem escaneados
|
|
|
|
* **`<ip>,<net/mask>`:** Indica os IPs diretamente
|
|
* **`-iL <ips_file>`:** lista_IPs
|
|
* **`-iR <number>`**: Número de IPs aleatórios, é possível excluir IPs possíveis com `--exclude <Ips>` ou `--excludefile <file>`.
|
|
|
|
### 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**. Útil se você souber que todos estão ativos (caso contrário, poderia perder muito tempo, mas essa opção também produz falsos negativos dizendo que não estão ativos), evita a fase de descoberta.
|
|
* **`-sn`** : **Sem varredura de portas**. Após completar a fase de reconhecimento, não varre 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, 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 não quiser usar pacotes ARP, use `--send-ip`.
|
|
* **`-PS <ports>`**: Envia pacotes SYN para os quais, se responder SYN/ACK, está aberto (responde com RST para não encerrar a conexão), se responder RST está fechado e se não responder está inacessível. Caso não tenha privilégios, uma conexão total é usada automaticamente. Se nenhum porto for fornecido, ele envia para 80.
|
|
* **`-PA <ports>`**: Como o anterior, mas com ACK, combinando ambos dá melhores resultados.
|
|
* **`-PU <ports>`**: O objetivo é o oposto, são enviados para portas que se espera estarem fechadas. Alguns firewalls verificam apenas conexões TCP. Se estiver fechado, é respondido com porta inalcançável, se for respondido com outro icmp ou não for respondido, é considerado inalcançável.
|
|
* **`-PE, -PP, -PM`** : PINGS ICMP: resposta de eco, timestamp e máscara de endereço. São enviados para descobrir se o alvo está ativo.
|
|
* **`-PY<ports>`**: Envia sondas SCTP INIT para 80 por padrão, INIT-ACK(aberto) ou ABORT(fechado) ou nada ou ICMP inalcançável(inativo) podem ser respondidos.
|
|
* **`-PO <protocols>`**: Um protocolo é indicado nos cabeçalhos, por padrão 1(ICMP), 2(IGMP) e 4(Encap IP). Para ICMP, IGMP, TCP (6) e UDP (17) são enviados os cabeçalhos do protocolo, para o restante apenas o cabeçalho IP é enviado. O objetivo disso é que, devido à má formação dos cabeçalhos, Protocolo inalcançável ou respostas do mesmo protocolo são respondidas 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 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 inalcançá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`**: O protocolo SCTP falha em estabelecer a conexão, portanto 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 compatíveis com padrões devem responder com RST a todas as solicitações que não possuem flags SYN, RST ou ACK levantados: aberto/filtrado(nada), fechado(RST), filtrado (ICMP inalcançá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á todos como fechados.
|
|
* **`-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, já que os abertos respondem com um valor de janela diferente: aberto (RST com janela diferente de 0), fechado (RST janela = 0), filtrado (ICMP inalcançável ou nada). Nem todos os computadores funcionam dessa maneira, então se estiverem todos fechados, não está funcionando, se alguns estiverem abertos, está funcionando bem, 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 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. 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 eco de cookie, eles devem ser descartados se estiverem abertos ou respondidos com ABORT se estiverem 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 mesmo o protocolo pode ser distinguido. Se chegar um protocolo ICMP inalcançável é fechado, se chegar uma porta inalcançável é aberto, se chegar outro erro, filtrado, se não chegar nada, aberto|filtrado.
|
|
* **`-b <server>`:** 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 deseja escanear de outra máquina, de acordo com as respostas saberemos se estão abertas ou não. \[\<user>:\<password>@]\<server>\[:\<port>] A maioria dos servidores ftp não permite mais isso e, portanto, tem pouco uso prático.
|
|
|
|
### **Análise centralizada**
|
|
|
|
**-p:** Serve para fornecer as portas a serem escaneadas. Para selecionar as 65335: **-p-** ou **-p all**. O Nmap tem uma classificação interna de acordo com sua popularidade. Por padrão, usa as 1000 principais. Com **-F** (varredura rápida) analisa as 100 principais. Com **--top-ports \<numero>** Analisa esse número de principais (de 1 a 65335). Verifica as portas em ordem aleatória, para evitar isso **-r**. Também podemos selecionar portas: 20-30,80,443,1024- Isso último significa que olhe para frente 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é o 1024 dos incluídos em nmap-services. **--port-ratio \<ratio>** Analisa as portas mais comuns que um ratio que deve estar entre 0 e 1
|
|
|
|
**-sV** Varredura de versão, a intensidade pode ser ajustada de 0 a 9, por padrão 7.
|
|
|
|
**--version-intensity \<numero>** Regula a intensidade, de modo que quanto mais baixa, apenas lançará as sondas mais prováveis, mas não todas. Com isso, podemos encurtar consideravelmente o tempo de varredura UDP
|
|
|
|
**-O** Detecção de SO
|
|
|
|
**--osscan-limit** Para escanear bem um host, é necessário que pelo menos uma porta esteja aberta e outra fechada, se essa condição não for atendida e tivermos isso, não tenta prever o SO (economiza tempo)
|
|
|
|
**--osscan-guess** Quando a detecção de SO não é perfeita, isso faz com que se esforce mais
|
|
|
|
**Scripts**
|
|
|
|
\--script _\<filename>_|_\<category>_|_\<directory>_|_\<expression>_\[,...]
|
|
|
|
Para usar os 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 _target_ ou vítima
|
|
* **External:** _script_ para usar recursos externos
|
|
* **Intrusive:** usa _scripts_ considerados intrusivos para a vítima ou _target_
|
|
* **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_ com extensão NSE disponíveis
|
|
|
|
Para buscar scripts:
|
|
|
|
**nmap --script-help="http-\*" -> Os que começam com http-**
|
|
|
|
**nmap --script-help="not intrusive" -> Todos exceto 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 _\<n1>_=_\<v1>_,_\<n2>_={_\<n3>_=_\<v3>_},_\<n4>_={_\<v4>_,_\<v5>_}
|
|
|
|
\--script-args-file _\<filename>_
|
|
|
|
\--script-help _\<filename>_|_\<category>_|_\<directory>_|_\<expression>_|all\[,...]
|
|
|
|
\--script-trace ---> Fornece informações sobre como o script está funcionando
|
|
|
|
\--script-updatedb
|
|
|
|
**Para usar um script, basta digitar: namp --script Nome_do_script alvo** --> Ao inserir o script, tanto o script quanto o scanner serão executados, portanto, também é possível adicionar **“safe=1”** para executar apenas os 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 serem escaneados em grupos e analisa esses grupos em blocos, de modo que até que todos tenham sido analisados, 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 eficiente para o Nmap usar grupos grandes. Por padrão, em classe C usa 256.
|
|
|
|
Pode ser alterado com\*\*--min-hostgroup\*\* _**\<numhosts>**_**;** **--max-hostgroup** _**\<numhosts>**_ (Ajustar tamanhos de grupo de varredura paralela)
|
|
|
|
É possível controlar o número de scanners em paralelo, mas é melhor não fazer (o nmap já incorpora controle automático com base no estado da rede): **--min-parallelism** _**\<numprobes>**_**;** **--max-parallelism** _**\<numprobes>**_
|
|
|
|
Podemos modificar o tempo limite rtt, mas geralmente não é necessário: **--min-rtt-timeout** _**\<time>**_**,** **--max-rtt-timeout** _**\<time>**_**,** **--initial-rtt-timeout** _**\<time>**_
|
|
|
|
Podemos modificar o número de tentativas:**--max-retries** _**\<numtries>**_
|
|
|
|
Podemos modificar o tempo de varredura de um host: **--host-timeout** _**\<time>**
|
|
|
|
Podemos modificar o tempo entre cada varredura para torná-lo mais lento: **--scan-delay** _**\<time>**_**;** **--max-scan-delay** _**\<time>**
|
|
|
|
Podemos modificar o número de pacotes por segundo: **--min-rate** _**\<number>**_**;** **--max-rate** _**\<number>**_
|
|
|
|
Muitas portas demoram a responder por estarem filtradas ou fechadas, se apenas as abertas nos interessam, podemos acelerar com: **--defeat-rst-ratelimit**
|
|
|
|
Para definir o quão agressivo queremos que o nmap seja: -T paranoid|sneaky|polite|normal|aggressive|insane
|
|
|
|
\-T (0-1)
|
|
|
|
\-T0 --> Apenas uma porta é varrida de cada vez e aguarda 5min até a próxima
|
|
|
|
\-T1 e T2 --> Muito semelhantes, mas aguardam apenas 15 e 0,4seg, respectivamente, entre cada varredura
|
|
|
|
\-T3 --> Funcionamento padrão, inclui em paralelo
|
|
|
|
\-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms
|
|
|
|
\-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms
|
|
|
|
**Firewall/IDS**
|
|
|
|
Impedem a passagem de portas e analisam pacotes.
|
|
|
|
**-f** Para fragmentar pacotes, por padrão os fragmenta em 8bytes após o cabeçalho, para especificar esse tamanho usamos ..mtu (com isso, não usar -f), o deslocamento deve ser múltiplo de 8. **Varreduras de serviço e scripts não suportam fragmentação**
|
|
|
|
**-D decoy1,decoy2,ME** O Nmap envia varreduras, mas com outros IPs como origem, assim você se esconde. Se colocar o ME na lista, o Nmap te colocará lá, é melhor colocar 5 ou 6 antes de você para se camuflar completamente. IPs aleatórios podem ser gerados com RND:\<numero> Para gerar \<numero> de IPs aleatórios. Não funcionam com detecção de versões sem conexão TCP. Se estiver dentro de uma rede, é interessante usar IPs que estejam ativos, caso contrário será muito fácil descobrir que você é o único ativo.
|
|
|
|
Para usar IPs aleatórios: nmap-D RND: 10 Ip_objetivo
|
|
|
|
**-S IP** Quando o Nmap não detecta seu endereço IP, você precisa fornecê-lo com isso. Também serve para fazer parecer que há outro alvo os escaneando.
|
|
|
|
**-e \<interface>** Para escolher a interface
|
|
|
|
Muitos administradores deixam portas de entrada abertas para que tudo funcione corretamente e seja mais fácil do que procurar outra solução. Essas podem ser as portas DNS ou as de FTP... para buscar essa vulnerabilidade, o nmap incorpora: **--source-port** _**\<portnumber>**_**;-g** _**\<portnumber>**_ _São equivalentes_
|
|
|
|
**--data** _**\<hex string>**_ Para enviar texto hexadecimal: --data 0xdeadbeef e --data \xCA\xFE\x09
|
|
|
|
**--
|