NMAP(1)

NOME
nmap - Ferramenta de exploração de rede e scanner de segurança.

SYNOPSIS
nmap [Tipo(s) de Scan] [Opções] <computador ou rede #1 ... [#N]>

DESCRICAO
Nmap é projetado para permitir aos administradores de sistemas e indivíduos curiosos explorar grandes redes para determinar quais computadores estão ativos e quais serviços são fornecidos. Nmap suporta um grande número de técnicas de scan, como: UDP, TCP connect(), TCP SYN (half open), ftp proxy (bounce attack), Reverse-ident, ICMP (ping sweep), FIN, ACK sweep, Xmas Tree, SYN sweep, IP Protocol, and Null scan. Veja as seções de Tipos de Scan para maiores detalhes. Nmap, também, oferece um número de avançadas características, como: detecção remota do SO via TCP/IP fingerprinting, stealth scanning, dynamic delay e retransmission calculations, scanning paralelo, detecção de hosts inativos através de pings paralelos, decoy scanning, detecção de portas filtradas, scanning direto de RPC (não-portmapper), fragmentation scanning e flexibilidade do alvo e especificação de porta.

Esforços significantes tem sido gastos na performance do nmap para usuários comuns, usuários não-root. Infelizmente, várias interfaces críticas do kernel (como os sockets raw) requerem privilégios de root. Nmap deve ser executado como root sempre que possível.

O resultado da execução do nmap é usualmente uma lista de portas interessantes na(s) máquina(s) sendo explorada(s). Nmap sempre fornece o nome do serviço, o número, o estado, e o protocolo das portas "bem conhecidas". O estado pode ser tanto 'aberto' (open), 'filtrado'(filtered) ou não filtrado (unfiltered). Aberto significa que a máquina alvo aceitará (accept()) conexões na porta. Filtrado significa que o firewall, filtro ou outro obstáculo da rede está cobrindo a porta e prevenindo o nmap de determinar quando a porta está aberta. Não filtrado significa que a porta é conhecida pelo nmap para estar fechada e nenhum firewall/filtro parece estar interferindo com a tentativa de determina-lá pelo nmap. Portas não filtradas são um caso comum e são mostradas, somente, quando a maioria das portas exploradas estão no estado filtrado.

Dependendo da opção usada, o nmap pode, também, reportar as seguintes características do host remoto: SO em uso, sequenciabilidade do TCP, os nomes dos usuários executando os programas em determinadas portas, o nome DNS, quando um host tem um endereco de smurf, e várias outras.

OPÇÕES
Opções que juntamente fazem sentido podem geralmente ser combinadas. Várias opções são específicas para certos modos de scan. Nmap tenta capturar e avisar o usuário sobre erros ou combinações não suportadas de opções.

Se você está impaciente, você pode ir direto para a seção de exemplos no final, os quais demonstram o uso comum do nmap. Você pode, também, executar nmap -h para uma rápida página de referência, a qual lista todas as opções.

TIPOS DE SCAN

-sT TCP connect() scan: Esta é a mais básica forma de TCP scanning. A chamada de sistema, connect(), provida pelo seu sistema operacional é usada para abrir uma conexão para toda porta interessante na máquina. Se a porta está no estado listening, connect() irá ter sucesso, por outro lado a porta não será alcançada. Uma grande vantagem desta técnica é que você não precisa de nenhum privilégio especial. Qualquer usuário em UNIX está livre para usar esta chamada.

    Este tipo de scan é facilmente detectável pelo log do host alvo, o qual mostrará o grupo de conexões e mensagens de erro para os serviços os quais aceitam, accept(), a conexão somente para tê-la imediatamente desligada.

-sS TCP SYN scan: Esta técnica é muito conhecida como "half-open" scanning, porque não abre uma conexão TCP completa. É enviado um pacote com o flag SYN setado, como se fosse abrir uma conexão real e é esperado pela resposta. Uma resposta SYN/ACK indica que a porta está no estado listening. O flag RST é uma indicação de estado não listening. Se o flag SYN/ACK é recebido, o flag RST é imediatamente enviado para encerrar a conexão (atualmente o núcleo do SO faz isso por nós). A principal vantagem desta técnica de scanning é que poucos sites irão registra-lá no arquivo de log. Desafortunadamente é necessário privilégios de super usuário (root) para construir estes pacotes SYN customizados.

