Resumo do Nmap (ESP)
Reading time: 15 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24
Parâmetros
IPs a escanear
<ip>,<net/mask>
: Indique os ips diretamente-iL <ips_file>
: list_IPs-iR <number>
: Número de Ips aleatórios, você pode excluir possíveis Ips 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 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 escaneamento de portas. 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, 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 <ports>
: 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 <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 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<ports>
: 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 <protocols>
: 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 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 escaneamento 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. Baseiam-se 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; atrasos levantados: aberto/filtrado(nada), fechado(RST), filtrado (ICMP inacessível). Não confiável em Windows, Cisco, BSDI e OS/400. No unix sim.-sM
: Escaneamento 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 maneira, 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
: Escaneamento 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 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 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
: Escaneamento 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 <server>
: FTPhost--> É usado para escanear um host a partir de outro, isso é feito conectando o ftp de outra máquina e pedindo que ela envie 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. [<user>:<password>@]<server>[:<port>] Quase todos os servidores ftps não permitem mais que você faça isso e, portanto, é de pouca utilidade prática.
Análise de Foco
-p: Usado para especificar portas a escanear. Para selecionar todas as 65.335 portas: -p- ou -p all. O Nmap tem uma classificação interna baseada na popularidade. Por padrão, usa as 1000 portas principais. Com -F (escaneamento rápido), analisa as 100 principais. Com --top-ports
-sV Escaneamento de versão, a intensidade pode ser regulada de 0 a 9, o padrão é 7.
--version-intensity
-O Detecção de SO
--osscan-limit Para uma detecção adequada de hosts, pelo menos uma porta aberta e uma porta fechada são necessárias. Se essa condição não for atendida e tivermos definido isso, não tentará prever o SO (economiza tempo)
--osscan-guess Quando a detecção de SO não é perfeita, isso faz com que tente mais
Scripts
--script
Para usar scripts padrão, use -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 de autenticação disponíveis
- Default: executa scripts básicos de ferramentas padrão
- Discovery: recupera informações do alvo ou vítima
- External: script para usar recursos externos
- Intrusive: usa scripts considerados intrusivos para a vítima ou alvo
- Malware: verifica conexões abertas por código malicioso ou backdoors
- Safe: executa scripts não intrusivos
- Vuln: descobre as vulnerabilidades mais conhecidas
- All: executa absolutamente todos os scripts de extensão NSE disponíveis
Para procurar scripts:
nmap --script-help="http-*" -> Aqueles que começam com http-
nmap --script-help="not intrusive" -> Todos, exceto aqueles
nmap --script-help="default or safe" -> Aqueles em qualquer um ou ambos
nmap --script-help="default and safe" --> Aqueles em ambos
nmap --script-help="(default or safe or intrusive) and not http-*"
--script-args
--script-args-file
--script-help
--script-trace ---> Fornece informações sobre como o script está progredindo
--script-updatedb
Para usar um script, basta digitar: nmap --script Script_Name target --> Ao usar o script, tanto o script quanto o scanner serão executados, então opções do scanner também podem ser adicionadas. Podemos 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 escanear em grupos e analisa esses grupos em blocos, assim não passa para o próximo bloco até que todos tenham sido analisados (e o usuário não recebe atualizações até que o bloco tenha sido analisado). Dessa forma, é mais otimizado para o Nmap usar grandes grupos. Por padrão, na classe C, usa 256.
Isso pode ser alterado com --min-hostgroup
Você pode controlar o número de scanners paralelos, mas é melhor não fazê-lo (o Nmap já incorpora controle automático com base no status da rede): --min-parallelism
Podemos modificar o tempo limite RTT, mas geralmente não é necessário: --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout
Podemos modificar o número de tentativas: --max-retries
Podemos modificar o tempo de escaneamento de um host: --host-timeout
Podemos modificar o tempo entre cada teste para desacelerá-lo: --scan-delay ; --max-scan-delay
Podemos modificar o número de pacotes por segundo: --min-rate
Muitas portas demoram muito para responder quando filtradas ou fechadas. Se estamos apenas interessados nas abertas, podemos ir mais rápido com: --defeat-rst-ratelimit
Para definir quão agressivo queremos que o Nmap seja: -T paranoid|sneaky|polite|normal|aggressive|insane
-T (0-1)
-T0 --> Escaneia apenas 1 porta por vez e espera 5min até a próxima
-T1 e T2 --> Muito semelhantes, mas esperam apenas 15 e 0.4seg, respectivamente, entre cada teste
-T3 --> Operação padrão, inclui escaneamento 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
Eles não permitem acesso a portas e analisam pacotes.
-f Para fragmentar pacotes, por padrão fragmenta-os em 8bytes após o cabeçalho; para especificar esse tamanho, usamos ..mtu (com isso, não use -f), o deslocamento deve ser múltiplo de 8. Scanners de versão e scripts não suportam fragmentação
-D decoy1,decoy2,ME O Nmap envia scanners, mas com outros endereços IP como origem, dessa forma eles escondem você. Se você colocar ME na lista, o Nmap o colocará lá; é melhor colocar 5 ou 6 antes de você para mascará-lo completamente. IPs aleatórios podem ser gerados com RND:
Para usar IPs aleatórios: nmap -D RND:10 Target_IP
-S IP Para quando o Nmap não captura seu endereço IP, você deve fornecê-lo com isso. Também serve para fazer eles pensarem que outro alvo está escaneando-os.
-e
Muitos administradores deixam portas de entrada abertas para que tudo funcione corretamente e é mais fácil para eles do que encontrar outra solução. Essas podem ser portas DNS ou portas FTP... para encontrar essa vulnerabilidade, o Nmap incorpora: --source-port
--data
--data-string
--data-length
Para configurar completamente o pacote IP, use --ip-options
Se você deseja ver as opções nos pacotes enviados e recebidos, especifique --packet-trace. Para mais informações e exemplos de uso de opções IP com o Nmap, veja http://seclists.org/nmap-dev/2006/q3/52.
--ttl
--randomize-hosts Para tornar o ataque menos óbvio
--spoof-mac <endereço MAC, prefixo ou nome do fornecedor> Para mudar o MAC exemplos: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2 e Cisco
--proxies <Lista de URLs de proxy separadas por vírgula> Para usar proxies, às vezes um proxy não mantém tantas conexões abertas quanto o Nmap deseja, então o paralelismo precisaria ser modificado: --max-parallelism
-sP Para descobrir hosts em nossa rede por ARP
Muitos administradores criam uma regra de firewall que permite que todos os pacotes provenientes de uma porta específica passem (como 20,53 e 67); podemos dizer ao Nmap para enviar nossos pacotes dessas portas: nmap --source-port 53 IP
Saídas
-oN file Saída normal
-oX file Saída XML
-oS file Saída para script kiddies
-oG file Saída grepável
-oA file Tudo, exceto -oS
-v level verbosidade
-d level depuração
--reason Por que do host e estado
--stats-every time A cada esse tempo nos diz como está indo
--packet-trace Para ver quais pacotes saem, filtros podem ser especificados como: --version-trace ou --script-trace
--open mostra aberto, aberto|filtrado e não filtrado
--resume file Saídas um resumo
Diversos
-6 Permite IPv6
-A é o mesmo que -O -sV -sC --traceroute
Tempo de execução
Enquanto o Nmap está em execução, podemos mudar opções:
v / V Aumentar / diminuir o nível de verbosidade
d / D Aumentar / diminuir o nível de depuração
p / P Ativar / desativar rastreamento de pacotes
? Imprimir uma tela de ajuda de interação em tempo de execução
Vulscan
Script Nmap que verifica versões de serviços obtidas em um banco de dados offline (baixado de outros muito importantes) e retorna possíveis vulnerabilidades
Os DBs que ele usa são:
- Scipvuldb.csv | http://www.scip.ch/en/?vuldb
- Cve.csv | http://cve.mitre.org
- Osvdb.csv | http://www.osvdb.org
- Securityfocus.csv | http://www.securityfocus.com/bid/
- Securitytracker.csv | http://www.securitytracker.com
- Xforce.csv | http://xforce.iss.net
- Exploitdb.csv | http://www.exploit-db.com
- Openvas.csv | http://www.openvas.org
Para baixar e instalar na pasta do Nmap:
wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/
Você também precisaria baixar os pacotes DB e adicioná-los a /usr/share/nmap/scripts/vulscan/
Uso:
Para usar todos: sudo nmap -sV --script=vulscan HOST_TO_SCAN
Para usar um DB específico: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_TO_SCAN
Acelerar o escaneamento de serviços do Nmap x16
De acordo com este post, você pode acelerar a análise de serviços do nmap modificando todos os valores de totalwaitms
em /usr/share/nmap/nmap-service-probes
para 300 e tcpwrappedms
para 200.
Além disso, sondas que não têm um servicewaitms
especificamente definido usam um valor padrão de 5000
. Portanto, podemos adicionar valores a cada uma das sondas ou podemos compilar o nmap nós mesmos e mudar o valor padrão em service_scan.h.
Se você não quiser mudar os valores de totalwaitms
e tcpwrappedms
de forma alguma no arquivo /usr/share/nmap/nmap-service-probes
, você pode editar o código de análise de forma que esses valores no arquivo nmap-service-probes
sejam completamente ignorados.
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.