Comando nmap do Linux
Em sistemas operacionais do tipo Unix, o comando nmap é uma ferramenta de exploração de rede e um scanner de portas .
Descrição
O nmap (“Network Mapper”) é uma ferramenta de código aberto para exploração de rede e auditoria de segurança. Ele foi projetado para verificar rapidamente redes grandes, embora funcione bem para verificar hosts únicos . O nmap usa pacotes IP brutos de maneiras inovadoras para determinar quais hosts estão disponíveis na rede, quais serviços ( nome e versão do aplicativo ) esses hosts estão oferecendo, quais sistemas operacionais (e versões de SO) eles estão executando, que tipo de filtro / firewall de pacote estão em uso e dezenas de outras características. Embora o nmap seja comumente usado para auditorias de segurança, muitos sistemas e redesos administradores consideram útil para tarefas rotineiras, como inventário de rede, gerenciamento de agendas de atualização de serviço e monitoramento do tempo de atividade do host ou serviço .
A saída do nmap é uma lista de destinos verificados, com informações suplementares sobre cada um, dependendo das opções usadas. A chave entre essas informações é a “tabela de portas interessantes”. Essa tabela lista o número da porta e o protocolo, o nome do serviço e o estado. O estado é aberto , filtrado , fechado ou não filtrado .
Aberto significa que um aplicativo na máquina de destino está escutando conexões / pacotes nessa porta.
Filtrado significa que um firewall, filtro ou outro obstáculo na rede está bloqueando a porta, para que o nmap não saiba se está aberto ou fechado.
As portas fechadas não têm nenhum aplicativo escutando, embora possam abrir a qualquer momento. As portas são classificadas como não filtradas. Quando eles são sensíveis a nmap sondas ‘s, mas nmap não pode determinar se eles estão abertos ou fechados. O nmap relata as combinações de estado abertas | filtradas e fechadas | filtradas quando não é possível determinar qual dos dois estados descreve uma porta. A tabela de portas também pode incluir detalhes da versão do software quando a detecção de versão for solicitada. Quando uma varredura de protocolo IP é solicitada ( -sO ), o nmap fornece informações sobre protocolos IP suportados, em vez de portas de escuta.
Além da interessante tabela de portas, o nmap pode fornecer mais informações sobre destinos, incluindo nomes DNS reversos , suposições do sistema operacional, tipos de dispositivos e endereços MAC .
Uma varredura típica do nmap é mostrada abaixo. Os únicos argumentos nmap usados neste exemplo são -A , para ativar a detecção de SO e versão, varredura de script e traceroute ; -T4 para execução mais rápida; e depois os dois nomes de host de destino .
Sintaxe
nmap [ Tipo de digitalização ...] [ Opções ] { especificação de destino }
Opções: especificação de destino
-iL <nome do arquivo de entrada> | Entrada da lista de hosts / redes. |
-iR <número de hosts> | Escolha alvos aleatórios. |
–exclude <host1 [, host2] [, host3], …> | Excluir hosts / redes. |
–excludefile <exclude_file> | Excluir lista do arquivo. |
Tudo na linha de comando do nmap que não é uma opção (ou argumento de opção) é tratado como uma especificação de host de destino. O caso mais simples é especificar um endereço IP de destino ou nome de host para varredura.
Às vezes, você deseja verificar uma rede inteira de hosts adjacentes. Para isso, o nmap suporta endereçamento no estilo CIDR . Você pode anexar / numbits a um endereço IPv4 ou nome de host, e o nmap verificará todos os endereços IP cujos primeiros numbits sejam iguais aos do IP ou nome de host fornecido.
Por exemplo, 192.168.10.0/24 varreria os 256 hosts entre 192.168.10.0 (binário: 11000000 10101000 00001010 00000000) e 192.168.10.255 (binário: 11000000 10101000 00001010 11111111), inclusive. 192.168.10.40/24 varreria os mesmos alvos. Dado que o host scanme.nmap.org está no endereço IP 64.13.134.52, a especificação scanme.nmap.org/16 examinaria os 65.536 endereços IP entre 64.13.0.0 e 64.13.255.255. O menor valor permitido é / 0 , que tem como alvo toda a Internet . O maior valor é / 32 , que verifica o host ou endereço IP nomeado porque todos os bits de endereço são fixos.
A notação CIDR é curta, mas nem sempre é flexível o suficiente. Por exemplo, convém varrer 192.168.0.0/16, mas pular todos os IPs que terminem com .0 ou .255, porque eles podem ser usados como rede de sub- rede e endereços de broadcast. O nmap suporta isso através do endereçamento de intervalo de octetos . Em vez de especificar um endereço IP normal, você pode especificar uma lista de números ou intervalos separados por vírgula para cada octeto.
Por exemplo, 192.168.0-255.1-254 ignorará todos os endereços no intervalo que terminam em .0 ou .255 e 192.168.3-5,7.1 varrerá os quatro endereços 192.168.3.1, 192.168.4.1, 192.168.5.1 e 192.168.7.1. Qualquer lado de um intervalo pode ser omitido; os valores padrão são 0 à esquerda e 255 à direita. Usar – por si só é o mesmo de 0 a 255 , mas lembre-se de usar 0 – no primeiro octeto para que a especificação de destino não pareça uma opção de linha de comando. As faixas não precisam se limitar aos octetos finais: o especificador 0-255.0-255.13.37fará uma varredura na Internet para todos os endereços IP que terminam em 13.37. Esse tipo de amostragem ampla pode ser útil para pesquisas e pesquisas na Internet.
Os endereços IPv6 podem ser especificados apenas por seu endereço IPv6 ou nome de host completo. Os intervalos CIDR e octeto ainda não são compatíveis com IPv6.
Endereços IPv6 com escopo não global precisam ter um sufixo de ID de zona . Nos sistemas Unix , esse é um sinal de porcentagem seguido por um nome de interface; um endereço completo pode ser fe80 :: a8bb: ccff: fedd: eeff% eth0 . No Windows , use um número de índice de interface no lugar de um nome de interface: fe80 :: a8bb: ccff: fedd: eeff% 1 . Você pode ver uma lista de índices de interface executando o comando netsh.exe interface ipv6 show interface .
O nmap aceita várias especificações de host na linha de comando e elas não precisam ser do mesmo tipo. O comando nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.- faz o que você esperaria.
Embora os destinos geralmente sejam especificados nas linhas de comando, as seguintes opções também estão disponíveis para controlar a seleção de destinos:
-iL inputfilename |
Entrada da lista. |
Lê as especificações de destino de inputfilename . Passar uma lista enorme de hosts geralmente é estranho na linha de comando, mas é uma necessidade comum. Por exemplo, seu servidor DHCP pode exportar uma lista de 10.000 concessões atuais que você deseja verificar. Ou talvez você queira verificar todos os endereços IP, exceto aqueles para localizar hosts usando endereços IP estáticos não autorizados. Gere a lista de hosts para varredura e passe esse nome de arquivo para o nmap como um argumento para a opção -iL . As entradas podem estar em qualquer um dos formatos aceitos pelo nmap na linha de comando (endereço IP, nome do host, CIDR, IPv6 ou intervalos de octetos). Cada entrada deve ser separada por um ou mais espaços, guias ou novas linhas . Você pode especificar um hífen (– ) como o nome do arquivo, se você quiser que o nmap leia hosts da entrada padrão em vez de um arquivo real.
O arquivo de entrada pode conter comentários que começam com # e se estendem até o final da linha.
-iR num hosts |
Escolha alvos aleatórios. |
Para pesquisas na Internet e outras pesquisas, você pode escolher alvos aleatoriamente. O argumento num hosts diz ao nmap quantos IPs gerar. IPs indesejáveis, como aqueles em determinados intervalos de endereços privados, multicast ou não alocados, são automaticamente ignorados. O argumento 0 pode ser especificado para uma verificação sem fim. Lembre-se de que alguns administradores de rede se irritam com verificações não autorizadas de suas redes e podem reclamar. Use esta opção por seu próprio risco. Se você se sentir realmente entediado em uma tarde chuvosa, tente o comando nmap -Pn -sS -p 80 -iR 0 –open para localizar servidores da Web aleatórios para navegação.
–excluir host1 [, host2 [, …]] |
Excluir hosts / redes. |
Especifica uma lista de destinos separados por vírgula a serem excluídos da verificação, mesmo que façam parte do intervalo geral da rede especificado. A lista que você passa usa a sintaxe normal do nmap , de modo que pode incluir nomes de host, blocos de rede CIDR, intervalos de octetos etc. Isso pode ser útil quando a rede que você deseja varrer inclui servidores de missão intocável, sistemas conhecidos por reagir adversamente a varreduras de portas ou sub-redes administradas por outras pessoas.
–excludefile exclude_file |
Excluir lista do arquivo. |
Isso oferece a mesma funcionalidade que a opção –exclude , exceto que os destinos excluídos são fornecidos em um arquivo exclude_file delimitado por nova linha , espaço ou tabulação, e não na linha de comando.
O arquivo de exclusão pode conter comentários que começam com # e se estendem até o final da linha.
Opções: descoberta de host
-sL | Listar varredura – lista os destinos a serem varridos. |
-sn | Ping Scan – desativa a verificação de porta. |
-Pn | Trate todos os hosts como online – pule a descoberta de hosts. |
-PS / PA / PU / PY [lista de portas] | Descoberta TCP SYN / ACK, UDP ou SCTP para determinadas portas. |
-PE / PP / PM | Sondas de descoberta de solicitação de eco , carimbo de data e hora e máscara de rede do ICMP . |
-PO [lista de protocolos] | Ping do protocolo IP . |
-n / -R | Nunca faça a resolução DNS / Sempre resolva [padrão: algumas vezes]. |
–dns-servers <serv1 [, serv2], …> | Especifique servidores DNS personalizados. |
–system-dns | Use o resolvedor DNS do sistema operacional. |
–traceroute | Rastreie o caminho do salto para cada host. |
Um dos primeiros passos em qualquer missão de reconhecimento de rede é reduzir um conjunto (às vezes grande) de intervalos de IP em uma lista de hosts ativos ou interessantes. A varredura de todas as portas de cada endereço IP é lenta e geralmente desnecessária. Obviamente, o que torna um host interessante depende muito dos objetivos da verificação. Os administradores de rede podem estar interessados apenas em hosts executando um determinado serviço, enquanto os auditores de segurança podem se preocupar com cada dispositivo com um endereço IP. Um administrador pode se sentir confortável usando um ping ICMP para localizar hosts em sua rede interna, enquanto um testador de penetração externo pode usar um conjunto diversificado de dezenas de probes na tentativa de evitar restrições de firewall.
Como as necessidades de descoberta de host são muito diversas, o nmap oferece uma ampla variedade de opções para personalizar as técnicas utilizadas. Às vezes, a descoberta de host é chamada de verificação de ping , mas vai muito além dos simples pacotes de solicitação de eco ICMP associados à onipresente ferramenta de ping. Os usuários podem pular a etapa de ping completamente com uma varredura de lista ( -sL ) ou desativando o ping ( -Pn) ou envolva a rede com combinações arbitrárias de sondas TCP SYN / ACK, UDP, SCTP INIT e ICMP de várias portas. O objetivo dessas análises é solicitar respostas que demonstrem que um endereço IP está realmente ativo (está sendo usado por um host ou dispositivo de rede). Em muitas redes, apenas uma pequena porcentagem de endereços IP está ativa a qualquer momento. Isso é particularmente comum em espaços de endereços privados, como 10.0.0.0/8. Essa rede possui 16 milhões de IPs, mas foi usada por empresas com menos de mil máquinas. A descoberta de host pode encontrar essas máquinas em um mar de endereços IP escassamente alocado.
Se nenhuma opção de descoberta de host for fornecida, o nmap enviará uma solicitação de eco ICMP, um pacote TCP SYN para a porta 443, um pacote TCP ACK para a porta 80 e uma solicitação de carimbo de data / hora ICMP. Para IPv6, a solicitação de carimbo de data / hora do ICMP é omitida porque não faz parte do ICMPv6. Esses padrões são equivalentes às opções -PE -PS443 -PA80 -PP . As exceções a isso são o ARP (para IPv4) e a descoberta de vizinhos. (para IPv6) que são usadas para quaisquer destinos em uma rede Ethernet local. Para usuários de shell Unix sem privilégios, os probes padrão são um pacote SYN para as portas 80 e 443 usando a chamada do sistema de conexão. Essa descoberta de host geralmente é suficiente ao verificar redes locais, mas um conjunto mais abrangente de análises de descoberta é recomendado para auditoria de segurança.
As opções -P * (que selecionam tipos de ping) podem ser combinadas. Você pode aumentar suas chances de invasão de firewalls rígidos enviando muitos tipos de análise usando diferentes portas / sinalizadores TCP e códigos ICMP. Além disso, observe que a descoberta de ARP / vizinho ( -PR ). é feito por padrão em relação aos destinos em uma rede Ethernet local , mesmo se você especificar outras opções -P * , porque quase sempre é mais rápido e eficaz.
Por padrão, o nmap faz a descoberta do host e executa uma varredura de porta em cada host que determina estar online. Isso ocorre mesmo se você especificar tipos de descoberta de host não padrão, como probes UDP ( -PU ). Leia sobre a opção -sn para aprender a executar apenas a descoberta de host ou use -Pn para ignorar a descoberta de host e a varredura de porta em todos os hosts de destino. As seguintes opções controlam a descoberta de host:
-sL |
Listar digitalização. |
A varredura de lista é uma forma degenerada de descoberta de host que lista cada host da (s) rede (s) especificada (s), sem enviar nenhum pacote para os hosts de destino. Por padrão, o nmap ainda faz a resolução de DNS reverso nos hosts para aprender seus nomes. Muitas vezes, é surpreendente a quantidade de informações úteis que os nomes simples de host fornecem. Por exemplo, fw.chi é o nome do firewall de Chicago de uma empresa. O nmap também informa o número total de endereços IP no final. A varredura de lista é uma boa verificação de sanidade para garantir que você tenha endereços IP adequados para seus destinos. Se os hosts hospedam nomes de domínio que você não reconhece, vale a pena investigar mais para impedir a verificação da rede da empresa errada.
Como a idéia é imprimir uma lista de hosts de destino, opções para funcionalidades de nível superior, como varredura de portas, detecção de SO ou varredura de ping, não podem ser combinadas com isso. Se você deseja desativar a verificação de ping enquanto ainda executa essa funcionalidade de nível superior, leia a opção -Pn (ignore o ping).
-sn |
Nenhuma varredura de porta. |
Essa opção informa ao nmap para não fazer uma varredura de porta após a descoberta do host e imprimir apenas os hosts disponíveis que responderam à varredura. Isso geralmente é conhecido como “verificação de ping”, mas você também pode solicitar que os scripts de host traceroute e NSE sejam executados. Por padrão, esse é um passo mais intrusivo que a varredura de lista e geralmente pode ser usado para os mesmos fins. Permite o reconhecimento leve de uma rede alvo sem atrair muita atenção. Saber quantos hosts estão ativos é mais valioso para os invasores do que a lista fornecida pela varredura de lista de cada IP e nome de host.
Os administradores de sistemas geralmente acham essa opção valiosa também. Ele pode ser facilmente usado para contar as máquinas disponíveis em uma rede ou monitorar a disponibilidade do servidor. Isso geralmente é chamado de varredura de ping e é mais confiável do que executar ping no endereço de transmissão porque muitos hosts não respondem às consultas de transmissão.
A descoberta de host padrão feita com -sn consiste em uma solicitação de eco ICMP, TCP SYN na porta 443, TCP ACK na porta 80 e uma solicitação de carimbo de data / hora do ICMP por padrão. Quando executado por um usuário sem privilégios, apenas pacotes SYN são enviados (usando uma chamada de conexão) para as portas 80 e 443 no destino. Quando um usuário privilegiado tenta varrer destinos em uma rede Ethernet local, as solicitações de ARP são usadas, a menos que –send-ip tenha sido especificado. A opção -sn pode ser combinada com qualquer um dos tipos de análise de descoberta (as opções -P *, excluindo -Pn) para maior flexibilidade. Se alguma dessas opções de tipo e número de porta for utilizada, as análises padrão serão substituídas. Quando firewalls rígidos existem entre o host de origem executando o nmap e a rede de destino, é recomendável usar essas técnicas avançadas. Caso contrário, os hosts poderão ser perdidos quando o firewall interromper análises ou suas respostas.
Nas versões anteriores do nmap, -sn era conhecido como -sP.
-Pn |
No ping. |
Esta opção ignora completamente o estágio de descoberta do nmap . Normalmente, o nmap usa este estágio para determinar máquinas ativas para escaneamento mais pesado. Por padrão, o nmap só executa sondagens pesadas, como varreduras de portas, detecção de versão ou detecção de SO contra hosts que estão ativos. Desativar a descoberta de host com -Pn faz com que o nmap tente as funções de varredura solicitadas em cada endereço IP de destino especificado. Portanto, se um espaço de endereço de destino de classe B ( / 16 ) for especificado na linha de comando, todos os 65.536 endereços IP serão verificados. A descoberta adequada do host é ignorada como na verificação da lista, mas em vez de parar e imprimir a lista de alvos, o nmap continua a executar as funções solicitadas como se cada IP de destino estivesse ativo. Para ignorar a varredura de ping e a varredura de porta, enquanto permite que o NSE seja executado, use as duas opções -Pn -sn juntas.
Para máquinas em uma rede Ethernet local, a varredura ARP ainda será realizada (a menos que –send-ip seja especificado) porque o nmap precisa de endereços MAC para fazer uma varredura adicional nos hosts de destino. Nas versões anteriores do nmap , -Pn era -P0 e -PN .
-PS port list |
TCP SYN Ping. |
Esta opção envia um pacote TCP vazio com o sinalizador SYN definido. A porta de destino padrão é 80 (configurável em tempo de compilação alterando DEFAULT_TCP_PROBE_PORT_SPEC em nmap.h ). Portas alternativas podem ser especificadas como um parâmetro. A sintaxe é a mesma do -p, exceto que especificadores de tipo de porta como T: não são permitidos. Os exemplos são -PS22 e -PS22-25,80,113,1050,35000 . Observe que não pode haver espaço entre -PS e a lista de portas. Se vários probes forem especificados, eles serão enviados em paralelo.
O sinalizador SYN sugere ao sistema remoto que você está tentando estabelecer uma conexão. Normalmente, a porta de destino será fechada e um pacote RST (reset) será enviado de volta. Se a porta estiver aberta, o destino executará a segunda etapa de um handshake TCP de três vias, respondendo com um pacote TCP SYN / ACK. A máquina executando o nmap então destrói a conexão nascente respondendo com um RST ao invés de enviar um pacote ACK que completaria o handshake triplo e estabeleceria uma conexão completa. O pacote RST é enviado pelo kernel da máquina que está executando o nmap em resposta ao SYN / ACK inesperado, não pelo próprio nmap .
O nmap não se importa se a porta está aberta ou fechada. A resposta RST ou SYN / ACK discutida anteriormente diz ao nmap que o host está disponível e responsivo.
Em máquinas Unix, apenas o usuário root com privilégios geralmente é capaz de enviar e receber pacotes TCP brutos. Para usuários sem privilégios, uma solução alternativa é empregada automaticamente, por meio da qual a chamada do sistema de conexão é iniciada em cada porta de destino. Isso tem o efeito de enviar um pacote SYN ao host de destino, em uma tentativa de estabelecer uma conexão. Se a conexão retornar com um sucesso rápido ou uma falha ECONNREFUSED, a pilha TCP subjacente deve ter recebido um SYN / ACK ou RST e o host está marcado como disponível. Se a tentativa de conexão for deixada travada até que o tempo limite seja atingido, o host será marcado como inativo.
-PA port list |
TCP ACK Ping. |
O ping TCP ACK é bastante semelhante ao ping SYN recém-discutido. A diferença, como você provavelmente pode imaginar, é que o sinalizador TCP ACK é definido em vez do sinalizador SYN. Esse pacote ACK pretende estar reconhecendo dados em uma conexão TCP estabelecida, mas essa conexão não existe. Portanto, os hosts remotos devem sempre responder com um pacote RST, revelando sua existência no processo.
A opção -PA usa a mesma porta padrão que o probe SYN (80) e também pode obter uma lista de portas de destino no mesmo formato. Se um usuário sem privilégios tentar isso, a solução alternativa de conexão discutida anteriormente será usada. Esta solução alternativa é imperfeita porque a conexão está, na verdade, enviando um pacote SYN em vez de um ACK.
O motivo para oferecer testes de ping SYN e ACK é maximizar as chances de contornar firewalls. Muitos administradores configuram roteadores e outros firewalls simples para bloquear pacotes SYN de entrada, exceto aqueles destinados a serviços públicos, como o site da empresa ou servidor de e-mail. Isso evita outras conexões de entrada para a organização, enquanto permite que os usuários façam conexões de saída desobstruídas com a Internet. Essa abordagem sem estado ocupa poucos recursos no firewall / roteador e é amplamente suportada por filtros de hardware e software. O software de firewall Linux Netfilter / iptables oferece a opção de conveniência –syn para implementar essa abordagem sem estado. Quando regras de firewall stateless como esta estão em vigor, SYN ping sondagens ( -PS) serão bloqueados quando enviados para portas de destino fechadas. Casos de casos, a sonda ACK brilha conforme corta essas regras.
Outro tipo comum de firewall usa regras com estado que descartam pacotes inesperados. Esse recurso foi encontrado principalmente em firewalls de última geração, embora tenha se tornado muito mais comum ao longo dos anos. O Sistema Linux Netfilter / iptables suporta ISSO atraves da Opção -state , that categoriza Pacotes de Viagens com base de qualquer Estado da Conexão. É mais provável que uma sonda SYN funcione contra esse sistema, pois pacotes ACK inesperados são geralmente como falsos e descartados. Uma solução para esse dilema é enviar as sondas SYN e ACK especificando -PS e -PA .
.
-PU lista de portas |
Ping UDP. |
Outra opção de descoberta de host é o ping UDP , que envia um pacote UDP para as portas especificadas. Para a maioria das portas, o pacote estará vazio, embora, para algumas, uma carga útil específica do protocolo seja enviada com maior probabilidade de obter uma resposta. O banco de dados de carga útil é descrito em https://nmap.org/book/nmap-payloads.html .
A opção –data-length envia uma carga aleatória de tamanho fixo para todas as portas.
A lista de portas assume o mesmo formato das opções -PS e -PA discutidas anteriormente . Se nenhuma porta for especificada, o padrão é 40125 . Esse padrão pode ser configurado em tempo de compilação alterando DEFAULT_UDP_PROBE_PORT_SPEC em nmap.h . Uma porta altamente incomum é usada por padrão porque o envio para portas abertas geralmente é indesejável para esse tipo de verificação específico.
Ao atingir uma porta fechada na máquina de destino, o probe UDP deve obter um pacote inacessível da porta ICMP em troca. Isso significa ao nmap que a máquina está instalada e disponível. Outros tipos de erros de ICMP, como host / rede inacessível ou TTL excedido, são indicativos de um host inativo ou inacessível. A falta de resposta também é interpretada dessa maneira. Se uma porta aberta for atingida, a maioria dos serviços ignora o pacote vazio e falha ao retornar qualquer resposta. É por isso que a porta do probe padrão é 40125, que é altamente improvável que esteja em uso. Alguns serviços, como o protocolo Gerador de caracteres (chargen), responderão a um pacote UDP vazio e, assim, divulgarão ao nmap que a máquina está disponível.
A principal vantagem desse tipo de varredura é que ele ignora firewalls e filtros que somente examinam o TCP. Por exemplo, a interface externa do roteador de banda larga sem fio Linksys BEFW11S4 filtra todas as portas TCP por padrão, mas os testes UDP ainda provocam mensagens inacessíveis da porta e, portanto, distribuem o dispositivo.
-PY lista de portas |
SCTP INIT Ping. |
Esta opção envia um pacote SCTP contendo um pedaço INIT mínimo. A porta de destino padrão é 80 (configurável em tempo de compilação, alterando DEFAULT_SCTP_PROBE_PORT_SPEC em nmap.h ). Portas alternativas podem ser especificadas como um parâmetro. A sintaxe é igual à do -p, exceto que especificadores de tipo de porta como S: não são permitidos. Os exemplos são -PY22 e -PY22,80,179,5060 . Observe que não pode haver espaço entre -PY e a lista de portas. Se várias sondas forem especificadas, elas serão enviadas em paralelo.
O pedaço INIT sugere ao sistema remoto que você está tentando estabelecer uma associação. Normalmente, a porta de destino será fechada e um pedaço ABORT será enviado de volta. Se a porta estiver aberta, o destino executará a segunda etapa de um handshake de quatro vias SCTP, respondendo com uma parte do INIT-ACK. Se a máquina que está executando o nmap tiver uma pilha SCTP funcional, ela romperá a associação nascente, respondendo com um pedaço ABORT em vez de enviar um pedaço COOKIE-ECHO, que seria o próximo passo no handshake de quatro direções. O pacote ABORT é enviado pelo kernel da máquina executando o nmap em resposta ao inesperado INIT-ACK, não pelo próprio nmap .
O nmap não se importa se a porta está aberta ou fechada. A resposta ABORT ou INIT-ACK discutida anteriormente informa ao nmap que o host está disponível e responde.
Nas caixas Unix, somente a raiz do usuário privilegiado geralmente pode enviar e receber pacotes SCTP brutos. Atualmente, o uso de SCTP INIT Pings não é possível para usuários sem privilégios.
-PE , -PP , -PM |
Tipos de ping do ICMP. |
Além dos tipos incomuns de descoberta de host TCP, UDP e SCTP discutidos anteriormente, o nmap pode enviar os pacotes padrão enviados pelo programa onipresente de ping . O nmap envia um pacote ICMP tipo 8 (solicitação de eco) para os endereços IP de destino, esperando um tipo 0 (resposta de eco) em retorno dos hosts disponíveis. Infelizmente, para os exploradores de rede, muitos hosts e firewalls agora bloqueiam esses pacotes, em vez de responder conforme exigido pela RFC 1122. Por esse motivo, as verificações apenas por ICMP raramente são confiáveis o suficiente contra alvos desconhecidos na Internet. Porém, para administradores de sistema que monitoram uma rede interna, eles podem ser uma abordagem prática e eficiente. Use a opção -PE para ativar esse comportamento de solicitação de eco.
Embora a solicitação de eco seja a consulta de ping padrão do ICMP , o nmap não pára por aí. Os padrões ICMP (RFC 792 e RFC 950) afirmam que “um host NÃO DEVE implementar essas mensagens”. Consultas timestamp e máscara de endereço pode ser enviado com os -PP e -PM opções, respectivamente. Uma resposta de carimbo de data / hora (código ICMP 14) ou resposta de máscara de endereço (código 18) revela que o host está disponível. Essas duas consultas podem ser valiosas quando os administradores bloqueiam especificamente os pacotes de solicitação de eco, esquecendo que outras consultas ICMP podem ser usadas para a mesma finalidade.
Lista de protocolos -PO |
Ping do protocolo IP. |
Uma das opções mais recentes de descoberta de host é o ping do protocolo IP , que envia pacotes IP com o número de protocolo especificado definido no cabeçalho IP. A lista de protocolos assume o mesmo formato das listas de portas nas opções de descoberta de host TCP, UDP e SCTP discutidas anteriormente. Se nenhum protocolo for especificado, o padrão é enviar vários pacotes IP para ICMP (protocolo 1), IGMP (protocolo 2) e IP-in-IP (protocolo 4). Os protocolos padrão pode ser configurado em tempo de compilação alterando DEFAULT_PROTO_PROBE_PORT_SPEC em nmap.h . Observe que, para o ICMP, IGMP, TCP (protocolo 6), UDP (protocolo 17) e SCTP (protocolo 132), os pacotes são enviados com os cabeçalhos de protocolo adequados. Embora outros protocolos sejam enviados sem dados adicionais além do cabeçalho IP (a menos que oa opção –data-length está especificada).
Esse método de descoberta de host procura respostas usando o mesmo protocolo que um probe ou mensagens inacessíveis do protocolo ICMP, o que significa que o protocolo fornecido não é suportado no host de destino. Qualquer tipo de resposta significa que o host de destino está ativo.
-PR |
ARP Ping. |
Um dos cenários de uso mais comuns do nmap é verificar uma LAN Ethernet. Na maioria das LANs, especialmente aquelas que usam os intervalos de endereços privados atribuídos pela RFC 1918, a grande maioria dos endereços IP não é usada a qualquer momento. Quando o nmap tenta enviar um pacote IP bruto, como uma solicitação de eco ICMP, o sistema operacional deve determinar o endereço do hardware de destino (ARP) correspondente ao IP de destino para que ele possa endereçar o quadro Ethernet. Isso é lento e problemático, pois os sistemas operacionais não foram escritos com a expectativa de que eles precisariam fazer milhões de solicitações de ARP contra hosts indisponíveis em um curto período de tempo.
A varredura ARP coloca o nmap e seus algoritmos otimizados no comando das solicitações ARP. E se obtiver uma resposta, o nmap nem mesmo precisa se preocupar com os pacotes de ping baseados em IP, uma vez que já sabe que o host está ativo. Isso torna a varredura ARP muito mais rápida e confiável do que as varreduras baseadas em IP. Portanto, é feito por padrão ao escanear hosts Ethernet que o nmap detecta em uma rede Ethernet local. Mesmo se diferentes tipos de ping (como -PE ou -PS ) forem especificados, o nmap usa ARP em vez de qualquer um dos alvos que estão na mesma LAN. Se você absolutamente não deseja fazer uma varredura ARP, especifique –send-ip .
Para IPv6 ( opção -6 ), -PR usa a descoberta de vizinho ICMPv6 em vez de ARP. A descoberta de vizinho, definida no RFC 4861, pode ser vista como o equivalente IPv6 do ARP.
–traceroute |
Rastreie o caminho até o host. |
Traceroutes são executados após a varredura usando informações dos resultados da varredura para determinar a porta e o protocolo com maior probabilidade de atingir o alvo. Funciona com todos os tipos de varredura, exceto varreduras de conexão ( -sT ) e varreduras inativas ( -sI ). Todos os rastreamentos usam o modelo de tempo dinâmico do nmap e são executados em paralelo.
O Traceroute funciona enviando pacotes com um baixo TTL (tempo de vida) em uma tentativa de obter mensagens ICMP Time Exceeded de saltos intermediários entre o scanner e o host de destino. As implementações padrão do traceroute começam com um TTL de 1 e incrementam o TTL até que o host de destino seja alcançado. O traceroute do nmap começa com um TTL alto e então diminui o TTL até chegar a zero. Fazê-lo de trás para frente permite que o nmap empregue algoritmos de cache inteligentes para acelerar os rastreamentos em vários hosts. Em média, o nmap envia de 5 a 10 menos pacotes por host, dependendo das condições da rede. Se uma única sub-rede estiver sendo varrida (ou seja, 192.168.0.0/24), o nmap pode ter apenas que enviar dois pacotes para a maioria dos hosts.
-n |
Sem resolução de DNS. |
Diz ao nmap para nunca fazer a resolução reversa do DNS nos endereços IP ativos que encontrar. Visto que o DNS pode ser lento mesmo com o resolvedor stub paralelo integrado do nmap , esta opção pode reduzir muito o tempo de varredura.
-R |
Resolução de DNS para todos os destinos. |
Diz ao nmap para sempre fazer a resolução reversa do DNS nos endereços IP de destino. Normalmente, o DNS reverso só é executado em hosts responsivos (online).
–system-dns |
Usando o resolvedor DNS do sistema. |
Por padrão, o nmap resolve endereços IP enviando consultas diretamente para os servidores de nomes configurados em seu host e então ouvindo as respostas. Muitas solicitações (geralmente dezenas) são realizadas em paralelo para melhorar o desempenho. Especifique esta opção para usar o resolvedor do sistema (um IP por vez por meio da chamada getnameinfo ). Isso é mais lento e raramente útil, a menos que você encontre um bug no resolvedor paralelo nmap . O resolvedor do sistema é sempre usado para varreduras IPv6.
–dns-servers server1[,server2[,…]] |
Servidores para serem usados com reverse DNS queries. |
Por padrão, o nmap determina seus servidores DNS (para resolução rDNS) a partir do arquivo resolv.conf (Unix) ou do registro (Win32). Como alternativa, você pode usar esta opção para especificar servidores alternativos. Esta opção não é aceita se você estiver usando –system-dns ou uma varredura IPv6. Usar vários servidores DNS geralmente é mais rápido, especialmente se você escolher servidores autoritativos para seu espaço IP de destino. Essa opção também pode melhorar a dissimulação, pois suas solicitações podem ser devolvidas a praticamente qualquer servidor DNS recursivo na Internet.
Essa opção também é útil ao escanear redes privadas. Às vezes, apenas alguns servidores de nomes fornecem informações rDNS adequadas e você pode nem saber onde eles estão. Você pode escanear a rede para a porta 53 (talvez com detecção de versão), então tente nmap list scans ( -sL ) especificando cada servidor de nomes um por vez com –dns-servers até encontrar um que funcione.
Opções: técnicas de varredura
-sS/sT/sA/sW/sM |
|
|
-sU | Varredura UDP. | |
-sN/sF/sX | TCP Null, FIN, e varreduras Xmas. | |
–scanflags <flags> | Customize TCP scan flags. | |
-sI <zombie host[:probeport]> | Idle scan. | |
-sY/sZ | SCTP INIT/COOKIE-ECHO scans. | |
-sO | IP protocol scan. | |
-b <FTP relay host> | FTP bounce scan. |
Embora o nmap tenha crescido em funcionalidade ao longo dos anos, ele começou como um scanner de porta eficiente e essa continua sendo sua função principal. O comando simples “ nmap target ” varre 1.000 portas TCP no host de destino . Enquanto muitos scanners de porta tradicionalmente agrupam todas as portas nos estados aberto ou fechado, o nmap é muito mais granular. Ele divide as portas em seis estados: aberto , fechado , filtrado , não filtrado , aberto | filtrado ou fechado | filtrado .
Esses estados não são propriedades intrínsecas da porta em si, mas descrevem como o nmap os vê. Por exemplo, uma varredura nmap da mesma rede do destino pode mostrar a porta 135 / tcp como aberta, enquanto uma varredura ao mesmo tempo com as mesmas opções da Internet pode mostrar essa porta como filtrada.
Os seis estados de porta reconhecidos pelo nmap :
- Um aplicativo está aceitando ativamente conexões TCP, datagramas UDP ou associações SCTP nesta porta. Encontrá-los geralmente é o principal objetivo da varredura de portas. Pessoas preocupadas com a segurança sabem que cada porta aberta é uma via de ataque. Os invasores e pentesters querem explorar as portas abertas, enquanto os administradores tentam fechá-las ou protegê-las com firewalls sem impedir os usuários legítimos. Portas abertas também são interessantes para varreduras não relacionadas à segurança porque mostram serviços disponíveis para uso na rede.
- Uma porta fechada está acessível (ela recebe e responde aos pacotes de sondagem do nmap ), mas não há nenhum aplicativo escutando nela. Eles podem ser úteis para mostrar que um host está ativo em um endereço IP (descoberta de host ou varredura de ping) e como parte da detecção de sistema operacional. Como as portas fechadas podem ser acessadas, pode valer a pena fazer a varredura mais tarde, caso algumas abram. Os administradores podem querer considerar o bloqueio dessas portas com um firewall. Em seguida, eles apareceriam no estado filtrado, discutido a seguir.
- O nmap não pode determinar se a porta está aberta porque a filtragem de pacotes impede que seus probes atinjam a porta. A filtragem pode ser de um dispositivo de firewall dedicado, regras de roteador ou software de firewall baseado em host. Essas portas frustram os invasores porque fornecem poucas informações. Às vezes, eles respondem com mensagens de erro ICMP, como tipo 3 código 13 (destino inalcançável: comunicação proibida administrativamente), mas os filtros que descartam as sondagens sem responder são muito mais comuns. Isso força o nmap a tentar novamente várias vezes, apenas no caso de a detecção ser descartada devido ao congestionamento da rede, em vez de filtragem. Isso retarda a varredura drasticamente.
- O estado não filtrado significa que uma porta está acessível, mas o nmap não é capaz de determinar se ela está aberta ou fechada. Apenas a varredura ACK, que é usada para mapear conjuntos de regras de firewall, classifica as portas neste estado. A varredura de portas não filtradas com outros tipos de varredura, como varredura de janela, varredura SYN ou varredura FIN, pode ajudar a determinar se a porta está aberta.
- O nmap coloca as portas neste estado quando não consegue determinar se uma porta está aberta ou filtrada. Isso ocorre para tipos de varredura em que as portas abertas não fornecem resposta. A falta de resposta também pode significar que um filtro de pacotes descartou a investigação ou qualquer resposta que ela gerou. Portanto, o nmap não sabe ao certo se a porta está aberta ou sendo filtrada. As varreduras UDP, protocolo IP, FIN, NULL e Xmas classificam as portas dessa maneira.
- Este estado é usado quando o nmap não consegue determinar se uma porta está fechada ou filtrada. Ele é usado apenas para a varredura ociosa de IP ID.
A maioria dos tipos de varredura está disponível apenas para usuários com privilégios. Isso ocorre porque eles enviam e recebem pacotes brutos, o que requer acesso root em sistemas Unix. O uso de uma conta de administrador no Windows é recomendado, embora o nmap às vezes funcione para usuários sem privilégios nessa plataforma quando o WinPcap já foi carregado no sistema operacional. Requerer privilégios de root era uma limitação séria quando o nmap foi lançado em 1997, já que muitos usuários só tinham acesso a contas de shell compartilhadas. Agora, o mundo é diferente. Os computadores são mais baratos, muito mais pessoas têm acesso direto à Internet e sistemas Unix de desktop (incluindo Linux e macOS X ) são predominantes. Uma versão do nmap para Windows agora está disponível, permitindo que seja executado em ainda mais desktops. Por todas essas razões, os usuários têm menos necessidade de executar o nmap a partir de contas de shell compartilhadas limitadas. Isso é uma sorte, pois as opções privilegiadas tornam o nmap muito mais poderoso e flexível.
Enquanto o nmap tenta produzir resultados precisos, tenha em mente que todos os seus insights são baseados em pacotes retornados pelas máquinas de destino (ou firewalls na frente delas). Esses hosts podem não ser confiáveis e enviar respostas com a intenção de confundir ou enganar o nmap . Muito mais comuns são os hosts não compatíveis com RFC que não respondem como deveriam aos testes nmap . As varreduras FIN , NULL e Xmas são particularmente suscetíveis a esse problema. Esses problemas são específicos para certos tipos de varredura e, portanto, são discutidos nas entradas de tipo de varredura individuais.
Esta seção documenta cerca de uma dúzia de técnicas de varredura de portas suportadas pelo nmap . Apenas um método pode ser usado por vez, exceto que a varredura UDP ( -sU ) e qualquer um dos tipos de varredura SCTP ( -sY , -sZ ) podem ser combinados com qualquer um dos tipos de varredura TCP. Como um auxílio de memória, as opções de tipo de varredura de porta estão no formato -sC , onde C é um caractere proeminente no nome da varredura, geralmente o primeiro. A única exceção a isso é a obsoleta varredura de rejeição de FTP ( -b ). Por padrão, nmap executa uma varredura SYN, embora substitua uma varredura de conexão se o usuário não tiver os privilégios adequados para enviar pacotes brutos (requer acesso root no Unix). Das varreduras listadas nesta seção, os usuários sem privilégios só podem executar varreduras de conexão e rejeição de FTP.
-sS |
TCP SYN scan. |
A varredura SYN é a opção de varredura padrão e mais popular por bons motivos. Isso pode ser executado rapidamente, varrendo milhares de portas por segundo em uma rede rápida não prejudicada por firewalls restritivos. Também é relativamente discreto e furtivo, uma vez que nunca completa as conexões TCP. SYN varredura obras contra qualquer pilha TCP compatível, em vez de depender de idiossincrasias de plataformas específicas como nmap ‘s FIN / NULL / Xmas , Maimon e scans ociosas fazer. Também permite uma diferenciação clara e confiável entre os estados aberto , fechado e filtrado .
Essa técnica costuma ser chamada de varredura semi-aberta , porque você não abre uma conexão TCP completa. Você envia um pacote SYN, como se fosse abrir uma conexão real e, em seguida, espera por uma resposta. Um SYN / ACK indica que a porta está ouvindo (aberta), enquanto um RST (redefinir) é indicativo de um não ouvinte. Se nenhuma resposta for recebida após várias retransmissões, a porta será marcada como filtrada. A porta também é marcada como filtrada se um erro ICMP inacessível (tipo 3, código 1, 2, 3, 9, 10 ou 13) for recebido. A porta também é considerada aberta se um pacote SYN (sem o sinalizador ACK) for recebido em resposta. Isso pode ser devido a um recurso TCP extremamente raro conhecido como conexão de handshake aberta ou dividida simultânea (consulte https://nmap.org/misc/split-handshake.pdf ).
-sT |
TCP connect scan. |
A varredura de conexão TCP é o tipo de varredura TCP padrão quando a varredura SYN não é uma opção. Este é o caso quando um usuário não possui privilégios de pacote bruto. Em vez de escrever pacotes brutos como a maioria dos outros tipos de varredura fazem, o nmap pede ao sistema operacional subjacente para estabelecer uma conexão com a máquina e porta de destino emitindo a chamada de sistema de conexão. Esta é a mesma chamada de sistema de alto nível que navegadores da web, clientes P2P e a maioria dos outros aplicativos habilitados para rede usam para estabelecer uma conexão. É parte de uma interface de programação conhecida como API Berkeley Sockets . Em vez de ler respostas de pacotes brutos sem fio, o nmap usa essa API para obter informações de status em cada tentativa de conexão.
Quando a varredura SYN está disponível, geralmente é a melhor escolha. O nmap tem menos controle sobre a chamada de conexão de alto nível do que sobre os pacotes brutos, tornando-o menos eficiente. A chamada do sistema completa as conexões para abrir as portas de destino em vez de realizar a reinicialização pela metade que a varredura SYN faz. Isso não apenas leva mais tempo e requer mais pacotes para obter as mesmas informações, mas também é mais provável que as máquinas de destino registrem a conexão. Um IDS decente detectará qualquer um deles, mas a maioria das máquinas não possui tal sistema de alarme. Muitos serviços em seu sistema Unix comum irão adicionar uma nota ao syslog e, às vezes, uma mensagem de erro enigmática, quando o nmap conecta e fecha a conexão sem enviar dados. Serviços verdadeiramente patéticos travam quando isso acontece, embora isso seja incomum. Um administrador que vê várias tentativas de conexão em seus logs de um único sistema deve saber que sua conexão foi verificada.
-sU |
UDP scans. |
Embora os serviços mais populares na Internet sejam executados no protocolo TCP, os serviços UDP são amplamente implantados. DNS , SNMP e DHCP (portas registradas 53, 161/162 e 67/68) são três dos mais comuns. Como a varredura UDP é geralmente mais lenta e difícil do que TCP, alguns auditores de segurança ignoram essas portas. Isso é um erro, pois os serviços UDP exploráveis são bastante comuns e os invasores certamente não ignoram todo o protocolo. Felizmente, o nmap pode ajudar a inventariar as portas UDP.
A varredura UDP é ativada com a opção -sU . Ele pode ser combinado com um tipo de varredura TCP, como varredura SYN ( -sS ), para verificar os dois protocolos durante a mesma execução.
A varredura UDP funciona enviando um pacote UDP para cada porta-alvo. Para algumas portas comuns, como 53 e 161, uma carga específica de protocolo é enviada, mas para a maioria das portas o pacote está vazio. A opção –data-length pode ser usada para enviar uma carga aleatória de comprimento fixo para cada porta. Se um erro de porta ICMP inacessível (tipo 3, código 3) for retornado, a porta será fechada. Outros erros ICMP inacessíveis (tipo 3, códigos 1, 2, 9, 10 ou 13) marcam a porta como filtrada. Ocasionalmente, um serviço responderá com um pacote UDP, provando que está aberto. Se nenhuma resposta for recebida após as retransmissões, a porta será classificada como aberta | filtrada . Isso significa que a porta pode estar aberta ou talvez os filtros de pacotes estejam bloqueando a comunicação. Detecção de versão ( -sV) pode ser usado para ajudar a diferenciar as portas verdadeiramente abertas das filtradas.
Um grande desafio com a digitalização UDP é fazer isso rapidamente. Portas abertas e filtradas raramente enviam qualquer resposta, deixando o nmap em tempo limite e então conduzindo retransmissões apenas no caso de a detecção ou resposta ser perdida. As portas fechadas costumam ser um problema maior. Eles geralmente enviam de volta um erro de porta ICMP inacessível. Mas, ao contrário dos pacotes RST enviados por portas TCP fechadas em resposta a um SYN ou scan de conexão, muitos hosts limitam a taxa. Mensagens de porta ICMP inacessíveis por padrão. Linux e Solaris são particularmente rígidos quanto a isso. Por exemplo, o kernel do Linux 2.4.20 limita as mensagens de destino inacessíveis a uma por segundo (em net / ipv4 / icmp.c ).
O nmap detecta a limitação de taxa e diminui a velocidade de acordo para evitar inundar a rede com pacotes inúteis que a máquina de destino irá descartar. Infelizmente, um limite no estilo Linux de um pacote por segundo faz com que uma varredura de 65.536 portas demore mais de 18 horas. Idéias para acelerar suas varreduras UDP incluem varredura de mais hosts em paralelo, fazendo uma varredura rápida apenas das portas populares primeiro, varredura por trás do firewall e usando –host-timeout para pular hosts lentos.
-sY |
SCTP INIT scan. |
O SCTP é uma alternativa relativamente nova aos protocolos TCP e UDP, combinando a maioria das características do TCP e UDP e também adicionando novos recursos como multi-homing e multi-streaming. Ele está sendo usado principalmente para serviços relacionados ao SS7 / SIGTRAN, mas tem potencial para ser usado também para outras aplicações. A varredura SCTP INIT é o equivalente SCTP de uma varredura TCP SYN. Isso pode ser executado rapidamente, varrendo milhares de portas por segundo em uma rede rápida não prejudicada por firewalls restritivos. Como a varredura SYN, a varredura INIT é relativamente discreta e furtiva, uma vez que nunca completa associações SCTP. Também permite uma diferenciação clara e confiável entre os estados aberto, fechado e filtrado.
Essa técnica costuma ser chamada de varredura semi-aberta , porque você não abre uma associação SCTP completa. Você envia um chunk INIT, como se fosse abrir uma associação real e então esperar por uma resposta. Um bloco INIT-ACK indica que a porta está ouvindo (aberta), enquanto um bloco ABORT é indicativo de um não ouvinte. Se nenhuma resposta for recebida após várias retransmissões, a porta será marcada como filtrada. A porta também é marcada como filtrada se um erro ICMP inacessível (tipo 3, código 1, 2, 3, 9, 10 ou 13) for recebido.
-sN; -sF; -sX |
TCP NULL, FIN, and Xmas scans. |
Esses três tipos de varredura (ainda mais são possíveis com a opção –scanflags descrita na próxima seção) exploram uma lacuna sutil no RFC TCP para diferenciar entre portas abertas e fechadas. A página 65 da RFC 793 diz que “se o estado da porta [de destino] for FECHADO…. um segmento de entrada que não contém um RST faz com que um RST seja enviado em resposta. ” Em seguida, a próxima página discute os pacotes enviados para abrir portas sem os bits SYN, RST ou ACK definidos, afirmando que: “é improvável que você chegue aqui, mas se chegar, descarte o segmento e retorne”.
Ao escanear sistemas compatíveis com este texto RFC, qualquer pacote que não contenha bits SYN, RST ou ACK resultará em um RST retornado se a porta estiver fechada e nenhuma resposta se a porta estiver aberta. Contanto que nenhum desses três bits seja incluído, qualquer combinação dos outros três (FIN, PSH e URG) está OK. O nmap explora isso com três tipos de varredura:
- Varredura nula ( -sN ): Não define nenhum bit (o cabeçalho do sinalizador TCP é 0).
- Varredura FIN ( -sF ): Define apenas o bit TCP FIN.
- Xmas scan ( -sX ): Define os sinalizadores FIN, PSH e URG, iluminando o pacote como uma árvore de Natal.
Esses três tipos de varredura têm o mesmo comportamento, exceto para os sinalizadores TCP definidos nos pacotes de sondagem. Se um pacote RST for recebido, a porta será considerada fechada , enquanto nenhuma resposta significa que está aberta | filtrada . A porta é marcada como filtrada se um erro ICMP inacessível (tipo 3, código 1, 2, 3, 9, 10 ou 13) for recebido.
A principal vantagem desses tipos de varredura é que eles podem passar furtivamente por certos firewalls sem estado e roteadores de filtragem de pacotes. Outra vantagem é que esses tipos de varredura são um pouco mais furtivos do que até mesmo uma varredura SYN. Não conte com isso – a maioria dos produtos IDS modernos podem ser configurados para detectá-los. A grande desvantagem é que nem todos os sistemas seguem a RFC 793 ao pé da letra. Muitos sistemas enviam respostas RST para as sondas, independentemente de a porta estar aberta ou não. Isso faz com que todas as portas sejam rotuladas como fechadas. Os principais sistemas operacionais que fazem isso são Microsoft Windows, muitos dispositivos Cisco , BSDI e IBM OS / 400. No entanto, essa varredura funciona contra a maioria dos sistemas baseados em Unix. Outra desvantagem dessas varreduras é que elas não conseguem distinguir portas abertas de certas portas filtradas, deixando você com a resposta aberta | filtrada .
-sA |
TCP ACK scan. |
Essa varredura é diferente das outras discutidas até agora, pois nunca determina portas abertas (ou mesmo abertas | filtradas ). É usado para mapear conjuntos de regras de firewall, determinando se eles têm estado ou não e quais portas são filtradas.
O pacote de sondagem de varredura ACK tem apenas o sinalizador ACK definido (a menos que você use –scanflags ). Ao fazer a varredura de sistemas não filtrados, as portas abertas e fechadas retornarão um pacote RST. O nmap então os rotula como não filtrados, o que significa que eles podem ser acessados pelo pacote ACK, mas se estão abertos ou fechados é indeterminado. As portas que não respondem ou enviam certas mensagens de erro ICMP de volta (tipo 3, código 1, 2, 3, 9, 10 ou 13) são rotuladas como filtradas .
-sW |
TCP Window scan. |
A varredura de janela é igual à varredura de ACK, exceto que explora um detalhe de implementação de certos sistemas para diferenciar portas abertas de portas fechadas , em vez de sempre imprimir sem filtro quando um RST é retornado. Ele faz isso examinando o campo Janela TCP dos pacotes RST retornados. Em alguns sistemas, as portas abertas usam um tamanho de janela positivo (mesmo para pacotes RST), enquanto as fechadas têm uma janela zero. Portanto, em vez de sempre listar uma porta como não filtrada ao receber um RST de volta, a varredura do Windows lista a porta como aberta ou fechada se o valor da janela TCP nessa reinicialização for positivo ou zero, respectivamente.
Essa varredura depende de um detalhe de implementação de uma minoria de sistemas na Internet, portanto, você nem sempre pode confiar nela. Os sistemas que não oferecem suporte geralmente retornarão todas as portas fechadas. Claro, é possível que a máquina realmente não tenha portas abertas. Se a maioria das portas verificadas estiver fechada, mas alguns números de porta comuns (como 22, 25, 53) forem filtrados, o sistema provavelmente estará suscetível. Ocasionalmente, os sistemas até mostrarão o comportamento exatamente oposto. Se a sua varredura mostra 1.000 portas abertas e três portas fechadas ou filtradas, então essas três podem muito bem ser as verdadeiramente abertas.
-sM |
Varredura TCP Maimon . |
A varredura Maimon tem o nome de seu descobridor, Uriel Maimon. Ele descreveu a técnica na edição nº 49 da Phrack Magazine (novembro de 1996). O nmap , que incluía essa técnica, foi lançado duas edições depois. Essa técnica é exatamente igual às varreduras NULL, FIN e Xmas, exceto que a sonda é FIN / ACK. De acordo com o RFC 793 (TCP), um pacote RST deve ser gerado em resposta a tal investigação, esteja a porta aberta ou fechada. No entanto, Uriel notou que muitos sistemas derivados de BSD descartam o pacote se a porta estiver aberta.
–scanflags |
Varredura TCP personalizada. |
Os usuários de nmap verdadeiramente avançados não precisam se limitar aos tipos de scan enlatados oferecidos. A opção –scanflags permite que você projete sua própria varredura especificando sinalizadores TCP arbitrários. Deixe sua criatividade fluir, enquanto evita os sistemas de detecção de intrusão cujos fornecedores folheiam a página de manual do nmap adicionando regras específicas!
O argumento –scanflags pode ser um valor de sinalizador numérico, como 9 (PSH e FIN), mas usar nomes simbólicos é mais fácil. Basta misturar qualquer combinação de URG, ACK, PSH, RST, SYN e FIN. Por exemplo, –scanflags URGACKPSHRSTSYNFIN define tudo, embora não seja muito útil para digitalização. A ordem em que são especificados é irrelevante.
Além de especificar os sinalizadores desejados, você pode especificar um tipo de varredura TCP (como -sA ou -sF ). Esse tipo de base diz ao nmap como interpretar as respostas. Por exemplo, uma varredura SYN considera a ausência de resposta para indicar uma porta filtrada, enquanto uma varredura FIN trata o mesmo como aberto | filtrado . O nmap se comportará da mesma forma que para o tipo de varredura base, exceto que ele usará os sinalizadores TCP que você especificar. Se você não especificar um tipo de base, a varredura SYN será usada.
-sZ |
SCTP COOKIE ECHO scan. |
A varredura SCTP COOKIE ECHO é uma varredura SCTP mais avançada. Ele tira vantagem do fato de que as implementações SCTP devem descartar silenciosamente os pacotes contendo pedaços COOKIE ECHO em portas abertas, mas enviar um ABORT se a porta estiver fechada. A vantagem desse tipo de varredura é que não é uma varredura de porta tão óbvia quanto uma varredura INIT. Além disso, pode haver conjuntos de regras de firewall sem estado bloqueando os blocos INIT, mas não os blocos COOKIE ECHO. Não se iluda pensando que isso tornará uma varredura de porta invisível; um bom IDS também será capaz de detectar varreduras SCTP COOKIE ECHO. A desvantagem é que as varreduras SCTP COOKIE ECHO não podem diferenciar entre portas abertas e filtradas , deixando você com o estado aberto | filtrado em ambos os casos.
-sI zombie host[:probeport] |
Idle scan. |
Este método de varredura avançado permite uma varredura verdadeiramente cega da porta TCP do alvo (o que significa que nenhum pacote é enviado ao alvo do seu endereço IP real). Em vez disso, um ataque de canal lateral exclusivo explora a geração de sequência de ID de fragmentação de IP previsível no host zumbi para coletar informações sobre as portas abertas no destino. Os sistemas IDS exibem a varredura como proveniente da máquina zumbi que você especificar (que deve estar ativa e atender a certos critérios). Este tipo de digitalização fascinante é muito complexo para ser totalmente descrito neste guia de referência, então escrevi e postei um artigo informal com todos os detalhes em https://nmap.org/book/idlescan.html .
Além de ser extraordinariamente furtivo (devido à sua natureza cega), esse tipo de varredura permite mapear relações de confiança baseadas em IP entre máquinas. A lista de portas mostra portas abertas da perspectiva do host zumbi . Portanto, você pode tentar escanear um alvo usando vários zumbis que você acha que podem ser confiáveis. (via regras de filtro de roteador / pacote).
Você pode adicionar dois pontos seguidos por um número de porta para o host zumbi se quiser sondar uma porta específica no zumbi para alterações de ID de IP. Caso contrário, o nmap usará a porta que usa por padrão para pings TCP (80).
-sO |
IP protocol scan. |
A varredura do protocolo IP permite que você determine quais protocolos IP (TCP, ICMP, IGMP, etc.) são suportados pelas máquinas de destino. Isso não é tecnicamente uma varredura de porta, uma vez que percorre os números do protocolo IP em vez dos números das portas TCP ou UDP. Mesmo assim, ele ainda usa a opção -p para selecionar números de protocolo varridos, relata seus resultados no formato de tabela de porta normal e até usa o mesmo mecanismo de varredura subjacente que os métodos de varredura de porta verdadeiros. Portanto, é perto o suficiente de uma varredura de porta para que pertença aqui.
Além de ser útil por si só, a varredura de protocolo demonstra o poder do software de código-fonte aberto. Embora a ideia fundamental seja bastante simples, o autor do nmap não recebeu nenhum pedido para tal funcionalidade. Então, no verão de 2000, Gerhard Rieger concebeu a idéia, escreveu um excelente patch implementando-o e o enviou para a lista de discussão nmap-hackers. Ele foi incorporado à árvore do nmap e uma nova versão foi lançada no dia seguinte. Poucas peças de software comercial têm usuários entusiasmados o suficiente para projetar e contribuir com suas próprias melhorias.
A varredura de protocolo funciona de maneira semelhante à varredura UDP. Em vez de iterar por meio do campo de número da porta de um pacote UDP, ele envia cabeçalhos de pacote IP e itera por meio do campo de protocolo IP de oito bits . Os cabeçalhos geralmente estão vazios, não contendo dados e nem mesmo o cabeçalho adequado para o protocolo reivindicado. As exceções são TCP, UDP, ICMP, SCTP e IGMP. Um cabeçalho de protocolo apropriado para eles está incluído, uma vez que alguns sistemas não os enviarão de outra forma e porque o nmap já tem funções para criá-los. Em vez de observar as mensagens de porta ICMP inacessível, a varredura de protocolo está à procura de mensagens de protocolo ICMP inacessível. Se o nmap receber qualquer resposta em qualquer protocolo do host de destino, o nmap marca esse protocolo como aberto . Um erro de protocolo ICMP inacessível (tipo 3, código 2) faz com que o protocolo seja marcado como fechado . Outros erros ICMP inacessíveis (tipo 3, código 1, 3, 9, 10 ou 13) fazem com que o protocolo seja marcado como filtrado (embora provem que o ICMP está aberto ao mesmo tempo). Se nenhuma resposta for recebida após as retransmissões, o protocolo é marcado como aberto | filtrado
-b FTP relay host |
FTP bounce scan. |
Uma característica interessante do protocolo FTP (RFC 959) é o suporte para as chamadas “conexões proxy FTP”. Isso permite que um usuário se conecte a um servidor FTP e, em seguida, solicite que os arquivos sejam enviados a um servidor de terceiros. Esse recurso pode ser abusado em muitos níveis, então a maioria dos servidores parou de suportá-lo. Um dos abusos que esse recurso permite está fazendo com que o servidor FTP faça a varredura de portas de outros hosts. Peça ao servidor FTP para enviar um arquivo para cada porta interessante de um host de destino. A mensagem de erro descreverá se a porta está aberta ou não. Essa é uma boa maneira de contornar os firewalls porque os servidores FTP organizacionais geralmente são colocados onde têm mais acesso a outros hosts internos do que qualquer host antigo da Internet teria. nmap suporta varredura de rejeição de FTP com o -b opção. Recebe um argumento no formato nome de usuário: senha @ servidor: porta . Servidor é o nome ou endereço IP de um servidor FTP vulnerável. Como com um URL normal, você pode omitir nome de usuário: senha , caso em que credenciais de login anônimas ( usuário: senha anônima: -wwwuser @ ) são usadas. O número da porta (e dois pontos precedentes) também pode ser omitido, caso em que a porta FTP padrão (21) no servidor é usada.
Esta vulnerabilidade foi disseminada em 1997 quando o nmap foi lançado, mas foi amplamente corrigida. Os servidores vulneráveis ainda estão por aí, então vale a pena tentar quando tudo mais falhar. Se o seu objetivo for contornar um firewall, verifique a rede de destino para a porta 21 (ou mesmo para quaisquer serviços FTP se você verificar todas as portas com detecção de versão) e use o script NSE ftp-bounce. O nmap dirá se o host é vulnerável ou não. Se você está tentando encobrir seus rastros, não precisa (e, de fato, não deveria) se limitar a hosts na rede de destino. Antes de fazer a varredura de endereços de Internet aleatórios em busca de servidores FTP vulneráveis, considere que os administradores de sistemas podem não gostar de você abusar de seus servidores dessa forma.
Opções: Especificação de porta e pedido de digitalização
-p <port ranges> | Verifique apenas as portas especificadas |
-F | Fast mode; varredura rápida com apenas as principais portas. |
-r | Varredura de portas de modo consecutivo; sem randomizar. |
–top-ports <number> | Varredura de portas mais comuns podendo especificá-las |
–port-ratio <ratio> | Varredura de portas mais comuns dentro de uma faixa. |
Além de todos os métodos de varredura discutidos anteriormente, o nmap oferece opções para especificar quais portas são escaneadas e se a ordem de varredura é aleatória ou sequencial. Por padrão, o nmap verifica as 1.000 portas mais comuns para cada protocolo.
-p port ranges |
Only scan specified ports. |
Esta opção especifica quais portas você deseja verificar e substitui o padrão. Os números de porta individuais estão OK, assim como os intervalos separados por um hífen (por exemplo, 1-1023 ). Os valores iniciais e / ou finais de um intervalo podem ser omitidos, fazendo com que o nmap use 1 e 65535 , respectivamente. Portanto, você pode especificar -p- para fazer a varredura das portas de 1 a 65535. A varredura da porta zero é permitida se você especificar explicitamente. Para varredura de protocolo IP ( -sO ), esta opção especifica os números de protocolo que você deseja varrer (0–255).
Ao digitalizar ambas as portas TCP e UDP, você pode especificar um protocolo em particular, precedendo os números de porta por T: ou U: . O qualificador dura até você especificar outro qualificador. Por exemplo, o argumento -p U: 53,111,137, T: 21-25,80,139,8080 varreria as portas UDP 53 , 111 e 137 , bem como as portas TCP listadas. Observe que para fazer a varredura de UDP e TCP, você deve especificar -sU e pelo menos um tipo de varredura de TCP (como -sS , -sF ou -sT) Se nenhum qualificador de protocolo for fornecido, os números de porta serão adicionados a todas as listas de protocolo. As portas também podem ser especificadas por nome de acordo com o que a porta é referida nos serviços nmap. Você pode até usar os curingas * e ? com os nomes. Por exemplo, para verificar o FTP e todas as portas cujos nomes começam com “ http “, use -p ftp, http * . Tenha cuidado com as expansões do shell e cite o argumento -p se não tiver certeza. Os intervalos de portas podem ser circundados por colchetes para indicar as portas dentro desse intervalo que aparecem nos serviços nmap. Por exemplo, o seguinte fará a varredura de todas as portas em nmap-services iguais ou abaixo de 1024: -p [-1024] . Tenha cuidado com as expansões de shell e cite o argumento para -p se não tiver certeza.
-F |
Fast (limited port) scan. |
Especifica que você deseja varrer menos portas do que o padrão. Normalmente, o nmap varre as 1.000 portas mais comuns para cada protocolo varrido. Com -F , isso é reduzido para 100.
O nmap precisa de um arquivo de serviços nmap com informações de frequência para saber quais portas são as mais comuns. Se as informações de frequência de porta não estiverem disponíveis, talvez devido ao uso de um arquivo de serviços nmap personalizado, -F significa verificar apenas as portas nomeadas no arquivo de serviços (normalmente o nmap verifica todas as portas nomeadas mais as portas 1–1024).
-r |
Não randomiza portas. |
Por padrão, o nmap randomiza a ordem das portas escaneadas (exceto que certas portas comumente acessíveis são movidas perto do início por razões de eficiência). Esta randomização é normalmente desejável, mas você pode especificar -r para varredura de porta sequencial (classificada da mais baixa para a mais alta).
Opções: detecção de serviço / versão
-sV | Busca portas abertas para determinar informações de serviço/versão |
–version-intensity <level> | Define a intensidade do scan, selecione de 0 a 9. Quanto menor, menos barulho… |
–version-light | Limite aos scans mais prováveis (o mesmo que a intesndidade 2). |
–version-all | Faça os scans com todas as opções (o mesmo que a intenbsidade 9). |
–version-trace | Mostra a atividade de verifcação de forma detalhada para depuração. |
Aponte o nmap para uma máquina remota e ele pode informar que as portas 25 / tcp, 80 / tcp e 53 / udp estão abertas. Usando seu banco de dados de serviços nmap de cerca de 2.200 serviços conhecidos, o nmap relataria que essas portas provavelmente correspondem a um servidor de correio ( SMTP ), servidor da web ( HTTP ) e servidor de nomes ( DNS ), respectivamente. Essa pesquisa geralmente é precisa – a grande maioria dos daemons que escutam na porta TCP 25 são, na verdade, servidores de e-mail. No entanto, você não deve apostar sua segurança nisso. As pessoas podem e executam serviços em portas estranhas.
Mesmo que o nmap esteja certo e o servidor hipotético acima esteja executando os servidores SMTP, HTTP e DNS, isso não é muita informação. Ao fazer avaliações de vulnerabilidade (ou até mesmo inventários de rede simples) de suas empresas ou clientes, você realmente deseja saber quais servidores de correio e DNS e versões estão em execução. Ter um número de versão preciso ajuda drasticamente a determinar a vulnerabilidade de um servidor. A detecção de versão ajuda a obter essas informações.
Depois que as portas TCP e / ou UDP são descobertas usando um dos outros métodos de varredura, a detecção de versão interroga essas portas para determinar mais sobre o que está realmente em execução. O banco de dados nmap-service-probes contém testes para consultar vários serviços e expressões de correspondência para reconhecer e analisar respostas. O nmap tenta determinar o protocolo de serviço (por exemplo, FTP, SSH, Telnet, HTTP), o nome do aplicativo (por exemplo, ISC BIND, Apache httpd, Solaris telnetd), o número da versão, nome do host, tipo de dispositivo (por exemplo, impressora , roteador ) , a família do sistema operacional (por exemplo, Windows, Linux). Quando possível, nmap também obtém a representação CPE (Common Platform Enumeration) dessas informações. Às vezes, detalhes diversos, como se um servidor X está aberto para conexões, a versão do protocolo SSH ou o nome de usuário KaZaA , estão disponíveis. Obviamente, a maioria dos serviços não fornece todas essas informações. Se o nmap foi compilado com suporte a OpenSSL, ele se conectará aos servidores SSL para deduzir o serviço escutando por trás dessa camada de criptografia. Algumas portas UDP são deixadas no estado aberto | filtrado depois que uma varredura de porta UDP é incapaz de determinar se a porta está aberta ou filtrada. A detecção de versão tentará obter uma resposta dessas portas (como acontece com as portas abertas) e alterará o estado para aberto se for bem-sucedido. portas TCP abertas | filtradas são tratadas da mesma maneira. Observe que a opção nmap -A ativa a detecção de versão, entre outras coisas. Um documento documentando o funcionamento, uso e personalização da detecção de versão está disponível em https://nmap.org/book/vscan.html .
Quando os serviços RPC são descobertos, o grinder RPC do nmap . é usado automaticamente para determinar o programa RPC e os números de versão. Ele pega todas as portas TCP / UDP detectadas como RPC e as inunda com comandos NULL do programa SunRPC na tentativa de determinar se são portas RPC e, em caso afirmativo, qual programa e número de versão servem. Portanto, você pode obter efetivamente as mesmas informações que rpcinfo -p, mesmo se o portmapper do destino estiver atrás de um firewall (ou protegido por TCP wrappers). Decoys atualmente não funcionam com varredura RPC.
Quando o nmap recebe respostas de um serviço, mas não consegue combiná-las com seu banco de dados, ele imprime uma impressão digital especial e uma URL para você enviar se souber com certeza o que está sendo executado na porta. Reserve alguns minutos para fazer o envio, para que sua descoberta possa beneficiar a todos. Graças a esses envios, o nmap tem cerca de 6.500 correspondências de padrões para mais de 650 protocolos como SMTP, FTP, HTTP, etc.
A detecção de versão é habilitada e controlada com as seguintes opções:
-sV |
Version detection. |
Ativa a detecção de versão, conforme discutido acima. Como alternativa, você pode usar -A , que ativa a detecção de versão, entre outras coisas.
-sR | an alias for -sV. |
Antes de março de 2011, ele era usado para ativar o moedor RPC separadamente da detecção de versão, mas agora essas opções estão sempre combinadas.
–allports |
Não exclui nenhuma porta da detecção de versão. |
Por padrão, a detecção de versão do nmap ignora a porta TCP 9100 porque algumas impressoras imprimem qualquer coisa enviada para essa porta, levando a dezenas de páginas de solicitações HTTP GET, solicitações de sessão SSL binárias , etc. Este comportamento pode ser alterado modificando ou removendo a diretiva Excluir em nmap-service-probes, ou você pode especificar –allports para escanear todas as portas independentemente de qualquer diretiva Exclude .
–version-intensity intensity |
Escolhendo a intensidade do scan, usando níveis de zero a nove. |
Ao realizar uma varredura de versão ( -sV ), o nmap envia uma série de sondas que são atribuídas a um valor de raridade entre um e nove. As sondas de números mais baixos são eficazes contra uma ampla variedade de serviços comuns, enquanto as de números mais altos raramente são úteis. O nível de intensidade especifica quais sondas devem ser aplicadas. Quanto maior o número, maior a probabilidade de o serviço ser identificado corretamente. No entanto, as varreduras de alta intensidade demoram mais. A intensidade deve estar entre 0 e 9. O padrão é 7. Quando um teste é registrado na porta de destino por meio da diretiva nmap-service-probes ports, esse teste é tentado independentemente do nível de intensidade. Isso garante que as sondagens DNS sempre serão feitas em qualquer porta aberta 53, a sondagem SSL será feita em 443, etc.
–version-light |
Enable light mode. |
Este é um apelido de conveniência para –version-intensity 2. Este modo leve torna a varredura de versão muito mais rápida, mas é um pouco menos provável de identificar serviços.
–version-all |
Try every single probe. |
Um alias para –version-intensity 9, garantindo que cada teste seja tentado em cada porta.
–version-trace |
Trace version scan activity. |
Isto faz com que o nmap imprima extensas informações de depuração sobre o que a varredura de versão está fazendo. É um subconjunto do que você obtém com –packet-trace .
Opções: verificação de script
-sC | Equivalent to –script=default. |
–script=<Lua scripts> | <Lua scripts> é uma lista separada por vírgulas de diretórios, arquivos de script ou categorias de script. |
–script-args=<n1=v1,[n2=v2,…]> | Fornece argumentos para scrpits. |
–script-args-file=filename | Fornece argumentos de script NSE em um arquivo. |
–script-trace | Mostra todos os dados enviados e recebidos. |
–script-updatedb | Atualize o banco de dados do script. |
–script-help=<Lua scripts> | Mostre ajuda sobre scripts. <Lua scripts> é uma lista separada por vírgulas de arquivos de script ou categorias de scrip. |
O Nmap Scripting Engine ( NSE ) é um dos recursos mais poderosos e flexíveis do nmap . Ele permite que os usuários escrevam (e compartilhem) scripts simples usando a linguagem de programação Lua.
Tasks we had in mind when creating the system include network discovery, more sophisticated version detection, and vulnerability detection. NSE can even be used for vulnerability exploitation.
Para refletir esses diferentes usos e simplificar a escolha de quais scripts executar, cada script contém um campo que o associa a uma ou mais categorias. As categorias definidas atualmente são auth , broadcast , default , discovery , dos , exploit , external , fuzzer , intrusive , malware , safe , version e vuln . Tudo isso está descrito em https://nmap.org/book/nse-usage.html#nse-categories .
Os scripts não são executados em uma sandbox e, portanto, podem danificar acidentalmente ou de forma mal-intencionada seu sistema ou invadir sua privacidade. Nunca execute scripts de terceiros, a menos que você confie nos autores ou tenha feito uma auditoria cuidadosa dos scripts por conta própria.
O mecanismo de script nmap é descrito em detalhes em https://nmap.org/book/nse.html e é controlado pelas seguintes opções:
-sC |
Scan with default scripts. |
Executa uma varredura de script usando o conjunto padrão de scripts. É equivalente a –script = default . Alguns dos scripts nesta categoria são considerados intrusivos e não devem ser executados em uma rede de destino sem permissão.
–script filename|category|directory|expression[,…] |
Scan with … |
Executa uma varredura de script usando a lista separada por vírgulas de nomes de arquivo, categorias de script e diretórios. Cada elemento da lista também pode ser uma expressão booleana que descreve um conjunto mais complexo de scripts. Cada elemento é interpretado primeiro como uma expressão, depois como uma categoria e, finalmente, como um nome de arquivo ou diretório.
Existem dois recursos especiais apenas para usuários avançados. Uma é prefixar nomes e expressões de script com + para forçá-los a executar, mesmo que normalmente não funcionassem (por exemplo, o serviço relevante não foi detectado na porta de destino). A outra é que o argumento all pode ser usado para especificar todos os scripts no banco de dados do nmap . Seja cauteloso com isso, pois o NSE contém scripts perigosos, como explorações , crackers de autenticação de força bruta e ataques de negação de serviço .
Os nomes de arquivos e diretórios podem ser relativos ou absolutos. Nomes absolutos são usados diretamente. Caminhos relativos são procurados nos scripts de cada um dos seguintes locais até serem encontrados:
- –datadir
- $ NMAPDIR .
- ~ / .nmap (não pesquisado no Windows).
- HOME \ AppData \ Roaming \ nmap (apenas no Windows).
- o diretório que contém o executável nmap
- o diretório que contém o executável nmap , seguido por ../share/nmap
- NMAPDATADIR .
- o diretório atual.
Quando um nome de diretório é fornecido, o nmap carrega todos os arquivos no diretório cujo nome termina com .nse. Todos os outros arquivos são ignorados e os diretórios não são pesquisados recursivamente. Quando um nome de arquivo é fornecido, ele não precisa ter a extensão .nse; será adicionado automaticamente, se necessário. Os scripts nmap são armazenados em um subdiretório de scripts do diretório de dados nmap por padrão (consulte https://nmap.org/book/data-files.html ).
Por questões de eficiência, os scripts são indexados em um banco de dados armazenado em scripts / script.db , que lista a categoria ou categorias às quais cada script pertence. Ao se referir aos scripts do script.db pelo nome, você pode usar um curinga ‘ * ‘ no estilo de shell . Por exemplo:
nmap --script "http- *"
Carrega todos os scripts cujo nome começa com http- , como http-auth e http-open-proxy . O argumento para –script tinha que estar entre aspas para proteger o curinga do shell.
Uma seleção de script mais complicada pode ser feita usando os operadores AND , OR e NOT para criar expressões booleanas . Os operadores têm a mesma precedência que em Lua: NOT é o mais alto, seguido por AND e depois OR . Você pode alterar a precedência usando parênteses. Como as expressões contêm caracteres de espaço, é necessário citá-las.
nmap --script "não intrusivo"
Carrega todos os scripts, exceto os da categoria intrusiva .
nmap --script "padrão ou seguro"
Isto é funcionalmente equivalente ao nmap –script “padrão, seguro” . Ele carrega todos os scripts que estão na categoria padrão ou na categoria segura ou em ambos.
nmap --script "padrão e seguro"
Carrega os scripts que estão nas categorias padrão e segura .
nmap --script "(padrão ou seguro ou intrusivo) e não http- *"
Carrega scripts nas categorias padrão , seguras ou intrusivas , exceto aquelas cujos nomes começam com http- .
–script-args n1 = v1 , n2 = { n3 = v3 } , n4 = { v4 , v5 } |
Execução de script NSE com argumentos. |
Permite fornecer argumentos para scripts do NSE. Os argumentos são uma lista separada por vírgulas de pares nome = valor . Nomes e valores podem ser cadeias que não contenham espaços em branco ou os caracteres ‘ { ‘, ‘ } ‘, ‘ = ‘ ou ‘ , ‘. Para incluir um desses caracteres em uma sequência, coloque-a entre aspas simples ou duplas. Dentro de uma string entre aspas, ‘ \ ‘ escapa uma citação. Uma barra invertida é usada apenas para escapar aspas neste caso especial; em todos os outros casos, uma barra invertida é interpretada literalmente. Os valores também podem ser tabelas entre {}, como em Lua. Uma tabela pode conter valores simples de sequência ou mais pares nome-valor, incluindo tabelas aninhadas. Muitos scripts qualificam seus argumentos com o nome do script, como em xmpp-info.server_name . Você pode usar essa versão completa qualificada para afetar o script especificado ou passar a versão não qualificada ( server_name nesse caso) para afetar todos os scripts usando esse nome de argumento. Um script primeiro verificará seu nome de argumento totalmente qualificado (o nome especificado em sua documentação) antes de aceitar um nome de argumento não qualificado. Um exemplo complexo de argumentos de script é –script-args ‘user = foo, pass = “, {} = bar”, whois = {whodb = nofollow + mature}, xmpp-info.server_name = localhost’. O portal de documentação do NSE on-line em https://nmap.org/nsedoc/ lista os argumentos que cada script aceita.
–script-args-file nome do arquivo |
Execute o script NSE com argumentos do arquivo filename. |
Permite carregar argumentos nos scripts do NSE a partir de um arquivo. Quaisquer argumentos na linha de comando substituem os do arquivo. O arquivo pode ser um caminho absoluto ou relativo ao caminho de pesquisa usual do nmap ( NMAPDIR etc.). Os argumentos podem ser separados por vírgula ou por nova linha, mas, caso contrário, siga as mesmas regras de –script-args , sem exigir aspas e escapes especiais, pois não são analisados pelo shell.
–script-help filename | categoria | diretório | expressão | all [, …] |
Ajuda de script. |
Mostra ajuda sobre scripts. Para cada script que corresponde à especificação especificada, o nmap imprime o nome do script, suas categorias e sua descrição. As especificações são as mesmas que as aceitas por –script; por exemplo, se você quiser ajuda sobre o script ftp-anon, execute o nmap –script-help ftp-anon. Além de obter ajuda para scripts individuais, você pode usá-lo como uma visualização de quais scripts serão executados para uma especificação, por exemplo, com o padrão nmap –script-help.
–script-trace |
Trace packets and data sent and received. |
Esta opção faz o que –packet-trace faz, apenas uma camada ISO mais alta. Se esta opção for especificada, toda a comunicação de entrada e saída executada por um script será impressa. As informações exibidas incluem o protocolo de comunicação, a fonte, o destino e os dados transmitidos. Se mais de 5% de todos os dados transmitidos não puderem ser impressos, a saída de rastreamento estará em um formato de dump hexadecimal. A especificação de –packet-trace também permite o rastreamento de scripts.
–script-updatedb |
Update the Script database. |
Esta opção atualiza o banco de dados de scripts encontrado em scripts / script.db, usado pelo nmap para determinar os scripts e categorias padrão disponíveis. Só é necessário atualizar o banco de dados se você adicionou ou removeu scripts NSE do diretório de scripts padrão ou se alterou as categorias de qualquer script. Essa opção geralmente é usada por si só: nmap –script-updatedb.
Opções: detecção de SO
-O | Ative a detecção do SO. |
–osscan-limit | Limite a detecção do SO a destinos promissores. |
–osscan-guess | Adivinha o SO de forma mais agressiva. |
Um dos recursos mais conhecidos do nmap é a detecção remota do sistema operacional usando impressões digitais da pilha TCP / IP. O nmap envia uma série de pacotes TCP e UDP ao host remoto e examina praticamente todos os bits nas respostas. Após executar dezenas de testes, como amostragem TCP ISN, suporte e pedido de opções TCP, amostragem de ID de IP e verificação inicial do tamanho da janela, o nmap compara os resultados ao seu banco de dados nmap-os-db de mais de 2.600 impressões digitais conhecidas do SO e imprime os detalhes do sistema operacional se houver uma correspondência. Cada impressão digital inclui uma descrição textual de forma livre do sistema operacional e uma classificação que fornece o nome do fornecedor (por exemplo, Sun), sistema operacional subjacente (por exemplo, Solaris), geração de sistema operacional (por exemplo, 10) e tipo de dispositivo (uso geral, roteador, switch , console de jogos etc.). A maioria das impressões digitais também possui um CPE (Common Platform Enumeration). representação, como cpe: / o: linux: kernel: 2.6 .
Se o nmap não conseguir adivinhar o sistema operacional de uma máquina e as condições forem boas (por exemplo, foram encontradas pelo menos uma porta aberta e uma porta fechada), o nmap fornecerá um URL que você pode usar para enviar a impressão digital, se você souber (com certeza ) o SO em execução na máquina. Ao fazer isso, você contribui para o conjunto de sistemas operacionais conhecidos pelo nmap e, portanto, será mais preciso para todos.
A detecção do SO permite alguns outros testes que usam as informações coletadas durante o processo de qualquer maneira. Uma delas é a classificação de previsibilidade de sequências TCP. Isso mede aproximadamente o quão difícil é estabelecer uma conexão TCP forjada no host remoto. É útil para explorar relações de confiança baseadas no IP de origem ( rlogin , filtros de firewall etc.) ou para ocultar a origem de um ataque. Esse tipo de falsificação raramente é mais realizado, mas muitas máquinas ainda estão vulneráveis a ele. O número de dificuldade real é baseado em amostragem estatística e pode variar. Geralmente é melhor usar a classificação em inglês como “desafio digno” ou “piada trivial”. Isso é relatado apenas na saída normal em verbose ( -v). Quando o modo detalhado é ativado junto com -O , a geração da sequência de ID de IP também é relatada. A maioria das máquinas está na classe “incremental”, o que significa que elas incrementam o campo ID no cabeçalho IP para cada pacote enviado. Isso os torna vulneráveis a vários ataques avançados de coleta e falsificação de informações.
Outra informação extra ativada pela detecção do SO é um palpite sobre o tempo de atividade de um alvo. Isso usa a opção de carimbo de data / hora TCP (RFC 1323 [10]) para adivinhar quando uma máquina foi reinicializada pela última vez . A suposição pode ser imprecisa devido ao contador de carimbo de data / hora não ser inicializado em zero ou ao contador transbordar e contornar, portanto, ele é impresso apenas no modo detalhado.
Um documento que documenta o funcionamento, uso e personalização da detecção do SO está disponível em https://nmap.org/book/osdetect.html .
A detecção do SO é ativada e controlada com as seguintes opções:
-O |
Ative a detecção do SO. |
Ativa a detecção do SO, conforme discutido acima. Como alternativa, você pode usar -A para ativar a detecção do SO junto com outras coisas.
–osscan-limit |
Limite a detecção do SO a destinos promissores. |
A detecção do sistema operacional é muito mais eficaz se forem encontradas pelo menos uma porta TCP aberta e uma fechada. Defina essa opção e o nmap nem tentará a detecção do SO em hosts que não atendem a esse critério. Isso pode economizar tempo substancial, principalmente nas varreduras -Pn contra muitos hosts. Só importa quando a detecção do SO é solicitada com -O ou -A .
–osscan-guess, –fuzzy |
Adivinha resultados de detecção do SO. |
Quando o nmap é incapaz de detectar uma correspondência perfeita do sistema operacional, às vezes oferece quase correspondências como possibilidades. A correspondência deve estar muito próxima para o nmap fazer isso por padrão. Qualquer uma dessas opções (equivalentes) faz com que o nmap adivinhe mais agressivamente. O nmap ainda informa quando uma correspondência imperfeita é impressa e exibe seu nível de confiança (porcentagem) para cada palpite.
–max-os-tries |
Defina o número máximo de tentativas de detecção do SO contra um destino. |
Quando o nmap realiza a detecção do SO em relação a um destino e falha em encontrar uma combinação perfeita, geralmente repete a tentativa. Por padrão, o nmap tenta cinco vezes se as condições são favoráveis para o envio de impressões digitais do SO e duas vezes quando as condições não são tão boas. A especificação de um valor mais baixo –max-os-try (como 1 ) acelera o nmap , embora você perca novas tentativas que poderiam potencialmente identificar o sistema operacional. Como alternativa, um valor alto pode ser definido para permitir ainda mais tentativas quando as condições forem favoráveis. Isso raramente é feito, exceto para gerar melhores impressões digitais para envio e integração ao banco de dados do nmap OS.
Opções: tempo e desempenho
As opções que levam <time> são por padrão em segundos; para outras unidades, acrescente ‘ms’ (milissegundos), ‘s’ (segundos), ‘m’ (minutos) ou ‘h’ (horas) ao valor (por exemplo, 30m).
-T<0-5> | Defina o modelo de tempo (mais alto é mais rápido). |
–min-hostgroup/max-hostgroup <size> | Tamanhos de grupos de varredura de host paralelo. |
–min-parallelism/max-parallelism <numprobes> | Paralelização de teste. |
–min-rtt-timeout/max-rtt-timeout/ initial-rtt-timeout <time> |
Especifica o tempo de ida e volta da sonda. |
–max-retries <tries> | Número máximo de retransmissões de sondagem de varredura de porta. |
–host-timeout <time> | Desista do alvo depois de X tempo passar. |
–scan-delay/–max-scan-delay <time> | Ajuste o atraso entre as sondas. |
–min-rate <number> | Envie pacotes com velocidade inferior a <número> por segundo. |
–max-rate <number> | Envie pacotes não mais rápido do que <número> por segundo. |
Uma das maiores prioridades de desenvolvimento do nmap sempre foi o desempenho. Uma verificação padrão (nome do host nmap) de um host na minha rede local leva um quinto de segundo. Isso quase não dá tempo de piscar, mas aumenta quando você está digitalizando centenas ou milhares de hosts. Além disso, certas opções de verificação, como verificação UDP e detecção de versão, podem aumentar substancialmente o tempo de verificação. O mesmo acontece com certas configurações de firewall, principalmente com a limitação da taxa de resposta. Enquanto o nmap utiliza paralelismo e muitos algoritmos avançados para acelerar essas verificações, o usuário tem o controle final sobre como o nmap é executado. Usuários especialistas elaboram cuidadosamente os comandos do nmap para obter apenas as informações importantes, atendendo às restrições de tempo.
As técnicas para melhorar os tempos de varredura incluem a omissão de testes não críticos e a atualização para a versão mais recente do nmap (aprimoramentos de desempenho são feitos com freqüência). A otimização dos parâmetros de tempo também pode fazer uma diferença substancial. Essas opções estão listadas abaixo.
Algumas opções aceitam um parâmetro de tempo. Isso é especificado em segundos por padrão, embora você possa anexar ‘ms’, ‘s’, ‘m’ ou ‘h’ ao valor para especificar milissegundos, segundos, minutos ou horas. Portanto, os argumentos –host-timeout 900000ms, 900, 900s e 15m fazem a mesma coisa.
–min-hostgroup numhosts, –max-hostgroup numhosts |
Adjust parallel scan group sizes. |
O nmap pode port scan ou version scan vários hosts em paralelo. O nmap faz isso dividindo o espaço IP de destino em grupos e examinando um grupo de cada vez. Em geral, grupos maiores são mais eficientes. A desvantagem é que os resultados do host não podem ser fornecidos até que todo o grupo esteja concluído. Portanto, se o nmap iniciar com um tamanho de grupo 50, o usuário não receberá nenhum relatório (exceto as atualizações oferecidas no modo detalhado) até que os 50 primeiros hosts sejam concluídos.
Por padrão, o nmap adota uma abordagem de compromisso para esse conflito. Ele começa com um tamanho de grupo tão baixo quanto cinco, para que os primeiros resultados cheguem rapidamente e aumente o tamanho do grupo para 1024. Os números padrão exatos dependem das opções fornecidas. Por motivos de eficiência, o nmap usa tamanhos de grupo maiores para varreduras UDP ou TCP de poucas portas.
Quando um tamanho máximo de grupo é especificado com –max-hostgroup, o nmap nunca excede esse tamanho. Especifique um tamanho mínimo com –min-hostgroup e o nmap tentará manter o tamanho do grupo acima desse nível. O nmap pode precisar usar grupos menores do que o especificado, se não houver hosts de destino suficientes em uma determinada interface para atender ao mínimo especificado. Ambos podem ser configurados para manter o tamanho do grupo dentro de um intervalo específico, embora isso raramente seja desejado.
Essas opções não têm efeito durante a fase de descoberta do host de uma varredura. Isso inclui varreduras simples de ping (-sn). A descoberta de host sempre funciona em grandes grupos de hosts para melhorar a velocidade e a precisão.
O uso principal dessas opções é especificar um tamanho mínimo de grupo grande para que a verificação completa seja executada mais rapidamente. Uma escolha comum é 256 para varrer uma rede em pedaços do tamanho da Classe C. Para uma varredura com muitas portas, exceder esse número provavelmente não ajudará muito. Para verificações de apenas alguns números de porta, tamanhos de grupos de hosts de 2048 ou mais podem ser úteis.
–min-parallelism numprobes, –max-parallelism numprobes |
Adjust probe parallelization. |
Essas opções controlam o número total de análises que podem estar pendentes para um grupo de hosts. Eles são usados para varredura de porta e descoberta de host. Por padrão, o nmap calcula um paralelismo ideal em constante mudança com base no desempenho da rede. Se pacotes estão sendo descartados, o nmap fica mais lento e permite menos probes pendentes. O número ideal da sonda aumenta lentamente à medida que a rede se mostra digna. Essas opções colocam limites mínimos ou máximos nessa variável. Por padrão, o paralelismo ideal pode cair para um se a rede não for confiável e subir para várias centenas em perfeitas condições.
O uso mais comum é definir –min-parallelism como um número maior que um para acelerar as verificações de hosts ou redes com desempenho ruim. É uma opção arriscada para brincar, pois a configuração muito alta pode afetar a precisão. Definir isso também reduz a capacidade do nmap de controlar o paralelismo dinamicamente com base nas condições da rede. Um valor de 10 pode ser razoável, embora a maioria dos usuários apenas ajuste esse valor como último recurso.
Às vezes, a opção –max-parallelism é definida como one para impedir que o nmap envie mais de um probe por vez para os hosts. A opção –scan-delay, discutida mais adiante, é outra maneira de fazer isso.
–min-rtt-timeout time, –max-rtt-timeout time, –initial-rtt-timeout time |
Adjust probe timeouts. |
O nmap mantém um valor de tempo limite de execução para determinar quanto tempo aguardará uma resposta do probe antes de desistir ou retransmitir o probe. Isso é calculado com base nos tempos de resposta das análises anteriores.
Se a latência da rede mostrar-se significativa e variável, esse tempo limite poderá aumentar para vários segundos. Ele também inicia em um nível conservador (alto) e pode permanecer assim por um tempo quando o nmap verifica hosts que não respondem.
A especificação de um –max-rtt-timeout mais baixo e –initial-rtt-timeout que os padrões pode reduzir significativamente o tempo de varredura. Isso é particularmente verdadeiro para verificações sem ping (-Pn) e contra redes fortemente filtradas. Não fique muito agressivo. A varredura pode levar mais tempo se você especificar um valor tão baixo que muitos probes estão atingindo o tempo limite e retransmitindo enquanto a resposta está em trânsito.
Se todos os hosts estiverem em uma rede local, 100 milissegundos (–max-rtt-timeout 100ms) são um valor agressivo razoável. Se o roteamento estiver envolvido, faça ping em um host na rede primeiro com o utilitário ping ICMP ou com um fabricante de pacotes personalizado, como o nping, com maior probabilidade de passar por um firewall. Observe o tempo máximo de ida e volta de dez pacotes ou mais. Você pode dobrar isso para o –initial-rtt-timeout e triplicar ou quadruplicar para o –max-rtt-timeout. Geralmente, é melhor não definir o RTT máximo abaixo de 100 ms, independentemente dos tempos de ping, nem exceder 1000 ms.
–min-rtt-timeout é uma opção raramente usada que pode ser útil quando uma rede é tão pouco confiável que até o padrão do nmap é muito agressivo. Como o nmap reduz o tempo limite apenas ao mínimo quando a rede parece confiável, essa necessidade é incomum e deve ser relatada como um bug na lista de discussão nmap-dev.
–max-retries numtries |
Specify the maximum number of port scan probe retransmissions. |
Quando o nmap não recebe resposta a um probe de varredura de porta, isso pode significar que a porta é filtrada. Ou talvez a sonda ou resposta tenha sido perdida na rede. Também é possível que o host de destino tenha a limitação de taxa ativada que bloqueou temporariamente a resposta. Portanto, o nmap tenta novamente retransmitindo o probe inicial. Se o nmap detectar baixa confiabilidade da rede, poderá tentar muitas mais vezes antes de desistir de uma porta. Embora isso beneficie a precisão, também aumenta o tempo de verificação. Quando o desempenho é crítico, as verificações podem ser aceleradas limitando o número de retransmissões permitidas. Você pode até especificar –max-retries 0 para evitar retransmissões, embora isso seja recomendado apenas para situações como pesquisas informais em que portas e hosts perdidos ocasionais são aceitáveis.
O padrão (sem modelo -T) é permitir dez retransmissões. Se uma rede parece confiável e os hosts de destino não têm limite de taxa, o nmap geralmente faz apenas uma retransmissão. Portanto, a maioria das varreduras de destino nem é afetada pela queda de –max-tentativas para um valor baixo, como três. Esses valores podem acelerar substancialmente as verificações de hosts lentos (taxa limitada). Você geralmente perde algumas informações quando o nmap desiste das portas cedo, embora isso possa ser preferível a deixar o tempo limite –host expirar e perder todas as informações sobre o destino.
–host-timeout time |
Give up on slow target hosts. |
Alguns hosts demoram muito tempo para digitalizar. Isso pode ser devido a hardware ou software de rede com desempenho insatisfatório ou pouco confiável, limitação da taxa de pacotes ou firewall restritivo. A porcentagem mais lenta dos hosts verificados pode consumir a maior parte do tempo da verificação. Às vezes, é melhor reduzir suas perdas e pular esses hosts inicialmente. Especifique –host-timeout com a quantidade máxima de tempo que você deseja esperar. Por exemplo, especifique 30m para garantir que o nmap não perca mais de meia hora em um único host. Observe que o nmap pode verificar outros hosts ao mesmo tempo durante essa meia hora, portanto, não é uma perda completa. Um host que atinge o tempo limite é ignorado. Nenhuma tabela de porta, detecção de SO ou resultados de detecção de versão são impressos para esse host.
–scan-delay time, –max-scan-delay time |
Adjust delay between probes. |
Essa opção faz com que o nmap aguarde pelo menos a quantidade de tempo especificada entre cada probe enviado para um determinado host. Isso é particularmente útil no caso de limitação de taxa. As máquinas Solaris (entre outras) geralmente respondem aos pacotes de análise UDP com apenas uma mensagem ICMP por segundo. Qualquer valor além do enviado pelo nmap será um desperdício. Um –scan-delay de 1s manterá o nmap nessa taxa lenta. O nmap tenta detectar a limitação da taxa e ajustar o atraso da verificação de acordo, mas não é necessário especificá-lo explicitamente se você já sabe qual a taxa que funciona melhor.
Quando o nmap ajusta o atraso da varredura para cima para lidar com o limite de taxa, a varredura diminui drasticamente. A opção –max-scan-delay especifica o maior atraso que o nmap permitirá. Um baixo –max-scan-delay pode acelerar o nmap, mas é arriscado. Definir esse valor muito baixo pode levar a retransmissões de pacotes desnecessárias e possíveis portas perdidas quando o destino implementa uma limitação estrita de taxa.
Outro uso do –scan-delay é evitar sistemas de detecção e prevenção de intrusões baseados em limites (IDS / IPS).
–min-rate number, –max-rate number |
Directly control the scanning rate. |
O tempo dinâmico do nmap faz um bom trabalho em encontrar uma velocidade apropriada para a digitalização. Às vezes, no entanto, você pode conhecer uma taxa de varredura apropriada para uma rede ou pode ter que garantir que uma varredura será concluída em um determinado período de tempo. Ou talvez você deva impedir o nmap de digitalizar muito rapidamente. As opções –min-rate e –max-rate são projetadas para essas situações.
Quando a opção –min-rate é fornecida, o nmap fará o possível para enviar pacotes tão rápido quanto ou mais rapidamente que a taxa especificada. O argumento é um número real positivo que representa uma taxa de pacotes em pacotes por segundo. Por exemplo, especificar –min-rate 300 significa que o nmap tentará manter a taxa de envio igual ou superior a 300 pacotes por segundo. A especificação de uma taxa mínima não impede o nmap de ir mais rápido se as condições o justificarem.
Da mesma forma, –max-rate limita a taxa de envio de uma verificação a um determinado máximo. Use –max-rate 100, por exemplo, para limitar o envio a 100 pacotes por segundo em uma rede rápida. Use –max-rate 0.1 para uma varredura lenta de um pacote a cada dez segundos. Use –min-rate e –max-rate juntos para manter a taxa dentro de um determinado intervalo.
Essas duas opções são globais, afetando uma varredura inteira, e não hosts individuais. Eles afetam apenas as varreduras de porta e as de descoberta de host. Outros recursos, como a detecção do SO, implementam seu próprio tempo.
Existem duas condições em que a taxa real de digitalização pode ficar abaixo do mínimo solicitado. A primeira é se o mínimo é mais rápido que a taxa mais rápida na qual o nmap pode enviar, que depende do hardware. Nesse caso, o nmap enviará pacotes o mais rápido possível, mas lembre-se de que taxas tão altas provavelmente causarão uma perda de precisão. O segundo caso é quando o nmap não tem nada a enviar, por exemplo, no final de uma varredura, quando as últimas análises foram enviadas e o nmap aguarda o tempo limite ou a resposta das mesmas. É normal ver a taxa de varredura cair no final de uma varredura ou entre grupos de hosts. A taxa de envio pode exceder temporariamente o máximo para compensar atrasos imprevisíveis, mas, em média, a taxa permanecerá igual ou inferior ao máximo. A especificação de uma taxa mínima deve ser feita com cuidado. A digitalização mais rápida do que uma rede pode suportar pode levar a uma perda de precisão. Em alguns casos, o uso de uma taxa mais rápida pode fazer com que a digitalização demore mais do que com uma taxa mais lenta. Isso ocorre porque os algoritmos de retransmissão adaptativos do nmap detectam o congestionamento da rede causado por uma taxa excessiva de varredura e aumentam o número de retransmissões para melhorar a precisão. Portanto, embora os pacotes sejam enviados a uma taxa mais alta, mais pacotes são enviados no geral. Limite o número de retransmissões com a opção –max-retries se precisar definir um limite superior no tempo total de varredura.
–defeat-rst-ratelimit |
Ignore RST rate limiting. |
Muitos hosts usam há muito tempo a limitação de taxa. Para reduzir o número de mensagens de erro ICMP (como erros inacessíveis à porta) que eles enviam. Alguns sistemas agora aplicam limites de taxa semelhantes aos pacotes RST (redefinidos) que eles geram. Isso pode reduzir drasticamente o nmap, pois ajusta seu tempo para refletir esses limites de taxa. Você pode dizer ao nmap para ignorar esses limites de taxa (para varreduras de porta como a varredura SYN que não tratam portas não responsivas como abertas) especificando –defeat-rst-ratelimit.
O uso desta opção pode reduzir a precisão, pois algumas portas parecerão não responsivas porque o nmap não esperou o tempo suficiente para uma resposta RST com taxa limitada. Com uma varredura SYN, a não resposta resulta na rotulação da porta, em vez do estado fechado que vemos quando os pacotes RST são recebidos. Essa opção é útil quando você se preocupa apenas com portas abertas e a distinção entre portas fechadas e filtradas não vale o tempo extra.
–nsock-engine epoll|select |
Use nsock multiplexing. |
Enforce use of a given nsock IO multiplexing engine. Only the select-based fallback engine is guaranteed to be available on your system. Engines are named after the name of the IO management facility they leverage. Engines currently implemented are epoll and select.
-T paranoid|sneaky|polite|normal|aggressive|insane |
Set a timing template. |
Embora os controles de tempo detalhados discutidos na seção anterior sejam poderosos e eficazes, algumas pessoas os acham confusos. Além disso, a escolha dos valores apropriados às vezes pode levar mais tempo do que a verificação que você está tentando otimizar. Portanto, o nmap oferece uma abordagem mais simples, com seis modelos de tempo. Você pode especificá-los com a opção -T e seu número ( 0 – 5 ) ou seu nome. Os nomes dos modelos são paranóicos ( 0 ), sorrateiros ( 1 ), educados ( 2 ), normais ( 3 ), agressivos ( 4 ) einsano ( 5 ). Os dois primeiros são para evasão do IDS. O modo discreto reduz a velocidade da varredura para usar menos largura de banda e recursos da máquina de destino. O modo normal é o padrão e, portanto, -T3 não faz nada. O modo agressivo acelera a digitalização assumindo que você está em uma rede razoavelmente rápida e confiável. Finalmente, o modo insano pressupõe que você esteja em uma rede extraordinariamente rápida ou que esteja disposto a sacrificar alguma precisão pela velocidade.
Esses modelos permitem que o usuário especifique quão agressivo deseja ser, deixando o nmap para escolher os valores exatos de tempo. Os modelos também fazem alguns pequenos ajustes de velocidade para os quais atualmente não existem opções de controle refinadas. Por exemplo, -T4 . proíbe que o atraso da varredura dinâmica exceda 10 ms para portas TCP e -T5 caps com valor de 5 ms. Os modelos podem ser usados em combinação com controles de baixa granularidade e os controles de baixa granularidade que você especificar têm precedência sobre o padrão de modelo de tempo para esse parâmetro. É recomendável usar -T4ao digitalizar redes razoavelmente modernas e confiáveis. Mantenha essa opção mesmo quando adicionar controles refinados, para que você se beneficie dessas otimizações menores adicionais que ele permite.
Se você estiver em uma conexão de banda larga ou Ethernet decente, use -T4 . Algumas pessoas adoram o -T5, embora seja muito agressivo para o gosto de muitos usuários. Às vezes, as pessoas especificam -T2 porque pensam que é menos provável travar hosts ou porque se consideram educadas em geral. Eles geralmente não percebem o quão lento -T educado é realmente. A verificação pode demorar dez vezes mais que a verificação padrão. As falhas de máquina e os problemas de largura de banda são raros nas opções de tempo padrão ( -T3 ) e, portanto, são normalmente recomendados para scanners cautelosos. Omitir a detecção de versão é muito mais eficaz do que jogar com valores de tempo na redução desses problemas.
Enquanto -T0 e -T1 pode ser útil para evitar IDS alertas, eles levam um tempo extraordinariamente longo para examinar milhares de máquinas ou portas. Por um longo varredura tal, você pode preferir para definir os valores de tempo exatas que você precisa, em vez de confiar na enlatados -T0 e -T1 valores.
Os principais efeitos de T0 são serializar a verificação, para que apenas uma porta seja verificada por vez e aguardar cinco minutos entre o envio de cada análise. T1 e T2 são semelhantes, mas esperam apenas 15 segundos e 0,4 segundos, respectivamente, entre as sondas. T3 é o comportamento padrão do nmap , que inclui paralelização. -T4 faz o equivalente a –max-rtt-timeout 1250ms –initial-rtt-timeout 500ms –max-retries 6 e define o atraso máximo da varredura TCP para 10 milissegundos. T5 faz o equivalente a –max-rtt-timeout 300ms –min-rtt-timeout 50ms –initial-rtt-timeout 250ms –max-retries 2 –host-timeout 15m bem como definir o atraso máximo da verificação TCP para 5 ms.
Opções: evasão e falsificação de firewall / IDS
-f, –mtu <val> | pacotes de fragmentos (opcionalmente com MTU fornecido). |
-D <chamariz1, chamariz2 [, ME], …> | Capa uma varredura com chamarizes. |
-S <Endereço_IP> | Endereço de origem falso. |
-e <iface> | Use interface especificada. |
-g / –source-port <portnum> | Use o número da porta fornecido. |
–data-length <num> | Anexe dados aleatórios aos pacotes enviados. |
–ip-options <opções> | Envie pacotes com opções de ip especificadas. |
–ttl <val> | Defina o tempo de vida útil do campo IP. |
–spoof-mac <endereço mac / prefixo / nome do fornecedor> |
Falsifique seu endereço MAC. |
–badsum | Envie pacotes com uma soma de verificação TCP / UDP / SCTP falsa. |
Muitos pioneiros da Internet imaginaram uma rede aberta global com um espaço de endereço IP universal, permitindo conexões virtuais entre dois nós. Isso permite que os hosts atuem como verdadeiros pares, servindo e recuperando informações um do outro. As pessoas podiam acessar todos os sistemas domésticos do trabalho, alterando as configurações de controle climático ou destrancando as portas para os primeiros hóspedes. Essa visão de conectividade universal foi sufocada pela falta de espaço de endereço e por preocupações de segurança. No início dos anos 90, as organizações começaram a implantar firewalls com o objetivo expresso de reduzir a conectividade. Redes enormes foram isoladas da Internet não filtrada por proxies de aplicativos, tradução de endereços de rede e filtros de pacotes. O fluxo irrestrito de informações deu lugar a uma regulamentação rígida dos canais de comunicação aprovados e ao conteúdo que os passa.
Obstruções de rede, como firewalls, podem tornar o mapeamento de uma rede extremamente difícil. Não será nada mais fácil, pois o reconhecimento casual sufocante costuma ser um objetivo fundamental da implementação dos dispositivos. No entanto, o nmap oferece muitos recursos para ajudar a entender essas redes complexas e verificar se os filtros estão funcionando conforme o esperado. Ele ainda suporta mecanismos para contornar defesas mal implementadas. Um dos melhores métodos para entender sua postura de segurança de rede é tentar derrotá-la. Coloque-se na mentalidade de um invasor e implante técnicas desta seção nas suas redes. Inicie uma varredura de rejeição de FTP, varredura inativa, ataque de fragmentação ou tente fazer um túnel através de um de seus próprios proxies.
Além de restringir a atividade da rede, as empresas estão monitorando cada vez mais o tráfego com sistemas de detecção de intrusão (IDS). Todos os principais IDS são fornecidos com regras projetadas para detectar verificações do nmap, porque as verificações às vezes são precursoras de ataques. Muitos desses produtos se transformaram recentemente em sistemas de prevenção de intrusões (IPS) que bloqueiam ativamente o tráfego considerado malicioso. Infelizmente, para administradores de rede e fornecedores de IDS, a detecção confiável de más intenções através da análise de dados de pacotes é um problema difícil. Os invasores com paciência, habilidade e a ajuda de certas opções do nmap geralmente podem passar pelo IDS sem serem detectados. Enquanto isso, os administradores devem lidar com um grande número de resultados falsos positivos, onde atividades inocentes são diagnosticadas e alertadas ou bloqueadas.
Ocasionalmente, as pessoas sugerem que o nmap não deve oferecer recursos para evitar regras de firewall ou ocultar o IDS. Eles argumentam que esses recursos são tão suscetíveis de serem mal utilizados pelos invasores quanto usados pelos administradores para aumentar a segurança. O problema com essa lógica é que esses métodos ainda seriam usados pelos atacantes, que encontrariam outras ferramentas ou aplicariam a funcionalidade no nmap. Enquanto isso, os administradores acham muito mais difícil fazer seu trabalho. A implantação de apenas servidores FTP modernos e corrigidos é uma defesa muito mais poderosa do que tentar impedir a distribuição de ferramentas que implementam o ataque de rejeição do FTP.
Não existe uma opção mágica (ou opção nmap) para detectar e subverter firewalls e sistemas IDS. É preciso habilidade e experiência. Um tutorial está além do escopo deste guia de referência, que lista apenas as opções relevantes e descreve o que elas fazem.
-f |
Fragment packets. |
–mtu |
Fragment packets using the specified MTU. |
A opção -f faz com que a varredura solicitada (incluindo varreduras de ping) use pequenos pacotes IP fragmentados. A idéia é dividir o cabeçalho TCP em vários pacotes para dificultar a filtragem de pacotes, os sistemas de detecção de intrusões e outros aborrecimentos para detectar o que você está fazendo. Tenha cuidado com isso. Alguns programas têm problemas para lidar com esses pequenos pacotes. O sniffer da velha escola chamado segmentação Sniffit falhou imediatamente ao receber o primeiro fragmento. Especifique esta opção uma vez e o nmap divide os pacotes em oito bytes ou menos após o cabeçalho IP. Portanto, um cabeçalho TCP de 20 bytes seria dividido em três pacotes. Dois com oito bytes do cabeçalho TCP e um com os quatro finais. Obviamente, cada fragmento também possui um cabeçalho IP. Especifique -f novamente para usar 16 bytes por fragmento (reduzindo o número de fragmentos); ou você pode especificar seu próprio tamanho de deslocamento com a opção –mtu. Não especifique também -f se você usar –mtu. O deslocamento deve ser um múltiplo de oito. Embora os pacotes fragmentados não obtenham filtros de firewall e firewalls que enfileiram todos os fragmentos de IP, como a opção CONFIG_IP_ALWAYS_DEFRAG no kernel Linux, algumas redes não podem pagar o desempenho atingido por essas causas e, portanto, desativá-las. Outros não podem habilitar isso porque os fragmentos podem seguir rotas diferentes em suas redes. Alguns sistemas de origem desfragmentam pacotes de saída no kernel. O Linux com o módulo de rastreamento de conexão iptables é um exemplo. Faça uma varredura enquanto um sniffer como o Wireshark estiver sendo executado para garantir que os pacotes enviados sejam fragmentados. Se o seu sistema operacional host estiver causando problemas, tente a opção –send-eth para ignorar a camada IP e enviar quadros Ethernet brutos.
A fragmentação é suportada apenas pelos recursos de pacotes brutos do nmap, que incluem verificações de porta TCP e UDP (exceto verificação de conexão e verificação de rejeição de FTP) e detecção de SO. Recursos como detecção de versão e o Mecanismo de script nmap geralmente não suportam fragmentação, porque dependem da pilha TCP do host para se comunicar com os serviços de destino.
-D decoy1[,decoy2][,ME][,…] |
Cloak a scan with decoys. |
Faz com que uma varredura de isca seja executada, o que faz parecer ao host remoto que o (s) host (s) que você especificar como isca também está varrendo a rede de destino. Portanto, seu IDS pode relatar varreduras de 5 a 10 portas a partir de endereços IP exclusivos, mas eles não saberão qual IP os estava digitalizando e quais eram iscas inocentes. Embora isso possa ser derrotado pelo rastreamento de caminho do roteador, queda de resposta e outros mecanismos ativos, geralmente é uma técnica eficaz para ocultar seu endereço IP.
Separe cada host de chamariz com vírgulas e, opcionalmente, você pode usar o ME. como um dos chamarizes para representar a posição do seu endereço IP real. Se você colocar o ME na sexta posição ou mais recente, alguns detectores comuns de varredura de portas (como o excelente Scanlogd do Solar Designer). é improvável que você mostre seu endereço IP. Se você não usar o ME, o nmap o colocará em uma posição aleatória. Você também pode usar o RND. para gerar um endereço IP aleatório, não reservado ou RND: número para gerar endereços numéricos.
Observe que os hosts que você usa como chamarizes devem estar ativos ou você pode acidentalmente SYN inundar seus alvos. Além disso, será muito fácil determinar qual host está digitalizando se apenas um estiver na rede. Você pode querer usar endereços IP em vez de nomes (para que as redes enganosas não o vejam nos registros dos servidores de nomes).
As iscas são usadas na varredura de ping inicial (usando ICMP, SYN, ACK ou o que for) e durante a fase de varredura de porta real. Chamarizes também são usados durante a detecção remota do SO (-O). Chamarizes não funcionam com detecção de versão ou verificação de conexão TCP. Quando um atraso de varredura está em vigor, o atraso é imposto entre cada lote de sondas falsificadas, e não entre cada sonda. Como os chamarizes são enviados como um lote de uma só vez, eles podem violar temporariamente os limites de controle de congestionamento.
Vale a pena notar que o uso de muitos chamarizes pode diminuir a velocidade da varredura e potencialmente torná-la menos precisa. Além disso, alguns ISPs filtram seus pacotes falsificados, mas muitos não restringem os pacotes IP falsificados.
-S IP_Address |
Spoof source address. |
Em algumas circunstâncias, o nmap pode não ser capaz de determinar seu endereço de origem (o nmap dirá se esse é o caso). Nessa situação, use -S com o endereço IP da interface pela qual você deseja enviar pacotes.
Outro uso possível desse sinalizador é falsificar a varredura para fazer com que os alvos pensem que alguém os está verificando. Imagine uma empresa sendo varrida repetidamente por porta por um concorrente. A opção -e e -Pn são geralmente necessárias para esse tipo de uso. Observe que você normalmente não receberá os pacotes de resposta (eles serão endereçados ao IP que você está falsificando); portanto, o nmap não produzirá relatórios úteis.
-e interface |
Use specified interface. |
Informa ao nmap em qual interface enviar e receber pacotes. O nmap deve ser capaz de detectar isso automaticamente, mas será informado se não puder.
–source-port portnumber, -g portnumber |
Spoof source port number. |
Um erro de configuração surpreendentemente comum é confiar no tráfego com base apenas no número da porta de origem. É fácil entender como isso acontece. Um administrador configurará um novo firewall brilhante, apenas para ser inundado por reclamações de usuários ingratos cujos aplicativos pararam de funcionar. Em particular, o DNS pode estar quebrado porque as respostas de DNS UDP de servidores externos não podem mais entrar na rede. FTP é outro exemplo comum. Nas transferências FTP ativas, o servidor remoto tenta estabelecer uma conexão de volta ao cliente para transferir o arquivo solicitado.
Existem soluções seguras para esses problemas, geralmente na forma de proxies em nível de aplicativo ou módulos de firewall para análise de protocolo. Infelizmente, também existem soluções mais fáceis e inseguras. Observando que as respostas DNS vêm da porta 53 e o FTP ativo da porta 20, muitos administradores caíram na armadilha de permitir o tráfego de entrada dessas portas. Eles geralmente assumem que nenhum invasor notaria e exploraria tais falhas de firewall. Em outros casos, os administradores consideram isso uma medida de interrupção de curto prazo até que possam implementar uma solução mais segura. Então eles esquecem a atualização de segurança.
Os administradores de rede sobrecarregados de trabalho não são os únicos a cair nessa armadilha. Vários produtos foram enviados com essas regras inseguras. Até a Microsoft foi culpada. Os filtros IPsec fornecidos com o Windows 2000 e Windows XP contêm uma regra implícita que permite todo o tráfego TCP ou UDP da porta 88 (Kerberos). Em outro caso bem conhecido, as versões do firewall pessoal do Zone Alarm até 2.1.25 permitiam qualquer pacote UDP de entrada com a porta de origem 53 (DNS) ou 67 (DHCP).
O nmap oferece as opções -g e –source-port (elas são equivalentes) para explorar essas fraquezas. Forneça um número de porta e o nmap enviará pacotes dessa porta sempre que possível. A maioria das operações de varredura que usam soquetes brutos, incluindo varreduras SYN e UDP, suportam a opção completamente. A opção notavelmente não afeta as operações que usam soquetes normais do sistema operacional, incluindo solicitações de DNS, verificação de conexão TCP, detecção de versão e verificação de script. A configuração da porta de origem também não funciona para a detecção do SO, porque o nmap deve usar números de porta diferentes para que determinados testes de detecção do SO funcionem corretamente.
–data-length number |
Append random data to sent packets. |
Normalmente, o nmap envia pacotes minimalistas contendo apenas um cabeçalho. Portanto, seus pacotes TCP geralmente têm 40 bytes e os pedidos de eco ICMP são 28. Algumas portas UDP e protocolos IP recebem uma carga útil personalizada por padrão. Essa opção diz ao nmap para anexar o número especificado de bytes aleatórios à maioria dos pacotes enviados e não usar cargas úteis específicas do protocolo. Use –data-length 0 para nenhuma carga útil aleatória ou específica de protocolo. Os pacotes de detecção de SO (-O) não são afetados porque sua precisão requer consistência de análise, mas a maioria dos pacotes de ping e de digitalização de porta é compatível com isso. Isso diminui um pouco as coisas, mas pode tornar a digitalização um pouco menos visível.
–ip-options S|R [route]|L [route]|T|U …,–ip-options hex string |
Send packets with specified ip options. |
O protocolo IP [13] oferece várias opções que podem ser colocadas em cabeçalhos de pacotes. Diferente das onipresentes opções de TCP, as opções de IP raramente são vistas devido a questões de praticidade e segurança. De fato, muitos roteadores da Internet bloqueiam as opções mais perigosas, como o roteamento de origem. No entanto, as opções ainda podem ser úteis em alguns casos para determinar e manipular a rota de rede para atingir as máquinas. Por exemplo, você pode usar a opção de rota de registro para determinar um caminho para um destino, mesmo quando as abordagens mais tradicionais no estilo de traceroute falham. Ou, se seus pacotes estiverem sendo descartados por um determinado firewall, você poderá especificar uma rota diferente com as opções de roteamento de origem restrita ou flexível.
A maneira mais poderosa de especificar opções de IP é passar valores como argumento para –ip-options. Preceda cada número hexadecimal com \ x e os dois dígitos. Você pode repetir certos caracteres seguindo-os com um asterisco e, em seguida, o número de vezes que deseja que eles se repitam. Por exemplo, \ x01 \ x07 \ x04 \ x00 * 36 \ x01 é uma cadeia hexadecimal que contém 36 bytes NUL.
O nmap também oferece um mecanismo de atalho para especificar opções. Passe as letras R, T ou U para solicitar a rota de registro, o registro de data e hora ou as duas opções juntas, respectivamente. O roteamento de origem frouxo ou estrito pode ser especificado com um L ou S seguido de um espaço e, em seguida, uma lista de endereços IP separados por espaço.
Se você deseja ver as opções nos pacotes enviados e recebidos, especifique –packet-trace. Para obter mais informações e exemplos de uso de opções de IP com o nmap, consulte http://seclists.org/nmap-dev/2006/q3/52.
–ttl value |
Set IP time-to-live field. |
Define o campo de tempo de vida útil do IPv4 nos pacotes enviados para o valor especificado.
–randomize-hosts |
Randomize target host order. |
Informa ao nmap para embaralhar cada grupo de até 16384 hosts antes de examiná-los. Isso pode tornar as varreduras menos óbvias para vários sistemas de monitoramento de rede, especialmente quando você a combina com opções de tempo lento. Se você deseja randomizar em grupos maiores, aumente PING_GROUP_SZ em nmap.he recompile. Uma solução alternativa é gerar a lista de IPs de destino com uma varredura de lista (-sL -n -oN nome do arquivo), randomizar com um script Perl e fornecer a lista inteira ao nmap com -iL.
–spoof-mac MAC address, prefix, or vendor name |
Spoof MAC address. |
Solicita ao nmap que use o endereço MAC fornecido para todos os quadros Ethernet brutos que ele envia. Esta opção implica –send-eth para garantir que o nmap realmente envie pacotes no nível Ethernet. O MAC fornecido pode assumir vários formatos. Se for o número 0, o nmap escolhe um endereço MAC completamente aleatório para a sessão. Se a sequência especificada for um número par de dígitos hexadecimais (com os pares opcionalmente separados por dois pontos), o nmap os utilizará como o MAC. Se menos de 12 dígitos hexadecimais forem fornecidos, o nmap preencherá o restante dos seis bytes com valores aleatórios. Se o argumento não for uma cadeia zero ou hexadecimal, o nmap procurará nos prefixos nmap-mac-para encontrar um nome de fornecedor que contenha a cadeia especificada (não diferencia maiúsculas de minúsculas). Se uma correspondência for encontrada, o nmap usa a OUI do fornecedor (prefixo de três bytes) e preenche os três bytes restantes aleatoriamente. Exemplos válidos de argumentos –spoof-mac são Apple, 0, 01: 02: 03: 04: 05: 06, deadbeefcafe, 0020F2 e Cisco. Essa opção afeta apenas as verificações de pacotes brutos, como a verificação SYN ou a detecção do SO, e não os recursos orientados à conexão, como a detecção de versão ou o Nmap Scripting Engine.
–badsum |
Send packets with bogus TCP/UDP checksums. |
Solicita ao nmap que use uma soma de verificação TCP, UDP ou SCTP inválida para pacotes enviados aos hosts de destino. Como praticamente todas as pilhas de IP do host descartam adequadamente esses pacotes, é provável que todas as respostas recebidas venham de um firewall ou IDS que não se preocupou em verificar a soma de verificação. Para mais detalhes sobre essa técnica, consulte https://nmap.org/p60-12.html.
–adler32 |
Use deprecated Adler32 instead of CRC32C for SCTP checksums. |
Solicita ao nmap que use o algoritmo Adler32 reprovado para calcular a soma de verificação SCTP. Se –adler32 não for fornecido, o CRC-32C (Castagnoli) será usado. RFC 2960 [14] originalmente definiu Adler32 como algoritmo de soma de verificação para SCTP; Mais tarde, o RFC 4960 redefiniu as somas de verificação SCTP para usar o CRC-32C. As implementações atuais do SCTP devem usar o CRC-32C, mas para obter respostas de implementações antigas e antigas do SCTP, pode ser preferível usar o Adler32.
Opções: saída
-oN/-oX/-oS/-oG <file> | A varredura de saída em formato normal, XML, s | <rIpt kIddi3 e Grep -able, respectivamente, para o nome de arquivo fornecido. |
-oA <basename> | Saída nos três formatos principais de uma vez. |
-v | Aumente o nível de detalhamento (use -vv ou mais para obter um efeito maior). |
-d | Aumente o nível de depuração (use -dd ou mais para maior efeito). |
–reason | Exibe o motivo pelo qual uma porta está em um determinado estado. |
–open | Mostrar apenas portas abertas (ou possivelmente abertas). |
–packet-trace | Mostra todos os pacotes enviados e recebidos. |
–iflist | Imprimir interfaces de host e rotas (para depuração). |
–log-errors | Registre erros / avisos no arquivo de saída de formato normal. |
–append-output | Anexar em vez de eliminar os arquivos de saída especificados. |
–resume <filename> | Retomar uma varredura abortada. |
–stylesheet <path/URL> | Folha de estilo XSL para transformar a saída XML em HTML. |
–webxml | Folha de estilo de referência de nmap.org para XML mais portátil. |
–no-stylesheet | Impedir a associação de folha de estilo XSL com saída XML. |
Qualquer ferramenta de segurança é tão útil quanto a saída que gera. Testes e algoritmos complexos são de pouco valor se não forem apresentados de maneira organizada e compreensível. Dado o número de maneiras pelas quais o nmap é usado por pessoas e outros softwares, nenhum formato único pode agradar a todos. Portanto, o nmap oferece vários formatos, incluindo o modo interativo para humanos lerem diretamente e XML para facilitar a análise por software.
Além de oferecer diferentes formatos de saída, o nmap fornece opções para controlar a verbosidade da saída, além de depurar mensagens. Os tipos de saída podem ser enviados para a saída padrão ou para os arquivos nomeados, aos quais o nmap pode anexar ou bloquear. Os arquivos de saída também podem ser usados para retomar as verificações abortadas.
O nmap disponibiliza a saída em cinco formatos diferentes. O padrão é chamado de saída interativa e é enviado para a saída padrão (stdout). Também há saída normal, que é semelhante à interativa, exceto que exibe menos informações e avisos de tempo de execução, pois é esperado que seja analisado após a conclusão da varredura, em vez de interativamente.
A saída XML é um dos tipos de saída mais importantes, pois pode ser convertida em HTML, facilmente analisada por programas como interfaces gráficas do usuário nmap ou importada para bancos de dados.
Os dois tipos de saída restantes são a saída simples grepable, que inclui a maioria das informações para um host de destino em uma única linha, e o sCRiPt KiDDi3 0utPUt (para usuários que se consideram | <-r4d).
Embora a saída interativa seja o padrão e não tenha opções de linha de comando associadas, as outras quatro opções de formato usam a mesma sintaxe. Eles usam um argumento, que é o nome do arquivo no qual os resultados devem ser armazenados. Vários formatos podem ser especificados, mas cada formato pode ser especificado apenas uma vez. Por exemplo, convém salvar a saída normal para sua própria revisão e salvar XML da mesma varredura para análise programática. Você pode fazer isso com as opções -oX myscan.xml -oN myscan.nmap. Embora este capítulo use nomes simples como myscan.xml por questões de brevidade, geralmente são recomendados nomes mais descritivos. Os nomes escolhidos são uma questão de preferência pessoal, embora eu use nomes longos que incorporem a data da verificação e uma ou duas palavras descrevendo a verificação, colocadas em um diretório com o nome da empresa que estou examinando.
Enquanto essas opções salvam os resultados em arquivos, o nmap ainda imprime a saída interativa no stdout, como de costume. Por exemplo, o comando nmap -oX myscan.xml target imprime XML em myscan.xml e preenche a saída padrão com os mesmos resultados interativos que seriam impressos se -oX não fosse especificado. Você pode alterar isso passando um caractere de hífen como argumento para um dos tipos de formato. Isso faz com que o nmap desative a saída interativa e, em vez disso, imprima os resultados no formato especificado para o fluxo de saída padrão. Portanto, o comando nmap -oX – target enviará apenas a saída XML para o stdout. Erros graves ainda podem ser impressos no fluxo de erros normal (stderr).
Ao contrário de alguns argumentos do nmap, o espaço entre o sinalizador da opção logfile (como -oX) e o nome do arquivo ou hífen é obrigatório. Se você omitir os sinalizadores e fornecer argumentos como -oG- ou -oXscan.xml, um recurso de compatibilidade com versões anteriores do nmap causará a criação de arquivos de saída em formato normal denominados G- e Xscan.xml, respectivamente.
Todos esses argumentos oferecem suporte a conversões do tipo strftime no nome do arquivo. % H,% M,% S,% m,% d,% y e% Y são iguais aos do período de tempo de transmissão. % T é igual a% H% M% S,% R é igual a% H% M e% D é igual a% m% d% y. Um% seguido por qualquer outro caractere gera esse caractere (%% fornece um símbolo de porcentagem). Portanto, o -oX ‘scan-% T-% D.xml’ usará um arquivo XML com um nome na forma de scan-144840-121307.xml.
O nmap também oferece opções para controlar a verbosidade da varredura e anexá-la aos arquivos de saída, em vez de prejudicá-los. Todas essas opções estão descritas abaixo.
Formatando a saída do Nmap :
-oN filespec |
Normal output. |
Solicita que a saída normal seja direcionada para o nome do arquivo especificado. Como discutido acima, isso difere um pouco da saída interativa.
-oX filespec |
XML output. |
Solicita que a saída XML seja direcionada para o nome do arquivo especificado. O nmap inclui uma definição de tipo de documento (DTD) que permite que os analisadores XML validem a saída XML do nmap. Embora se destine principalmente ao uso programático, também pode ajudar os humanos a interpretar a saída XML do nmap. O DTD define os elementos legais do formato e geralmente enumera os atributos e valores que eles podem assumir. A versão mais recente está sempre disponível em https://svn.nmap.org/nmap/docs/nmap.dtd.
O XML oferece um formato estável que é facilmente analisado pelo software. Analisadores XML gratuitos estão disponíveis para todas as principais linguagens de computador, incluindo C / C ++, Perl, Python e Java. As pessoas até escreveram ligações para a maioria dessas linguagens para lidar especificamente com a saída e execução do nmap. Exemplos são Nmap :: Scanner [15] e Nmap :: Parser no Perl CPAN. Em quase todos os casos em que um aplicativo não trivial faz interface com o nmap, o XML é o formato preferido.
A saída XML faz referência a uma folha de estilo XSL que pode ser usada para formatar os resultados como HTML. A maneira mais fácil de usar isso é carregar a saída XML em um navegador da web como o Firefox ou o IE. Por padrão, isso funcionará apenas na máquina na qual você executou o nmap (ou em uma configurada de maneira semelhante) devido ao caminho do sistema de arquivos nmap.xsl codificado. Use as opções –webxml ou –stylesheet para criar arquivos XML portáteis que são renderizados como HTML em qualquer máquina conectada à Web.
-oS filespec |
ScRipT KIdd|3 oUTpuT. |
A saída infantil de script é como saída interativa, exceto que é pós-processada para melhor se adequar ao HaXXorZ que anteriormente desprezava o nmap devido à sua ortografia e capitalização consistentes. Pessoas com problemas de humor devem observar que essa opção foi adicionada como uma piada.
-oG filespec |
Grepable output. |
Este formato de saída é coberto por último porque está obsoleto. O formato de saída XML é muito mais poderoso e é quase tão conveniente para usuários experientes. XML é um padrão para o qual dezenas de excelentes analisadores estão disponíveis, enquanto a saída grepable é essencialmente o hack pessoal e simples do autor. O XML é extensível para dar suporte a novos recursos do nmap à medida que são lançados, enquanto esses recursos geralmente devem ser omitidos da saída grepable por falta de um local para colocá-los.
No entanto, a produção grepable ainda é bastante popular. É um formato simples que lista cada host em uma linha e pode ser pesquisado e analisado trivialmente com ferramentas padrão do Unix, como grep, awk, cut, sed, diff e Perl. Encontrar todos os hosts com a porta SSH aberta ou executando o Solaris requer apenas um grep simples para identificar os hosts, canalizados para um comando awk ou cut para imprimir os campos desejados.
A saída grepable consiste em comentários (linhas começando com uma libra (#)) e linhas de destino. Uma linha de destino inclui uma combinação de seis campos rotulados, separados por tabulações e seguidos por dois pontos. Os campos são Host, Portas, Protocolos, Estado ignorado, SO, Índice Seq, ID do IP e Status.
O mais importante desses campos geralmente é o Ports, que fornece detalhes sobre cada porta interessante. É uma lista separada por vírgula de entradas de porta. Cada entrada de porta representa uma porta interessante e assume a forma de sete subcampos separados por barra (/). Esses subcampos são: Número da porta, Estado, Protocolo, Proprietário, Serviço, Informações do SunRPC e Informações da versão.
Como na saída XML, esta página não permite documentar todo o formato. Uma visão mais detalhada do formato de saída grepable do nmap está disponível em https://nmap.org/book/output-formats-grepable-output.html.
-oA basename |
Output to all formats. |
Por conveniência, você pode especificar -oA basename para armazenar os resultados da verificação nos formatos normal, XML e grepable de uma só vez. Eles são armazenados em basename.nmap, basename.xml e basename.gnmap, respectivamente. Como na maioria dos programas, você pode prefixar os nomes dos arquivos com um caminho de diretório, como ~ / nmaplogs / myvictim / no Unix ou c: \ hacking \ whoimscanning no Windows.
Opções de verbosidade e depuração
-v |
Increase verbosity level. |
Aumenta o nível de verbosidade, fazendo com que o nmap imprima mais informações sobre a verificação em andamento. As portas abertas são mostradas à medida que são encontradas e as estimativas de tempo de conclusão são fornecidas quando o nmap acha que uma varredura leva mais do que alguns minutos. Use-o duas ou mais vezes para obter uma verbosidade ainda maior: -vv, ou forneça um nível de verbosidade diretamente, por exemplo -v3.
A maioria das alterações afeta apenas a saída interativa, e algumas também afetam a saída normal e infantil do script. Os outros tipos de saída devem ser processados por máquinas, para que o nmap possa fornecer detalhes substanciais por padrão nesses formatos sem cansar o usuário humano. No entanto, existem algumas alterações em outros modos em que o tamanho da saída pode ser reduzido substancialmente, omitindo alguns detalhes. Por exemplo, uma linha de comentário na saída grepable que fornece uma lista de todas as portas varridas é impressa apenas no modo detalhado porque pode ser bastante longa.
-d |
Increase debugging level. |
Quando o modo detalhado ainda não fornece dados suficientes para você, a depuração está disponível para inundá-lo com muito mais. Como na opção de verbosidade (-v), a depuração é ativada com um sinalizador de linha de comando (-d) e o nível de depuração pode ser aumentado especificando-o várias vezes, como em -dd, ou definindo um nível diretamente. Por exemplo, -d9 define o nível nove. Esse é o nível efetivo mais alto e produzirá milhares de linhas, a menos que você execute uma varredura muito simples com muito poucas portas e destinos.
A saída de depuração é útil quando há suspeita de um bug no nmap ou se você está confuso sobre o que o nmap está fazendo e por quê. Como esse recurso é destinado principalmente aos desenvolvedores, as linhas de depuração nem sempre são auto-explicativas. Você pode obter algo como: Vals de tempo limite: srtt: -1 rttvar: -1 para: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 para: 100000. Se você não entender uma linha, seus únicos recursos serão ignorar , procure-o no código-fonte ou solicite ajuda da lista de desenvolvimento (nmap-dev). Algumas linhas são auto-explicativas, mas as mensagens ficam mais obscuras à medida que o nível de depuração é aumentado.
–reason |
Host and port state reasons. |
Mostra o motivo pelo qual cada porta está configurada para um estado específico e o motivo pelo qual cada host está ativo ou inativo. Esta opção exibe o tipo de pacote que determinou um estado de porta ou host. Por exemplo, um pacote RST de uma porta fechada ou uma resposta de eco de um host ativo. As informações que o nmap pode fornecer é determinada pelo tipo de verificação ou ping. A verificação SYN e o ping SYN (-sS e -PS) são muito detalhados, mas a verificação de conexão TCP (-sT) é limitada pela implementação da chamada do sistema de conexão. Esse recurso é ativado automaticamente pela opção de depuração (-d) e os resultados são armazenados em arquivos de log XML, mesmo que essa opção não esteja especificada.
–stats-every time |
Print periodic timing stats. |
Periodicamente, imprime uma mensagem de status de temporização após cada intervalo de tempo. O tempo é uma especificação do tipo descrito na seção chamada “Tempo e desempenho”; por exemplo, use –stats-every 10s para obter uma atualização de status a cada 10 segundos. As atualizações são impressas na saída interativa (na tela) e na saída XML.
–packet-trace |
Trace packets and data sent and received. |
Faz com que o nmap imprima um resumo de todos os pacotes enviados ou recebidos. Isso geralmente é usado para depuração, mas também é uma maneira valiosa para os novos usuários entenderem exatamente o que o nmap está fazendo nos bastidores. Para evitar a impressão de milhares de linhas, convém especificar um número limitado de portas a serem digitalizadas, como -p20-30. Se você se importa apenas com as atividades do subsistema de detecção de versão, use –version-trace. Se você se importa apenas com o rastreamento de scripts, especifique –script-trace. Com –packet-trace, você obtém todas as informações acima.
–open |
Show only open (or possibly open) ports. |
Às vezes, você se preocupa apenas com as portas às quais pode se conectar (portas abertas) e não deseja resultados repletos de portas fechadas, filtradas e fechadas | A personalização da saída normalmente é feita após a verificação usando ferramentas como grep, awk e Perl, mas esse recurso foi adicionado devido a solicitações esmagadoras. Especifique –open para ver apenas hosts com pelo menos uma porta aberta, aberta | filtrada ou não filtrada e apenas as portas nesses estados. Esses três estados são tratados como normalmente são, o que significa que os filtros | abertos e não filtrados podem ser condensados em contagens, se houver um número esmagador deles.
–iflist |
List interfaces and routes. |
Imprime a lista de interfaces e as rotas do sistema, conforme detectado pelo nmap. Isso é útil para depurar problemas de roteamento ou descaracterizar o dispositivo (como o nmap tratando uma conexão PPP como Ethernet).
–log-errors |
Log errors/warnings to normal mode output file. |
Os avisos e erros impressos pelo nmap geralmente vão apenas para a tela (saída interativa), deixando todos os arquivos de saída no formato normal (geralmente especificados com -oN) organizados. Quando você quiser ver essas mensagens no arquivo de saída normal especificado, adicione esta opção. É útil quando você não está assistindo a saída interativa ou quando deseja gravar erros durante a depuração de um problema. As mensagens de erro e aviso também aparecerão no modo interativo. Isso não funcionará para a maioria dos erros relacionados a argumentos de linha de comando incorretos, porque o nmap pode ainda não ter inicializado seus arquivos de saída. Além disso, algumas mensagens de erro e aviso do nmap usam um sistema diferente que ainda não suporta esta opção.
Uma alternativa para –log-errors é redirecionar a saída interativa (incluindo o fluxo de erros padrão) para um arquivo. A maioria dos shells do Unix facilita essa abordagem, embora possa ser difícil no Windows.
Opções diversas de saída
–append-output |
Append to rather than clobber output files. |
Quando você especifica um nome de arquivo para um sinalizador de formato de saída como -oX ou -oN, esse arquivo é substituído por padrão. Se você preferir manter o conteúdo existente do arquivo e anexar os novos resultados, especifique a opção –append-output. Todos os nomes de arquivos de saída especificados nessa execução do nmap serão anexados ao invés de clobber. Isso não funciona bem para os dados de varredura XML (-oX), pois o arquivo resultante geralmente não será analisado corretamente até que você o conserte manualmente.
–resume filename |
Resume aborted scan. |
Algumas execuções extensas do nmap levam muito tempo – na ordem dos dias. Tais varreduras nem sempre são executadas. Restrições podem impedir que o nmap seja executado durante o horário de trabalho, a rede pode ficar inativa, o nmap da máquina em execução pode sofrer uma reinicialização planejada ou não planejada ou o próprio nmap pode falhar. O administrador que executa o nmap também pode cancelá-lo por qualquer outro motivo, pressionando Ctrl-C. Reiniciar toda a verificação desde o início pode ser indesejável. Felizmente, se os logs normais (-oN) ou grepable (-oG) foram mantidos, o usuário pode solicitar ao nmap para continuar a varredura com o destino no qual estava trabalhando quando a execução foi interrompida. Especifique a opção –resume e passe o arquivo de saída normal / grepable como argumento. Nenhum outro argumento é permitido, pois o nmap analisa o arquivo de saída para usar os mesmos especificados anteriormente. Chame nmap como nmap –resume logfilename. O nmap anexará novos resultados aos arquivos de dados especificados na execução anterior. A retomada não suporta o formato de saída XML porque seria difícil combinar as duas execuções em um arquivo XML válido.
–stylesheet path or URL |
Set XSL stylesheet to transform XML output. |
O nmap é enviado com uma folha de estilo XSL denominada nmap.xsl para exibir ou converter a saída XML em HTML. A saída XML inclui uma diretiva xml-stylesheet que aponta para nmap.xml onde foi instalado inicialmente pelo nmap. Execute o arquivo XML através de um processador XSLT como o xsltproc [17] para produzir um arquivo HTML. A abertura direta do arquivo XML em um navegador não funciona mais bem porque os navegadores modernos limitam os locais dos quais uma folha de estilo pode ser carregada. Se você deseja usar uma folha de estilo diferente, especifique-a como o argumento para –stylesheet. Você deve passar o nome completo do caminho ou URL. Uma chamada comum é –stylesheet https://svn.nmap.org/nmap/docs/nmap.xsl. Isso informa ao processador XSLT para carregar a versão mais recente da folha de estilo no nmap.org. A opção –webxml faz a mesma coisa com menos digitação e memorização. Carregar o XSL do nmap.org facilita a exibição dos resultados em uma máquina que não possui o nmap (e, portanto, o nmap.xsl) instalado. Portanto, a URL geralmente é mais útil, mas o local do sistema de arquivos local do nmap.xsl é usado por padrão por razões de privacidade.
–webxml |
Load stylesheet from nmap.org. |
Esta é uma opção de conveniência, nada mais que um apelido para –stylesheet https://svn.nmap.org/nmap/docs/nmap.xsl.
–no-stylesheet |
Omit XSL stylesheet declaration from XML. |
Especifique esta opção para impedir que o nmap associe qualquer folha de estilo XSL à sua saída XML. A diretiva xml-stylesheet é omitida.
Opções: diversos
-6 | Enable IPv6 scanning. |
-A | Enable OS detection, version detection, script scanning, and traceroute. |
–datadir <dirname> | Specify custom Nmap data file location. |
–send-eth/–send-ip | Send using raw Ethernet frames or IP packets. |
–privileged | Assume that the user is fully privileged. |
–unprivileged | Assume the user lacks raw socket privileges. |
-V | Print version number. |
-h | Print this help summary page. |
Esta seção descreve algumas opções importantes (e não tão importantes) que realmente não se encaixam em nenhum outro lugar.
-6 |
Enable IPv6 scanning. |
O nmap possui suporte a IPv6 para seus recursos mais populares. A verificação de ping, a verificação de portas, a detecção de versão e o mecanismo de script nmap suportam o IPv6. A sintaxe do comando é a mesma de sempre, exceto que você também adiciona a opção -6. Obviamente, você deve usar a sintaxe do IPv6 se especificar um endereço em vez de um nome de host. Um endereço pode parecer 3ffe: 7501: 4819: 2000: 210: f3ff: fe03: 14d0, portanto, os nomes de host são recomendados. A saída parece a mesma de sempre, com o endereço IPv6 na linha “portas interessantes” sendo a única oferta IPv6.
Embora o IPv6 não tenha conquistado o mundo exatamente, ele é usado em alguns países (geralmente asiáticos) e os sistemas operacionais mais modernos o suportam. Para usar o nmap com IPv6, a origem e o destino da sua varredura devem estar configurados para o IPv6. Se o seu ISP (como a maioria deles) não lhe atribui endereços IPv6, os agentes de encapsulamento gratuitos estão amplamente disponíveis e funcionam bem com o nmap. Eu uso o serviço gratuito de intermediário de encapsulamento IPv6 em https://www.tunnelbroker.net/. Outros corretores de túneis estão listados na Wikipedia. Os túneis “6to4” são outra abordagem popular e gratuita.
No Windows, as varreduras IPv6 de soquete bruto são suportadas apenas em dispositivos Ethernet (não em túneis) e apenas no Windows Vista. e depois. Use a opção –unprivileged em outras situações.
-A |
Aggressive scan options. |
Esta opção permite opções avançadas e agressivas adicionais. Atualmente, isso permite a detecção do SO (-O), varredura de versão (-sV), varredura de script (-sC) e traceroute (–traceroute). Mais recursos podem ser adicionados no futuro. O objetivo é ativar um conjunto abrangente de opções de digitalização sem que as pessoas precisem se lembrar de um grande conjunto de sinalizadores. No entanto, como a varredura de scripts com o conjunto padrão é considerada invasiva, você não deve usar -A nas redes de destino sem permissão. Essa opção ativa apenas os recursos, e não as opções de tempo (como -T4) ou de verbosidade (-v) que você também deseja.
–datadir directoryname |
Specify custom nmap data file location. |
O nmap obtém alguns dados especiais em tempo de execução em arquivos denominados nmap-service-probes, nmap-services, nmap-protocolos, nmap-rpc, nmap-mac-prefixes e nmap-os-db. Se o local de qualquer um desses arquivos tiver sido especificado (usando as opções –servicedb ou –versiondb), esse local será usado para esse arquivo. Depois disso, o nmap pesquisa esses arquivos no diretório especificado com a opção –datadir (se houver). Todos os arquivos não encontrados lá são procurados no diretório especificado pela variável de ambiente NMAPDIR. Em seguida, vem o ~ / .nmap para UIDs reais e eficazes; ou no Windows, HOME \ AppData \ Roaming \ nmap (onde HOME é o diretório inicial do usuário, como C: \ Users \ user). Isto é seguido pela localização do executável nmap e a mesma localização com ../share/nmap anexado. Em seguida, um local compilado, como / usr / local / share / nmap ou / usr / share / nmap.
–servicedb services file |
Specify custom services file. |
Solicita ao nmap que use o arquivo de serviços especificado em vez do arquivo de dados do nmap-services que acompanha o nmap . O uso dessa opção também faz com que uma verificação rápida ( -F ) seja usada. Veja a descrição para –datadir para obter mais informações sobre os arquivos de dados do nmap .
Arquivo de análises de serviço –versiondb |
Especifique o arquivo de análises de serviço customizado. |
Solicita ao nmap que use o arquivo de probes de serviço especificado em vez do arquivo de dados nmap-service-probes que acompanha o nmap . Veja a descrição para –datadir para obter mais informações sobre os arquivos de dados do nmap .
–send-eth |
Use o envio Ethernet bruto. |
Solicita ao nmap para enviar pacotes na camada bruta de Ethernet (link de dados) em vez da camada IP (rede) mais alta. Por padrão, o nmap escolhe aquele que geralmente é melhor para a plataforma em que está sendo executado. Soquetes brutos (camada IP) geralmente são mais eficientes para máquinas Unix, enquanto os quadros Ethernet são necessários para a operação do Windows, pois a Microsoft desativou o suporte a soquetes brutos. O nmap ainda usa pacotes IP brutos no Unix, apesar desta opção quando não há outra opção (como conexões não Ethernet).
–send-ip |
Enviar no nível do IP bruto. |
Solicita ao nmap que envie pacotes por soquetes IP brutos, em vez de enviar quadros Ethernet de nível inferior. É o complemento da opção –send-eth discutida anteriormente.
–privileged |
Suponha que o usuário seja totalmente privilegiado. |
Diz ao nmap para assumir que é privilegiado o suficiente para executar envios bruscos de soquete, detecção de pacotes e operações similares que geralmente requerem privilégios de root nos sistemas Unix. Por padrão, o nmap é encerrado se tais operações forem solicitadas, mas o geteuid não for zero. –privileged é útil com os recursos do kernel do Linux e sistemas similares que podem ser configurados para permitir que usuários sem privilégios executem varreduras de pacotes brutos. Certifique-se de fornecer esse sinalizador de opção antes de qualquer sinalizador para opções que requerem privilégios (varredura SYN, detecção de SO, etc.) A variável de ambiente NMAP_PRIVILEGED pode ser configurada como uma alternativa equivalente a –privileged .
–unprivileged |
Suponha que o usuário não tenha privilégios de soquete bruto. |
Esta opção é o oposto de –privileged . Ele diz ao nmap para tratar o usuário como falta de soquete bruto da rede e privilégios de sniffing. Isso é útil para teste, depuração ou quando a funcionalidade de rede bruta do seu sistema operacional está de alguma forma danificada. A variável de ambiente NMAP_UNPRIVILEGED pode ser configurada como uma alternativa equivalente a –unprivileged .
–release-memory |
Libere a memória antes de sair. |
Esta opção é útil apenas para depuração de vazamento de memória. Ele faz com que o nmap libere a memória alocada antes de sair, para que seja mais fácil detectar vazamentos de memória reais. Normalmente, o nmap ignora isso, pois o sistema operacional faz isso de qualquer maneira após o encerramento do processo.
-V , –version |
Imprima o número da versão. |
Imprime o número da versão do nmap e sai.
-h , –help |
Imprima a página de resumo da ajuda. |
Imprime uma tela de ajuda curta com os sinalizadores de comando mais comuns. Executar o nmap sem argumentos faz a mesma coisa.
Interação de tempo de execução
Durante a execução do nmap , todas as teclas pressionadas são capturadas. Isso permite que você interaja com o programa sem interromper e reiniciá-lo. Certas teclas especiais alteram as opções, enquanto outras imprimem uma mensagem de status informando sobre a digitalização. A convenção é que letras minúsculas aumentam a quantidade de impressão e letras maiúsculas diminuem a impressão. Você também pode pressionar ‘ ? ‘ para ajuda.
v / V | Aumente / diminua o nível de verbosidade. |
d / D | Aumente / diminua o nível de depuração. |
p / P | Ativar / desativar o rastreamento de pacotes. |
? | Imprima uma tela de ajuda da interação em tempo de execução. |
Qualquer outra coisa imprime uma mensagem de status como esta:
Estatísticas: 0:00:07 decorrido; 20 hosts concluídos (1 em 1), 1 sendo submetido a uma verificação de serviço Tempo de verificação de serviço: Aproximadamente 33,33% feito; ETC: 20:57 (0:00:12 restantes)
Uma varredura típica do nmap
nmap -A -T4 scanme.nmap.org
resultado:
Relatório de verificação do Nmap para scanme.nmap.org (74.207.244.221) O host está ativo (latência de 0,029s). Registro rDNS para 74.207.244.221: li86-221.members.linode.com Não mostrado: 995 portas fechadas VERSÃO DE SERVIÇO DO ESTADO DO PORTO 22 / tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu7 (protocolo 2.0) | ssh-hostkey: 1024 8d: 60: f1: 7c: ca: b7: 3d: 0a: d6: 67: 54: 9d: 69: d9: b9: dd (DSA) | _2048 79: f8: 09: ac: d4: e2: 32: 42: 10: 49: d3: bd: 20: 82: 85: ec (RSA) 80 / tcp http aberto Apache httpd 2.2.14 ((Ubuntu)) | _http-title: Vá em frente e o ScanMe! 646 / tcp ldp filtrado 1720 / tcp H.323 / Q.931 filtrado 9929 / tcp open nping-echo Nping echo Tipo de dispositivo: uso geral Em execução: Linux 2.6.X CPE do SO: cpe: / o: linux: kernel: 2.6.39 Detalhes do sistema operacional: Linux 2.6.39 Distância da rede: 11 saltos Informações de serviço: SO: Linux; CPE: cpe: / o: linux: kernel TRACEROUTE (usando a porta 53 / tcp) ENDEREÇO HOP RTT [Corte os 10 primeiros saltos por questões de concisão] 11 17,65 ms li86-221.members.linode.com (74.207.244.221) Nmap concluído: 1 endereço IP (1 host ativo) verificado em 14.40 segundos
Exemplos
Aqui estão alguns exemplos de uso do nmap , desde o simples e rotineiro até um pouco mais complexo e esotérico. Alguns endereços IP e nomes de domínio reais são usados para tornar as coisas mais concretas. Em seu lugar, você deve substituir endereços / nomes da sua própria rede. Embora eu não pense que a verificação de portas em outras redes seja ou deva ser ilegal, alguns administradores de rede não apreciam a verificação não solicitada de suas redes e podem reclamar. Obter permissão primeiro é a melhor abordagem. Para fins de teste, você tem permissão para verificar o host scanme.nmap.org . Essa permissão inclui apenas a digitalização via nmape não testar explorações ou ataques de negação de serviço. Para economizar largura de banda, não inicie mais de uma dúzia de verificações nesse host por dia. Se este serviço de destino de verificação gratuito for abusado, ele será retirado e o nmap informará Falha ao resolver o nome do host / IP: scanme.nmap.org . Essas permissões também se aplicam aos hosts scanme2.nmap.org , scanme3.nmap.org e assim por diante, embora esses hosts não existam atualmente.
nmap -v scanme.nmap.org
Esta opção verifica todas as portas TCP reservadas na máquina scanme.nmap.org . A opção -v ativa o modo detalhado.
nmap -sS -O scanme.nmap.org/24
Inicia uma varredura furtiva de SYN em cada máquina que está fora dos 256 IPs na rede de tamanho classe C em que reside o Scanme . Ele também tenta determinar qual sistema operacional está sendo executado em cada host que está instalado. Isso requer privilégios de root devido à verificação SYN e detecção do SO.
nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
Inicia a enumeração de host e uma varredura TCP na primeira metade de cada uma das 255 possíveis sub-redes de oito bits no espaço de endereço da classe B 198.116. Isso testa se os sistemas executam SSH , DNS , POP3 ou IMAP em suas portas padrão ou algo na porta 4564 . Para qualquer uma dessas portas encontradas abertas, a detecção de versão é usada para determinar qual aplicativo está sendo executado.
nmap -v -iR 100000 -Pn -p 80
Solicita ao nmap que escolha 100.000 hosts aleatoriamente e verifique se há servidores da Web (porta 80 ). A enumeração de host é desativada com -Pn desde o primeiro envio de algumas análises para determinar se um host está ativo é um desperdício quando você está investigando apenas uma porta em cada host de destino.
nmap -Pn -p80 -oX logs / pb-port80scan.xml -oG logs / pb-port80scan.gnmap 216.163.128.20/20
Isso verifica 4096 IPs em busca de servidores da Web (sem fazer ping deles) e salva a saída nos formatos grepable e XML.
Comandos relacionados
nice – Invoque um comando com uma prioridade de agendamento alterada.
Fonte: Computerhope.com – Texto traduzido e adaptado por Marcio Mariano Galvão