-sF -sX -sN
    Modos Stealth FIN, Xmas Tree, ou Null scan: Algumas vezes nem mesmo a técnica SYN scanning é clandestina suficiente. Vários firewalls e filtros de pacotes observam por SYNs para portas restritas, e programas como Synlogger e Courtney estão disponíveis para detectar este tipo de scan. Por outro lado, scans avançados (stealth FIN, Xmas Tree, ou Null scan), podem ser capazes de passar através destes filtros sem serem molestados.

    A idéia é que portas fechadas são exigidas por responder aos pacotes de teste com um RST, enquanto portas abertas precisam ignorar os pacotes em questão (veja RFC 793 pp 64). A técnica de scan FIN utiliza o limitado pacote FIN como teste, enquanto a técnica de scan Xmas Tree seta os flags FIN, URG e PUSH. A técnica de scan Null não seta nenhum flag. Desafortunadamente a Microsoft (como usual) decidiu completamente ignorar o padrão e faz as coisas do seu próprio jeito. Então este tipo de scan não funcionará contra sistemas executando Windows95/NT. Do lado positivo, está é uma ótima maneira de distinguir entre duas plataformas. Se o scan encontrar portas abertas, é possível saber que a máquina não utiliza o Windows. Se as técnicas de scan -sF, -sX ou -sN mostram todas as portas fechadas, mesmo assim a técnica de scan SYN (-sS) mostra portas sendo abertas, você poderá estar olhando para uma máquina Windows. Esta é a maneira menos usada pelo nmap para testar a detecção do SO. Exitem, também, alguns outros sistemas que são descobertos da mesma maneira que descobrimos o windows. Estes incluem Cisco, BSDI, HP/UX, MVS, and IRIX. Todos acima enviam resets (RST) de portas abertas quando estes devem, somente, descartar o pacote.

-sP Ping scanning: Algumas vezes você somente quer saber quais os hosts da rede estão ativos. O Nmap pode fazer isso enviando um pacote de requisição ICMP (ICMP echo request) para todo endereço IP especificado da rede. Os hosts que respondem estão vivos. Desafortunadamente, vários sites, como a microsoft.com, bloqueiam pacotes de requisição ICMP (echo request). Então, o nmap pode, também, enviar um pacote ACK TCP para (por definição) a porta 80. Se nós pegarmos o flag RST novamente, a máquina esta viva. A terceira técnica envolve o envio de pacotes SYN e a espera pelo pacote com o flag RST ou os flags SYN/ACK. O método connect() é usado por usuários comuns (não root).

    Por definição (para super usuários), o nmap usa tanto as técnicas do ICMP e a do flag ACK em paralelo. Você pode mudar as -P opções descritas mais a frente.

    Note que o ping, por definição, é feito de qualquer forma, e somente os hosts que respondem são scanneados. Somente use esta opção se você desejar vasculhar sem fazer qualquer scan real de portas.

-sU UDP scans: Este método é usado para determinar quais portas UDP (User Datagram Protocol, RFC 768) estão abertas no host. A técnica implica em enviar 0 bytes de dados de pacotes UDP para cada porta da máquina alvo. Se nós recebermos uma mensagem de ICMP port unreachable (porta ICMP não alcançada), então a porta está fechada. Por outro lado nós assumimos que a porta está aberta.

    Várias pessoas pensam que a técnica UDP scanning é supérfluo. Eu, usualmente, lembro desta como uma recente falha no rpcbind do Solaris. O Rpcbind pode ser encontrado escondido em uma porta UDP não documentada em algum lugar acima de 32770. Então não importa que a porta 111 esteja bloqueada por um firewall. Porém, você pode encontrar quais as portas altas, maiores de 30.000, que estão no estado listening? Com o scanner UDP você pode! Existe, também, o programa cDc Back Orifice backdoor o qual se oculta em uma porta UDP configurável em máquinas Windows. Alguns serviços comumente vulneráveis que utilizam o UDP são: snmp, tftp, NFS, etc.

    Desafortunadamente UDP scanning é algumas vezes, dolorosamente, vagarosa desde que a maioria dos hosts implementam a sugestão da RFC 1812 (seção 4.3.2.8) de limitar a taxa de mensagens de erro ICMP. Por exemplo, o núcleo do Linux (em net/ipv4/icmp.h) limita a geração de mensagens de destination unreachable para 80 por 4 segundos, com 1/4 segundos de penalidade se esta for excedida. O Solaris tem um limite muito mais restrito (mais ou menos 2 mensagens por segundo) e assim gasta um tempo maior para realizar o scan. Nmap detecta esta taxa limitante e reduz conformemente, por outro lado inunda a rede com pacotes sem uso que irão ser ignorados pela máquina alvo.

    Como é típico, a Microsoft ignorou a sugestão da RFC e não parece ter feito nenhuma taxa limitante por completo no Win95 e no NT. Então é possível scannear, rapidamente , todas as portas de 64K das máquinas windows. Beleza!

-sO Scan do Protocolo IP: Este método é usado para determinar quais protocolos IPs são usados no host. A técnica consiste em enviar pacotes IP raw sem promover nenhum cabeçalho para cada protocolo específico na máquina alvo. Se nós recebermos uma mensagem do protocolo ICMP unreachable, então o protocolo não está sendo usado. Por outro lado nós assumimos que está aberto. Note que vários hosts (AIX, HP-UX, Digital UNIX) e firewalls podem não enviar mensagens de protocolo unreachable. Assim faz parecer que todos os protocolos estão "abertos".

    Isso porque a técnica implementada é muito similar ao scanning da porta UDP, onde a taxa limite de ICMP pode ser aplicada também. Porém o campo do protocolo IP tem somente 8 bits, então no máximo 256 protocolos podem ser testados, os quais devem ser possíveis de serem testados em tempo razoável.

