NMAP(1) Guia de Referencia do Nmap NMAP(1) NOME nmap - Ferramenta de exploracao de Rede e Rastreio de Seguranca / Portas SINOPSE nmap [Tipo de Rastreio(Scan)...] [Opcoes] {Especificacao do Alvo} DESCRICAO O Nmap ("Network Mapper") e uma ferramenta em codigo aberto para exploracao de rede e auditoria de seguranca. Foi desenhada para rastrear(Scan) rapidamente redes amplas contudo funciona bem com um unico anfitriao(host). Nmap usa pacotes IP em estado bruto(raw) sobre novas formas para determinar que anfitrioes(hosts) estao disponiveis na rede, que servicos (nome e versao da aplicacao) esses anfitrioes(hosts) estao disponibilizando, que sistemas operativos (e versoes de SO) estao em uso, que tipo de filtros de pacotes/firewalls estao em uso e dezenas de outras caracteristicas. Enquanto o Nmap e frequentemente usado para auditorias de seguranca, muitos sistemas e administradores de redes consideram-no util para as tarefas de rotina como o inventario da rede, gestao de actualizacoes de servicos e monitorizar o uptime de anfitrioes ou servicos. A saida do Nmap e uma lista de alvos rastreados(scanned) com informacoes adicionais de cada um dependendo das opcoes utilizadas. Uma informacao chave e a "tabela de portas interessantes". Essa tabela lista o numero da porta e o protocolo, o nome do servico e o estado. O estado pode ser aberto (open), filtrado (filtered), fechado (closed), ou nao-filtrado (unfilterd). Aberto (open) significa que uma aplicacao na maquina-alvo esta escutando as conexoes/pacotes nessa porta. Filtrado (filtered) significa que o firewall, filtro ou outro obstaculo de rede esta bloqueando a porta de forma que o Nmap nao consegue dizer se ela esta aberta (open) ou fechada (closed). Portas fechadas (closed)nao possuem uma aplicacao escutando nelas embora possam abrir a qualquer instante. Portas sao classificadas como nao filtradas (unfiltered)quando elas respondem as sondagens do Nmap mas o Nmap nao consegue determinar se as portas estao abertas ou fechadas. O Nmap reporta as combinacoes aberta|filtrada (open|filtered)e fechada|filtrada (closed|filtered)quando nao consegue determinar qual dos dois estados descrevem melhor a porta. A tabela de portas tambem pode incluir detalhes de versao de software quando a deteccao de versao for solicitada. Quando um rastreio(scan) do protocolo IP e solicitado (-sO) o Nmap fornece informacoes dos protocolos IP suportados ao inves de portas que estejam abertas. Alem da tabela de portas interessantes o Nmap pode fornecer informacoes adicionais sobre os alvos, incluindo nomes de DNS reverso, suposicoes de sistema operativo, tipos de dispositivos e enderecos MAC. Um rastreio(scan) tipico do Nmap e mostrado em Exemplo 1, "Uma amostra de rastreio(scan) do Nmap". Os unicos argumentos que o Nmap utiliza nesse exemplo sao -A para permitir a deteccao de SO e a versao -T4 para execucao mais rapida e os nomes de anfitriao(hostnames) de dois alvos. Exemplo 1. Uma amostra de rastreio(scan) do Nmap # nmap -A -T4 scanme.nmap.org playground Starting nmap ( https://nmap.org/ ) Interesting ports on scanme.nmap.org (205.217.153.62): (The 1663 ports scanned but not shown below are in state: filtered) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 3.9p1 (protocol 1.99) 53/tcp open domain 70/tcp closed gopher 80/tcp open http Apache httpd 2.0.52 ((Fedora)) 113/tcp closed auth Device type: general purpose Running: Linux 2.4.X|2.5.X|2.6.X OS details: Linux 2.4.7 - 2.6.11, Linux 2.6.0 - 2.6.11 Uptime 33.908 days (since Thu Jul 21 03:38:03 2005) Interesting ports on playground.nmap.org (192.168.0.40): (The 1659 ports scanned but not shown below are in state: closed) PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn 389/tcp open ldap? 445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds 1002/tcp open windows-icfw? 1025/tcp open msrpc Microsoft Windows RPC 1720/tcp open H.323/Q.931 CompTek AquaGateKeeper 5800/tcp open vnc-http RealVNC 4.0 (Resolution 400x250; VNC TCP port: 5900) 5900/tcp open vnc VNC (protocol 3.8) MAC Address: 00:A0:CC:63:85:4B (Lite-on Communications) Device type: general purpose Running: Microsoft Windows NT/2K/XP OS details: Microsoft Windows XP Pro RC1+ through final release Service Info: OSs: Windows, Windows XP Nmap finished: 2 IP addresses (2 hosts up) scanned in 88.392 seconds A versao mais nova do Nmap pode ser obtida em https://nmap.org/. A versao mais nova da pagina man esta disponivel em https://nmap.org/man/. SUMARIO DAS OPCOES Este sumario de opcoes e mostrado quando o Nmap e executado sem argumentos e a ultima versao esta sempre disponivel em https://nmap.org/data/nmap.usage.txt. Ele ajuda as pessoas a lembrar-se das opcoes mais comuns mas nao substitui a documentacao mais tecnica do restante deste manual. Algumas opcoes mais obscuras nem estao aqui incluidas. Synopsis: nmap [Tipo(s) de Rastreio(Scan)] [Opcoes] {especificacao do alvo} ESPECIFICACAO DO ALVO: Pode-se usar nomes de anfitrioes(hostnames), Enderecos IP, redes, etc. Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0-255.0-255.1-254 -iL : Entrada(Input) de listas de anfitrioes(hosts)/redes -iR : Escolher alvos aleatoriamente --exclude : Excluir anfitrioes(hosts)/redes --excludefile : Lista de exclusoes de um ficheiro DESCOBERTA DE ANFITRIOES(HOSTS): -sL: List Scan - lista simplesmente os alvos para efectuar o rastreio(scan) -sP: Ping Scan - apenas determnina se o anfitriao esta online -P0: Considera todos os anfitrioes como online -- salta a descoberta de anfitrioes -PS/PA/PU [portlist]: rastreio de descoberta TCP SYN/ACK ou UDP para determinadas portas -PE/PP/PM: Rastreio(scan) de descoberta ICMP echo, timestamp, and netmask request -n/-R: Nunca resolver/Resolver sempre nomes de DNS [default: resolver algumas vezes] TECNICAS DE SCAN: -sS/sT/sA/sW/sM: Rastreios(Scans) TCP SYN/Connect()/ACK/Window/Maimon -sN/sF/sX: Rastreios(Scans) TCP Null, FIN, and Xmas --scanflags : Customizar as TCP scan flags -sI : Idlescan -sO: Rastreio(Scan) de protocolo IP -b : FTP bounce scan ESPECIFICACAO DO PORTO E ORDEM DE RASTREIO: -p : Apenas efectuar o rastreio(scan) de portas especificas Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080 -F: Rapido - Efectua o rastreio(Scan) apenas das portas especificadas no ficheiro nmap-services -r: Efectuar o rastreio(Scan) das portas consecutivas e nao aleatoriamente DETECCAO DO SERVICO/VERSAO: -sV: Rastrear(scan) portas abertas para determinar a informacao sobre o servico/versao --version-light: Limitar aos rastreios mais provaveis para identificacao mais rapida --version-all: Experimentar todos os rastreios para detectar a versao --version-trace: Mostrar detalhadamente a actividade do rastreio(scan) da versao (para debugging) DETECCAO DO SO: -O: Permite a deteccao do SO --osscan-limit: Limitar a deteccao de SO aos alvos promissores --osscan-guess: Efectuar o rastreio do SO de forma mais agressiva TIMING AND PERFORMANCE: -T[0-6]: Ajustar o tempo do modelo(template) (maior e mais rapido) --min-hostgroup/max-hostgroup : Tamanho dos grupos de rastreio(scan) de anfitriao(host) paralelo --min-parallelism/max-parallelism : Rastreio paralelismo --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout : Ajustar o tempo de retorno do rastreio. --host-timeout : Desistir de um alvo apos este tempo --scan-delay/--max-scan-delay : Ajustar esperas entre rastreios FIREWALL/IDS EVASAO E DISFARCE(SPOOFING): -f; --mtu : fragmentar pacotes (opcional com dado MTU) -D : Disfarca um rastreio(scan) com iscos -S : Disfarcar(Spoof) endereco de origem -e : Usar um interface especifico -g/--source-port : Usar um determinado numero de porta --data-length : Acrescentar dados aleatorios aos pacotes enviados --ttl : Ajustar o campo IP TTL tempo-de-vida --spoof-mac : Disfarcar(Spoof) o endereco MAC SAIDA(OUTPUT): -oN/-oX/-oS/-oG : Retorna os resultados do rastreio(scan) em XML normal, s|: Saida(Output) nos tres formatos principais -v: Aumenta o nivel de informacao apresentada(verbosity) (usar 2x para aumentar o efeito) -d[level]: Ajusta o nivel de debugging (Ate 9 e significativo) --packet-trace: Mostra todos os pacotes enviados e recebidos --iflist: Mostra os interfaces do anfitriao e rotas (para debugging) --append-output: Acrescenta, em vez de destruir/substituir, ficheiros de resultados --resume : Continuar um rastreio cancelado(aborted) --stylesheet : A XSL stylesheet para transformar retorno(output) XML para HTML --no-stylesheet: Impedir que o Nmap de associar a XSL stylesheet com retorno(output) XML OUTROS(MISC): -6: Permitir rastreio(scanning) IPv6 -A: Permitir deteccao do SO e versao --datadir : Especifica a localizacao do ficheiro de dados personalizado do Nmap --send-eth/--send-ip: Enviar pacotes utilizando "raw ethernet frames" ou pacotes IP --privileged: Assume que o utilizador possui os previlegios necessarios -V: Mostra a versao -h: Mostra esta pagina de sumario de ajuda EXEMPLOS: nmap -v -A scanme.nmap.org nmap -v -sP 192.168.0.0/16 10.0.0.0/8 nmap -v -iR 10000 -P0 -p 80 ESPECIFICACAO DE ALVO Tudo na linha de comando do Nmap que nao for uma opcao (ou argumento de uma opcao) e tratado como uma especificacao de um anfitriao (host)-alvo. O caso mais simples e especificar um endereco IP como alvo ou um nome de anfitriao(hostname) para ser rastreado(scaned). Algumas vezes pode querer efectuar o rastreio(scan) de uma rede inteira de anfitrioes(hosts) adjacentes. Para isso o Nmap suporta o estilo de enderecamento CIDR. Pode acrescentar /numerodebits em um endereco ou hostname e o Nmap ira efectuar o rastreio(scan) de cada endereco IP para o qual os primeiros numerosdebits sejam o mesmo que o IP de referencia ou o hostname dado. Por exemplo, 192.168.10.0/24 escanearia os 256 hosts entre 192.168.10.0 (binario: 11000000 10101000 00001010 00000000) e 192.168.10.255 (binario: 11000000 10101000 00001010 11111111), inclusive. 192.168.10.40/24 faria exatamente a mesma coisa. Dado que o afitriao(host) scanme.nmap.org esta no endereco IP 205.217.153.62, a especificacao scanme.nmap.org/16 efectuaria o rastreio(scan) dos 65.536 enderecos IP entre 205.217.0.0 e 205.217.255.255. O menor valor permitido e /1, que equivale ao rastreio(scan) de metada da Internet. O maior valor e 32, que faz o rastreio(scan) de apenas o anfitriao(host) nomeado ou endereco IP porque todos os bits de enderecamento estao fixos. A notacao CIDR e curta mas nem sempre flexivel o suficiente. Por exemplo, pode querer fazer o rastreio(scan) de 192.168.0.0/16 mas desejar saltar todos os IPs terminados em .0 ou .255 porque eles sao normalmente enderecos de broadcast. O Nmap suporta isso atraves de enderecamento por faixa de octeto. Ao inves de especificar um endereco IP normal, pode especificar uma lista de numeros separada por virgulas ou faixa de numeros para cada octeto. Por exemplo, 192.168.0-255.1-254 ira saltar todos os enderecos na faixa que terminarem com .0 e/ou .255. Faixas nao precisam ser limitadas ao octeto final: o especificador 0-255.0-255.13.37 ira executar um rastreio(scan) em toda a Internet buscando os enderecos IP terminados em 13.37. Esse tipo de amostragem ampla pode ser util em levantamentos e pesquisas de toda a Internet. Enderecos IPv6 podem apenas ser especificados utilizando o endereco IP ou hostname IPv6 completamente qualificado. Faixas CIDR e octetos nao sao suportados para o IPv6 porque eles raramente sao uteis. O Nmap aceita multiplas especificacoes de anfitriao(host) na linha de comando, e elas nao precisam ser do mesmo tipo. O comando nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.0-255 executa o que se espera dele. Embora os alvos sejam normalmente especificados na linha de comando, as seguintes opcoes tambem estao disponiveis para controlar a selecao de alvos: -iL (Entrada a partir de uma lista) Le a especificacao de alvos a partir de um arquivodeentrada. Passar uma lista enorme de anfitrioes(hosts) na linha de comando e muito ruim, ainda que seja normalmente desejavel. Por exemplo, o seu servidor DHCP pode exportar uma lista de 10.000 enderecos correntes em uso que deseja efectuar o rastreio(scan). Ou talvez deseje o rastreio(scan) dr todos os enderecos IP excepto aqueles usados para localizar anfitrioes(hosts) que usam enderecos IP estaticos nao-autorizados. Simplesmente gere uma lista de anfitrioes(hosts) a efectuar o rastreio(scan) e passe o nome do arquivo para o Nmap como um argumento a opcao -iL. As entradas podem estar em qualquer um dos formatos aceites pelo Nmap na linha de comando (endereco IP, hostname, CIDR, IPv6, ou faixas de octetos). Cada entrada deve ser separada por um ou mais espacos em branco, tabulacoes ou newlines. Voce pode especificar um hifen (-) como nome de arquivo se quiser que o Nmap leia os nomes de anfitriao(hostsnames) da entrada padrao (standard input) ao inves de um arquivo. -iR (Escolhe alvos aleatorios) Para levantamentos na Internet toda e outras pesquisas, pode querer escolher alvos de forma aleatoria. O argumento numero de anfitrioes(hosts) diz ao Nmap quantos IPs ele devera gerar. IPs indesejaveis, tais como aqueles de certas redes privadas, multicast e faixas de enderecos nao-alocadas sao automaticamente anuladas. O argumento 0 (zero) pode ser especificado caso deseje um rastreio(scan) sem fim. Tenha em mente que alguns administradores de rede nao gostam de rastreios(scans) nao-autorizados de suas redes e podem apresentar queixa Use esta opcao por sua conta e risco! Se estiver realmente aborrecido em uma tarde chuvosa, tente o comando nmap -sS -PS80 -iR 0 -p 80 para localizar servidores web aleatorios para navegar. --exclude (Exclui anfitrioes(hosts)/redes) Especifica uma lista de alvos, separados por virgula, a serem excluidos do rastreio(scan) mesmo que facam parte da faixa de rede especificada. A lista que fornece utiliza a sintaxe normal do Nmap, portanto ela pode incluir nomes de afitriao(hosts), blocos de rede CIDR, faixas de octetos, etc. Isso pode ser util quando a rede que deseja efectuar o rastreio(scan) inclui servidores de missao critica intocaveis, sistemas que reconhecidamente reagem mal a rastreio(scan) de portas ou sub-redes administradas por outras pessoas. --excludefile (Exclui a lista do arquivo) Oferece a mesma funcionalidade que a opcao --exclude, excepto que os alvos a excluir sao fornecidos em um exclude_file , delimitados por newline, espaco em branco ou tabulacao, ao inves de na linha de comando. DESCOBERTA DE HOSTS Um dos primeiros passos em qualquer missao de reconhecimento de uma rede e reduzir um conjunto (as vezes enorme) de faixas de enderecos IP, em uma lista de anfitrioes(hosts) activos e interessantes. Efectuar o rastreio(scan) de cada porta de cada endereco IP e lento e normalmente desnecessario. E claro que o que torna um anfitriao(host) interessante depende muito do proposito do rastreio(scan). Administradores de rede podem estar apenas interessados em hosts que executam um determinado servico, enquanto os auditores de seguranca podem se importar com cada dispositivo que possuir um endereco IP. Um administrador pode se sentir a vontade em usar o ping ICMP para localizar os anfitrioes(hosts) na rede interna, enquanto um profissional externo de analise de vulnerabilidades (penetration tester) pode utilizar um conjunto diversificado de dezenas de sondagens numa tentativa de enganar as restricoes da firewall. As necessidades para o descobrimento de anfitriao(host) sao muito diversas e, por isso, o Nmap oferece uma ampla variedade de opcoes para customizar as tecnicas utilizadas. A descoberta de anfitriao(host) as vezes e chamada de rastreo ping(ping scan), mas ela vai muito alem dos simples pacotes ICMP de echo request associados com a popular ferramenta conhecida como ping. Os usuarios podem saltar a etapa do ping inteiramente com uma lista de rastreio(scan) (-sL) ou desactivado o ping (-P0), ou enfrentar a rede com combinacoes arbitrarias de sondagens multi-portas TCP SYN/ACK, UDP, e ICMP. O objetivo dessas sondagens e solicitar respostas que mostrem que um endereco IP esta realmente activo (e utilizado por um afitriao(host) ou dispositivo de rede). Em muitas redes, apenas uma pequena percentagem dos enderecos IP esta activa em um dado momento. Isso e particularmente comum com o espaco de enderecamento privado ao abrigo do RFC1918 como, por exemplo, 10.0.0.0/8. Essa rede tem 16 milhoes de IPs, mas eu ja a vi sendo utilizado em empresas com menos de mil maquinas. A descoberta de anfitrioes(hosts) pode encontrar essas maquinas escassamente alocadas em um mar de enderecos IP. Se nenhuma opcao de descoberta de hosts for dada, o Nmap envia um pacote TCP ACK destinado a porta 80 e uma procura ICMP Echo Request a cada maquina-alvo. Uma excecao a isso e que um rastreio(scan) ARP e utilizado para cada alvo localizado na rede ethernet local. Para usuarios Unix sem privilegios de shell, um pacote SYN e enviado ao inves do ack utilizando a chamada de sistema connect(). Esses valores default equivalem as opcoes -PA -PE. Esta descoberta de anfitriao(host) frequentemente e suficiente para o rastreio(scan) de redes locais, mas um conjunto de sondagens mais abrangentes e recomendado para auditoria de seguranca. As opcoes -P* (que seleccionam tipos de ping) podem ser combinadas. Voce pode aumentar as chances de penetrar numa firewall enviando muitos tipos de sondagens, utilizando diferentes portas/flags TCP e codigos ICMP. Note tambem que a descoberta por ARP (-PR) e feita por default contra alvos na rede ethernet local mesmo que especifique outras opcoes -P* , porque e quase sempre mais rapida e mais eficiente. As seguintes opcoes controlam a descoberta de anfitrioes(hosts). -sL (Listagem de rastreio(scan)) A listagem de rastreio(scan) e uma forma degenerada de descoberta de anfitrioes(hosts) que simplesmente lista cada anfitriao(host) da rede especificada, sem enviar nenhum pacote aos hosts-alvos. Por default o Nmap fara a resolucao de DNS dos anfitrioes(hosts) para descobrir seus nomes. Ainda e surpreendente a quantidade de informacoes uteis que simples nomes de hosts podem dar. Por exemplo, fw.chi.playboy.com e o firewall do escritorio de Chicago da Playboy Enterprises. Nmap tambem reporta o numero total de enderecos IP ao final. A listagem de rastreio(scan) e um bom teste de sanidade para assegurar que esta com a lista correta de enderecos IP dos seus alvos. Se os anfitrioes(hosts) mostrarem nomes de dominios que nao reconhece, vale a pena investigar melhor para evitar o rastreio(scan) da rede da empresa errada. Uma vez que a ideia e apenas mostrar uma lista dos hosts-alvos, as opcoes de funcionalidade de nivel mais alto tais como o rastreio(scan) de portas, deteccao de SO, ou rastreio(scan) utilizando ping, nao podem ser combinadas com esta opcao. Se deseja desactivar o rastreio(scan) utilizando ping enquanto executa funcoes de nivel elevado, leia a opcao -P0. -sP (Rastreio(scan) usando Ping) Esta opcao diz ao Nmap para somente executar um rastreio(scan) usando o ping (descoberta de anfitrioes(hosts)), e entao mostrar os hosts disponiveis que responderam ao scan. Nenhum teste adicional (tais como o rastreio(scan) de portas e detecao de SO) e executado. Isto e um pouco mais intrusivo que a listagem de rastreio(scan), e pode ser usado para os mesmos propositos. Permite um reconhecimento leve de uma rede-alvo sem chamar muita atencao. Saber quantos hosts estao ativos e mais valioso para invasores que a lista fornecida pela listagem de rastreio(scan) com cada endereco IP e seu nome de anfitriao(host). Administradores de sistemas frequentemente acham esta opcao valiosa. Ela pode ser facilmente utilizada para contar o numero de maquinas disponiveis em uma rede ou monitorar a disponibilidade dos servidores. Isto e normalmente chamado de varredura com ping (ping sweep), e e mais confiavel do que fazer um ping num endereco de broadcast, pois muitos anfitrioes(rastreio(scan)hosts) nao respondem a pesquisas com broadcast. A opcao -sP envia um ICMP echo request e um pacote TCP para a porta 80 por default. Quando executada por um usuario sem privilegios, um pacote SYN e enviado (usando uma chamada connect()) para a porta 80 no alvo. Quando um usuario privilegiado tenta rastrear(scan) alvos na rede ethernet local, requisicoes ARP (-PR) sao utilizadas, a menos que --send-ip tenha sido especificado. A opcao -sP pode ser combinada com qualquer um dos tipos de sondagens de descobrimento (as opcoes -P* , excluindo -P0) para maior flexibilidade. Se qualquer uma dessas opcoes de tipos de sondagens e numero de porta for utilizada, as sondagens default (ACK e echo request) sao sobrepostas. Quando firewalls restritivos estao posicionados entre o host de origem que executa o Nmap e a rede-alvo, utilizar essas tecnica avancadas e recomendado. Do contrario, hosts podem ser perdidos quando o firewall ignorar as sondagens ou as respostas delas. -P0 (Sem ping) Esta opcao salta completamente a fase de descoberta do Nmap. Normalmente o Nmap utiliza este estagio para determinar as maquinas activas para o rastreio(scan) mais agressivo. Por default, o Nmap apenas executa sondagens agressivas tais como o rastreio(scan) de portas, deteccao de versoes, ou deteccoes do SO contra afitrioes(hosts) que foram verificados como activos. Desactivar a descoberta de anfitrioes(hosts) com -P0 faz com que o Nmap teste as funcoes de rastreio(scan) solicitadas contra todos os enderecos IP alvos especificados. Portanto se um espaco de enderecamento alvo do tamanho de uma classe B (/16) for especificado na linha de comando, todos os 65.536 enderecos IP serao alvo do rastreio(scan). O segundo caracter da opcao -P0 e um zero e nao a letra O. A descoberta de anfitrioes(hosts) apropriada e desconsiderada como na listagem de rastreio(scan), mas ao inves de parar e mostrar a lista de alvos, o Nmap continua a executar as funcoes solicitadas como se cada alvo IP estivesse activo. -PS [listadeportas] (Ping usando TCP SYN) Esta opcao envia um pacote TCP vazio com a flag SYN marcada. A porta de destino default e a 80 (configurada em tempo de compilacao pela variavel DEFAULT_TCP_PROBE_PORT no nmap.h), mas uma porta alternativa pode ser especificada como um parametro. Ate uma lista de portas separadas por virgula pode ser especificada (p.ex. -PS22,23,25,80,113,1050,35000), nesse caso as sondagens serao tentadas contra cada porta em paralelo. A flag SYN sugere aos sistemas remotos que esta tentando estabelecer uma comunicacao. Normalmente a porta de destino estara fechada e um pacote RST (reset) sera enviado de volta. Se a porta estiver aberta, o alvo ira dar o segundo passo do cumprimento-de-tres-vias (3-way-handshake) do TCP respondendo com um pacote TCP SYN/ACK TCP. A maquina executando o Nmap entao derruba a conexao recem-criada respondendo com um RST ao inves de enviar um pacote ACK que iria completar o cumprimento-de-tres-vias e estabelecer uma conexao completa. O pacote RST e enviado pelo kernel da maquina que esta executando o Nmap em resposta ao SYN/ACK inesperado, e nao pelo proprio Nmap. O Nmap nao se importa se a porta esta aberta ou fechada. Tanto a resposta RST ou SYN/ACK discutidas anteriormente dizem ao Nmap se o hosts esta disponivel e responsivo. Em maquinas UNIX apenas o usuario privilegiado root e capaz, normalmente, de enviar e receber pacotes TCP em estado bruto(raw packets). Para usuarios nao privilegiados um contorno e automaticamente empregado em concordancia com a chamada de sistema connect() iniciada contra cada porta-alvo. Isso tem o efeito de enviar um pacote SYN ao anfitriao(host) alvo em uma tentativa de estabelecer uma conexao. Se o connect() retornar com sucesso rapido ou com uma falha ECONNREFUSED, a pilha TCP subjacente deve ter recebido um SYN/ACK ou RST e o anfitriao(host) e marcado como disponivel. Se a tentativa de conexao for abandonada ate que um timeout ocorra, o host e marcado como indisponivel. Esse contorno tambem e usado para conexoes IPv6, pois o suporte a construcao de pacotes IPv6 em estado bruto(raw) ainda nao esta disponivel no Nmap. -PA [listadeportas] (Ping usando TCP ACK) O ping usando TCP ACK e muito similar ao recem-discutido ping usando SYN. A diferenca como poderia imaginar, e que a flag TCP ACK e marcada ou inves da flag SYN. O pacote ACK finge reconhecer dados de uma conexao TCP estabelecida, quando nenhuma conexao existe de facto. Entao os anfitrioes(hosts) remotos deveriam sempre responder com pacotes RST revelando sua existencia no processo. A opcao -PA utiliza a mesma porta default que a sondagem SYM (80) e pode tambem obter uma lista de portas destino no mesmo formato. Se um usuario privilegiado tenta isto, ou se um alvo IPv6 e especificado, o contorno connect() discutido anteriormente e utilizado. Esse contorno e imperfeito pois o connect() esta realmente enviando um pacote SYN ao inves de um ACK. O motivo para oferecer ambas as sondagens ping, que utilizam SYN e ACK, e maximizar as chances de passar por firewalls. Muitos administradores configuram routers e outros firewalls simples para bloquear a entrada de pacotes SYN excepto aqueles destinados a servicos publicos como o site web da empresa ou servidor de correio electronico. Isso evita as demais conexoes entradas na organizacao, permitindo aos usuarios fazer conexoes desobstruidas a Internet. Essa aproximacao nao-orientada a conexao (non-stateful ou stateless) consome poucos recursos no firewall/router e e amplamente suportada por filtros de hardware e software. O firewall de software Netfilter/iptables do Linux oferece a conveniencia da opcao --syn para implementar essa abordagem stateless. Quando regras stateless do firewall como essas sao implementadas, sondagens de ping usando SYN (-PS) muito provavelmente serao bloqueadas quando forem enviadas a portas fechadas. Nesses casos, a sondagem ACK se destaca pois ela simplesmente passa por essas regras. Outro tipo comum de firewall utiliza regras orientadas a conexao que descartam pacotes inesperados. Esta caracteristica era encontrada inicialmente apenas em firewalls de alto-nivel, embora tenha se tornado mais comum com o passar dos anos. O sistema Netfilter/iptables do Linux suporta esta caracteristica atraves da opcao --state, que categoriza os pacotes baseados no estado da conexao. Uma sondagem SYN tem maiores chances de funcionar contra um sistema assim, pois pacotes ACK inesperados sao normalmente reconhecidos como falsos e descartados. Uma solucao para esse dilema e enviar ambas as sondagens SYN e ACK especificando -PS e -PA. -PU [listadeportas] (Ping usando UDP) Outra opcao de descoberta de anfitrioes(hosts) e o ping usando UDP, que envia um pacote UDP vazio (a menos que --data-length seja especificado) para as portas informadas. A listadeportas tem o mesmo formato que os discutidos anteriormente nas opcoes -PS e -PA. Se nenhuma porta for especificada, o default e 31338. Esse default pode ser configurado em tempo de compilacao alterando DEFAULT_UDP_PROBE_PORT no nmap.h. Uma porta alta nao comum e utilizada como default porque enviar para portas abertas normalmente e indesejado para este tipo particular de rastreio(scan). Ao bater contra uma porta fechada na maquina-alvo, a sondagem UDP deve criar um pacote ICMP de porta inalcancavel como resposta. Isso diz ao Nmap que a maquina esta activa e disponivel. Muitos outros tipos de erros ICMP, tais como anfitriao(host)/rede inalcancavel ou TTL excedido sao indicativos de um anfitriao(host) inactivo ou inalcancavel. A falta de resposta tambem e interpretada dessa forma. Se uma porta aberta e alcancada, a maioria dos servicos simplesmente ignoram o pacote vazio e falham em retornar qualquer resposta. E por isso que a porta de sondagem default e 31338, que pouco provavelmente estara em uso. Uns poucos servicos, tal como o chargen, ira responder a um pacote UDP vazio, e com isso revelara ao Nmap que a maquina esta disponivel. A principal vantagem deste tipo de scan e que ele passa por firewalls e filtros que apenas examinam o TCP. Por exemplo, uma vez eu tive um router broadband sem-fios Linksys BEFW11S4. A interface externa desse dispositivo filtrava todas as portas TCP por default, mas as sondagens UDP ainda causavam mensagens de porta inalcancavel, denunciando assim o dispositivo. -PE; -PP; -PM (Tipos de Ping do ICMP) Alem dos tipos incomuns de descoberta de anfitrioes(hosts) TCP e UDP discutidos anteriormente, o Nmap pode enviar os pacotes-padrao que normalmente sao enviados pelo popular programa ping. O Nmap envia um pacote ICMP do tipo 8 (echo request) ao endereco IP alvo, esperando como resposta um tipo 0 (Echo Reply) do anfitriao(host) disponivel. Infelizmente para muitos exploradores de rede, muitos anfitrioes(hosts) e firewalls actualmente bloqueiam esses pacotes, ao inves de responder como e requerido pela RFC 1122[1]. Por essa razao, rastreios(scans) puramente ICMP sao raramente confiaveis o suficiente contra alvos desconhecidos na Internet. Mas para administradores de sistemas monitorando uma rede interna eles podem ser uma abordagem pratica e eficiente. Utilize a opcao -PE para activar esse comportamento echo request. Embora o echo request seja a pesquisa padrao de um ping ICMP, o Nmap nao para aqui. A padronizacao do ICMP (RFC 792[2]) tambem especifica timestamp request, information request, e pacotes address mask request como codigos 13, 15, e 17, respectivamente. Apesar do proposito ostensivo dessas pesquisas seja obter informacoes tais como a mascara do endereco e hora corrente, eles podem ser facilmente utilizados para descoberta de anfitrioes(hosts). Um sistema que responda esta activo e disponivel. O Nmap nao implementa actualmente os pacotes de requisicao de informacoes, pois eles nao sao amplamente suportados. A RFC 1122 insiste que "um anfitriao(host) NAO DEVERIA implementar essas mensagens". Pesquisas de marcacao de hora (Timestamp) e mascara de endereco podem ser enviadas com as opcoes -PP e -PM , respectivamente. Uma resposta timestamp reply (codigo ICMP 14) ou uma resposta address mask reply (codigo 18) revela que o host esta disponivel. Essas duas pesquisas podem ser valiosas quando os administradores bloqueiam pacotes echo request especificamente e esquecem que outras pesquisas ICMP podem ser usadas com o mesmo proposito. -PR (Ping usando ARP) Um dos cenarios de uso mais comuns do Nmap e o rastreio(scan) da LAN ethernet. Na maioria das LANs, especialmente aquelas que utilizam a faixa de enderecamento privado ao abrigo do RFC1918, a vasta maioria dos enderecos IP nuca sao utilizados. Quando o Nmap tenta enviar um pacote IP em estado bruto(raw), tal como um ICMP echo request, o sistema operativo deve determinar o endereco fisico de destino (ARP) correspondente ao IP-alvo de forma que ele possa enderecar adequadamente o frame ethernet. Isso normalmente e lento e problematico, pois os sistemas operativos nao foram escritos com a expectativa de que precisariam fazer milhoes de requisicoes ARP contra anfitrioes(hosts) indisponiveis em um curto periodo de tempo. O rastreio(scan) ARP encarrega o Nmap e seus algoritmos optimizados de fazer as requisicoes ARP. E se ele conseguir uma resposta de volta, o Nmap nao precisa de se preocupar com os pacotes ping baseados em IP, uma vez que ele ja sabe que o anfitriao(host) esta activo. Isso torna o rastreio(sca) ARP muito mais rapido e mais confiavel que os rastreios(scans) baseados em IP. Portanto isso e feito por default quando se faz o rastreio(scan) de anfitrioes(hosts) ethernet que o Nmap detecta estarem posicionados em uma rede ethernet local. Mesmo se tipos diferentes de ping (tais como -PI ou -PS) sejam especificados, o Nmap usa o ARP em vez, para cada um dos alvos que estiverem na mesma LAN. Se nao quiser de forma alguma fazer um ratreio(scan) ARP, especifique --send-ip. -n (Nao faca resolucao DNS) Diz ao Nmap para nunca fazer uma resolucao DNS nos enderecos IP activos que ele encontrar. Uma vez que o DNS e normalmente lento, isso acelera as coisas. -R (resolucao DNS para todos os alvos) Diz ao Nmap para fazer sempre uma resolucao DNS reversa nos enderecos IP-alvos. Normalmente isto apenas e executado quando uma maquina esta activa. FUNDAMENTOS DO RASTREIO(SCAN) DE PORTAS Embora o Nmap tenha crescido em funcionalidades ao longo dos anos, ele comecou como um eficiente scanner de portas e essa permanece a sua funcao principal. O simples comando nmap alvo faz o rastreio(scan) a mais de 1660 portas TCP no anfitriao(host) alvo. Embora muitos scanner de portas tenham tradicionalmente agrupado todas as portas nos estados aberto ou fechado, o Nmap e muito mais granular. Ele divide as portas em seis estados: aberto(open), fechado(closed),filtrado(filtered), nao-filtrado(unfiltered), aberto(open)|filtrado(filtered), ou fechado(closed)|filtrado(filtered). Esses estados nao sao propriedades intrinsecas da porta mas descrevem como o Nmap as ve. Por exemplo, um rastreio(scan) do Nmap da mesma rede como alvo pode mostrar a porta 135/tcp como aberta, enquanto um rastreio(scan) ao mesmo tempo com as mesmas opcoes a partir da Internet poderia mostrar essa porta como filtrada. Os seis estados de porta reconhecidos pelo Nmap aberto (open) Uma aplicacao esta activamente aceitando conexoes TCP ou pacotes UDP nesta porta. Encontrar esse estado e frequentemente o objectivo principal de um rastreio(scan) de portas. Pessoas conscientes sobre a seguranca sabem que cada porta aberta e um convite para um ataque. Invasores e profissionais de avaliacao de seguranca querem explorar as portas abertas, enquanto os administradores tentam fechar ou proteger com firewalls sem bloquear usuarios legitimos. Portas abertas sao tambem interessantes para rastreios(scans) nao-relacionados a seguranca pois mostram os servicos disponiveis para utilizacao na rede. fechado (closed) Uma porta fechada esta acessivel (ela recebe e responde a pacotes de sondagens do Nmap), mas nao ha nenhuma aplicacao ouvindo nela. Elas podem ser uteis para mostrar que um anfitriao(host) esta activo em um determinado endereco IP (descoberta de hosts, ou rastreio(scan) usando ping), e como parte de uma detecao de SO. Pelo facto de portas fechadas serem alcancaveis, pode valer a pena o rastreio(scan) mais tarde no caso de alguma delas abrir. Os administradores deveriam considerar o bloqueio dessas portas com um firewall. Entao elas apareceriam no estado filtrado, discutido a seguir. filtrado(filtered) O Nmap nao consegue determinar se a porta esta aberta porque uma filtragem de pacotes impede que as sondagens alcancem a porta. A filtragem poderia ser de um dispositivo firewall dedicado, regras de router, ou um software de firewall baseado em anfitriao(host). Essas portas frustram os atacantes pois elas fornecem poucas informacoes. As vezes elas respondem com mensagens de erro ICMP tais como as do tipo 3 codigo 13 (destino inalcancavel: comunicacao proibida administrativamente), mas os filtros que simplesmente descartam pacotes sem responder sao bem mais comuns. Isso forca o Nmap a tentar diversas vezes so para o caso de a sondagem ter sido descartada por congestionamento da rede ao inves de filtragem. Isso reduz a velocidade do rastreio(scan) dramaticamente. nao-filtrado(unfiltered) O estado nao-filtrado significa que uma porta esta acessivel, mas que o Nmap e incapaz de determinar se ela esta aberta ou fechada. Apenas o rastreio(scan) ACK, que e usado para mapear conjuntos de regras de firewall classifica portas com este estado. O rastreio(scan) de portas nao-filtradas com outros tipos de scan, tal como scan Window, scan Syn, ou scan FIN, podem ajudar a responder se a porta esta aberta. open|filtered O Nmap coloca portas neste estado quando e incapaz de determinar se uma porta esta aberta ou filtrada. Isso acontece para tipos de rastreio(scan) onde as portas abertas nao dao nenhuma resposta. A falta de resposta poderia tambem significar que um filtro de pacotes descartou a sondagem ou qualquer resposta que ela tenha provocado. Portanto o nao sabe com certeza se a porta esta aberta ou se esta sendo filtrada. Os rastreios(scans) UDP, IP Protocol, FIN, Null, e Xmas classificam portas desta forma. closed|filtered Este estado e usado quando o Nmap e incapaz de determinar se uma porta esta fechada ou filtrada. E apenas usado para o rastreio(scan) IPID Idle scan. TECNICAS DE RASTREIO(SCAN) DE PORTAS Como um novato executando uma reparacao automovel posso perder horas tentando usar minhas ferramentas rudimentares (martelo, fita adesiva, grifo, etc.) nas tarefas. Quando eu falho miseravelmente e reboco minha lata-velha para um mecanico de verdade ele invariavelmente pesca aqui e ali em um enorme bau de ferramentas ate pegar a coisa perfeita que torna a tarefa numa brincadeira. A arte de rastrear(scaning) portas e similar. Os peritos entendem as dezenas de tecnicas de rastreio(scan) e escolhem as que sao apropriadas (ou uma combinacao) para uma dada tarefa. Usuarios inexperientes e script kiddies, por outro lado, tentam resolver todos os problemas com o scan SYN default. Uma vez que o Nmap e gratuito a unica barreira para a mestria em rastreio(scaning) de portas e o conhecimento. Isso certamente e melhor que no mundo automovel onde pode ser necessario uma grande habilidade para determinar que precisa de um compressor de molas e entao tem que pagar milhares de euros por um. A maioria dos tipos de rastreio(scan) esta disponivel apenas para usuarios privilegiados. Isso acontece porque eles enviam e recebem pacotes em estado bruto(raw), o que requer acesso de root em sistemas Unix. Utilizar a conta de administrador no Windows e recomendado, embora o Nmap as vezes funcione com usuarios sem privilegios nessa plataforma quando o WinPcap foi carregado no SO. Requerer privilegio de root era uma seria limitacao quando o Nmap foi lancado em 1997, pois muitos usuarios apenas tinham acesso a contas de shell compartilhadas. Agora o mundo e diferente. Computadores estao mais baratos, muito mais pessoas tem acesso directo e permanente a Internet e computadores desktop Unix (incluindo Linux e MAC OS X) sao comuns. Uma versao para o Windows do Nmap se encontra actualmente disponivel permitindo que se use em muito mais computadores desktop. Por todas essas razoes os usuarios tem menos necessidade de executar o Nmap a partir de contas de shell compartilhadas e limitadas. Isso e muito bom pois as opcoes privilegiadas tornam o Nmap muito mais poderoso e flexivel. Embora o Nmap tente produzir resultados precisos tenha em mente que todas as deducoes sao baseadas em pacotes devolvidos pelas maquinas-alvo (ou firewalls na frente delas). Tais anfitrioes(hosts) podem nao ser confiaveis e enviar respostas com o proposito de confundir ou enganar o Nmap. Muito mais comum sao os anfitrioes(hosts) nao-de-acordo-com-a-rfc que nao respondem como deveriam as sondagens do Nmap. As sondagens FIN, Null e Xmas sao particularmente suscetiveis a esse problema. Tais questoes sao especificas de determinados tipos de scan e portanto sao discutidos nas entradas individuais de cada um dos tipos. Esta secao documenta as dezenas de tecnicas de rastreio(scan) de portas suportadas pelo Nmap. Apenas um metodo pode ser utilizado de cada vezm excepto que um scan UDP (-sU) pode ser combinado com qualquer um dos tipos de scan TCP. Como uma ajuda para a memoria as opcoes dos tipos de rastreio(scan) de portas estao no formato -sC, onde C e um caracter proeminente no nome do rastreio(scan), normalmente o primeiro. A unica excepcao a essa regra e para o rastreio(scan) denominado FTP bounce (-b). Por default o Nmap executa um rastreio(scan) SYN, embora ele substitua por um rastreio(scan) Connect() se o usuario nao tiver os privilegios adequados para enviar pacotes em estado bruto(raw) (requer acesso de root no UNIX) ou se alvos IPv6 forem especificados. Dos rastreios(scans) listados nesta seccao os usuarios nao privilegiados podem apenas executar os rastreios(scans) connect() e ftp bounce. -sS (rastreio(scan) TCP SYN) O rastreio(scan) SYN e a opcao de rastreio(scan) default e a mais popular por boas razoes. Pode ser executada rapidamente fazendo o rastreio(scan) a milhares de portas por segundo em uma rede rapida, nao bloqueada por firewalls intrusivos. O rastreio(scan) SYN e relativamente nao-obstrusivo e camuflado, uma vez que ele nunca completa uma conexao TCP. Ele tambem trabalha contra qualquer pilha TCP padronizada ao inves de depender de factores especificos de plataformas como os rastreios(scans) Fin/Null/Xmas, Maimon e Idle fazem. Ele tambem permite uma diferenciacao limpa e confiavel entre os estados aberto (open), fechado (closed), e filtrado (filtered). Esta tecnica e frequentemente chamada de rastreio(scan) de porta entreaberta (half-open scanning), porque nao abre uma conexao TCP completamente. Voce envia um pacote SYN, como se fosse abrir uma conexao real e entao espera uma resposta. Um SYN/ACK indica que a porta esta ouvindo (aberta) enquanto um RST (reset) e indicativo de uma nao-ouvinte. Se nenhuma resposta e recebida apos diversas retransmissoes a porta e marcada como filtrada. A porta tambem e marcada como filtrada se um erro ICMP de inalcancavel e recebido (tipo 3, codigo 1,2, 3, 9, 10, ou 13). -sT (rastreio(scan) TCP connect()) O rastreio(scan) TCP Connect() e o rastreio(scan) default do TCP quando o rastreio(scan) SYN nao e uma opcao. Esse e o caso quando o usuario nao tem privilegios para criar pacotes em estado bruto(raw) ou rastrear redes IPv6. Ao inves de criar pacotes em estado bruto(raw) como a maioria dos outros tipos de rastreio(scan) fazem, o Nmap pede ao sistema operativo para estabelecer uma conexao com a maquina e porta alvos enviando uma chamada de sistema connect(). Essa e a mesma chamada de alto nivel que os navegadores da web, clientes P2P, e a maioria das outras aplicacoes para rede utilizam para estabelecer uma conexao. E parte do interface de programacao conhecida como API de Sockets de Berkeley. Ao inves de ler as respostas em pacotes em estado bruto(raw) directamente dos fios, o Nmap utiliza esta API para obter informacoes do estado de cada tentativa de conexao. Quando um rastreio(scan) SYN esta disponivel e normalmente a melhor escolha. O Nmap tem menos controle sobre a chamada de alto nivel connect() do que sobre os pacotes em estado bruto(raw) tornando-o menos eficiente. A chamada de sistema completa as conexoes nas portas-alvo abertas ao inves de executar o reset de porta entreaberta que o rastreio(scan) SYN faz. Isso nao so leva mais tempo e requer mais pacotes para obter a mesma informacao mas tambem torna mais provavel que as maquinas-alvo registrem a conexao. Um sistema IDS decente ira detectar qualquer um deles, mas a maioria das maquinas nao tem esse tipo de sistema de alarme. Muitos servicos na maioria dos sistema Unix irao acrescentar uma nota na syslog e as vezes uma mensagem de erro obscura, quando o Nmap se conecta e entao fecha a conexao sem enviar nenhum dado. Servicos verdadeiramente pateticos irao travar quando isso acontecer embora isso seja incomum. Um administrador que ve um punhado de tentativas de conexao nos registros vindos de um unico sistema deveria saber que foi rastreado(scanned) com connect. -sU (rastreios(scans) UDP) Embora os servicos mais populares na Internet operem sobre o protocolo TCP, os servicos UDP[3] sao amplamente difundidos. O DNS, o SNMP e o DHCP (registrados nas portas 53, 161/162, e 67/68) sao tres dos mais comuns. Pelo facto do rastreio(scan) UDP ser normalmente mais lento e mais dificil que o TCP alguns auditores de seguranca ignoram essas portas. Isso e um erro pois servicos UDP passiveis de exploracao sao bastante comuns e invasores certamente nao ignoram o protocolo inteiro. Felizmente o Nmap pode ajudar a inventariar as portas UDP. O rastreio(scan) UDP e activado com a opcao -sU. Ele pode ser combinado com um tipo de rastreio(scan) TCP como o rastreio(scan) SYN (-sS) para averiguar ambos protocolos na mesma execucao. O SYN UDP funciona enviando um cabecalho UDP vazio (sem dados) para cada porta pretendida. Se um erro ICMP de porta inalcancavel (tipo 3, codigo 3) e retornado a porta esta fechada. Outros erros do tipo inalcancavel (tipo 3, codigos 1, 2, 9, 10, ou 13) marcam a porta como filtrada. Ocasionalmente um servico ira responder com um pacote UDP provando que esta aberta. Se nenhuma resposa e recebida apos as retransmissoes a porta e classificada como aberta|filtrada. Isso significa que a porta poderia estar aberta ou talvez que filtros de pacotes estejam bloqueando a comunicacao. Rastreios(scans) de versoes (-sV) podem ser utilizados para ajudar a diferenciar as portas verdadeiramente abertas das que estao filtradas. Um grande desafio com o rastreio(scan) UDP e faze-lo rapidamente. Portas abertas e filtradas raramente enviam alguma resposta, deixando o Nmap esgotar o tempo (time out) e entao efectuar retransmissoes para o caso de a sondagem ou a resposta ter sido perdida. Portas fechadas sao normalmente um problema ainda maior. Elas costumam enviar de volta um erro ICMP de porta inalcancavel. Mas, ao contrario dos pacotes RST enviados pelas portas TCP fechadas em resposta a um rastreio(scan) SYN ou Connect, muitos anfitrioes(hosts) limitam a taxa de mensagens ICMP de porta inalcancavel por default. O Linux e o Solaris sao particularmente rigorosos quanto a isso. Por exemplo, o kernel 2.4.20 do Linux limita a quantidade de mensagens de destino inalcancavel a ate uma por segundo (no net/ipv4/icmp.c). O Nmap detecta a limitacao de taxa e diminui o ritmo de acordo para evitar inundar a rede com pacotes inuteis que a maquina-alvo ira descartar. Infelizmente, um limite como o do Linux de um pacote por segundo faz com que um rastreio(scan) de 65.536 portas leve mais de 18 horas. Ideias para acelerar o rastreio(scan) UDP incluem rastrear(scan) mais anfitrioes(hosts) em paralelo, fazer um rastreio(scan) rapido apenas das portas mais comuns primeiro, rastrear(scan) por detras de um firewall e utilizar --host-timeout para saltar os anfitrioes(hosts) lentos. -sN; -sF; -sX (rastreios(scans) TCP Null, FIN, e Xmas) Estes tres tipos de rastreio(scan) (ate mais sao possiveis com a opcao --scanflags descrita na proxima seccao) exploram uma brecha subtil na RFC do TCP[4] para diferenciarem entre portas abertas e fechadas. A pagina 65 diz que "se a porta [destino] estiver FECHADA .... um segmento de entrada que nao contenha um RST ira causar o envio de um RST como resposta." Entao a pagina seguinte discute os pacotes enviados a portas abertas sem os bits SYN, RST ou ACK marcados, afirmando que: "e pouco provavel que chegue aqui, mas se chegar, descarte o segmento e volte." Quando se rastreia(scan) sistemas padronizados com o texto desta RFC, qualquer pacote que nao contenha os bits SYN, RST ou ACK ira resultar em um RST como resposta se a porta estiver fechada e nenhuma resposta se a porta estiver aberta. Contanto que nenhum desses tres bits esteja incluidos qualquer combinacao dos outros tres (FIN, PSH e URG) e valida. O Nmap explora isso com tres tipos de rastreio(scan): rastreio(scan) Null (-sN) Nao marca nenhum bit (o cabecalho de flag do tcp e 0) rastreio(scan) FIN (-sF) Marca apenas o bit FIN do TCP. rastreio(scan) Xmas(-sX) Marca as flags FIN, PSH e URG, iluminando o pacote como uma arvore de Natal. Estes tres tipos de rastreio(scan) sao exatamente os mesmos em termos de comportamento exceto pelas flags TCP marcadas no pacotes de sondagem. Se um pacote RST for recebido a porta e considerada fechada e nenhuma resposta significa que esta aberta|filtrada. A porta e marcada como filtrada se um erro ICMP do tipo inalcancavel (tipo 3, codigo 1, 2, 3, 9, 10, ou 13) for recebido. A vantagem principal destes tipos de rastreio(scan) e que eles podem bisbilhotar atraves de alguns firewalls nao-orientados a conexao e de routers que filtram pacotes. Outra vantagem e que esses tipos de rastreio(scan) sao um pouco mais camuflados do que o rastreio(scan) SYN. Mas nao conte com isso -- a maioria dos produtos IDS modernos podem ser configurados para detecta-los. O maior problema e que nem todos os sistemas seguem a RFC 793 ao pe-da-letra. Diversos sistemas enviam respostas RST para as sondagens independentemente do facto da porta estar aberta ou nao. Isso faz com que todas as portas sejam classificadas como fechadas. A maioria dos sistemas operativos que fazem isso sao Microsoft Windows, muitos dispositivos Cisco, BSDI e o IBM OS/400. Esse rastreio(scan) funciona realmente contra a maioria dos sistemas baseados em Unix. Outro ponto negativo desses rastreios(scans) e que eles nao conseguem diferenciar portas abertas de alguns tipos de portas filtradas deixando com a resposta abera|filtrada. -sA (rastreio(scan) TCP ACK) Este rastreio(scan) e diferente dos outros discutidos ate agora pelo facto de que ele nunca determina se uma porta esta aberta (ou mesmo aberta|filtrada). Ele e utilizado para mapear conjuntos de regras do firewall determinando se eles sao orientados a conexao ou nao e quais portas estao filtradas. O pacote de sondagem do rastreio(scan) ACK tem apenas a flag ACK marcada (a menos que use --scanflags). Quando se rastreia(scan) sistemas nao-filtrados as portas abertas e fechadas irao devolver um pacote RST. O Nmap entao coloca nelas o rotulo nao-filtradas (unfiltered) significando que elas estao alcancaveis pelo pacote ACK, mas se elas estao abertas ou fechadas e indeterminado. Portas que nao respondem ou que devolvem certas mensagens de erro ICMP (tipo 3, codigo 1, 2, 3, 9, 10, ou 13), sao rotuladas como filtradas. -sW (rastreio(scan) da Janela TCP) Rastreio(scan) da Janela e exactamente o mesmo que o rastreio(scan) ACK excepto que ele explora um detalhe da implementacao de certos sistemas de forma a diferenciar as portas abertas das fechadas ao inves de sempre mostrar nao-filtrada quando um RST e devolvido. Ele faz isso examinando o campo Janela TCP (TCP Window) do pacote RST devolvido. Em alguns sistemas as portas abertas usam um valor positivo de tamanho de janela (mesmo para pacotes RST) enquanto que as portas fechadas tem um valor igual a zero. Entao, ao inves de mostrar sempre uma porta como nao-filtrada quando se recebe um RST de volta, o rastreio(scan) da Janela mostra a porta como aberta ou fechada se o valor da Janela TCP no reset for positivo ou zero, respectivamente. Este rastreio(scan) se baseia em um detalhe de implementacao de uma minoria de sistemas na Internet, portanto nao se pode confiar sempre nele. Sistemas que nao suportam isso irao normalmente devolver todas as portas como fechadas. E claro que e possivel que a maquina realmente nao tenha nenhuma porta aberta. Se a maioria das portas rastreadas(scaned) estiver fechada mas uns poucos numeros de portas comuns (tais como 22, 25, 53) estao filtrados, o sistema muito provavelmente esta vulneravel. De vez em quando os sistemas irao mostrar exatamente o comportamento oposto. Se o seu rastreio(scan) mostrar 1000 portas abertas e 3 fechadas ou filtradas, entao essas tres podem muito bem ser as verdadeiramente abertas. -sM (rastreio(scan) TCP Maimon) O rastreio(scan) Maimon recebeu o nome de seu descobridor, Uriel Maimon. Ele descreveu a tecnica na Phrack Magazine, edicao 49 (Novembro de 1996). O Nmap, que incluiu essa tecnica, foi lancado duas edicoes mais tarde. A tecnica e exatamente a mesma que os rastreios(scans) Null, FIN e Xmas, exceto que a sondagem e FIN/ACK. De acordo com a RFC 793 (TCP) um pacote RST deveria ser gerado em resposta a tal sondagem se a porta estiver aberta ou fechada. Entretanto, Uriel notou que muitos sistemas derivados do BSD simplesmente descartavam o pacote se a porta estivesse aberta. --scanflags (rastreio(scan) TCP Customizado) Usuarios verdadeiramente avancados do Nmap nao precisam se limitar aos tipos de rastreios(scans) enlatados oferecidos. A opcao --scanflags permite que desenhe seu proprio rastreio(scan) permitindo a especificacao de flags TCP arbitrarias. Deixe sua imaginacao correr solta enquanto dribla sistemas de deteccao de intrusao cujos fabricantes apenas olharam rapidamente a pagina man do Nmap adicionando regras especificas! O argumento do --scanflags pode ser um valor numerico da marca (flag) como o 9 (PSH e FIN), mas usar nomes simbolicos e mais facil. Apenas esprema alguma combinacao de URG, ACK, PSH, RST, SYN, e FIN. Por exemplo, --scanflags URGACKPSHRSTSYNFIN marca tudo, embora nao seja muito util para rastreio(scan). A ordem em que essas marcas sao especificadas e irrelevante. Alem de especificar as marcas desejadas pode especificar um tipo de rastreio(scan) TCP (como o -sA ou -sF). Esse tipo-base diz ao Nmap como interpretar as respostas. Por exemplo, um rastreio(scan) SYN considera nenhuma-resposta como uma indicacao de porta filtrada enquanto que um rastreio(scan) FIN trata a mesma como aberta|filtrada. O Nmap ira se comportar da mesma forma que o tipo de rastreio(scan)-base escolhido, excepto que ele ira usar as marcas TCP que especificar. Se nao escolher um tipo-base, o rastreio(scan) SYN e utilizado. -sI (rastreio(scan) Idle) Este metodo avancado de rastreio(scan) permite um rastreio(scan) TCP realmente cego das portas do alvo (significando que nenhum pacote e enviado para o alvo do seu endereco IP real). Ao inves disso um ataque canal-lateral (side-channel) explora a previsivel geracao de sequencia de ID, consequencia da fragmentacao do IP no anfitriao(host) zumbi, para juntar informacoes sobre as portas abertas no alvo. Sistemas IDS irao mostrar o rastreio(scan) como se viessem da maquina zumbi que especificou (que deve estar activa e obedecer a alguns criterios). Este tipo fascinante de rastreio(scan) e complexo demais para se descrever completamente aqui neste guia de referencia, entao eu escrevi e postei um trabalho informal com detalhes completos em https://nmap.org/book/idlescan.html. Alem de ser extraordinariamente camuflado (devido a sua natureza cega), este tipo de rastreio(scan) permite mapear relacoes de confianca baseadas em IP entre maquinas. A listagem de portas mostra as portas abertas da perspectiva do anfitriao(host) zumbi. Portanto pode tentar rastrear(scan) um alvo usando varios zumbis que acha que podem ser confiaveis (via regras de router/filtro de pacotes). Voce pode adicionar os dois-pontos seguindo do numero da porta ao nome do anfitriao(host) zumbi, se quiser sondar uma porta em particular no zumbi verificando as mudancas de IPID. Do contrario o Nmap ira utilizar a porta que ele normalmente usa por default para pings tcp (80). -sO (Rastreios(Scans) do protocolo IP) Scans do Protocolo IP permitem que determine quais protocolos IP (TCP, ICMP, IGMP, etc.) sao suportados pelas maquina-alvo. Isso nao e tecnicamente um rastreio(scan) de portas, pois ele varia os numeros do protocolo IP ao inves dos numeros de portas TCP e UDP. Ainda assim, ele utiliza a opcao -p para seleccionar os numeros de protocolos a rastrear(scan), mostra os resultados dentro do formato normal da tabela de portas e ate usa o mesmo mecanismo de rastreio(scan) dos metodos de descoberta de portas. Portanto ele e parecido o suficiente com um rastreio(scan) de portas e por isso pertence a este lugar. Alem de ser util de certa forma, o rastreio(scan) de protocolo mostra o poder do software de codigo aberto. Embora a ideia fundamental seja bastante simples, eu nao tinha pensado em adiciona-la e nem havia recebido nenhuma solicitacao para essa funcionalidade. Entao, no verao de 2000, Gerhard Rieger concebeu a ideia, escreveu uma excelente alteracao (patch) implementando-a e enviou-a para a lista de discussao nmap-hackers. Eu incorporei a alteracao na arvore do Nmap e lancei uma nova versao no dia seguinte. Poucos produtos de software comercial tem usuarios entusiasmados o suficiente para desenhar e contribuir com melhorias! O rastreio(scan) de protocolo funciona de uma forma similar a um rastreio(scan) UDP. Ao inves de ficar repetindo alternando o campo de numero de porta de um pacote UDP, ele envia cabecalhos de pacote IP e faz a repeticao alternando o campo de protocolo IP de 8 bits. Os cabecalhos normalmente estao vazios, sem conter dados, nem mesmo o cabecalho apropriado do suposto protocolo. As tres excepcoes sao o TCP, o UDP e o ICMP. Um cabecalho de protocolo apropriado para estes e incluido, uma vez que alguns sistemas nao os enviarao caso nao tenham e porque o Nmap tem as funcoes para cria-los ao inves de observar as mensagens de erro ICMP de porta inalcancavel, o rastreio(scan) de protocolo fica de olho nas mensagens ICMP de protocolo inalcancavel. Se o Nmap recebe qualquer resposta de qualquer protocolo do anfitriao(host)-alvo, o Nmap marca esse protocolo como aberto. Um erro ICMP de protocolo nao-alcancavel (tipo 3, codigo 2) faz com que o protocolo seja marcado como fechado. Outros erros ICMP do tipo inalcancavel (tipo 3, codigo 1, 3, 9, 10, ou 13) fazem com que o protocolo seja marcado como filtrado (embora eles provem, ao mesmo tempo, que o ICMP esta aberto). Se nenhuma resposta for recebida apos as retransmissoes, o protocolo e marcado como aberto|filtrado. -b (Rastreio(Scan) de FTP bounce) Uma caracteristica interessante do protocolo FTP (RFC 959[5]) e o suporte a conexoes denominadas proxy ftp. Isso permite que um usuario conecte-se a um servidor FTP e entao solicite que arquivos sejam enviados a um terceiro servidor. Tal caracteristica e sujeita a abusos em diversos niveis, por isso a maioria dos servidores parou de suporta-la. Um dos abusos permitidos e fazer com que o servidor FTP efectue o rastreio(scan) das portas de outros anfitrioes(hosts). Simplesmente solicite que o servidor FTP envie um arquivo para cada porta interessante do anfitriao(host)-alvo. A mensagem de erro ira descrever se a porta esta aberta ou nao. Esta e uma boa forma de passar por cima de firewalls porque os servidores FTP de empresas normalmente sao posicionados onde tem mais acesso a outros anfitrioes(hosts) internos que os velhos servidores da Internet teriam. O Nmap suporta o rastreio(scan) de ftp bounce com a opcao -b. Ela recebe um argumento no formato nomedousuario:senha@servidor:porta. Servidor e o nome ou endereco IP de um servidor FTP vulneravel. Assim como em uma URL normal, pode omitir nomedousuario:senha, neste caso as credenciais de login anonimo (usuario: anonymous senha:-wwwuser@) serao usados. O numero da porta (e os dois-pontos) podem ser omitidos, e entao a porta FTP default (21) no servidor sera utilizada. Esta vulnerabilidade espalhou-se em 1997 quando o Nmap foi lancado mas foi corrigida amplamente. Servidores vulneraveis ainda estao por ai, entao pode valer a pena tentar se tudo o mais falhar. Se passar por cima de um firewall e o seu objetivo, faca o rastreio(scan) da rede-alvo procurando por uma porta 21 aberta (ou mesmo por qualquer servico FTP se rastrear(scan) todas as portas com a deteccao de versao), entao tente um rastreio(scan) bounce usando-as. O Nmap ira dizer se o anfitriao(host) e vulneravel ou nao. Se estiver apenas tentando encobrir suas pegadas, nao precisa (e, na verdade, nao deveria) limitar-se a anfitrioes(hosts) na rede-alvo. Antes de sair rastreando enderecos aleatorios na Internet procurando por servidores FTP, considere que os administradores de sistemas podem nao apreciar o seu abuso nos servidores deles. ESPECIFICACAO DE PORTAS E ORDEM DE SCAN Somado a todos os metodos de rastreio(scan) discutidos anteriormente, o Nmap oferece opcoes para especificar quais portas sao rastreadas(scaned) e se a ordem de rastreio(scan) e aleatoria ou sequencial. Por default, o Nmap rastreia(scan) todas as portas ate, e incluindo, 1024, bem como portas com numeracao alta listadas no arquivo nmap-services para o(s) protocolo(s) rastreados(scaned). -p (Rastreia apenas as portas especificadas) Esta opcao especifica quais as portas que deseja rastrear(scan) e prevalece sobre o default. Numeros de portas individuais sao OK, bem como as faixas separadas por um hifen (p.ex.: 1-1023). Os valores iniciais e/ou finais da faixa podem ser omitidos, o que faz com que o Nmap use 1 e 65535 respectivamente. Portanto pode especificar -p- para rastrear(scan) as portas de 1 ate 65535. Escanear a porta zero e permitido se especificar explicitamente. Para o rastreio(scan) do protocolo IP (-sO), esta opcao especifica os numeros dos protocolos que deseja rastrear(scan) (0-255). Quando rastrear(scan) ambas as portas TCP e UDP, pode especificar um protocolo em particular precedendo os numeros de portas com T: ou U:. O qualificador dura ate que especifique um novo qualificador. Por exemplo, o argumento -p U:53,111,137,T:21-25,80,139,8080 faria o rastreio(scan) das portas UDP 53, 111 e 137, bem como as portas TCP listadas. Note que para rastrear(scan) ambas as portas UDP & TCP, tem que especificar -sU e pelo menos um tipo de rastreio(scan) TCP (tal como -sS, -sF ou -sT). Se nenhum qualificador de protocolo for informado, os numeros de portas serao acrescentados a todas as listas de protocolos. -F (rastreio(scan) Rapido (portas limitadas)) Especifica que deseja apenas rastrear(scan) as portas listadas no arquivo nmap-services que vem com o nmap (ou o arquivo de protocolos para o -sO). Isto e muito mais rapido do que rastrear(scan) todas as 65535 portas de um anfitriao(host). Pelo facto desta lista conter tantas portas TCP (mais de 1200), a diferenca de velocidade de um rastreio(scan) TCP default (cerca de 1650 portas) nao e dramatica. A diferenca pode ser enorme se especificar seu proprio minusculo arquivo nmap-services usando a opcao --datadir. -r (Nao usa as portas de forma aleatoria) Por default o Nmap usa a ordem das portas a serem rastreadas de forma aleatoria (excepto aquelas portas normalmente acessiveis que sao movidas proximas ao inicio por motivos de eficiencia). Essa tecnica de busca aleatoria normalmente e desejavel mas pode especificar -r para um rastreio(scan) de portas sequencial. DETECCAO DE SERVICO E VERSAO Aponte o Nmap para uma maquina remota e ele podera lhe dizer que as portas 25/tcp, 80/tcp e 53/udp estao abertas. Utilizar o banco de dados nmap-services com cerca de 2.200 servicos bastante conhecidos do Nmap iria relatar que aquelas portas provavelmente correspondem a um servidor de correio eletronico (SMTP), a um servidor de paginas web (HTTP) e a um servidor de nomes (DNS) respectivamente. Essa pesquisa normalmente e precisa -- a grande maioria de daemons escutando na porta TCP 25 e de facto de servidores de correio eletronico. Entretanto nao deveria apostar a sua seguranca nesta informacao! As pessoas podem e executam servicos em portas estranhas. Mesmo que o Nmap esteja certo e o servidor hipotetico acima esteja executando os servicos SMTP, HTTP e DNS, isso nao e informacao o bastante. Quando fizer uma avaliacao de vulnerabilidades (ou mesmo um simples inventario da rede) de sua empresa ou clientes, realmente deseja saber qual o programa-servidor de correio eletronico ou de nomes e as versoes que estao rodando. Ter um numero de versao exacto ajuda substancialmente na determinacao de quais exploracoes (exploits) o servidor esta vulneravel. A deteccao de versao ajuda a obter esta informacao. Depois que as portas TCP e/ou UDP forem descobertas usando qualquer um dos outros metodos de rastreio(scan), a deteccao de versao interroga essas portas para determinar mais informacoes sobre o que realmente sendo executado nessas portas. O banco de dados nmap-service-probes do Nmap contem sondagens para pesquisar diversos servicos e expressoes de acerto (match expressions) para reconhecer e destrinchar as respostas. O Nmap tenta determinar os protocolos de servicos (p.ex.: ftp, ssh, telnet, http), o nome da aplicacao (p.ex.: ISC Bind, Apache httpd, Solaris telnetd), o numero da versao, o nome do anfitriao(host), tipo de dispositivo (p.ex.: impressora, router), a familia do SO (p.ex.: Windows, Linux) e as vezes detalhes diversos do tipo, se um servidor X esta aberto para conexoes, a versao do protocolo SSH ou o nome do usuario do KaZaA. E claro que a maioria dos servicos nao fornece todas essas informacoes. Se o Nmap foi compilado com o suporte ao OpenSSL ele ira se conectar aos servidores SSL para deduzir qual o servico que esta escutando por tras da camada criptografada. Quando os servicos RPC sao descobertos, o "amolador" de RPC (RPC grinder) do Nmap (-sR) e automaticamente utilizado para determinar o nome do programa RPC e o numero da versao. Algumas portas UDP sao deixadas no estado aberta|filtrada depois que rastreio(scan) de porta UDP nao consegue determinar se a porta esta aberta ou filtrada. A deteccao de versao ira tentar provocar uma resposta dessas portas (do mesmo jeito que faz com as portas abertas) e alterar o estado para aberta se conseguir. Portas TCP do tipo aberta|filtrada sao tratadas da mesma forma. Note que a opcao -A do Nmap habilita a deteccao de versao entre outras coisas. Um trabalho documentando o funcionamento, uso e customizacao da deteccao de versao esta disponivel em https://nmap.org/versionscan.html. Quando o Nmap recebe uma resposta de um servico mas nao consegue encontra-la em seu banco de dados, ele mostra uma identificacao (fingerprint) especial e uma URL para que envie informacoes se souber com certeza o que esta rodando nessa porta. Por favor considere dispor de alguns minutos para mandar essa informacao de forma que sua descoberta possa beneficiar a todos. Gracas a esses envios o Nmap tem cerca de 3.000 padroes de acerto para mais de 350 protocolos, tais como o smtp, ftp, http, etc. A deteccao de versao e habilitada e controlada com as seguintes opcoes: -sV (deteccao de versao) Habilita a deteccao de versao, conforme discutido acima. Alternativamente pode usar a opcao -A para habilitar tanto a deteccao de SO como a deteccao de versao. --allports (Nao exclui nenhuma porta da deteccao de versao) Por default a deteccao de versao do Nmap salta a porta TCP 9100 por causa de algumas impressoras que imprimem qualquer coisa que seja enviada para essa porta, levando a dezenas de paginas com requisicoes HTTP, requisicoes de sessoes SSL binarias, etc. Esse comportamento pode ser alterado modificando-se ou removendo a directiva Exclude no nmap-service-probes ou pode especificar --allports para rastrear(scan) todas as portas independente de qualquer directiva Exclude. --version-intensity (Estabelece a intensidade do rastreio(scan) de versao) Quando esta executando um rastreio(scan) de versao (-sV) o nmap envia uma serie de sondagens, cada qual com um valor atribuido de raridade, entre 1 e 9. As sondagens com numeros baixos sao efectivas contra uma ampla variedade de servicos comuns, enquanto as com numeros altos sao raramente uteis. O nivel de intensidade especifica quais sondagens devem ser utilizadas. Quando mais alto o numero, maiores as chances de o servico ser corretamente identificado. Entretanto rastreios(scans) de alta intensidade levam mais tempo. A intensidade deve estar entre 0 e 9. O default e 7. Quando uma sondagem e registrada na porta-alvo atraves da directiva nmap-service-probes ports, essa sondagem e tentada independentemente do nivel de intensidade. Isso assegura que as sondagens DNS sempre serao tentadas contra qualquer porta 53 aberta e a sondagem SSL sera realizada contra a 443, etc. --version-light (Habilita o modo leve (light)) Esse e um apelido conveniente para --version-intensity 2. Esse modo leve torna o rastreio(scan) de versao muito mais rapido, mas e ligeiramente menos provavel que identifique os servicos. --version-all (Tenta simplesmente todas as sondagens) Um apelido para --version-intensity 9, assegurando que todas as sondagens sejam tentadas contra cada porta. --version-trace (Monitora as atividades do rastreio(scan) de versao) Isto faz com que o Nmap mostre informacoes de depuracao extensivas sobre o que o rastreio(scan) de versao esta fazendo. E um sub-conjunto do que obteria com --packet-trace. -sR (Scan RPC) Este metodo trabalha em conjunto com os varios metodos de rastreio(scan) de portas do Nmap. Ele pega todas as portas TCP/UDP descobertas no estado aberta e inunda-as com comandos NULL do programa SunRPC em uma tentativa de determinar se elas sao portas RPC e se forem, quais programas e numeros de versao elas mostram. Dessa forma pode obter efectivamente a mesma informacao que o rpcinfo -p mesmo se o portmapper do alvo estiver atras de um firewall (ou protegido por TCP wrappers). Chamarizes nao funcionam ainda com o rastreio(scan) RPC. Isso e habilitado automaticamente como parte do rastreio(scan) de versao (-sV) se o solicitar. Como a deteccao de versao inclui isso e e muito mais abrangente, o -sR raramente e necessario. DETECCAO DE SO Uma das caracteristicas mais conhecidas do Nmap e a deteccao remota de SO utilizando a identificacao da pilha (stack fingerprinting) do TCP/IP. O Nmap envia uma serie de pacotes TCP e UDP ao anfitriao(host) remoto e examina praticamente todos os bits das respostas. Apos executar dezenas de testes como a amostragem TCP ISN, suporte e ordenamento das opcoes do TCP, amostragem IPID e a observacao do tamanho inicial da janela, o Nmap compara os resultados com o banco de dados nmap-os-fingerprints com mais de 1500 identificacoes de SO conhecidas e mostra os detalhes do SO se houver uma correspondencia. Cada identificacao inclui uma descricao textual livre do SO e uma classificacao que fornece o nome do fabricante (p.ex.: Sun), SO base (p.ex.: Solaris), geracao do SO (p.ex.: 10) e tipo de dispositivo (generico, router, switch, consola de jogo, etc.). Se o Nmap nao conseguir identificar o SO da maquina e as condicoes forem favoraveis (p.ex.: pelo menos uma porta aberta e uma porta fechada foram encontradas), o Nmap ira fornecer uma URL onde podera enviar a identificacao se souber (com certeza) o SO em execucao na maquina. Fazendo isso, contribui para o pool de sistemas operacionais conhecidos pelo Nmap e, com isso, ele sera mais preciso para todos. A deteccao de SO habilita diversos outros testes que usam as informacoes coletadas durante o processo. Um deles e a medicao de uptime, que utiliza a opcao timestamp do TCP (RFC 1323) para supor quando uma maquina foi reiniciada pela ultima vez. Isso apenas e mostrado para as maquinas que fornecem essa informacao. Outro e a Classificacao de Previsibilidade da Sequencia do TCP. Ele mede aproximadamente o grau de dificuldade de se estabelecer uma conexao TCP forjada contra um anfitriao(host) remoto. E util para se explorar relacoes de confianca baseadas no IP de origem (rlogin, filtros de firewall, etc.) ou para ocultar a origem de um ataque. Esse tipo de enganacao (spoofing) raramente e executada hoje em dia, mas muitas maquinas ainda estao vulneraveis a ele. O numero de dificuldade real e baseado em amostragens estatisticas e pode variar. Normalmente e melhor usar a classificacao em ingles, do tipo "worthy challenge" (um desafio que vale a pena) ou "trivial joke" (uma piada, muito facil). Isso so e mostrado na saida normal do modo verbose (-v). Quando o modo verbose e habilitado juntamente com o -O, a Geracao de Sequencia IPID tambem e mostrada. A maioria das maquinas e classificada como "incremental" , o que significa que elas incrementam o campo ID no cabecalho IP para cada pacote que envia. Isso torna-as vulneravel a diversos ataques avancados de levantamento e forjamento de informacoes. Um trabalho documentando o funcionamento, utilizacao e customizacao da dateccao de versao esta disponivel em mais de uma dezena de linguas em https://nmap.org/osdetect/. A detecao de SO e habilitada e controlada com as seguintes opcoes: -O (Habilita a deteccao de SO) Habilita a detecao de SO como discutido acima. Alternativamente pode usar -A para habilitar tanto a deteccao de SO quanto a deteccao de versao. --osscan-limit (Limitar a deteccao de SO a alvos promissores) A deteccao de SO e bem mais eficiente se ao menos uma porta TCP aberta e uma fechada for encontrada. Escolha esta opcao e o Nmap nao ira nem tentar a deteccao de SO contra anfitrioes(hosts) que nao correspondam a este criterio. Isso pode economizar um tempo consideravel, particularmente em rastreios(scans) -P0 contra muitos anfitrioes(hosts). Isso so importa quando a deteccao de SO e solicitada atraves de -O ou -A. --osscan-guess; --fuzzy (Resultados de tentativas de deteccao de SO) Quano o Nmap nao e capaz de detectar uma correspondencia exacta de SO, as vezes ele oferece possibilidades aproximada. A correspondencia tem que ser muito proxima para o Nmap fazer isso por default. Qualquer uma dessas opcoes (equivalentes) tornam as tentativas do Nmap mais agressivas. TEMPORIZACAO (TIMING) E DESEMPENHO Uma das minhas mais altas prioridades no desenvolvimento do Nmap tem sido o desempenho. Um rastreio(scan) default (nmap hostname) de um anfitriao(host) em minha rede local leva apenas um quinto de segundo. Isso mal da tempo de piscar o olho, mas esse tempo conforme esta rastreando dezenas ou centenas de milhares de anfitrioes(hosts). Alem disso, certos tipos de rastreio(scan) como o rastreio(scan) UDP ou a deteccao de versao, aumentam o tempo de rastreio(scan) substancialmente. Da mesma forma algumas configuracoes de firewall fazem o mesmo, particularmente quando limitam a taxa de resposta. Embora o Nmap se utilize de paralelismo e muitos outros algoritmos avancados para acelerar esses rastreios(scans) o usuario tem o controle final sobre como o Nmap executa. Usuarios avancados elaboram comandos do Nmap cuidadosamente para obter apenas as informacoes que importam, sempre se preocupando com as restricoes de tempo. Tecnicas para melhorar os tempos de rastreio(scan) incluem omitir testes nao-criticos e atualizar ate a versao mais recente do Nmap (melhorias de desempenho sao feitas frequentemente). Otimizar os parametros de tempo tambem podem fazer uma grande diferenca. Essas opcoes estao listadas abaixo. --min-hostgroup ; --max-hostgroup (Ajuste dos tamanhos dos grupos de rastreio(scan) paralelos) O Nmap tem a habilidade de fazer um rastreio(scan) de portas ou de versoes em multiplos anfitrioes(hosts) em paralelo. O Nmap faz isso dividindo a faixa de enderecos IP-alvo em grupos e entao rastreando um grupo de cada vez. No geral grupos maiores sao mais eficientes. A contrapartida e que os resultados dos anfitrioes(hosts) nao pode ser fornecido ate que o grupo inteiro tenha terminado. Portanto se o Nmap comecou com um tamanho de grupo igual a 50, o usuario nao receberia nenhum relatorio (exceto pelas atualizacoes mostradas no modo verbose) ate que os primeiros 50 anfitrioes(hosts) tivessem completado. Por default, o Nmap assume um compromisso para resolver esse conflito. Ele comeca com um tamanho de grupo pequeno, igual a cinco, para que os primeiros resultados venham rapido e entao aumenta o tamanho ate que chegue em 1024. O numero default exacto depende das opcoes fornecidas. Por questoes de eficiencia o Nmap usa tamanhos de grupo maiores para o UDP ou para rastreios(scans) TCP com poucas portas. Quando o tamanho de grupo maximo e especificado com --max-hostgroup, o Nmap nunca ira exceder esse tamanho. Especifique um tamanho minimo com --min-hostgroup e o Nmap ira tentar manter o tamanho dos grupos acima desse nivel. O Nmap pode ter que usar tamanhos menores do que especificou, se nao houverem anfitrioes(hosts)-alvo suficientes restando em uma dada interface para completar o minimo especificado. Ambos podem ser configurados para manter o tamanho do grupo dentro de uma faixa especifica, embora isso raramente seja desejado. O uso primario destas opcoes e especificar um tamanho de grupo minimo grande de forma que o rastreio(scan) completo seja executado mais rapidamente. Uma escolha comum e 256 para rastrear(scan) uma rede em blocos de tamanho Classe C. Para um rastreio(scan) com muitas portas exceder esse numero nao ira ajudar muito. Para rastreios(scans) com poucos numeros de portas um tamanho de grupo de anfitrioes(hosts) de 2048 ou mais pode ser util. --min-parallelism ; --max-parallelism (Ajuste da paralelizacao das sondagens) Estas opcoes controlam o numero total de sondagens que podem estar pendentes para um grupo de anfitrioes(hosts). Elas sao usadas para o rastreio(scan) de portas e para a descoberta de anfitrioes(hosts). Por default o Nmap calcula um paralelismo ideal e constantemente actualizado baseado no desempenho da rede. Se os pacotes estiverem sendo descartados o Nmap reduz o ritmo e liberta menos sondagens pendentes. O numero de sondagens ideal aumenta vagarosamente conforme a rede se mostre mais confiavel. Estas opcoes estabelecem limites minimo e maximo nessa variavel. Por default o paralelismo ideal pode cair ate 1 se a rede se mostrar nao-confiavel e subir ate diversas centenas em condicoes perfeitas. O uso mais comum e estabelecer --min-parallelism em um numero maior que um para melhorar a velocidade dos rastreios(scans) de anfitrioes(hosts) ou redes com desempenho ruim. Esta e uma opcao arriscada para se ficar brincando pois configurar um valor alto demais pode afetar a precisao. Configurar isso tambem reduz a habilidade do Nmap de controlar o paralelismo dinamicamente baseado nas condicoes da rede. Um valor igual a dez pode ser razoavel, embora eu so ajuste esse valor como ultima alternativa. A opcao --max-parallelism as vezes e configurada para evitar que o Nmap envie aos anfitrioes(hosts) mais do que uma sondagem de cada vez. Isso pode ser util em conjunto com --scan-delay (discutido mais tarde), embora esta ultima normalmente sirva bem ao proposito por si so. --min-rtt-timeout , --max-rtt-timeout , --initial-rtt-timeout (Ajuste de tempo de expiracao (timeouts) das sondagens) O Nmap mantem um valor de tempo de expiracao (timeout) de execucao para determinar quanto tempo ele deve esperar por uma resposta de uma sondagem antes de desistir ou retransmitir essa sondagem. Isso e calculado com base nos tempos de resposta de sondagens anteriores. Se a lentidao da rede se mostra significativa e variavel esse tempo de expiracao pode subir para varios segundos. Ele tambem comeca com um nivel conservador (alto) e pode ficar desse jeito por um tempo enquanto o Nmap rastreia(scan) anfitrioes(hosts) nao-responsivos. Estas opcoes recebem um valor em milissegundos. Especificar um --max-rtt-timeout e --initial-rtt-timeout mais baixos que o default pode reduzir o tempo de rastreio(scan) significativamente. Isso e particularmente verdade para rastreios(scans) sem ping (-P0) e para aqueles contra redes bastante filtradas. Mas nao se torne muito agressivo. O rastreio(scan) pode acabar levando mais tempo se especificar um valor tao baixo que muitas sondagens irao expirar o tempo e serem retransmitidas enquanto a resposta ainda esta em transito. Se todos os anfitrioes(hosts) estao em uma rede local, 100 milissegundos e um valor de --max-rtt-timeout razoavelmente agressivo. Se houver roteamento envolvido faca um ping de um anfitriao(host) da rede primeiro com o utilitario ICMP ping ou com um formatador de pacotes customizados como o hping2, que pode passar por um firewall mais facilmente. Descubra o tempo maximo de round trip em dez pacotes mais ou menos. Coloque o dobro desse valor em --initial-rtt-timeout e o triplo ou quadruplo para o --max-rtt-timeout. Normalmente eu nao configuro o rtt maximo abaixo de 100ms, nao importa quais os tempos de ping. Eu tambem nao excedo o valor 1000ms. --min-rtt-timeout e uma opcao raramente utilizada que poderia ser util quando uma rede e tao nao-confiavel que mesmo o default do Nmap e muito agressivo. Considerando que o Nmap apenas reduz o tempo de expiracao para um valor minimo quando a rede parece ser confiavel, esta necessidade nao e comum e deveria ser reportada a lista de discussao nmap-dev como um bug. --host-timeout (Desiste em anfitrioes(hosts)-alvo lentos) Alguns anfitrioes(hosts) simplesmente levam tempo demais para serem rastreados. Isso pode ser causado por um hardware ou software de rede com fraco desempenho ou pouco confiavel, limitacao na taxa dos pacotes ou por um firewall restritivo. Os poucos anfitrioes(hosts) mais lentos de todos os anfitrioes(hosts) escaneados podem acabar sendo responsaveis pela maior parte do tempo total gasto com o rastreio(scan). As vezes e melhor cortar fora o prejuizo e saltar esses anfitrioes(hosts) logo no inicio. Isso pode ser feito especificando --host-timeout com o numero de milissegundos que tolera esperar. Eu normalmente especifico 1800000 para ter certeza de que o Nmap nao ira gastar mais do que meia hora em um unico anfitriao(host). Note que o Nmap pode estar escaneando outros anfitrioes(hosts) ao mesmo tempo em que essa meia hora desse unico anfitriao(host) esta correndo, entao nao e uma perda de tempo total. Um anfitrioes(hosts) que expira o tempo e saltado. Nenhum resultado de tabela de portas, deteccao de SO ou deteccao de versao e mostrado para esse anfitriao(host). --scan-delay ; --max-scan-delay (Ajusta o atraso entre sondagens) Esta opcao faz com que o Nmap aguarde um determinado numero de milissegundos entre cada sondagem enviada a um dado anfitriao(host). Isto e particularmente util no caso de limitacao de taxas de transferencia. Maquinas Solaris (entre muitas outras) irao normalmente responder a pacotes de sondagens de rastreios(scans) UDP com apenas uma mensagem ICMP por segundo. Qualquer numero maior que isso, enviado pelo Nmap, sera um desperdicio. Um --scan-delay de 1000 ira manter uma taxa de transferencia baixa. O Nmap tenta detectar a limitacao de taxa e ajusta o atraso no rastreio(scan) de acordo, mas nao doi especificar explicitamente se ja sabe qual a taxa que funciona melhor. Outro uso do --scan-delay e para evitar os sistemas de prevencao e detecao de intrusao (IDS/IPS) baseados em limites. -T (Estabelece um padrao de temporizacao) Embora os controles de temporizacao de ajuste fino discutidos nas secoes anteriores sejam poderosos e efectivos, algumas pessoas consideram-nos confusos. Escolher os valores apropriados pode as vezes levar mais tempo do que o proprio rastreio(scan) que esta tentando optimizar. Por isso o Nmap oferece uma aproximacao mais simples com seis padroes de temporizacao. Voce pode especifica-los com a opcao -T e os numeros (0 - 5) ou os nomes. Os nomes de padroes sao paranoico (paranoid, 0), furtivo (sneaky, 1), educado (polite, 2), normal (3), agressivo (agressive, 4) e insano (insane, 5). Os dois primeiros sao para evitar um IDS. O modo educado (ou polido), diminui o ritmo de rastreio(scan) para usar menos banda e recursos da maquina alvo. O modo normal e o default e, portanto, -T3 nao faz nada. O modo agressivo acelera os rastreios(scans) assumindo que esta em uma rede razoavelmente rapida e confiavel. Finalmente, o modo insano assume que esta em uma rede extraordinariamente rapida ou esta disposto a sacrificar alguma precisao pela velocidade. Estes padroes permitem que o usuario especifique o quao agressivo desejam ser, ao mesmo tempo que deixam o Nmap escolher os valores de temporizacao exactos. Os padroes tambem fazem ajustes pequenos na velocidade onde ainda nao existem opcoes para controle de ajuste fino. Por exemplo, -T4 proibe que o atraso dinamico de rastreio(scan) exceda 10ms para portas TCP e -T5 corta esse valor para 5 milissegundos. Padroes podem ser utilizados em conjunto com controles de ajuste fino desde que o padrao seja especificado primeiramente. Do contrario os valores default para os padroes irao se sobrepor aos valores que especificar. Eu recomendo usar -T4 quando rastrear(scan) redes razoavelmente modernas e confiaveis. Mantenha essa opcao (no comeco da linha de comando) mesmo que adicione controles de ajuste fino, de forma que possa se beneficiar com as pequenas otimizacoes extras que ela habilita. Se tiver uma conexao ethernet ou de banda-larga decente, eu recomendaria sempre utilizar -T4. Algumas pessoas adoram o -T5 embora seja agressivo demais para o meu gosto. As pessoas as vezes especificam -T2 porque acham que diminui a probabilidade de travar os anfitrioes(hosts) ou porque elas consideram-se educadas em geral. Normalmente elas nao percebem o quao lento o -T Polite realmente e. Esses rastreios(scans) podem levar dez vezes mais tempo que um rastreio(scan) default. Travamento de maquinas e problemas com a banda sao raros com as opcoes de temporizacao default (-T3) e portanto, eu normalmente as recomendo para escaneadores precavidos. Omitir a deteccao de versao e bem mais eficaz do que ficar brincando com os valores de temporizacao para reduzir esses problemas. Embora o -T0 e o -T1 possam ser usados para evitar alertas no IDS, eles irao leva muito mais tempo para rastrear(scan) milhares de maquinas ou portas. Para um rastreio(scan) tao amplo prefira estabelecer os valores exatos de temporizacao que precisa ao inves de depender dos valores "engessados" de -T0 e -T1. Os principais efeitos de T0 e serializar o rastreio(scan) de forma que apenas uma porta e rastreada de cada vez e entao aguardar cinco minutos entre o envio de cada sondagem. T1 e T2 sao similares mas aguardam apenas 15 segundos e 0,4 segundos, respectivamente, entre as sondagens. T3 e o comportamento default do Nmap, que inclui o paralelismo. T4 faz o mesmo que --max-rtt-timeout 1250 --initial-rtt-timeout 500 e estabelece o atraso maximo de rastreio(scan) TCP em 10 milissegundos. T5 faz o mesmo que --max-rtt-timeout 300 --min-rtt-timeout 50 --initial-rtt-timeout 250 --host-timeout 900000 e estabelece o atraso maximo de rastreio(scan) TCP em 5ms. EVITANDO E ENGANANDO O FIREWALL/IDS Muitos pioneiros da Internet vislumbraram uma rede mundial aberta com um espaco de enderecamento IP universal que permitisse conexoes virtuais entre quaisquer dois nos. Isso permite que os anfitrioes(hosts) actuem como verdadeiros semelhantes, servindo e obtendo informacoes uns dos outros. As pessoas poderiam aceder a seus computadores domesticos do trabalho, mudando os ajustes do controle de climatizacao ou abrindo as portas para convidados. Essa visao de conectividade universal foi sufocada pela falta de espaco de enderecamento e preocupacoes com a seguranca. No inicio dos anos 1990 as empresas comecaram a instalar firewalls para o proposito claro de reduzir a conectividade. Rede enormes foram isoladas da Internet-sem-fronteiras por proxies de aplicativos, traducao de enderecamento de rede (network address translation) e filtros de pacotes. O fluxo irrestrito de informacoes deu a vez a regulamentacao acirrada de canais de comunicacao autorizados e ao conteudo que neles trafegam. As obstrucoes de rede como o firewall podem tornar o mapeamente de uma rede extremamente dificil. E isso nao vai se tornar mais facil, pois sufocar as sondagens casuais e frequentemente o objetivo principal de se instalar esses dispositivos. Apesar disso o Nmap oferece muitas ferramentas para ajudar a entender essas redes complexas e para verificar que os filtros estao funcionando como esperado. Ele ate suporta mecanismos para passar por cima de defesas mal implementadas. Um dos melhores metodos para se entender a postura de seguranca de uma rede e tentar derruba-la. Pense com a mente de uma pessoa que quer ataca-lo e aplique tecnicas desta secao contra a sua rede. Lance um rastreio(scan) FTP bounce, um rastreio(scan) idle, um ataque de fragmentacao ou tente "tunelar" (criar um tunel) atraves de um de seus proprios proxies. Alem de restringir a atividade de rede as empresas estao monitorando o trafego cada vez mais com sistemas de deteccao de intrusao (IDS). Todos os principais IDS vem com regras designadas para detectar rastreios(scans) feitos com o Nmap porque os rastreios(scans) sao, as vezes, precursores de ataques. Muitos desses produtos foram recentemente metamorfoseados em sistemas de prevencao de intrusao (IPS) que bloqueiam o trafego considerado malicioso de forma activa. Infelizmente para administradores de rede e vendedores de IDS, detectar confiavelmente as mas intencoes atraves da analise de dados de pacotes e um problema dificil. Atacantes com paciencia, habilidade e a ajuda de certas opcoes do Nmap podem normalmente passar por um IDS sem serem detectados. Enquanto isso, os administradores devem lidar com um alto numero de resultados do tipo falso-positivo onde actividades inocentes sao diagnosticadas erradamente e recebem alertas ou sao bloqueadas. De vez em quando as pessoas sugerem que o Nmap nao deveria oferecer opcoes que permitam evitar as regras de firewalls ou passar desapercebidos por IDSs. Elas argumentam que essas caracteristicas sao tao sujeitas a ma-utilizacao por atacantes quanto sao utilizadas por administradores para aumentar a seguranca. O problema com esta logica e que esses metodos ainda assim seriam utilizados pelos atacantes que encontrariam outras ferramentas ou entao acrescentariam essa funcionalidade no Nmap. Enquanto isso os administradores achariam muito mais dificil executar suas tarefas. Instalar apenas servidores FTP modernos e corrigidos e uma defesa muito melhor do que tentar evitar a distribuicao de ferramentas que implementem o ataque FTP bounce. Nao existe uma carta magica (ou opcao do Nmap) para detectar e subverter firewalls e sistemas IDS. E necessario habilidade e experiencia. Um tutorial esta alem do objectivo deste guia de referencia que apenas lista as opcoes relevantes e descreve suas funcoes. -f (fragmenta os pacotes); --mtu (usando a MTU especificada) A opcao -f faz com que o rastreio(scan) solicitado (incluindo rastreios(scans) usando ping) utilize pequenos pacotes IP fragmentados. A ideia e dividir o cabecalho TCP em diversos pacotes para tornar mais dificil para os filtros de pacotes, os sistemas de deteccao de intrusao e outros aborrecimentos, detectar o que esta fazendo. Tenha cuidado com isto! Alguns programas tem problemas para lidar com estes pequenos pacotes. O sniffer da velha-guarda chamado Sniffit sofria uma falha de segmentacao assim que recebia o primeiro fragmento. Especifique esta opcao uma vez e o Nmap dividira os pacotes em 8 bytes ou menos apos o cabecalho IP. Portanto, um cabecalho TCP de 20 bytes seria dividido em 3 pacotes. Dois com oito bytes do cabecalho TCP e um com os quatro restantes. E claro que cada fragmento tambem tem um cabecalho IP. Especifique -f novamente para usar 16 bytes por fragmento (reduzindo o numero de fragmentos). Ou entao, pode especificar o seu proprio tamanho de quebra com a opcao --mtu. Nao especifique tambem o -f se usar o --mtu. A quebra deve ser um multiplo de 8. Embora os pacotes fragmentados nao passem por filtros de pacotes e firewalls que enfilerem todos os fragmentos IP, tal como a opcao CONFIG_IP_ALWAYS_DEFRAG do kernel do Linux faz, algumas redes nao aguentam o impacto no desempenho que isso causa deixando a opcao desabilitada. Outros nao conseguem habilitar isso porque os fragmentos podem seguir por rotas diferentes na rede. Alguns sistemas de origem desfragmentam pacotes de saida no kernel. O Linux e o modulo de reastreamento de conexao do iptables e um exemplo desse tipo. Faca um rastreio(scan) enquanto executa um sniffer como o Ethereal para ter a certeza de que pacotes enviados estao fragmentados. Se o SO do seu anfitriao(host) estiver causando problemas tente a opcao --send-eth para passar por cima da camada IP e enviar frames ethernet em estado bruto(raw). -D (Disfarca um rastreio(scan) usando chamarizes) Faz com que um rastreio(scan) com chamarizes seja executado, o que parece ao anfitriao(host) remoto que, o(s) anfitriao(host)(s) que especificou como chamarizes tambem estejam rastreando a rede-alvo. Com isso, o IDS podera reportar 5 a 10 rastreios(scans) de portas de enderecos IP unicos, mas nao sabera qual IP estava realmente efectuado o rastreio(scan) e qual era um chamariz inocente. Embora isso possa ser desvendado atraves de rastreamento de caminho de router, descarte de respostas (response-dropping) e outros mecanismos activos, normalmente e uma tecnica eficaz para esconder o seu endereco IP. Separe cada anfitriao(host)-chamariz com virgulas e pode opcionalmente usar ME como um dos chamarizes para representar a posicao do seu endereco IP real. Se colocar ME na 6a. posicao ou acima, alguns detectores de rastreio(scan) de portas comuns (como o excelente scanlogd da Solar Designer) pouco provavelmente irao mostrar o seu endereco IP. Se nao utilizar o ME o nmap ira coloca-lo em uma posicao aleatoria. Observe que os anfitrioes(hosts) que utilizar como chamarizes devem estar activos ou podera acidentamente inundar com SYN os seus alvos. Tambem sera bastante facil determinar qual e o anfitriao(host) que esta a efectuar o rastreio(scan) se houver apenas um anfitriao(host) realmente activo na rede. Voce pode preferir usar enderecos IP ao inves de nomes (de forma que as redes chamarizes nao vejam em seus logs dos servidores de nomes). Chamarizes sao utilizados tanto no rastreio(scan) com ping inicial (usando ICMP, SYN, ACK ou qualquer outro) como tambem durante a fase real de rastreio(scan) de portas. Chamarizes tambem sao usados durante a deteccao de SO remoto (-O). Chamarizes nao funcionam com a deteccao de versao ou com o rastreio(scan) TCP connect(). Vale a pena observar que usar chamarizes demais pode deixar seu rastreio(scan) lento e potencialmente ate torna-lo menos preciso. Outra coisa, alguns provedores ISP irao filtrar os seus pacotes disfarcados mas muitos nao restringem pacotes IP disfarcados. -S (Disfarca o endereco de origem) Em algumas circunstancias o Nmap pode nao conseguir determinar o seu endereco de origem (o Nmap ira dizer se for esse o caso). Nesta situacao use o -S com o endereco IP da interface que deseja utilizar para enviar os pacotes. Outro uso possivel para esta flag e para disfarcar o rastreio(scan) e fazer com que os alvos achem que alguma outra pessoa esta fazendo o rastreio(scan). Imagine uma empresa que esta constantemente sofrendo rastreios(scans) de portas de um concorrente! A opcao -e normalmente seria requerida para este tipo de uso e -P0 seria recomendavel. -e (Usa a interface especificada) Diz ao Nmap qual interface deve ser utilizada para enviar e receber pacotes. O Nmap deveria ser capaz de detectar isto automaticamente mas ele informara se nao conseguir. --source-port ; -g (Disfarca o numero de porta de origem) Um erro de configuracao surpreendentemente comum e confiar no trafego com base apenas no numero da porta de origem. E facil entender como isso acontece. Um administrador configura um firewall novinho em folha so para ser inundado com queixas de usuarios ingratos cujas aplicacoes param de funcionar. Em particular, o DNS pode parar de funcionar porque as respostas DNS UDP de servidores externos nao conseguem mais entrar na rede. O FTP e outro exemplo comum. Em tranferencias FTP activas o servidor remoto tenta estabelecer uma conexao de volta com o cliente para poder transferir o arquivo solicitado. Solucoes seguras para esses problemas existem frequentemente na forma de proxies no nivel da aplicacao ou modulos de firewall para analise de protocolo. Infelizmente tambem ha solucoes mais faceis e inseguras. Observando que as respostas DNS chegam pela porta 53 e o FTP activo pela porta 20 muitos administradores caem na armadilha de apenas permitir trafego vindo dessas portas. Eles normalmente assumem que nenhum atacante ira notar e explorar essas brechas no firewall. Em outros casos os administradores consideram isso uma medida provisoria de curto prazo ate que eles possam implementar uma solucao mais segura. Normalmente ele esquecem-se de fazer as actualizacoes de seguranca. Administradores de rede sobrecarregados nao sao os unicos a cairem nessa armadilha. Diversos produtos foram empacotados com essas regras inseguras. Mesmo a Microsoft e culpada. Os filtros IPsec que vieram com o Windows 2000 e com o Windows XP contem uma regra implicita que permite todo o trafego TCP ou UDP da porta 88 (Kerberos). Em outro caso bastante conhecido, versoes do firewall pessoal Zone Alarm, ate a versao 2.1.25, permitiam qualquer pacote UDP entrante com a porta de origem 53 (DNS) ou 67 (DHCP). O Nmap oferece as opcoes -g e --source-port (elas sao equivalentes) para explorar essas fraquezas. Apenas forneca um numero de porta e o Nmap ira enviar pacotes dessa porta onde for possivel. O Nmap utiliza numeros de porta diferentes para que certos testes de deteccao de SO funcionem direito e as requisicoes DNS ignoram a flag --source-port porque o Nmap confia nas bibliotecas de sistema para lidar com isso. A maioria dos rastreios(scans) TCP, incluindo o rastreio(scan) SYN, suportam a opcao completamente assim como o rastreio(scan) UDP. --data-length (Acrescenta dados aleatorios nos pacotes enviados) Normalmente o Nmap envia pacotes minimalistas contendo apenas o cabecalho. Dessa forma os pacotes TCP tem normalmente 40 bytes e os echo requests ICMP tem so 28. Esta opcao faz com que o Nmap acrescente o numero informado de bytes aleatorios na maioria dos pacotes que envia. Os pacotes de deteccao de SO (-O) nao sao afectados mas a maioria dos pacotes de ping e rastreio(scan) de portas sao. Isso atrasa as coisas mas pode tornar um rastreio(scan) ligeiramente menos chamativo. --ttl (Establece o valor do campo time-to-live) Estabelece que o campo tempo-de-vida (time-to-live) dos pacotes enviados tera o valor informado. --randomize-hosts (Torna aleatoria a ordem dos anfitrioes(hosts)-alvo) Informa ao Nmap que ele deve embaralhar cada grupo de, no maximo, 8096 anfitrioes(hosts) antes de efectuar o rastreio(scan). Isso torna os rastreios(scans) menos obvios a varios sistemas de monitoramento de rede, especialmente quando combina isso com as opcoes de temporizacao lentas. Se deseja que fazer isso em grupos maiores aumente o PING_GROUP_SZ no nmap.h e recompile. Uma solucao alternativa e gerar uma lista de enderecos IP-alvos com um rastreio(scan) de lista (-sL -n -oN nomedoarquivo), embaralhar a lista com um script Perl e entao fornecer a lista completa para o Nmap com -iL. --spoof-mac (Disfarca o endereco MAC) Solicita ao Nmap que utilize o endereco MAC informado para todos os frames ethernet em estado bruto (raw) que ele enviar. Esta opcao implica em --send-eth para assegurar que o Nmap realmente envie pacotes no nivel ethernet. O MAC fornecido pode assumir diversos formatos. Se for apenas a string "0" o Nmap ira escolher um MAC completamente aleatorio para a sessao. Se a string informada for um numero par de digitos hexa (com os pares opcionalmente separados por dois pontos) o Nmap ira usa-la como o MAC. Se menos do que 12 digitos hexa forem informados o Nmap preenche o restante dos 6 bytes com valores aleatorios. Se o argumento nao for um 0 ou uma string hexa o Nmap ira procurar no nmap-mac-prefixes para encontrar o nome de um fabricante contendo a string informada (nao e sensivel a maiusculas ou minusculas). Se encontrar, o Nmap usa o OUI (prefixo de 3 bytes) do fabricante e preenche os 3 bytes restantes aleatoriamente. Exemplos de argumentos --spoof-mac validos sao Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2 e Cisco. SAIDA (OUTPUT) Qualquer ferramenta de seguranca so e util se a saida que ela gera tambem o for. Testes e algoritmos complexos sao de pouco valor se nao forem apresentados de uma forma organizada e compreensivel. Dado o numero de formas que o Nmap e utilizado pelas pessoas e por outros softwares, nenhum formato ira agradar a todos. Entao o Nmap oferece diversos formatos incluindo o modo interativo para humanos lerem diretamente e o XML para facil interpretacao por um software. Alem de oferecer diversos formatos de saida, o Nmap fornece opcoes para controlar a verbosidade da saida assim como as mensagens de depuracao. Os tipos de saida podem ser enviados para a saida padrao (standard output) ou para arquivos, o qual o Nmap pode acrescentar ou entao sobrescrever. Arquivos de saida tambem podem ser utilizados para se retomar rastreios(scans) abortados. O Nmap torna a saida disponivel em cinco formatos diferentes. O default e chamado de saida interativa (interactive output) e e enviada para a saida padrao (stdout). Ha tambem a saida normal (normal output) que e similar a interativa excepto pelo facto de mostrar menos informacoes e alertas sobre a execucao uma vez que se espera que seja feita uma analise somente apos o rastreio(scan) completar, ao inves de interativamente. A saida XML e um dos tipos de saida mais importantes pois permite a conversao para HTML, e facilmente analisada por programas como a interface grafica do Nmap ou pode ser importada em banco de dados. Os dois tipos restantes de saida sao a simples saida para o grep (grepable output) que inclui a maioria das informacoes de um anfitriao(host)-alvo em uma unica linha e a s4id4 sCRiPt KiDDi3 (sCRiPt KiDDi3 0utPUt) para usuarios que se consideram 1r4d0z (|<-r4d). Embora a saida interativa seja a default e nao tenha associada nenhuma opcao de linha de comando, as outras quatro opcoes de formato utilizam a mesma sintaxe. Elas recebem um argumento que e o nome do arquivo onde os resultados devem ser armazenados. Formatos multiplos podem ser especificados mas cada formato so pode ser especificado uma vez. Por exemplo, pode querer armazenar a saida normal para seu uso enquanto grava a saida XML do mesmo rastreio(scan) para analise utilizando programas. Voce pode fazer isso com as opcoes -oX myscan.xml -oN myscan.nmap. Embora este capitulo use nomes simples como myscan.xml por uma questao de brevidade, nomes mais descritivos normalmente sao recomendados. Os nomes escolhidos sao uma questao de preferencia pessoal, embora eu use nomes longos que incorporam da data do rastreio(scan) e uma palavra ou duas que descrevam o rastreio(scan), colocados em um diretorio com o nome da empresa que eu estou rastreando. Mesmo que essas opcoes gravem os resultados em arquivos, o Nmap ainda assim mostra a saida interativa na stdout como de costume. Por exemplo, o comando nmap -oX myscan.xml target grava em XML no myscan.xml e enche a saida padrao com os mesmos resultados interativos que teria mostrado se a opcao -oX nao tivesse sido especificada. Voce pode mudar isso passando um caracter hifen como argumento de um dos tipos de formato. Isso faz com que o Nmap desactive a saida interativa e apenas grave os resultados no formato que especificou para a saida padrao. Dessa forma, o comando nmap -oX - target ira enviar apenas a saida XML para a stdout. Erros serios ainda podem ser mostrados na saida padrao de erros, stderr. Ao contrario de alguns argumentos do Nmap o espaco em branco entre a flag da opcao (como a -oX) e o nome do arquivo ou hifen e obrigatorio. Se omitir as flags e informar argumentos como -oG- ou -oXscan.xml, uma caracteristica de compatibilidade retroactiva do Nmap ira causar a criacao de arquivos de saida do tipo normal format chamados G- e Xscan.xml respectivamente. O Nmap tambem oferece opcoes para controlar a verbosidade do rastreio(scan) e para acrescentar informacoes nos arquivos de saida ao inves de sobrepor. Todas essas opcoes estao descritas abaixo. Formatos de Saida do Nmap -oN (Saida normal) Solicita que a saida normal (normal output) seja direcionada para o arquivo informado. Conforme discutido acima, e um pouco diferente da saida interativa (interactive output). -oX (Saida em XML) Solicita que a saida em XML (XML output) seja direcionada para o arquivo informado. O Nmap inclui uma definicao do tipo de documento (document type definition, DTD) que permite que os analisadores (parsers) XML validem a saida em XML do Nmap. Embora seja primeiramente voltada para ser usada por programas tambem pode ajudar os humanos a interpretar a saida em XML do Nmap. A DTD define os elementos validos do formato e geralmente enumera os atributos e valores que eles podem receber. A ultima versao esta sempre disponivel em https://nmap.org/data/nmap.dtd. O XML oferece um formato estavel que e facilmente interpretado por software. Interpretadores (parsers) XML gratuitos estao disponivel para as principais linguagens de computador, incluindo C/C++, Perl, Python e Java. As pessoas ate ja escreveram extensoes para a maioria dessas linguagens para manipular a saida e a execucao especificamente do Nmap. Exemplos sao o Nmap::Scanner[6] e o Nmap::Parser[7] em Perl CPAN. Em quase todos os casos em que uma aplicacao nao-trivial faz interface com o Nmap, o XML e o formato preferido. A saida XML faz referencia a uma folha de estilo que pode ser usada para formatar os resultados em HTML. A forma mais facil de se utilizar isso e simplesmente carregar a saida XML em um navegador web como o Firefox ou o IE. Por default, isso so ira funcionar na maquina onde rodou o Nmap (ou em uma maquina similarmente configurada) devido ao caminho (path) do sistema de arquivos (filesystem) gravado de forma inalteravel do nmap.xsl. Veja a opcao --stylesheet para ver uma forma de criar um arquivo XML portavel que possa ser interpretado como um HTML em qualquer maquina conectada a web. -oS (S4id4 ScRipT KIdd|3) A saida script kiddie e como a saida interativa, com a diferenca de ser pos-processada para atender melhor ao "hacker de elite" ('l33t HaXXorZ') que antigamente rejeitava o Nmap devido ao uso consistente de maiusculas e minusculas e a grafia correta. Pessoas sem senso de humor devem observar que esta opcao serve para se fazer graca dos script kiddies antes de me lixar por estar, supostamente, "ajudando-os". -oG (Saida para o grep) Este formato de saida e mencionado por ultimo porque esta deprecado. O formato de saida XML e muito mais poderoso e e bastante adequado para usuario avancados. O XML e um padrao para o qual existem dezenas de excelentes interpretadores (parsers) disponiveis, enquanto que a saida para o grep e um quebra-galho feito por mim. O XML e estensivel para suportar novas caracteristicas do Nmap conforme elas forem lancadas, por outro lado, sempre tenho que omitir essas novas caracteristicas da saida para o grep por falta de onde coloca-las. Apesar disso a saida para o grep e bastante popular. E um formato simples que lista cada anfitriao(host) em uma linha e pode ser pesquisado de forma trivial e interpretado por qualquer ferramenta padrao do Unix como o grep, awk, cut, sed, diff e Perl. Eu mesmo uso-a para testes rapidos feitos na linha de comando. Descobrir todos os anfitrioes(hosts) com a porta ssh aberta ou que estao com o SO Solaris requer apenas um simples grep para identifica-los, concatenado via pipe a um comando awk ou cut para mostrar os campos desejados. A saida para o grep consiste de comentarios (linhas comecadas com o simbolo #) e linhas-alvo. Uma linha-alvo inclui uma combinacao de 16 campos rotulados, separados por tab e seguidos por dois-pontos. Os campos sao Host, Portas (Ports),Protocolos (Protocols), Estado Ignorado (Ignored State), SO (OS), Indice de Sequencia (Seq Index), IPID e Estado (Status). O campo mais importante e normalmente Portas (Ports), que fornece detalhes de cada porta interessante. E uma lista com a relacao de portas separada por virgula. Cada porta representa uma porta interessante e tem o formato de sete sub-campos separados por barra (/). Esses sub-campos sao: Numero da Porta (Port number), Estado (State), Protocolo (Protocol), Proprietario (Owner), Servico (Service), informacao sobre o SunRPC (SunRPC info) e informacao sobre a Versao (Version info). Assim como na saida XML, esta pagina man nao permite que se documente o formato todo. Uma visao mais detalhada sobre o formato de saida para o grep do Nmap esta disponivel em http://www.unspecific.com/nmap-oG-output. -oA (Saida para todos os formatos) Para facilitar pode especificar -oA nome-base para armazenar os resultados de rastreio(scan) nos formatos normal, XML e para o grep de uma so vez. Eles sao armazenados nos arquivos nome-base.nmap, nome-base.xml e nome-base.gnmap, respectivamente. Como na maioria dos programas pode colocar como prefixo nos nomes de arquivos o caminho de um diretorio como ~/nmaplogs/foocorp/ no UNIX ou c:\hacking\sco no Windows. Opcoes de Verbosidade e depuracao (debugging) -v (Aumenta o nivel de verbosidade) Aumenta o nivel de verbosidade fazendo com que o Nmap mostre mais informacoes sobre o progresso do rastreio(scan). Portas abertas sao mostradas conforme sao encontradas e estimativas de tempo para o termino sao fornecidas quando o Nmap acha que um rastreio(scan) ira demorar mais do que alguns minutos. Use duas vezes para uma verbosidade ainda maior. Usar mais do que duas vezes nao surte nenhum efeito. A maioria das alteracoes afectam apenas a saida interactiva e algumas tambem afectam a saida normal e script kiddie. Os outros tipos de saida foram feitos para serem processados por maquinas, entao o Nmap pode dar informacoes bastante detalhadas por default nesse formatos sem cansarem o usuario humano. Entretanto, existem algumas mudancas nos outros modos onde o tamanho da saida pode ser reduzido substancialmente pela omissao de alguns detalhes. Por exemplo, uma linha de comentario na saida para o grep que fornece uma lista de todas as portas rastreadas so e mostrada no modo verboso porque ela pode ser bem longa. -d [nivel] (Aumenta ou estabelece o nivel de depuracao) Se mesmo o modo verboso nao fornece dados suficientes para si, o modo de depuracao esta disponivel para inunda-lo com muito mais! Assim como na opcao de verbosidade (-v), a depuracao e habilitada com uma flag na linha de comando (-d) e o nivel de depuracao pode ser aumentado especificando-a multiplas vezes. Alternativamente pode estabelecer o nivel de depuracao fornecendo um argumento para o -d. Por exemplo, -d9 estabelece o nivel nove. Esse e efectivamente o nivel mais alto e ira produzir milhares de linhas a menos que execute um rastreio(scan) muito simples com poucas portas e alvos. A saida da depuracao e util quando ha a suspeita de um bug no Nmap ou se esta simplesmente confuso com o que o Nmap esta fazendo e porque. Como esta opcao e na maioria das vezes destinada a programadores, as linhas de depuracao nem sempre sao auto-explicativas. Pode obter algo como: Timeout vals: srtt: -1 rttvar: -1 to: 1000000 delta 14987 ==> srtt: 14987 rttvar: 14987 to: 100000. Se nao entender alguma linha suas unicas opcoes serao ignora-la, procurar no codigo-fonte ou pedir ajuda na lista de discussao de desenvolvimento (nmap-dev). Algumas linhas sao auto-explicativas mas as mensagens ficam cada vez mais obscuras conforme o nivel de depuracao e aumentado. --packet-trace (Rastreia pacotes e dados enviados e recebidos) Faz com que o Nmap moste um sumario de todos os pacotes enviados ou recebidos. Isto e bastante usado para depuracao mas tambem e uma forma valiosa para novos usuario entenderem exatamente o que o Nmap esta fazendo por debaixo dos panos. Para evitar mostrar milhares de linhas, pode querer especificar um numero limitado de portas a rastrear(scan) como -p20-30. Se tudo o que lhe interessa for saber o que se passa no subsistema de deteccao de versao, use o --version-trace. --iflist (Lista as interfaces e rotas) Mostra a lista de interfaces e rotas do sistema conforme detectados pelo Nmap. Isto e util para depurar problemas de roteamento ou erro de configuracao de dispositivo (como, por exemplo, no caso do Nmap tratar uma conexao PPP como se fosse uma Ethernet). Opcoes diversas (miscellaneous) de saida --append-output (Acrescenta no arquivo de saida ao inves de sobrepor) Quando especifica um nome de arquivo na flag de formato de saida, como -oX ou -oN, esse arquivo e sobreposto por default. Se preferir manter o conteudo existente no arquivo e acrescentar os novos resultados, especifique a opcao --append-output. Todos os arquivos de saida especificados na execucao do Nmap terao os resultados acrescidos ao inves de sobrepostos. Isso nao funciona bem com os dados de rastreio(scan) para XML (-oX) pois o arquivo resultante nao sera adequadamente interpretado ate que consserte manualmente. --resume (Retoma um rastreio(scan) abortado) Algumas execucoes extensas do Nmap podem levar muito tempo, na ordem de dias. Tais rastreios(scans) nem sempre rodam ate o fim. Podem haver restricoes que impecam que o Nmap seja executado durante o horario de expediente, a rede pode cair, a maquina onde o Nmap esta a ser executado pode sofrer um reboot planeado ou nao, ou o Nmap pode simplesmente travar. O administrador que esta executando o Nmap poderia cancela-lo por qualquer outra razao bastando teclar ctrl-C. Reiniciar um rastreio(scan) inteiro do comeco pode ser indesejavel. Felizmente se forem mantidos logs normais (-oN) ou para o grep (-oG), o usuario pode pedir que o Nmap continue o rastreio(scan) do alvo que estava verificando quando a execucao foi interrompida. Simplesmente especifique a opcao --resume e informe o arquivo da saida normal/para o grep como argumento. Nenhum outro argumento e permitido, pois o Nmap analisa o arquivo de saida e usa os mesmos argumentos especificados anteriormente. Basta chamar o Nmap com nmap --resume nomedoarquivodelog. O Nmap ira acrescentar os novos resultados ao arquivo de dados especificado na execucao anterior. Essa retomada de execucao nao suporta o formato de saida XML porque combinar as duas execucoes em um arquivo XML valido seria dificil. --stylesheet (Informa a folha de estilo XSL usada para transformar a saida XML) O Nmap vem com uma folha de estilo (stylesheet) chamada nmap.xsl para visualizar ou traduzir a saida XML em HTML. A saida XML inclui uma diretiva xml-stylesheet que mostra para o nmap.xml onde ele foi inicialmente instalado pelo Nmap (ou para o diretorio corrente no Windows). Simplesmente carregue a saida XML do Nmap em um navegador moderno e ele deve conseguir achar o nmap.xsl no sistema de arquivos e utiliza-lo para interpretar os resultados. Se desejar utilizar uma folha de estilo diferente, especifique-a como um argumento para --stylesheet. Deve informar o caminho completo ou a URL. Uma chamada comum e --stylesheet https://nmap.org/data/nmap.xsl . Isso diz ao navegador para carregar a versao mais actual da folha de estilo da Insecure.Org. Isso torna mais facil ver os resultados em uma maquina que nao tenha o Nmap instalado (e consequentemente o nmap.xsl). A URL e normalmente mais util mas a localizacao nmap.xsl num sistema de ficheiros(filesystem) local e usada por default por questoes de privacidade. --no-stylesheet (Omite do XML a declaracao da folha de estilo XSL) Especifique esta opcao para evitar que o Nmap associe qualquer folha de estilo XSL a saida XML. A directiva xml-stylesheet e omitida. OPCOES DIVERSAS (MISCELLANEOUS) Esta secao descreve algumas opcoes importantes (e nao-tao-importantes) que realmente nao couberam em nenhum outro lugar. -6 (Habilita o rastreio(scan) IPv6) Desde 2002 que o Nmap oferece suporte a IPv6 na maioria de suas opcoes mais populares. Em particular o rastreio(scan) com ping (apenas TCP), o rastreio(scan) com connect() e a deteccao de versao, todas suportam IPv6. A sintaxe de comando e a mesma de sempre excepto que ira tambem adicionar a opcao -6. E claro que deve usar a sintaxe IPv6 se especificar um endereco no lugar de um nome de anfitriao(host). Um endereco pode se parecer com 3ffe:7501:4819:2000:210:f3ff:fe03:14d0, portanto os nomes de anfitriao(host) sao recomendados. A saida e a mesma de sempre com o endereco IPv6 na linha "portas interessantes" sendo a unica dica visivel de que se tratar realmente de IPv6. Muito embora o IPv6 nao tenha exactamente se alastrado pelo mundo, seu uso se torna mais significativo em alguns paises (normalmente asiaticos) e a maioria dos sistemas operativos modernos passaram a suporta-lo. Para usar o Nmap com o IPv6, tanto a origem quanto o alvo de seu rastreio(scan), devem estar configurados para IPv6. Se o seu provedor (ISP) (como a maioria) nao aloca enderecos IPv6 para si, alguns intermediarios que fazem o tunel gratuitamente estao amplamente disponiveis e funcionam bem com o Nmap. Um dos melhores e disponibilizado pela BT Exact. Tambem tenho utilizado um fornecido pela Hurricane Electric em http://ipv6tb.he.net/. Tuneis 6para4 sao outra abordagem gratuita e popular. -A (Opcoes agressivas de rastreio(scan)) Esta opcao habilita opcoes adicionais avancadas e agressivas. Ainda nao decidi exactamente qual das duas e a certa. Actualmente ela habilita a Deteccao de SO (-O) e o rastreio(scan) de versao (-sV). Mais caracteristicas poderao ser adicionadas no futuro. A questao e habilitar um conjunto completo de opcoes de rastreio(scan) sem que as pessoas tenham que se lembrar de um grupo grande de flags. Esta opcao apenas habilita as funcoes e nao as opcoes de temporizacao (como a -T4) ou opcoes de verbosidade (-v) que pode tambem querer. --datadir (Especifica a localizacao dos arquivos de dados do rastreio(scan)) O Nmap obtem alguns dados especiais em tempo de execucao em arquivos chamados nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes e nmap-os-fingerprints. O Nmap primeiramente procura esses arquivos num diretorio especificado na opcao --datadir (se houver). Qualquer arquivo que nao seja encontrado la e procurado no diretorio especificado pela variavel de ambiente NMAPDIR. A seguir vem o ~/.nmap para se achar os UIDs reais e efectivos (apenas em sistemas POSIX) ou a localizacao do executavel do Nmap (apenas Win32) e entao, a localizacao definida na compilacao que pode ser /usr/local/share/nmap ou /usr/share/nmap . Como ultimo recurso, o Nmap ira procurar no diretorio corrente. --send-eth (Usa a transmissao pela ethernet em estado bruto(raw)) Solicita ao Nmap para que envie pacotes na ethernet (data link) em estado bruto (raw) ao inves de usar a camada de nivel mais alto IP (rede). Por default, o Nmap escolhe o que for melhor para a plataforma onde esta rodando. Soquetes (sockets) em estado bruto (camada IP) sao normalmente mais eficientes em maquinas UNIX enquanto que os frames ethernet sao necessarios nas operacoes do Windows, uma vez que a Microsoft desabilitou o suporte a sockets em estado bruto. O Nmap ainda usa pacotes IP em estado bruto no UNIX, independentemente desta opcao, quando nao ha outra alternativa (como no caso de conexoes nao-ethernet). --send-ip (Envia no nivel do IP em estado bruto(raw)) Pede ao Nmap que envie os pacotes pelos sockets IP em estado bruto(raw) ao inves de enviar pelo nivel mais baixo dos frames ethernet. E o complemento da opcao --send-eth discutida anteriormente. --privileged (Assume que o usuario e altamente privilegiado) Informa ao Nmap para simplesmente assumir que ele tem privilegios suficientes para executar transmissoes de sockets em estado bruto(raw), farejar (sniff) pacotes e operacoes similares que normalmente requerem privilegio de root em sistemas UNIX. Por default, o Nmap encerra se tal operacao e solicitada mas o geteuid() nao e zero --privileged. E util com as possibilidades oferecidas pelo kernel do Linux e sistemas similares que pode ser configurado para permitir que usuarios nao-privilegiados executem rastreios(scans) de pacotes em estado bruto. Assegure-se de informar esta flag de opcao antes de outras flags de opcao que requeiram privilegios (rastreio(scan) SYN, deteccao de OS, etc.). A variavel NMAP_PRIVILEGED pode ser configurada como uma alternativa equivalente de --privileged. -V; --version (Mostra o numero da versao) Mostra o numero da versao do Nmap e sai. -h; --help (Mostra a pagina do sumario de ajuda) Mostra uma pequena tela com as flags de comandos mais comuns. Executar o nmap sem nenhum argumento faz a mesma coisa. INTERACAO EM TEMPO DE EXECUCAO Durante a execucao do Nmap todas as teclas pressionadas sao capturadas. Isso permite que interaja com o programa sem aborta-lo ou reinicia-lo. Algumas teclas especiais irao mudar as opcoes enquanto outras irao mostrar uma mensagem de estado dando informacoes sobre o rastreio(scan). A convencao e que letras minusculas aumentam a quantidade de informacao e letras maiusculas diminuem. v / V Aumenta / Diminui a quantidade de informacoes (Verbosity) d / D Aumenta / Diminui o Nivel de Depuracao (Debugging Level) p / P Habilita / Desabilita o Rastreamento de Pacotes (Packet Tracing) Qualquer outra letra Mostra uma mensagem de estado como esta: Stats: 0:00:08 elapsed; 111 anfitrioes(hosts) completed (5 up), 5 undergoing Service Scan Service rastreio(scan) Timing: About 28.00% done; ETC: 16:18 (0:00:15 remaining) EXEMPLOS Aqui estao alguns exemplos de utilizacao do Nmap desde o simples e rotineiro, ate ao mais complexo e esoterico. Alguns enderecos IP reais e nomes de dominio foram utilizados para tornar as coisas mais concretas. Nesses lugares deve substituir os enderecos/nomes pelos da sua propria rede. Embora eu nao ache que o rastreio(scan) de portas de outras redes seja ou deva ser considerado ilegal, alguns administradores de rede nao apreciam o rastreio(scan) nao-solicitado de suas redes e podem reclamar. Obter a permissao antecipadamente e a melhor opcao. Para fins de teste tem permissao para rastrear(scan) o anfitriao(host) scanme.nmap.org. Esta permissao inclui apenas o rastreio(scan) via Nmap e nao tentativas de explorar vulnerabilidades ou ataques de negacao de servico (denial of service). Para preservar a banda, por favor nao inicie mais do que uma duzia de rastreios(scans) contra o anfitriao(host) por dia. Se esse servico de alvo livre para rastreio(scan) for abusado, sera derrubado e o Nmap ira reportar Failed to resolve given hostname/IP: scanme.nmap.org. Essas permissoes tambem se aplicam aos anfitrioes(hosts) scanme2.nmap.org, scanme3.nmap.org e assim por diante, embora esses anfitrioes(hosts) ainda nao existam. nmap -v scanme.nmap.org Esta opcao rastreia(scan) todas as portas TCP reservadas na maquina scanme.nmap.org. A opcao -v habilita o modo verboso (verbose). nmap -sS -O scanme.nmap.org/24 Inicia um rastreio(scan) SYN camuflado contra cada maquina que estiver activa das 255 possiveis da rede "classe C" onde o Scanme reside. Ele tambem tenta determinar qual o sistema operativo que esta sendo executado em cada anfitriao(host) activo. Isto requer privilegio de root por causa do rastreio(scan) SYN e da deteccao de SO. nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127 Inicia uma enumeracao de anfitrioes(hosts) e um rastreio(scan) TCP na primeira metade de cada uma das 255 sub-redes de 8 bits possiveis na classe B do espaco de enderecamento 198.116. Tambem testa se os sistemas estao executando sshd, DNS, pop3d, imapd ou a porta 4564. Para cada uma destas portas encontradas abertas a deteccao de versao e usada para determinar qual aplicacao esta em execucao. nmap -v -iR 100000 -P0 -p 80 Pede ao Nmap para escolher 100.000 anfitrioes(hosts) de forma aleatoria e rastreia-os procurando por servidores web (porta 80). A enumeracao de anfitrioes(hosts) e desabilitada com -P0 uma vez que enviar primeiramente um par de sondagens para determinar se um anfitrioes(hosts) esta activo e um desperdicio quando se esta sondando uma porta em cada anfitriao(host) alvo. nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20 Este exemplo rastreia(scan) 4096 enderecos IP buscando por servidores web (sem usar o ping) e grava a saida nos formatos XML e compativel com o programa grep. anfitriao(host) -l company.com | cut -d -f 4 | nmap -v -iL - Faz uma transferencia de zona DNS para descobrir os anfitrioes(hosts) em company.com e entao alimenta o Nmap com os enderecos IP. Os comandos acima sao para a minha maquina GNU/Linux -- outros sistemas tem comandos diferentes para executar a transferencia de zona. BUGS Como o seu autor, o Nmap nao e perfeito. Mas pode ajudar a torna-lo melhor enviando relatorios de erros (bug reports) ou mesmo escrevendo correcoes. Se o Nmap nao se comporta da forma que espera, primeiro actualize para a versao mais atual disponivel em https://nmap.org/. Se o problema persistir, pesquise um pouco para determinar se o problema ja foi descoberto e encaminhado. Tente procurar no Google pela mensagem de erro ou navegar nos arquivos da Nmap-dev em https://seclists.org/. Se nao encontrar nada envie uma mensagem com um relatorio do erro para . Por favor inclua tudo o que souber sobre o problema bem como a versao do Nmap que esta executando e em qual versao e sistema operativo que esta a usar. Correcoes codificadas para concertar os erros sao ainda melhores que os relatorios de erro. Instrucoes basicas para a criacao de arquivos de correcoes com as suas alteracoes estao disponiveis em https://nmap.org/data/HACKING. AUTOR Fyodor (http://www.insecure.org) Centenas de pessoas fizeram contribuicoes valiosas para o Nmap ao longo dos anos. Isso esta detalhado no arquivo CHANGELOG que e distribuido com o Nmap e tambem esta disponivel em https://nmap.org/changelog.html. TRADUCAO Portugues (Portugal) : Jose Domingos Portugues (Portugal) : Andreia Gaita Translation Disclaimer: The translation attempts to achieve the highest possible accuracy. The official text is the English version available at [url]. Any discrepancies or differences created in translations are not binding and have no legal effect or compliance or enforcement purposes. If any questions arise in regard to the accuracy of information contained in any translated portion of text, please refer to the official English version. Slangs and language structures in English are not easily translated into another language. Source text that includes jargon common to an industry, may not be translated accurately. Insecure.Com LLC is not responsible for translation errors. We apologize for any translation that is not correct. Desobrigacao da Traducao: A traducao tenta alcancar a maior precisao possivel. O texto oficial e a versao em ingles disponivel em [url]. Quaisquer discrepancias ou diferencas criadas pelas traducoes nao sao obrigacoes e nao tem efeito legal, conformidade ou propositos impositivos. Se qualquer duvida surgir em relacao a precisao da informacao contida em qualquer parte traduzida do texto, por favor verifique a versao oficial em ingles. Girias e estruturas de linguagem em ingles nao sao facilmente traduzidas em outra lingua. Texto original que inclui jargao comum a uma atividade pode nao ser traduzido com precisao. A Insecure.Com LLC nao e responsavel por erros de traducao. Nos pedimos desculpas se alguma parte da traducao nao estiver correcta. AVISOS LEGAIS Copyright e Licenciamento O Nmap Security Scanner e (C) 1996-2005 Insecure.Com LLC. O Nmap tambem e uma marca registada de Insecure.Com LLC. Este programa e um software livre; pode redistribui-lo e/ou modifica-lo sob os termos da Licenca Publica Geral GNU (GNU General Public License) conforme publicado pela Free Software Foundation; Versao 2. Isso garante o seu direito de usar, modificar e redistribuir este software sob certas condicoes. Se desejar embutir a tecnologia do Nmap em um software proprietario poderemos querer vender licencas alternativas (contate ). Muitos vendedores de scanner de seguranca ja licenciam a tecnologia do Nmap, tal como a descoberta de anfitrioes(hosts), rastreio(scan) de portas, deteccao de SO e deteccao de servicos/versoes. Observe que a GPL impoe restricoes importantes em "trabalhos derivados" embora ela nao forneca uma definicao detalhada desse termo. Para evitar mas-interpretacoes consideramos que uma aplicacao constitui um "trabalho derivado" para o proposito desta licenca, se ela se enquadra em um dos seguintes itens: o Contem codigo fonte do Nmap o Le ou inclui arquivos de dados do Nmap que sao protegidos por copyright, tal como o nmap-os-fingerprints ou nmap-service-probes. o Executa o Nmap e decompoe (parse) os resultados (diferentemente de uma execucao tipica de um shell ou aplicacoes de menu de execucao que simplesmente mostram a saida em estado bruto do Nmap e portanto nao constituem um trabalho derivado). o Integra/inclui/agrega o Nmap em um instalador executavel proprietario tal como os produzidos pelo InstallShield. o Estabelece uma ligacao (link) com uma biblioteca ou executa um programa que faz qualquer um dos dois itens em cima. O termo "Nmap" deve ser considerado como contendo parte ou sendo trabalho derivado do Nmap. Esta lista nao e definitiva mas deve ser entendida como uma forma de esclarecer nossa interpretacao de trabalho derivado com alguns exemplos comuns. Estas restricoes apenas se aplicam quando realmente redistribui o Nmap. Por exemplo, nada impede que escreva e venda um front-end proprietario para o Nmap. Apenas redistribua o seu produto isoladamente e mostre as pessoas onde elas podem descarregar(download) o Nmap. Nos nao consideramos isso como restricoes adicionais a GPL mas apenas uma elucidacao de como nos interpretamos "trabalhos derivados" pois elas se aplicam ao nosso produto Nmap licenciado no formato GPL. Isso e identico a forma como Linus Torvalds anunciou sua interpretacao de como os "trabalhos derivados" se aplicam aos modulos do kernel do Linux. A nossa interpretacao refere-se apenas ao Nmap - nao respondemos por qualquer outro produto GPL. Se tiver qualquer duvida quanto as restricoes do licenciamento GPL na utilizacao do Nmap em produtos nao-GPL, ficariamos felizes em ajudar. Como mencionado acima, tambem oferecemos licencas alternativas para a integracao do Nmap em aplicacoes e dispositivos proprietarios. Esses contratos foram vendidos para muitas empresas de seguranca e geralmente incluem uma licenca perpetua, disponibiliza um suporte para actualizacoes prioritarios, e tambem nos ajuda financeiramente o desenvolvimento continuo da tecnologia do Nmap. Por favor, envie um e-mail para se desejar mais informacoes. Como uma excecao especial aos termos da GPL, a Insecure.Com LLC permite que uma ligacao (link) do codigo deste program seja feito com qualquer versao da biblioteca do OpenSSL que seja distribuida sob uma licenca identica aquela listada no arquivo Copying.OpenSSL incluido e distribuir combinacoes de ligacao incluindo os dois. Deve obedecer a GPL GNU em todos os aspectos para todo o codigo utilizado que nao seja OpenSSL. Se modificar este aquivo pode estender esta excepcao para a sua versao do arquivo mas nao e obrigado a fazer isso. Se recebeu estes arquivos com um acordo de licenciamento por escrito ou um contrato ditando termos que nao sejam diferentes dos em cima entao essa licenca alternativa tem precedencia sobre estes comentarios. Disponibilidade de codigo fonte e contribuicoes da comunidade O codigo fonte e fornecido com este software porque acreditamos que os usuarios tem o direito de saber exactamente o que um programa ira fazer antes de executa-lo. Isso tambem permite que vaudite o software procurando por falhas na seguranca (nenhuma foi encontrada ate agora). O codigo fonte tambem permite que porte o Nmap para novas plataformas consserte problemas e adicione novas caracteristicas. E altamente encorajado a enviar suas alteracoes para para uma possivel incorporacao na distribuicao principal. Enviar essas alteracoes para Fyodor ou para alguem da lista de mensagens de desenvolvimento da Insecure.Org, pressupoe que esta oferecendo a Fyodor e a Insecure.Com LLC o direito ilimitado e nao-exclusivo para reutilizar, modificar e relicenciar o codigo. O Nmap sempre estara disponivel como um Open Source mas isto e importante porque a impossibilidade de relicenciar o codigo causou problemas devastadores para outros projetos de Software Livre (tal como o KDE e o NASM). Nos tambem relicenciamos ocasionalmente o codigo para terceiros conforme discutido anteriormente. Se deseja especificar condicoes de licenciamento especiais das suas contribuicoes deixe isso claro quando envia-las. Nenhuma Garantia Este programa e distribuido na esperanca de que sera util mas SEM QUALQUER GARANTIA; sem sequer a garantia implicita de COMERCIALIZACAO ou ADEQUACAO A QUALQUER PROPOSITO PARTICULAR. Veja a Licenca Publica Geral GNU para mais detalhes em http://www.gnu.org/copyleft/gpl.html ou no arquivo COPYING incluido com o Nmap. Tambem deve ser observado que o Nmap reconhecidamente trava certas aplicacoes mal-escritas, a pilha TCP/IP e mesmo alguns sistemas operativos. O Nmap nunca deve ser executado contra sistemas de missao-critica a menos que esteja preparado para lidar com o servico fora do ar (downtime). Nos reconhecemos aqui que o Nmap pode travar os seus sistemas ou redes e nos renunciamos toda e qualquer responsabilidade por qualquer dano ou problema que o Nmap possa causar. Uso inapropriado Pelo facto de haver o menor risco de travamento e porque existem pessoas mal-intencionadas (black hats) que gostam de usar o Nmap para reconhecimento antes atacar um sistema, existem administradores que ficam chateados e podem reclamar quando o sistema deles e rastreado. Portanto e normalmente aconselhavel que solicite a permissao antes de fazer um rastreio(scan) de uma rede por mais leve que seja. O Nmap nunca deveria ser instalado com privilegios especiais (p.ex.: suid root) por questoes de seguranca. Software de Terceiros Este produto inclui software desenvolvido pela Apache Software Foundation[8]. Uma versao modificada da biblioteca portatil de captura de pacotes Libpcap[9] e distribuida junto com o Nmap. A versao para o Windows do Nmap por outro lado utiliza biblioteca WinPcap[10], derivada da libpcap. O suporte a expressoes regulares e fornecido pela biblioteca PCRE[11] que e um software de codigo aberto escrito por by Philip Hazel. Algumas funcoes de rede em estado bruto utilizam a biblioteca de rede Libdnet[12] que foi escrita por Dug Song. Uma versao modificada e distribuida com o Nmap. O Nmap pode opcionalmente ser ligado ao conjunto de ferramentas de criptografia do OpenSSL[13] para o suporte a deteccao de versao do SSL. Todos os softwares de terceiros descritos neste paragrafo sao distribuidos gratuitamente sob o licenciamento de software no estilo BSD. Classificacao do Controle de Exportacao dos EUA Controle de Exportacao dos EUA: A Insecure.Com LLC acredita que o Nmap se enquadra no US ECCN (numero de classificacao para controle de exportacao) 5D992. Essa categoria e chamada de "software de Seguranca da Informacao nao-controlado pela 5D002". A unica restricao a essa classificacao e o AT (anti-terrorismo) que se aplica a quase todos os produtos e nega a exportacao a um punhado de nacoes nao-confiaveis tais como o Irao e a Coreia do Norte. Portanto, exportar o Nmap nao requer nenhuma licenca ou permissao especial ou qualquer outro tipo de autorizacao governamental. NOTAS 1. RFC 1122 http://www.rfc-editor.org/rfc/rfc1122.txt 2. RFC 792 http://www.rfc-editor.org/rfc/rfc792.txt 3. UDP http://www.rfc-editor.org/rfc/rfc768.txt 4. RFC do TCP http://www.rfc-editor.org/rfc/rfc793.txt 5. RFC 959 http://www.rfc-editor.org/rfc/rfc959.txt 6. Nmap::Scanner http://sourceforge.net/projects/nmap-scanner/ 7. Nmap::Parser http://www.nmapparser.com 8. Apache Software Foundation http://www.apache.org 9. biblioteca portatil de captura de pacotes Libpcap http://www.tcpdump.org 10. biblioteca WinPcap http://www.winpcap.org 11. biblioteca PCRE http://www.pcre.org 12. Libdnet http://libdnet.sourceforge.net 13. conjunto de ferramentas de criptografia do OpenSSL http://www.openssl.org Nmap 31/03/2023 NMAP(1)