Sys
Nmap
Invasão!
Entendendo as técnicas de análise com o Nmap
com redes de computadores já ouviu falar no Nmap, o mais famoso scanner de vulnerabilidades do mundo livre. Mas de que maneira o Nmap identifica as brechas de segurança em sua rede? Neste artigo, examinaremos algumas de suas técnicas. Por Christian Ney
O
ato de varrer uma rede em busca de vulnerabilidades é quase tão antigo quanto as próprias redes. Nos saudosos tempos de outrora, em que o único modo de conexão remota eram as linhas telefônicas, “hackers” usavam modems para testar blocos de números de telefone. Esses vivaldinos registravam em um caderno todas as respostas obtidas – um panaca gritalhão, um sinal de fax, uma voz feminina, um outro modem atendendo à ligação… O processo era chamado de wardialing (em português, algo como “guerra de discagem”). Hoje, os chamados scanners de rede ou port scanners é que são a coqueluche. Eles transmitem, em direção ao sistema sob teste, pacotes IP (ou T/UDP) especialmente manipulados. Dependendo da reação (ou falta dela) é possível identificar os tipos e modelos de sistemas, bem como mapear os serviços oferecidos e as possíveis vulnerabilidades existentes. O Nmap (The Network Mapper [1]), trazido à luz por Fyodor em setembro de 1997 [2], é provavelmente um dos mais completos scanners de rede que existem. Fyodor estava insatisfeito com os recursos que ferramentas como o Strobe [3] e o Pscan [4] ofereciam. Ele queria um programa que superasse qualquer outro conhecido – e realmente conseguiu.
62
fevereiro 2006
O Nmap é distribuído em praticamente e T de maneira a ficarem completaqualquer CD de Linux que você possa mente irreconhecíveis. Não é preciso encontrar por aí. Se sua distribuição pre- ser um especialista para usar o Nmap, ferida não possuir o Nmap, escreva para mas os iniciantes talvez fiquem um poulá reclamando bastante e depois baixe co confusos com a teoria envolvida e o programa a partir do site oficial [1]. O a quantidade de opções do programa. Nmap usa a técnica de impressão digital Infelizmente temos que alertar: para usar T (T fingerprinting) para identifi- o Nmap em toda a sua plenitude, é necar o sistema operacional da máquina cessário ter uma boa bagagem a respeito que estamos varrendo – a máquina sob de redes e T/IP. Este artigo descreve ataque. O programa consegue determi- algumas das técnicas que o Nmap usa nar há quanto tempo o computador está para descobrir vulnerabilidades. ligado (uptime) e realmente identificar os serviços oferecidos, em um nível de detalhe que inclui o número da porta, o nome do daemon responsável e até a versão desse daemon. O número fabuloso de funções oferecidas pelo Nmap indica, por outro lado, que a quantidade de opções da linha de comando é, também, espetacular. Há não menos do que 15 métodos de se varrer um dado nó (tabela 1) e aproximadamente 20 variações Figura 1: O Nmapfe, interface gráfica do Nmap, permite que e configurações para cada usemos o programa sem ter que decorar a grande quantidade de opções da linha de comando – e, de quebra, mostra como método – alguns deles seria esse comando (observe a linha na parte de baixo da tela). manipulam os pacotes IP
edição 17 www.linuxmagazine.com.br
www.sxc.hu – Davide Guglielmo
Qualquer um que trabalhe há mais de dois meses
Nmap
Tabela 1: Técnicas de varredura Técnica
T SYN Conexão T T FIN Árvore de Natal T Vazio (Null) Ping Detecção de Versões UDP Protocolo IP ACK Janela ACK RPC Lista ivo ("Idle Scan") FTP Bounce
Sintaxe -sS -sT -sF -sX -sN -sP -sV -sU -sO -sA -sW -sR -sL -sI -b
Aplicação
Varredura camuflada ("stealth") Varredura por usuário comum (facilmente detectável) Varredura camuflada ("stealth") Varredura camuflada ("stealth") Varredura camuflada ("stealth") Determinar se o computador está ligado Identificar os serviços e as versões dos daemons Identificar portas UDP abertas Identificar os protocolos ados Identificar firewalls Varredura ACK mais especializada Identificar serviços RPC "Boneco de testes" Varredura usando um "laranja" como despiste Forma antiga de ataque, presente por motivos históricos
Bandido, eu? Muitos rotulam o Nmap como sendo uma ferramenta para malfeitores. De fato, os "chapéus pretos" usam e abusam do Nmap como auxiliar no ataque e invasão às suas vítimas. Mas, assim como um martelo pode ser usado para colocar um prego na parede, também podemos rachar a cabeça de alguém com ele. Da mesma forma, o Nmap é, nas mãos dos es de rede, um grande aliado no diagnóstico dos problemas de suas redes. Os responsáveis por sistemas de informação têm por obrigação conhecer todas as falhas e brechas que a rede sob sua batuta possui. Há muitas histórias de es que decidem fazer uma análise abrangente de suas redes e descobrem estarrecidos que há muitos serviços negligenciados ou mesmo esquecidos. O Nmap também ajuda no inventário da rede, no teste de penetração em firewalls e a documentar as atualizações de todos os sistemas. Uma mão na roda, não? O Nmap foi, originalmente, desenvolvido para o Linux. Hoje, entretanto, há versões para Windows ®, Free/Open/Net/ *BSD e vários sabores de Unix. Apesar de
ter todo o seu potencial explorado apenas na linha de comando, há interfaces gráficas para ele tanto no Unix (Nmapfe, figura 1) quanto em sistemas que vieram de algum lugar do noroeste dos Estados Unidos (Nmapwin [5]). É possível até colocar o Nmap em um servidor e controlálo pelo browser (PHP-Nmap [6] – figura 2). A página oficial do Nmap possui uma lista bastante grande com projetos baseados no Nmap [7]. Há até uma versão do programa para o Zaurus, assistente pessoal portátil (PDA) da Sharp que usa Linux como sistema operacional.
Sys
gem ICMP Echo Request – a mesma usada pelo comando ping – e o método próprio do Nmap, muito mais moderno e eficiente. Lembre-se de que a maioria dos sistemas operacionais de hoje pode ser configurada para não responder a um ping. P Depois, o Nmap faz uma consulta ao DNS para tentar determinar o nome de host associado ao endereço IP do alvo. Este estágio pode ser desativado se o usuário assim preferir. P Por fim, o Nmap varre o alvo usando a técnica selecionada pelo usuário quando emitiu o comando. Para interromper o processo de varredura, basta pressionar [Ctrl]+[C]. É possível pedir ao Nmap que grave um arquivo de registro (log) que, além de servir para sua análise futura, permite que ele continue o teste de onde parou. Há quatro estados distintos de porta reconhecidos pelo Nmap – veja a tabela 2. Um dos pontos fortes do Nmap é a grande quantidade de técnicas de varredura disponíveis. Em vez de simplesmente iniciar uma conexão T completa – uma negociação em três etapas conhecida como three-way handshake – o programa transmite pacotes especialmente armados para contrariar todas as disposições das RFCs vigentes (RFC
O truque das três cartas O Nmap possui um método de varredura composto por três estágios. Por padrão, esses três estágios são: P O Nmap tenta determinar se o sistema sob ataque (vamos chamá-lo de "alvo") está "vivo"– isto é, funcionando e conectado. O usuário pode escolher entre o método tradicional que usa uma mensa-
Figura 2: Mesmo sem oferecer um grande número de opções, a interface web para o Nmap, escrita em PHP, é um recurso bastante interessante. fevereiro 2006
www.linuxmagazine.com.br
edição 17
63
Sys
Nmap
mos uma resposta, não há como determinar se o alvo está desconectado, se a resposta foi bloqueada por um firewall ou se, simplesmente, o sistema operacional do alvo não responde a pings. O ping serve apenas como investigação preliminar, dando ao pesquiFigura 3: Sem privilégios de root, o número de técnicas sador uma maneira rápida de ataque possíveis de ser iniciadas com o Nmap reduz-se de verificar quais sistemas significativamente. reagem, economizando tempo precioso – afinal, – Request For Comments, uma espécie tarefas mais demoradas ainda estão por de documento normativo). vir, portanto é melhor concentrá-las em Analisando a maneira como o alvo alvos realmente "vivos". responde a esses pacotes "Frankenstein", o Nmap tira conclusões a respeito de suas características e A varredura do tipo "Lista" (-sL) permite vulnerabilidades. Para a maioria das que os usuários verifiquem todas as contécnicas, é necessário rodar o Nmap figurações do Nmap antes de iniciar um como root, já que o programa traba- ataque real. Isso pode evitar que erros e lha com os chamados raw sockets para esquecimentos embaraçosos ponham a poder montar seus próprios pacotes perder toda a confidencialidade do ataadulterados – solenemente esnobando a que. Uma varredura do tipo “Lista” diz pilha T/IP do sistema operacional. ao usuário quais sistemas o Nmap vai O Nmap é de grande valia para os ad- investigar (e de que forma o fará), mas ministradores de sistemas de informa- sem disparar um ataque verdadeiro. Em ção. Você pode varrer todas as portas suma, é uma simulação. de uma máquina à cata de problemas. Mesmo com essa precaução, ainda há Mais ainda: se necessário, pode varrer que se ter cuidado redobrado durante tesredes inteiras! A varredura do tipo ping tes de penetração. Lembre-se sempre de é bastante útil nessas horas. Como o que o Nmap, por padrão, tenta resolver nome sugere, o comando ping gera uma os nomes DNS das máquinas sob ataque. mensagem ICMP Echo Request e a envia Certifique-se sempre de desativar esse à máquina alvo. Se o alvo existir, estiver comportamento denunciador. ligado e conectado, irá responder com ICMP Echo Reply. A varredura ping do Nmap funciona de forma semelhante. Se o usuário não tiver privilégios de O protocolo ICMP não usa nenhuma root (figura 3) o Nmap só consegue faporta, portanto o Nmap não pode usá- zer varreduras usando conexões T lo para investigar muita coisa. Por ou- completas (connect()). Essa técnica tro lado, uma varredura desse tipo usa usa as funções do próprio sistema apenas um par de pacotes para cada nó operacional para estabelecer conexões – tornando-a bem rápida. O resultado, que atendam aos requisitos da RFC entretanto, é impreciso: se não receber- vigente para o T/IP.
Um grama de precaução…
Amante à moda antiga
64
fevereiro 2006
edição 17 www.linuxmagazine.com.br
Uma conexão T completa usa a manjadíssima negociação em três etapas do protocolo T, conhecida como three-way handshaking. Sem essa negociação prévia, é impossível estabelecer um canal de comunicação T entre dois computadores – normalmente, entre um cliente e um servidor; por exemplo, entre o Internet Explorer e o IIS. A negociação funciona da seguinte maneira: o cliente que quer iniciar a conexão (em nosso caso, o Nmap) envia um pacote T com o sinalizador (ou flag) SYN ativado. O flag SYN avisa ao outro sistema que o primeiro quer se conectar a ele. O pacote T, além do flag SYN, informa também as portas de origem e de destino (figura 4). Se, no alvo, a porta que está sendo testada estiver aberta (ou seja, aceitando conexões), o alvo responde com outro pacote T, esse com os flags SYN e
Tabela 2: Estados das portas Estado
Aberta (Open) Filtrada (Filtered)
Explicação
É possível se conectar a essa porta sem restrições. A porta está, provavelmente, sendo bloqueada por um firewall. Se as varreduras do tipo SYN e Conexão Completa descobrirem portas abertas e filtradas, o do firewall pode ter cometido o grave erro de ter implementado uma regra DROP malfeita. NÃO-Filtrada As varreduras do tipo ACK ou (UNfiltered) Janela descobriram portas não filtradas pelo firewall. A comunicação com essas portas é, a princípio, possível, mas será necessário usar nelas outros tipos de varredura para obter mais informações. Fechada A porta pode estar corretamen(Closed) te bloqueada pelo firewall ou mesmo nem existir no sistema sob ataque. Em ambos os casos, é impossível comunicar-se com essas portas.
Nmap
Listagem 1: Varredura por conexão T completa Porta fechada: 192.168.5.22 -> 192.168.5.10 T 60319 > 80 [SYN] 192.168.5.10 -> 192.168.5.22 T 80 > 60319 [RST, ACK]
Conexão "meia-boca"
Sys
Nmap perceber que a porta está aberta. Portanto, em vez de continuar com a conexão, o Nmap manda um RST para acabar com a festa – veja a listagem 2. O sistema sob ataque nem percebe esse processo, já que a conexão não se concretizou; de quebra, nada é registrado nos logs. Apesar de lograr o sistema operacional, esse truque simples não a a perna em sistemas de detecção de intrusos (IDS) como o Snort [8] e o Prelude [9]. Esses IDSs monitoram todas as portas e, se detectarem um grande número de tentativas de conexão frustradas, identificam o processo como uma varredura maliciosa. O Snort registra as seguintes informações depois de um portscan como esse:
URG ACK PSH RST SYN FIN
Uma conexão completa, mesmo se fechada imediataPorta aberta: mente com aquele 192.168.5.22 -> 192.168.5.10 T 60320 > 80 [SYN] quarto pacote RST, 192.168.5.10 -> 192.168.5.22 T 80 > 60320 [SYN, ACK] tem uma desvanta192.168.5.22 -> 192.168.5.10 T 60320 > 80 [ACK] gem gritante: cone192.168.5.22 -> 192.168.5.10 T 60320 > 80 [RST, ACK] xões perfeitamente estabelecidas figuListagem 2: Varredura com pacotes T-SYN ram nos registros (logs) do sistema Porta fechada: operacional. Como 192.168.5.22 -> 192.168.5.10 T 56522 > 80 [SYN] resultado, é facíli192.168.5.10 -> 192.168.5.22 T 80 > 56522 [RST, ACK] mo determinar quem Porta aberta: anda varrendo deter192.168.5.22 -> 192.168.5.10 T 60420 > 80 [SYN] minada rede. Dá para 192.168.5.10 -> 192.168.5.22 T 80 > 60420 [SYN, ACK] melhorar bastante o 192.168.5.22 -> 192.168.5.10 T 60420 > 80 [RST] quadro se você tiver privilégios de root. [**] [100:1:1] spp_portscan: PORTSCAN U ACK ligados. Essa é a segunda etapa da Como root, é possível varrer os al- DETECTED from 192.168.5.22 (THRESHOLD 4 U negociação. Na terceira etapa, o Nmap vos com a técnica T-SYN. Além de connections exceeded in 0 seconds) [**] envia um pacote T com o flag ACK economizar recursos da rede e do sis- 10/05-19:40:49.540435 ativado, o que estabelece definitiva- tema operacional, não depende deste mente a conexão. último para nada e possui uma "camuPara despistar a maioria dos IDSs Se não houver nenhum programa ser- flagem" natural. Em vez de estabelecer (mas não todos), basta dizer ao Nmap vidor naquela porta (ou seja, se a porta uma conexão T completa, o Nmap para "segurar a onda" e fazer tudo bem não estiver aceitando conexões) o siste- transmite o primeiro SYN do three- devagar. A idéia é esconder os pacotes ma operacional do alvo responde com way handshake. Uma porta fechada de teste na multidão de pacotes do tráum pacote T com o flag RST ligado, reagirá com um RST para forçar o fego normal da rede. Também é possível forçando o encerramento da conexão. cancelamento da conexão. Uma porta tentar embaralhar a vista do IDS com Esse é o modo correto de estabele- aberta responderá com um SYN/ACK. técnicas como T FIN, "Árvore de Nacer uma conexão T com um dado Esse SYN/ACK já é suficiente para o tal" e "T Vazio". ➟ sistema remoto. Na varredura do tipo connect(), o Nmap usa o sistema 0 7 8 15 16 23 24 31 operacional para iniciar o three-way Porta de Origem Porta de Destino handshake. Se conseguir uma conexão, Número Seqüencial a porta está aberta. Se receber um RST, Número de Reconhecimento a porta está fechada. Simples assim. Deslocamento Reservado Janela Observe que o Nmap manda, ele Verificação de Integridade (Checksum) Ponteiro de Urgência mesmo, um RST para finalizar, o Opções mais rápido possível, a conexão que ... Enchimento acabou de abrir, caso esta tenha êxito. Deixar conexões abertas por muito Figura 4: O Nmap usa os campos do cabeçalho T para descobrir os detalhes dos sistemas sob ataque. Além dos flags ACK, RST e SYN (em amarelo), algumas técnicas usam combinações pouco tempo torna muito fácil detectar o usuais dos outros flags (em rosa). ataque. Veja a listagem 1. fevereiro 2006 www.linuxmagazine.com.br
edição 17
65
Sys
Nmap
Listagem 3: FIN, Árvore de Natal e Vazio
Segredo de estado As técnicas T-FIN, Árvore de Natal e T Vazio possuem uma capacidade de camuflagem sem precedentes. Ao contrário das duas técnicas anteriores (T completa e T-SYN), estas não iniciam conexão alguma. Em vez disso, mandam um único pacote ao sistema alvo. Os três ataques diferem apenas nos flags T que ativam (veja a figura 4). Nenhum desses flags deveria estar ativo em tráfego normal de rede e, por outro lado, nenhum deles possui o necessário flag SYN para iniciar uma conexão. É pela resposta a esses pacotes (ou falta dela) que o Nmap tenta inferir a disponibilidade do sistema alvo. Quando a porta está fechada, qualquer sistema operacional que atende às normas e RFCs pertinentes responderá com um pacote RST, forçando o encerramento da conexão. Por outro lado, se a porta estiver aberta (ou seja, há um serviço qualquer "escutando" nela), o sistema sob ataque não saberá o que fazer para responder a esse pacote "alienígena", já que não há uma conexão previamente estabelecida. Infelizmente, as RFCs não dão instruções claras sobre como responder a pacotes dessa natureza. Como conseqüência, cada sistema operacional se comporta de um jeito diferente. A listagem 3 mostra como um sistema Linux responde a eles: simplesmente ignorando-os. Sistemas Windows lidam com isso de forma bastante diversa. Eles respondem a esse tipo de pacote com um RST. Como essa é a mesma resposta tanto para portas abertas quanto para portas fechadas, não é possível discernir entre uma e outra. Pode parecer a forma correta de se fazer a coisa, mas isso traz um efeito colateral: só máquinas Windows têm esse comportamento, portanto essa é uma maneira fácil de identificar se o sistema operacional rodando no alvo veio de Redmond.
66
fevereiro 2006
FIN, Porta fechada: 192.168.5.22 -> 192.168.5.10 T 56485 > 80 [FIN] 192.168.5.10 -> 192.168.5.22 T 80 > 56485 [RST, ACK] FIN, Porta aberta: 192.168.5.22 -> 192.168.5.10 T 43406 > 80 [FIN] 192.168.5.22 -> 192.168.5.10 T 43407 > 80 [FIN] Árvore de Natal, Porta fechada: 192.168.5.22 -> 192.168.5.10 T 49499 > 80 [FIN, PSH, URG] 192.168.5.10 -> 192.168.5.22 T 80 > 49499 [RST, ACK] Árvore de Natal, Porta aberta: 192.168.5.22 -> 192.168.5.10 T 47109 > 80 [FIN, PSH, URG] 192.168.5.22 -> 192.168.5.10 T 47110 > 80 [FIN, PSH, URG] Vazio, Porta fechada: 192.168.5.22 -> 192.168.5.10 T 50508 > 80 [] 192.168.5.10 -> 192.168.5.22 T 80 > 50508 [RST, ACK] Vazio, Porta aberta: 192.168.5.22 -> 192.168.5.10 T 55971 > 80 [] 192.168.5.22 -> 192.168.5.10 T 55972 > 80 []
Se o alvo não responder, o Nmap rotula aquela porta como fechada ou filtrada (tabela 2). Os firewalls tendem a descartar pacotes desse tipo sem emitir qualquer comentário. Outras técnicas podem oferecer muito mais informações sobre o sistema sob ataque. Uma delas é a "Detecção de Versão". Mas cuidado: essa técnica não tenta, de forma alguma, se esconder sob qualquer camuflagem e usa rotinas de identificação de portas bastante agressivas. Se seu objetivo é não ser descoberto, cuidado com ela!
com o serviço lá presente – cuidado, isso cria uma linha no arquivo de log. Pelo canal de comunicação, envia uma série de pacotes de teste e, baseado nas reações a eles, tenta identificar o software responsável pelo serviço e sua versão. O Nmap armazena os resultados em seu banco de dados de ataques sob o título nmap-service-probes. A versão 3.93 inclui 2895 s de serviços. O Nmap pode empregar essas mesmas técnicas na detecção de todo o sistema alvo – incluindo o sistema operacional. O chamado OS Fingerprinting (impressão digital do sistema operacional) é um dos recursos mais espetaculares do A detecção de versões não procura por Nmap. Para falar a verdade, o Nmap é o portas abertas. Em vez disso, faz testes mestre supremo nesse terreno, batendo numa porta em que, já se sabe de ante- qualquer outro programa, tanto livre mão, existe algum serviço “na escuta” quanto comercial. (listagem 4). Os potenciais candidatos O processo de descoberta do sistema a isso foram identificados anteriormen- operacional leva em conta as sutis difete por varredura do tipo T-SYN. A renças no comportamento da pilha T/ detecção de versão abre uma conexão IP. O Nmap possui uma tabela com a normal com uma porta e se comunica maneira como cada sistema operacional
Até o osso
edição 17 www.linuxmagazine.com.br
Nmap
reage a determinados estímulos (isto é, como responde a determinados pacotes). Comparando os resultados dos testes com essa tabela, é possível determinar qual sistema operacional está instalado no alvo. O Nmap 3.93 (a versão mais recente à época desta edição) possui não menos do que 1707 “impressões digitais”. O processo todo é bastante discreto e difícil de ser detectado: nenhuma conexão é iniciada entre o Nmap e o alvo e são usados, ao todo, apenas 30 pacotes bastante simples. O OS fingerprinting começa com um varredura de portas comum para determinar se há portas abertas no sistema alvo. Depois, dispara uma bateria de oito testes simples, que enviam pacotes especialmente criados para provocar respostas específicas. Alguns desses pacotes nunca ocorreriam em tráfego normal de uma
Sys
Listagem 4: Detecção de versões 192.168.5.22 -> 192.168.5.10 T 59555 > 80 [SYN] 192.168.5.10 -> 192.168.5.22 T 80 > 59555 [SYN, ACK] 192.168.5.22 -> 192.168.5.10 T 59555 > 80 [ACK] 192.168.5.22 -> 192.168.5.10 HTTP GET / HTTP/1.0 192.168.5.3 -> 192.168.5.22 T 80 > 59555 [ACK] 192.168.5.3 -> 192.168.5.22 HTTP HTTP/1.0 200 Ok 192.168.5.22 -> 192.168.5.10 T 59555 > 80 [ACK] 192.168.5.22 -> 192.168.5.10 T 59555 > 80 [FIN, ACK] 192.168.5.3 -> 192.168.5.22 HTTP Continuation or non-HTTP traffic 192.168.5.22 -> 192.168.5.10 T 59555 > 80 [RST]
rede típica – e, portanto, o processo é presa fácil para IDSs. Mas, se não houver um IDS, o sistema sendo testado nem percebe que está sendo escaneado. Ao mesmo tempo em que esses oito testes são disparados, os pacotes são analisados e a opção T timestamp determina o tempo de ativação (uptime) do alvo. Se o Nmap não conseguir identificar o sistema alvo, todos os dados dos testes são
apresentados. Com isso, o próprio usuário pode analisar e tentar descobrir o que é que roda no alvo. Por outro lado, se o usuário já souber de antemão o SO do alvo mas o Nmap não for capaz de identificá-lo, ele ou ela pode publicar a encontrada na página apropriada do site oficial [10]. Com isso, os usuários do Nmap podem ajudar o programa a identificar cada vez mais sistemas operacionais diferentes. ➟
fevereiro 2006 www.linuxmagazine.com.br
edição 17
67
Sys
Nmap
Sem filtros
ajustado pelo alvo quando este respon- detecção de versão pode ajudar na suHá situações em que o Nmap não conse- de. Pacotes RST com um tamanho de pressão da ambigüidade. gue distinguir entre uma porta filtrada janela nulo (zero bytes) indicam que a Muitos sistemas limitam o envio de e uma porta aberta (veja a tabela 2). Para porta está aberta. mensagens ICMP a um determinado casos como esses, as varreduras do tipo O número de sistemas operacionais que número delas por segundo. O Nmap é ACK são uma mão na roda. A varredura respondem a essa técnica é bastante pe- esperto o bastante para perceber esse com pacotes ACK é bastante simples e queno [X-WInScan] e vai continuar min- comportamento e reduzir a velocidadeveras camuflada. Ela não consegue guando ao longo dos anos. Mesmo assim, de, engatando a segunda ou mesmo a detectar se uma porta está aberta ou a varredura de janela pode ser de grande primeira marcha. Por isso, varreduras fechada, mas serve a um outro propó- valia para obter informações importantes no protocolo UDP podem demorar um sito muito especial: detecta a presença sobre a plataforma sob ataque. Isso a torna pouco para terminar. de um firewall e pode até ser usada especialmente interessante se precisarmos para pesquisar as regras de filtragem de mais informações a respeito de sistemas desse firewall. reconhecidamente seguros. O Nmap possui um modo de varredura Para conseguir tal proeza, o Nmap exclusivo para o protocolo IP. Mas ele transmite, em direção a uma porta qualnão serve para identificar portas abertas quer do alvo, um único pacote T com Além do protocolo T, o Nmap também ou filtradas. Em vez disso, simplesmente o flag ACK ativado. Se não houver um faz das suas com o UDP. Há realmente informa ao usuário quais protocolos de firewall entre o Nmap e o alvo (ou se poucas opções de varredura com o UDP, camada 4 o alvo reconhece e consegue ele existir mas estiver configurado para já que esse protocolo é por demais sim- trabalhar. Se o alvo for uma máquina deixar essa porta aberta), o alvo deve plório e não tem nada parecido com os com Linux, o Nmap provavelmente vai responder com um pacote RST. Se a res- flags de controle do T. descobrir ICMP (Internet Control Mesposta for um ICMP Destination UnreachaSe por um lado poucos dados podem sage Protocol), IGMP (Internet Group ble, podemos ter certeza de que existe ser obtidos a partir disso, por outro o Multicast Protocol), T, UDP e IPv6 um firewall entre o Nmap e o alvo e que processo de varredura é bem simples. (para túneis IPv6-sobre-IPv4). Para deele está bloqueando essa porta – ou seja, Quando a porta está fechada, o alvo res- terminar esses protocolos, o programa a porta está filtrada. ponde com um ICMP Port Unreachable. testa todos os números de protocolo de O Nmap também executa as chama- Quando está aberta, pode ser que o alvo 1 a 255 e espera pelas respostas. das “Varreduras de Janela” (Window envie algum tipo de dado ou, o que é Essa informação permite ainda que o Scans), uma variação da varredura por mais provável, fique na mais profun- Nmap, além de determinar os protocolos ACK, mas que também descobre por- da mudez. O silêncio esconde o estado ados, faça uma espécie de detecção tas abertas. Nesse tipo de varredura, o real da porta: o Nmap a classifica como improvisada do sistema operacional. Por Nmap também envia um pacote ACK aberta, embora isso possa ser um falso exemplo, apenas roteadores e servidomas, entre outras coisas, analisa o ta- positivo já que a porta pode estar filtrada res especiais usam o protocolo Virtual manho da janela T (um dos campos (veja a tabela 2). Em caso de dúvida, a Router Redundancy Protocol (VRRP) ou mais importantes do protocolo T) a alternativa livre, o CARP.
Baixo nível
Só T não basta
0
7 8 Versão
IHL*
15 16 Tipo de Serviço (TOS)
Identificação IP (IPID) Tempo de Vida (TTL)
23 24
31
Tamanho Total do Pacote (TL) Flags
Protocolo
Deslocamento de Fragmento (FO) Verificação de Integridade (Checksum)
Endereço IP de origem Endereço IP de destino Opções *IHL: Tamanho do cabeçalho IP
... Enchimento
Figura 5: O cabeçalho IP contém o campo IPID (rosa), que indica o número de fragmentos contíguos.
68
fevereiro 2006
edição 17 www.linuxmagazine.com.br
Chamando todos os carros! As Varreduras de RPC são capazes de identificar serviços (e portas) especiais como NFS e NIS, que dependem da tecnologia RPC. Essa técnica de varredura só vale a pena como complemento das anteriores e ativa automaticamente a detecção de versões. Para descobrir serviços RPC escondidos, a técnica usa a instrução especial
Nmap
����������������������������
PROC=0. Ela não pede ação alguma ao
serviço RPC, mas força-o a revelar sua existência – em outras palavras, "cutuca para que saia da moita". Serviços nãoRPC não reconhecem a instrução e não respondem. Como o processo todo depende da interação com um aplicativo rodando no alvo, não é nada discreto. Por outro lado, com um pouco de sorte é possível obter muitas dicas do sistema sob investigação.
Arenques vermelhos
Sys
��
�������������� � ������������
�����
�������� ����������������������
������������������� ���������������
������������������� ���������������
��
��������
����� ������
�����������
��������
�����������
���
�������
�����
����� �������
�����
������������������������������������� ����������������������������������������� ������������������������������� ����������������������������
����������������������������
����� ����� Mesmo as técnicas de varredura mais �������� �������� �� discretas e camufladas do Nmap deixam ���������������������� ���������������������� muitos rastros. Em um teste de penetra��������������������������������������� ���������������������������������� ���������������������������������������� ���������������������������������� ção, o auditor pode precisar de detalhes ������������������������ ����������������������������������� ������������������������� que só uma varredura "barulhenta" tem Figura 6: A varredura iva é uma técnica bastante engenhosa que usa um "laranja" como condições de revelar. Você certamente será detectado. A úni- intermediário ou "zumbi". Os pacotes enviados ao alvo originam-se, na realidade, do zumbi. O agressor tira conclusões a partir da progressão do número guardado no campo IPID do cabeçalho IP. ca coisa que pode fazer, então, é tentar evitar a sua identificação. Uma das maneiras de fazer isso é inundar a rede sob até 128 falsas varreduras simultâneas. Se pouquíssimo tráfego – quanto menos, ataque com pacotes "impostores". Isso vai sua máquina for parruda, e sua conexão melhor, sendo nenhum tráfego a situabarrotar os registros dos IDSs com infor- rápida o bastante, pode aumentar o valor ação ideal. mações falsas e dará bastante trabalho da constante MAX_DECOYS no arquivo P O IPID dos zumbis precisa ser facilaos es de segurança. nmap.h – parte do código fonte do Nmap mente previsível. Para servir como Isso é o que se chama decoy – em por- – e recompilá-lo. zumbi, o “laranja” escolhido deve tuguês, chamariz, isca, engodo, armaaumentar o valor do IPID em uma dilha… Quando o Nmap usa um decoy, unidade para cada novo pacote. O simula um sem-número de varreduras baixo tráfego (condição anterior) é simultâneas. O pulo do gato: cada var- As “Varreduras ivas” (Idle scans) tenvital para garantir que o IPID (campo redura vem de um IP diferente! Obvia- tam descobrir as portas abertas do alvo de identificação do cabeçalho IP) não mente, todos os IPs são falsos (menos usando uma terceira máquina, que funcioseja tão perturbado – veja a figura 5. o seu…) e isso dilui a possibilidade de na como "laranja". Não há troca de pacotes O próprio Nmap é capaz de identificar determinação da origem do ataque. Não entre a máquina que roda o Nmap e o alvo, os candidatos a zumbi mais apropriados. tenha dúvida alguma, o procedimento portanto o auditor (ou o "hacker") está a Ele manda seis pacotes SYN/ACK para será detectado – afinal, a rede do alvo salvo. O Nmap faz uso de um truque bas- o laranja e verifica os IPIDs dos pacotes sofrerá uma avalanche de varreduras. tante engenhoso de impostura de IPs (mais RST que voltam em resposta. Se o laranja Mas é exatamente o ruído feito por esse conhecido como spoofing) para fazer o escolhido não servir, o Nmap interrompe tropel que torna muito mais difícil iden- "laranja" (chamado de "zumbi") ricochetear o processo com a mensagem: tificar o legítimo agressor. pacotes vindos do Nmap em direção ao Do ponto de vista do , alvo. Para que o truque funcione, algumas Idlescan is unable to obtain meaningful U usar decoys é um excelente teste do de- condições devem ser satisfeitas: results from proxy 192.168.5.99 U sempenho dos nós da rede, do firewall P O "zumbi" (algumas vezes – e sarcas- (192.168.5.99). e dos sistemas de detecção de intrusos ticamente – chamado de "proxy") deve I'm sorry it didn't work out. (IDS). Por padrão, o Nmap pode simular estar ativo e conectado, mas deve ter QUITTING! ➟
À meia-noite encarnarei no teu cadáver
fevereiro 2006 www.linuxmagazine.com.br
edição 17
69
Sys
Se os IPIDs progredirem de forma previsível, o Nmap repete o processo por mais quatro vezes, usando pacotes cujo endereço de origem pertence ao sistema a ser investigado – ou seja, o alvo. Com isso, o zumbi manda pacotes RST em resposta a esse estímulo, mas como o endereço de origem está forjado, essas respostas são enviadas para o alvo, não para o computador que está rodando o Nmap. Para obter os resultados, o Nmap manda um pacote SYN/ACK adicional, mas dessa vez com seu próprio endereço de origem. O zumbi só servirá para intermediar uma varredura iva se o IPID no RST seguinte for cinco unidades maior do que o pacote original.
Visão além do alcance
Nmap
porque recebeu um SYN/ACK do alvo e teve de responder com um RST – provando que a porta no alvo está aberta. O Nmap precisa, então, enviar um pacote de teste ao zumbi para monitorar a perturbação do IPID – veja a figura 6 para mais detalhes. Para acelerar o processo, o Nmap considera de antemão que a maioria das portas estará fechada. Ele inicia o teste em 30 portas T escolhidas aleatoriamente e manda pacotes SYN a cada uma delas. Se o IPID aumentar, o Nmap infere a quantidade de portas abertas no alvo. Em uma próxima etapa, o programa reduz o número de portas aleatórias até identificar os números das que estão realmente abertas.
Exemplos
O Nmap também possui funções para geração de arquivos de registro, seja para documentação ou para comparar duas varreduras. A opção -oA permite três formatos de saída, permitindo a análise tanto manual como automática dos dados. O NDiff [11] é bastante útil para comparar dados de diferentes varreduras.
Problemas com licenças Empresas com filiais distantes podem não ter (e, normalmente, nunca têm…) pessoal técnico em todos os escritórios. O Nmap pode dar uma mãozinha nesse detalhe também, monitorando tudo o que acontece nesses locais. Isso é desejável não só pelo aspecto da segurança: verificar os programas que estão instalados em cada máquina pode prevenir muitas dores de cabeça com programas não autorizados (ou mesmo piratas) instalados pelos usuários. Uma varredura simples com ping lista as máquinas da filial; técnicas mais complexas recolhem informações sobre as versões e atualizações dos programas e ajuda a identificar os funcionários que não respeitam as regras a respeito de software não autorizado:
Toda a preparação que vimos até aqui tinha o único propósito de verificar se Os exemplos que preparamos a seguir o zumbi era idôneo. A partir de agora, foram especialmente criados para moscomeça a segunda fase do processo: trar que o Nmap não é uma ferramenta executar a varredura iva propria- voltada para malfeitores, mas sim um mente dita. O Nmap usa uma aborda- auxiliar e tanto para os atarefadíssimos gem semelhante para investigar o alvo: es de rede de hoje em dia. manda para ele pacotes SYN, forjando Antes de colocar a mão na massa, recoum pacote cujo endereço de origem é o mendamos uma pitada de precaução: endereço IP do zumbi. O alvo vai respon- truques e experimentos com protocolos der, obviamente, para o zumbi. não são um mar calmo e sereno. Cuidado É aí que está toda a graça do processo. com as minas submarinas. É possível nmap -vv -sS -O -T Polite -n -oA U Se a porta sendo testada no alvo estiver que justo aquele seu servidor importante filiais fechada, o alvo vai mandar um RST para apresente comportamento inesperado. 192.168.6.0/24 o zumbi, que o ignora solenemente. Se, É claro que tirar do ar um sistema funpelo contrário, a porta no alvo estiver damental é uma maneira enfática de O comando mostrado inicia uma varreaberta, esta iniciará a segunda etapa mostrar a seu chefe as vulnerabilidades dura SYN -sS para investigar toda a rede da negociação (o three-way handshake) existentes, mas pode custar seu emprego. 192.168.6.0 (classe C) e coletar informarespondendo com um pacote SYN/ACK. Imagine, por exemplo, que seus testes ções a respeito dos sistemas operacionais O zumbi não sabe de nada a respeito paralisem o sistema de Voz sobre IP da (-O). Como não queremos consultas ao dessa tentativa de conexão e responde empresa, deixando todas as filiais sem DNS, usamos a opção -n. Para economicom um RST – dessa forma incremen- telefone. Catastrófico, não acha? zar a banda do link com a filial, usamos tando seu próprio IPID. Para testes de rotina, escreva em um -T Polite para diminuir a cadência dos A lógica, então, é simples: se o IPID arquivo de texto os números IP de seus testes. -oA filiais registra dados mais do "laranja" não se alterar desordenada- sistemas mais críticos e especifique, com detalhados nos logs. O Nmap possui três mente, é porque recebeu um RST do alvo a opção --excludefile, esse arquivo. formatos de registro: o mais legível para – portanto a porta no alvo está fechada. Isso permitirá varrer toda a sua rede sem humanos é o filiais.nmap; há ainda o Já se o IPID do zumbi for perturbado, é colocar em risco seu contracheque. filiais.gnmap, fácil de ser esmiuçado
70
fevereiro 2006
edição 17 www.linuxmagazine.com.br
Nmap
Epidemia Infestação por vermes de Internet ("worms") são uma ocorrência bastante comum em redes com muitos computadores rodando Windows. Ferramentas de espionagem (spyware) e controle remoto como o BackOrifice ainda são bastante comuns. O Nmap pode auxiliar es criativos a improvisar um "spybot de pobre", testando as portas normalmente usadas por programas maliciosos conhecidos: nmap -vv -sS -n --excludefile excecoes.U txt -p wormports -oA infectados 192.168.5.0/24
O comando ativa o modo de detalhamento máximo -vv. Uma lista de portas conhecidas e potencialmente perigosas é indicada com o parâmetro -p. Os vermes usam essas portas para obedecer a comandos de seus mestres, baixar código malicioso ou se auto-propagarem. As máquinas na rede 192.168.5.0/24 são testadas com uma varredura SYN (-sS), mas sem resolução de nomes -n. Os computadores cujos endereços estão no arquivo excecoes.txt serão poupados do teste. Os resultados serão guardados nos arquivos infectados.nmap, infectados. gnmap e infectados.xml. O recurso de detecção da versão dos daemons (-sV) faz um trabalho muito bem feito ao detectar quais softwares maliciosos, spywares, cavalos de tróia, vermes e vírus estão "na escuta" nas portas mais comuns. O Nmap consulta seu banco de dados interno para identificar os serviços em questão. Entretanto, o processo é demoradíssimo e pode representar um gargalo em sua rede – o que o torna impraticável dependendo do caso.
Remendos
Versátil e poderoso
Vermes, vírus e outros tipos de software O Nmap consegue lidar com uma quando mal se aproveitam de vulnerabilidades tidade enorme de técnicas de varredura, conhecidas publicamente. O SQL Slam- todas muito sofisticadas e a maioria basmer é um belo exemplo de verme que tante difícil de ser detectada. O fato de ganhou notoriedade por sua capacidade a ferramenta poder ser empregada para de se alastrar. Mesmo o OpenSSL, um fins escusos não deve impedir que os servidor reconhecido por sua segurança, es a usem em aplicações ganhou uma publicidade não muito boa legítimas. O uso de scanners é uma forgraças ao verme Scalper. A única manei- ma eficientíssima de obter informações ra de diminuir os riscos é a atualização abrangentes e detalhadas sobre sua rede constante dos sistemas. – e o Nmap é estrela maior no reino desPara testar e ter certeza de que não há sas controvertidas ferramentas. ■ em sua rede nenhum serviço com essas Christian Ney é vulnerabilidades conhecidas, siga as ins de truções do exemplo anterior. Colabore sistemas em uma para com o tráfego de sua rede e divida empresa aérea regional européia, a detecção das versões dos daemons e mantendo sob a detecção do sistema operacional em seu cajado inúduas ações distintas: meras máquinas Unix e alguns nmap -vv -sS -A -n --excludefile U firewalls. Em seu tempo livre, contribui com dezenas de excecoes.txt -oA vuln_versoes U projetos de código aberto. 192.168.5.0/24
Sobre o autor
com a ferramenta grep. Por fim, o arquivo XML filiais.xml é mais palatável para softwares interpretadores.
Sys
Novamente, a varredura do tipo SYN (sS) vem em nosso auxílio. As opções são mais ou menos as mesmas. A novidade é a opção -A, que combina a detecção de versões e a "impressão digital" do sistema operacional. Os resultados dão uma visão geral das máquinas que precisam de atualização ou remendos de segurança. Tenha em mente, entretanto, que muitos patches não atualizam o número da versão do programa. O Nmap não é um substituto para um programa de istração de atualizações genuíno. Use-o apenas como auxiliar ou "quebra-galho". Uma última dica: use um "sniffer" ou programa de captura de tráfego (como o tdump [13] ou o Ethereal [14]) para monitorar como as varreduras funcionam. Reproduza todos os exemplos deste artigo e veja os resultados no sniffer. Diversão garantida.
Informações [1] Nmap: www.insecure.org/nmap/ [2] Fyodor, "A arte da varredura de portas", Phrack 51:
www.phrack.org/phrack/51/P51-11 [3] Strobe: ftp.surfnet.nl/security/ coast/scanners/strobe/ [4] Pscan: www.packetstormsecurity. com/UNIX/scanners/pscan.c [5] Nmapwin: nmapwin.sourceforge.net [6] PHP-Nmap: phpnmap.sourceforge.net [7] Projetos derivados do Nmap: www.insecure. org/nmap/nmap_relatedprojects.html [8] Snort IDS: www.snort.org [9] Prelude IDS: www.prelude-ids.org [10] Identificando servços e portas: www. insecure.org/cgi-bin/nmap-submit.cgi [11] NDiff: www.vinecorp.com/ndiff/ [12] OpenSSL: www.openssl.org [13] TDump: www.tdump.org [14] Ethereal: www.ethereal.com fevereiro 2006
www.linuxmagazine.com.br
edição 17
71