-sA ACK scan: Este método avançado é usualmente usado para mapear o conjunto de regras de um firewall. Em particular, esta pode ajudar a determinar quando um firewall é stateful ou somente um filtro de pacotes simples que bloqueia pacotes SYN de chegada.

    Este tipo de scan envia pacotes com o flag ACK setado para uma porta específica. Se um RST voltar, a porta é classificada como "não filtrada". Se não voltar nada ou um ICMP unreachable voltar, a porta é classificada como "filtrada". Note que o nmap usualmente não imprime portas "não filtradas", obtendo, assim, nenhuma porta mostrada na saída é usualmente um sinal que todos os testes foram suscedidos (e retornado RSTs). Esta técnica de scan nunca irá, obviamente, mostrar portas no estado "aberto".

-sW Window scan: Este scan avançado é muito similar ao ACK scan, exceto que as vezes pode ser possível detectar portas abertas mesmo sendo filtradas, isso devido a anomalia do tamanho da janela TCP reportado por vários sistemas operacionais. Sistemas vulneráveis para isso incluem no mínimo várias versões do AIX, Amiga, BeOS, BSDI, Cray, Tru64 UNIX, DG/UX, OpenVMS, Digital UNIX, FreeBSD, HP-UX, OS/2, IRIX, MacOS, NetBSD, OpenBSD, OpenStep, QNX, Rhapsody, SunOS 4.X, Ultrix, VAX, and VxWorks. Vejam no arquivo, na lista de discussão nmap-hackers, a lista completa.

-sR RPC scan. Este método trabalha em combinação com várias técnicas de scan de portas do Nmap. Ele pega todas as portas TCP/UDP encontradas abertas e inunda elas com comandos NULL de programas SunRPC numa tentativa de determinar quando elas são portas RPC, e se são, qual programa e versão dos serviços. Com este método você pode efetivamente obter a mesma informação como se usasse 'rpcinfo -p' mesmo se o portmapper alvo estiver atrás de um firewall (ou protegido pelo TCP wrappers). Decoy não trabalha correntemente com RPC scan, em algum ponto eu posso adicionar o suporte decoy para UDP RPC scans.

-b <ftp relay host>
    FTP bounce attack: Uma interessante "característica" do protocolo ftp (RFC 959) é sustentada para conexões ftp "proxy". Em outras palavras, eu devo ser capaz de conectar do evil.com para um servidor FTP, target.com, e requerer que o servidor envie um arquivo para qualquer lugar na internet! Isto pode ter sido explorado bem em 1985 quando a RFC foi escrita. Porém na internet hoje, nós não podemos ter pessoas hijacking servidores ftp e requisitando que os dados sejam jogados para arbitrários pontos na internet. Como *Hobbit* escreveu em 1995, este protocolo torna inútil "pode ser usado para portar virtualmente não determináveis emails ou news, forjando em servidores vários sites, preenchendo discos, tentando saltar firewalls, e geralmente sendo aborrecido, ficando, assim, difícil seguir a pista ao mesmo tempo." O que nós iremos explorar disto é o scan de portas TCP do servidor "proxy" de ftp. Então você pode conectar a um servidor ftp atrás do firewall, e então scannear portas que estão mais provávelmente bloqueadas (139 é uma boa). Se o servidor ftp permitir ler de e escrever para algum diretório (como /incoming), você pode enviar dados arbitrários para portas que você achar abertas (nmap não faz isso por você).

    Os argumentos passados para a opção 'b' é o host que você quer usar como proxy, na notação de padrão URL. O formato é: username:password@server:port. Tudo, menos o server é opcional. Para determinar quais servidores são vulneráveis para este ataque, você pode ver meu artigo em Phrack 51. A versão atualizada está disponível em nmap URL (http://www.insecure.org/nmap).

OPÇÕES GERAIS
    Nenhuma destas são requeridas, porém algumas podem ser absolutamente proveitosas.

-P0 Pinga os hosts antes de scanneá-los. Isto permite scannear as redes que não permitem ICMP echo requests (ou responses) através dos seus firewalls. microsoft.com é um exemplo desta rede, e então você deve sempre usar -P0 ou -PT80 quando portscanning microsoft.com.

-PT Use TCP "ping" para determinar quais hosts estão ativos. Ao invez de enviar pacotes ICMP echo request e esperar pelas respostas, nós enviamos pacotes TCP ACK por toda parte na rede alvo (ou para uma simples máquina) e então esperamos por respostas. Hosts que estão ativos devem responder com um RST. Esta opção preserva a eficiência de somente scannear hosts que estão ativos, enquanto ainda permite scannear redes/hosts que bloquearam pacotes ping. Para usuários não root, é usado o connect(). Para setar a porta destino dos pacotes de teste usem -PT<número da porta>. A porta default é 80, desde que está porta é muitas vezes não filtrada.

-PS Está opção usa pacotes com SYN (connection request) ao invez de pacotes com ACK para usuários root. Hosts que estão ativos devem responder com RST (ou, raramente, um SYN|ACK).

-PI Está opção usa um pacote ping verdadeiro (ICMP echo request). Esta encontra os hosts que estão ativos e também procura por um endereço de broadcast para a subrede da sua rede. Estes são endereços IPs que são externamente alcançáveis e traduzidos para broadcast de pacotes IP de chegada para uma subrede de computadores. Estes devem ser eliminados se encontrado, como ele permitem por numerosos ataques de negação de serviço (DoS) (Smurf é o mais comum).

-PB Este é o tipo de ping default. Ele usa tanto pacotes com ACK ( -PT ) e pacotes ICMP ( -PI ) sweeps em paralelo. Desta maneira você pode obter os firewalls que filtram cada uma (porém não ambas).

-O  Esta opção ativa a identificação de hosts remotos via TCP/IP fingerprinting. Em outras palavras, ela usa uma grande quantidade de técnicas para detectar sutilezas na pilha de rede do sistema operacional do computador que você está scanneando. Ele usa estas informações para criar a 'fingerprint' a qual é comparada com sua base de dados de conhecidos fingerprints de SOs (o arquivo nmap-os-fingerprints) para decidir qual o tipo de sistema que você está escanneando.

    Se o Nmap está desabilitado para resolver o SO da máquina, e as condições são boas (ex. ao menos uma porta aberta), Nmap irá prover a URL que você pode usar para submeter a fingerprint se você conhecer (com certeza) o SO sendo executado na máquina. Por fazer isso você contribui para o conjunto de sistemas operacionais conhecidos pelo nmap e então será mais correto para todos.

    A opção -O também possibilita classificar e fazer o prognostico da sequência TCP. Esta é uma medida que descreve aproximadamente qual a dificuldade em estabelecer uma conexão TCP forjada contra um host remoto. Esta é útil para explorar o IP de origem baseado na relação de confiança (rlogin, firewall filters, etc) ou por esconder a origem do ataque. O número difficulty mostrado é baseado em uma simples amostra estatística e pode variar. Este número é geralmente melhor apresentado como uma frase em Inglês como "worthy challenge" ou "trivial joke".

-I  Esta ativa o scanning do ident reverso TCP. Como notado por Dave Goldsmith em 1996 na mensagem para a Bugtraq, o protocolo ident (rfc 1413) permite revelar o username dos donos dos processos conectados via TCP, mesmo se estes processos não iniciaram a conexão. Então você pode, por exemplo, conectar a porta http e então usar o identd para encontrar quando o servidor está sendo executado como root. Isto pode somente ser feito com uma conexão TCP completa para a porta alvo (ex.: a opção de scanning -sT). Quando -I é usada, o identd do host remoto é pesquisado para cada porta aberta encontrada. Obviamente isso não funciona se o host não estiver rodando o identd.

-f  Esta opção requere os flags SYN, FIN, XMAS, ou NULL scan para usar cuidadosos pacotes IP fragmentados. A idéia é dividir o cabeçalho TCP sobre vários pacotes para ficar difícil para o filtro de pacotes, sistemas de detecção de intrusão, e outros aborrecimentos para detectar o que você está fazendo. Seja cuidadoso com isso! Vários programas tem preocupações lidando com estes cuidadosos pacotes. Enquanto este método não obtem pacotes filtrados e firewalls que enfileram todos os fragmentos IP (como a opção CONFIG_IP_ALWAYS_DEFRAG no kernel do linux), várias redes não conseguem assegurar o golpe de performance que este fato causa, então é melhor deixar este desabilitado.

    Note que esta opção, ainda, não esta funcionando em todos os sistemas. Esta funciona bem para o Linux, FreeBSD, e OpenBSD e outras pessoas tem reportado sucessos com outras variações *NIX.

-v  Modo Verbose. Esta é uma opção altamente recomendada e fornece mais informações sobre o que esta acontecendo. Você pode usá-la duas vezes para um melhor efeito. Use -d em conjunto se você realmente quiser ficar louco com a quantidade de informações na tela!

-h  Esta cômoda opção mostra uma rápida tela de referência das opções usadas no nmap. Como você deve ter notado, está man page não é exatamente uma 'rápida referência' :o)

-oN <logfilename>
    Este log mostra o resultado do seu scan em uma forma humanamente legível no arquivo que você especificou como argumento.

-oX <logfilename>
    Este log mostra o resultado do seu scan na forma de XML no arquivo que você especificou como argumento. Isto permite aos programas facilmente capturar e interpretar os resultados do Nmap. Você pode fornecer o argumento '-'(sem quotas) para colocar em uma stdout (para shell pipelines, etc). Neste caso uma saída normal será suprimida. Tomar cuidado para as mensagem de erro se você esta usando esta (elas, ainda, irão para stderr). Também, note que '-v' pode causar algumas informações extras para ser impressas.

-oG <logfilename>
    Este log mostra o resultado do seu scan na forma do grepable no arquivo que você especificou como argumento. Este simples formato provê todas as informações em uma linha (então você pode facilmente usar o grep para portas ou obter informações de SOs e ver todos os endereços IPs). Este é o mecanismo preferido pelos programas para interagir com o Nmap, porém agora é recomendado usar a saída em XML (-oX). Este simples formato pode não conter tantas informações quanto os outros formatos. Você pode fornecer o argumento '-'(sem quotas) para colocar em uma stdout (para shell pipelines, etc). Neste caso uma saída normal será suprimida. Tomar cuidado para as mensagem de erro se você esta usando esta (elas, ainda, irão para stderr). Também, note que '-v' irá fornecer várias informações extras para ser impressas.

-oS <logfilename>
    thIs l0gz th3 r3suLtS of YouR ScanZ iN a s|<ipT kiDd|3 f0rM iNto THe fiL3 U sPecfy 4s an arGuMEnT! U kAn gIv3 the 4rgument '-' (wItHOUt qUOteZ) to sh00t output iNT0 stDouT!@!!

--resume <logfilename>
    O scan de rede que é cancelado devido a um control-C, interrupção da rede, etc. pode ser resumido usando esta opção. O logfilename precisa ser normal (-oN) ou parsable na máquina (-oM) para registrar o scan abortado. Nenhuma outra opção pode ser usada. Nmap começará na máquina depois que a última foi scanneada com sucesso e armazenada no arquivo de log.

-iL <inputfilename>
    É feita a leitura de um arquivo alvo especificado na linha de comando. O arquivo deve conter uma lista de hosts ou expressões de rede separados por espaços, tabs, ou novas linhas. Use o hífen (-) como inputfilename se você quisesse que o nmap leia expressões do hosts de stdin (como no final do pipe). Veja a seção especificação do alvo para maiores informações nas expressões que você preencherá no arquivo.

-iR Esta opção fala para o Nmap para gerar seus próprios hosts para scannear, usando simplesmente números randomicos :o). Isso nunca irá terminar. Isso pode ser muito útil para tirar amostras estatísticas da internet para estimar várias coisas. Se você nunca estiver realmente entediado, tente nmap -sS -iR -p 80 para encontrar vários servidores web para observar.

-p <port ranges>
    Esta opção especifica quais portas você quer para descrever. Por exemplo '-p 23' irá tentar somente a porta 23 do host(s) alvo. '-p 20-30,139,60000-' irá scannear portas entre 20 e 30, porta 139, e todas as portas maiores que 60000. Por definição é para scannear todas as portas entre 1 e 1024 tão bem quanto qualquer porta listada no arquivo de serviços o qual vem com o nmap. Para o scan de protocolos IP (-sO), especifica o número do protocolo que você deseja para (0-255).

-F Modo de scan rápido.
    Especifica que você somente deseja scannear por portas catalogadas no arquivo services o qual vem com o nmap (ou o arquivo de protocolos para -sO). Este é obviamente muito mais rápido do que scannear todas 65535 portas no host.

-D <decoy1 [,decoy2][,ME],...>
    O processo de decoy scan será executado fazendo ele mostrar-se para o host remoto que o(s) host(s) que você especificou como decoys estão scanneando a rede alvo também. Então seus IDS precisarão reportar 5-10 scan de portas de um único endereço IP, porém eles não saberão qual o endereço IP que os estava scanneando e quais eram os decoys inocentes. Enquanto isto pode ser descoberto através de uma rota, respostas soltas, e outras mecanismos ativos, este é geralmente uma técnica extremamente efetiva para esconder seu endereço IP.

    Separando cada decoy host com vírgulas, você pode usar opcionalmente 'ME' como um dos decoys para representar a posição que você quer seu endereço IP para ser usado. Se você colocar 'ME' na sexta posição ou outra maior, várias detectores comuns de scan de portas não serão razoáveis para mostrar seu endereço IP por completo. Se você não usar 'ME', o nmap irá colocar você em uma posição randomica.

    Note que os hosts que você usa como decoys devem estar ativos ou você precisará acidentalmente inundar com pacotes SYN seu alvo. Também, ele será muito fácil para determinar quais hosts estão scanneando se somente um está atualmente ativo na rede. Você deverá querer usar o endereço IP ao invez de nomes (então redes decoy não irão ver você em seus nameserver logs).

    Também, note que vários (estúpidos) "detectores de scan de portas" irão firewall/deny roteamento para hosts que tentam fazer o scan de portas. Então você precisa descuidadosamente causar a perda de conexão da máquina que você está scanneando com a máquina decoy que você esta usando. Isto pode causar maiores problemas para a máquina alvo se o decoy está sendo usado, digo, seu internet gateway ou até "localhost". Então você pode querer ser cuidadoso com esta opção. A real moral da história é que os detectores de scan de portas spoofable não devem gastar ações contra a máquina que parece estar scanneando suas portas. Este pode ser somente um decoy, ou seja, uma isca, uma armadilha!

    Decoys são usados tanto em ping scan inicial (usando ICMP, SYN, ACK, ou o que seja) e durante a fase de atual scanneamento de porta. Decoy são também usados durante a detecção remota de SO ( -O ).

    Este é um digno registrador que usa vários decoys que podem atrasar seu scan e potencialmente até fazer este menos preciso. Também, vários ISPs filtram pacotes spoofed, embora vários (correntemente a maioria) não restrigem pacotes IP spoofed por inteiro.

-S <IP_Address>
    Em várias circunstâncias, nmap pode não ser capaz de determinar seu endereço de origem ( nmap irá avisá-lo se este é o caso). Nesta situação, use -S com seu endereço IP (através da interface que você deseja enviar pacotes).

    Outro possível uso deste flag é para spoofar o scan para fazer o alvo pensar que alguém mais está scanneando. Imagine uma companhia sendo repetidamente port scanned pelo seu competidor! Este não é um uso suportado (ou o principal propósito) deste flag. Eu penso somente que isso levanta uma interessante discussão, em que as pessoas devem estar cientes antes que elas acusem outras pessoas de estar scanneando suas portas. -e geralmente será requerida para este tipo de uso.

-e <interface>
    Fala para o nmap qual interface enviar e receber pacotes. Nmap deve ser capaz de detectar isto, porém este contará para você se não puder.

-g <portnumber>
    Conjunto de números de portas de origens usadas no scan. Vários ingênuos firewalls e filtros de pacotes instalados fazem uma exceção em seus conjuntos de regras para permitir pacotes DNS (53) ou FTP-DATA (20) para entrar e estabelecer a conexão. Obviamente isto contesta completamente as vantagens de segurança do firewall desde que intrusos podem somente mascarar como FTP ou DNS por modificar suas portas de origem. Obviamente para UDP scan você deve tentar 53 primeiro e TCP scans devem tentar 20 antes da porta 53. Note que isso é somente uma requisição -- nmap honrará isso somente quando esta estiver hábil para. Por exemplo, você não pode amostrar todo TCP ISN de um host:porta para um host:porta, então nmap muda a porta de origem mesmo que seja usado -g.

    Seja ciente que existe uma penalidade na performance em vários scans por usar esta opção, porque eu algumas vezes armazeno informações úteis no número da porta de origem.

-r  Fala para o Nmap para NÃO randomizar a ordem na qual as portas serão scanneada.

--randomize_hosts
    Fala para o Nmap para embaralhar cada grupo acima de 2048 hosts antes de scanneá-los. Isto pode fazer o scan menos evidente para vários sistemas de monitoração de rede, especialmente quando você combina estes com as opções de baixo tempo (slow timing) (veja abaixo).

-M <max sockets>
    Conjunto máximo de números de sockets que será usado em paralelo pelo TCP connect() scan (por definição). Esta é útil para diminuir um pouco o scan e anular a possibilidade de travar a máquina remota. Outra aproximação é para usar -sS, a qual é geralmente fácil para as máquinas descreverem.

OPÇÕES DE TEMPO
    Geralmente o Nmap faz um bom trabalho em ajustar para as características da rede um tempo de execução e scanning tão rápido quanto possível enquanto minimiza as chances do hosts/portas serem não detectadas. Entretanto, existem vários casos onde a política de tempo default do Nmap pode não encontrar seus objetivos. As seguintes opções provêem um fino nível de controle sobre o tempo de scan:

-T <Paranoid|Sneaky|Polite|Normal|Aggressive|Insane>
    Estas são políticas de tempo preservados para convenientemente expressar suas prioridades para o Nmap. Paranoid modo de scan muito lento na esperança de prevenir a detecção pelo sistema IDS. Este serializa todos os scans (scanning não paralelo) e geralmente espera no mínimo 5 minutos entre o envio de pacotes. Sneaky é similar, exceto que somente espera 15 segundos entre o envio de pacotes. Polite tem o significado para facilitar a carga na rede e reduzir as chances de travar a máquina. Ele serializa os testes e espera no mínimo 0.4 segundos entre eles. Normal é o comportamento default do Nmap, o qual tenta executar tão rápido quanto possível sem sobrecarregar a rede ou perder hosts/portas. Aggressive esse modo adiciona um timeout de 5 minutos por host e nunca espera mais que 1.25 segundos para testar as respostas. Insane é somente adequando para redes muito rápidas ou onde você não se importa em perder algumas informações. Nesta opção o timeout dos hosts acontecem em 75 segundos e espera somente 0.3 segundos por teste individual. Esta possibilita, de qualquer forma, uma varredura extremamente rápida na rede :o). Você pode também referenciar isso por números (0-5). Por exemplo, '-T 0' fornece para você o modo Paranoid e '-T 5' é o modo Insane.

    Estes modos, para preservar o tempo, NÃO devem ser usados em combinação com controles de baixo nível, como os fornecidos abaixo.

--host_timeout <milliseconds>
    Especifica a soma de tempo que o Nmap permite para gastar scanneando um simples host antes de desistir daquele IP. O modo de tempo default não tem o timeout do host.

--max_rtt_timeout <milliseconds>
    Especifica a soma máxima de tempo do Nmap tem permitido para esperar pela resposta de teste antes de retransmitir ou ocorrer um timeout de um particular teste. O modo default seta este valor em 9000.

--min_rtt_timeout <milliseconds>
    Quando um host alvo começa a estabelecer um padrão de resposta muito rápido, Nmap irá contrair a soma de tempo fornecida por teste. Isto aumenta a velocidade do scan, porém pode levar a perder pacotes quando a resposta gasta mais tempo que o usual. Com este parâmetro você pode garantir que o Nmap irá esperar ao menos a soma de tempo fornecida antes de abrir mão do teste.

--initial_rtt_timeout <milliseconds>
    Especifica o timeout do teste inicial. Isto é geralmente útil quando scanning firewalled hosts com -P0. Normalmente o Nmap pode obter boas estimativas RTT do ping e dos primeiros testes. O modo default usa 6000.

--max_parallelism <number>
    Especifica o número máximo de Nmap scans permitidos para serem performados em paralelo. Ajustando este para 1 significa que o Nmap nunca irá tentar scannear mais que uma porta por vez. Este, também, afeta outros scans paralelos como o ping sweep, RPC scan, etc.

--scan_delay <milliseconds>
    Especifica a mínima soma de tempo que o Nmap precisa esperar entre testes. Este é, na maioria das vezes, útil para reduzir a carga da rede ou para diminuir a maneira de scan para esquivar-se do IDS.

ESPECIFICAÇÃO DO ALVO
Tudo que não é uma opção (ou argumento de opção) no nmap é tratado como especificação do host alvo. No caso mais simples são registrados simples hostnames ou endereços IPs na linha de comando. Se você quiser scannear uma subrede de endereços IPs, você pode anexar '/mask' para o hostname ou endereço IP. mask precisa estar entre 0 (faz o scan de toda internet) e 32 (faz o scan de um simples host especificado). Use /24 para scannear a classe de endereço 'C' e /16 para a classe de endereço 'B'.

Nmap, também, tem a mais poderosa notação a qual permite você especificar um endereço IP usando uma lista/fileira para cada elemento. Então você pode scannear todo o endereço classe 'B' da rede 192.168.*.* especificando '192.168.*.*' ou '192.168.0-255.0-255' ou até '192.168.1-50,51-255.1,2,3,4,5-255'. E é claro, você pode usar a notação de máscara: '192.168.0.0/16'. Estes todos são equivalentes.

Outra coisa interessante para fazer é dividir em pedaços a Internet de outra maneira. Ao invez de scannear todos os hosts da classe 'B', scan '*.*.5.6-7' com o objetivo de explorar todos os endereços IPs que terminam em .5.6 ou .5.7 escolhendo seus próprios números. Para mais informações dos hosts específicos para scannear, veja a seção de exemplos.

EXEMPLOS
Aqui existem vários exemplos de uso do nmap, do simples e normal para um pouco mais complexo/esotérico. Note que números atuais e vários nomes de domínios atuais são usados para tornar as coisas mais concretas. Em seus lugares você deve substituir por endereços/nomes da sua própria rede. Eu não penso que scannear portas de outras rede é ilegal; nem deve o scanneamento de portas ser feito por outros como um ataque. Eu tenho scanneado centenas de milhares de máquinas e tenho recebido somente uma reclamação. Porém eu não sou advogado e alguma pessoa pode estar irritado pelos testes do nmap

nmap -v target.example.com

Esta opção faz o scan de todas as portas TCP reservadas na máquina target.example.com. A opção -v significa ligar o modo verbose.

nmap -sS -O target.example.com/24

Lança um stealth SYN scan contra cada máquina que está ativa, abrangendo todas as 255 máquinas de classe 'C' onde target.example.com reside. Este exemplo, também, tenta determinar o sistema operacional que esta executando em cada host que esta ativo. Este requere privilégios de root (super usuário) por causa da técnica SYN scan e da detecção de SOs.

nmap -sX -p 22,53,110,143,4564 198.116.*.1-127

Envia um Xmas tree scan para a primeira metade de cada uma das 255 possibilidades de subredes de 8 bit no espaço de endereços classe 'B' em 198.116. Nós estamos testando quando o sistema executa sshd, DNS, pop3d, imapd, ou a porta 4564. Note que o Xmas scan não trabalha com a Microsoft devido a sua deficiente pilha TCP. O mesmo acontece com CISCO, IRIX, HP/UX, e BSDI.

nmap -v --randomize_hosts -p 80 '*.*.2.3-5'

Em lugar de focar somente um específico IP, é interessante, algumas vezes, abranger um fatia de toda a internet e fazer o scan de um pequena amostra de cada fatia. Este comando encontra todos os servidores web em máquinas com endereços IPs terminando em .2.3, .2.4, ou .2.5. Se você é super usuário (root) você pode adicionar -sS. Também, você irá encontrar mais máquinas interessantes começando com 127., então você pode querer usar '127-222' ao invez dos primeiros asterísticos porque essa parte tem uma alta densidade de máquinas interessantes (IMHO).

host -l company.com | cut '-d ' -f 4 | ./nmap -v -iL -

Fazer uma transferência de zona de DNS para encontrar hosts em company.com e então alimentar os endereços IPs para o nmap. Os comandos acima são para minha caixa GNU/Linux. Você pode precisar de diferentes comandos/opções em outros sistemas operacionais.

BUGS
Bugs? O que é bugs? Envie-me os bugs que você encontrar. Patches são uma boa também :o) Lembrem-se de, também, enviar novos SO fingerprints para que possamos aumentar nossa base de dados. O Nmap irá fornecer para você uma URL de submissão quando um apropriado fingerprint for encontrado.

AUTOR

Fyodor <fyodor@insecure.org>

TRADUTOR

Antônio Pires de Castro Jr <apcastro@ic.unicamp.br>; <apcastro@ondefor.com.br> Texto traduzido em 17 de Outubro de 2000.

NOTA DO TRADUTOR

Esta tradução foi realizada usando a man page oficial do nmap (NMAP 2.54BETA7), e não possui nenhum compromisso com www.insecure.org. Este trabalho foi realizado pela livre e expontânea vontade do tradutor. Qualquer correção desta pode ser feita enviando um email para o tradutor.

DISTRIBUIÇÃO
A mais nova versão do nmap pode ser obtida em http://www.insecure.org/nmap/

nmap
 (C) 1997,1998,1999,2000 por Fyodor (fyodor@insecure.org)

libpcap é, também, distribuída junto com nmap. Esta é uma copyrighted por Van Jacobson, Craig Leres and Steven McCanne, todos do Laboratório Nacional de Lawrence em Berkeley, University of California, Berkeley, CA. A versão distribuída com o nmap pode ser modificada, a fonte original está disponível em ftp://ftp.ee.lbl.gov/libpcap.tar.Z .

Este programa é um software livre; você pode redistribuí-lo e/ou modificá-lo sobre os termos da Licença Pública Geral GNU como publicado pelo Free Software Foundation; Versão 2. Esta garante seu direito de usar, modificar e redistribuir o Nmap sobre certas condições. Se esta licença for inaceitável para você, o Insecure.Org pode estar querendo negociar alternativas licenças (entre em contato com fyodor@insecure.org).

O código de origem é fornecido para este software porque nós acreditamos que os usuários tem o direito de conhecer exatamente qual o programa ele irá usar antes de executá-lo. Isto, também, permite você auditar o software para furos de segurança (nenhum foi encontrado).

O código de origem também permite você portar o Nmap para novas plataformas, consertar bugs, e adicionar novas características. Você esta altamente encorajado para enviar suas mudanças para fyodor@insecure.org para possíveis encorporações em sua principal distribuição. Por enviar estas mudanças para Fyodor ou uma das listas de discussão dos desenvolvedores insecure.org, será assumido que você está oferecendo nenhum limite a Fyodor, não-exclusivo direito de reusar, modificar, e relicenciar o código. Isto é importante por causa da incapacidade para relicenciar códigos, isso tem causado devastadores problemas para outros projetos de software livres (como KDE e NASM). O código fonte do Nmap sempre estará disponível. Se você desejar especificar especiais condições de licença das suas contribuições, somente diga quando você as enviar.

Este programa é distribuído na esperança de ser útil, porém SEM NENHUMA GARANTIA; sem mesmo implicar garantia de COMERCIABILIDADE ou ADAPTAÇÃO PARA UM PROPÓSITO PARTICULAR. Veja a Licença Pública Geral GNU por mais detalhes (esta está no arquivo COPYING da distribuição do nmap ).

Também deve ser notado que o Nmap tem sido conhecido por travar certas aplicações pobremente escritas, pilhas TCP/IP, e mesmo certos sistemas operacionais. O Nmap nunca deve ser executado contra sistemas críticos de missão ao menos que você esteja preparado para sofrer com o tempo ocioso. Nós reconhecemos aqui que o Nmap pode travar seu sistema ou rede e nós renunciamos todas responsabilidades por qualquer dano ou problemas que o Nmap possa causar.

Por menosprezar os riscos de travar e por causa de vários usuários malíciosos gostarem de usar o Nmap para fazer o levantamento topológico da rede antes de atacar o sistema, existem administradores que estão preocupados e podem reclamar quando seus sistemas são scanneados. Por isso, é muitas vezes conveniente requerer permissão antes de fazer, mesmo que seja, um simples scan na rede.

O Nmap nunca deve ser executado com privilégios (ex.: suid root) por razões de segurança.

Todas as versões do Nmap igual á ou maiores que 2.0 são acreditadas não ter problemas, em todos os aspectos, com o bug do ano 2000 (Y2K). Porém, não existe razão para acreditar que versões anteriores a 2.0 são susceptíveis a problemas, porém nós não as testamos.