quarta-feira, 3 de julho de 2013

O nmap tem algumas flags especiais para enganar IDS's e firewall, você as conhece?

Dominando essas flags você pode rodar um scan de portas, obter as informações do alvo e nem ser detectado, ou na pior das hipóteses deixar um rastro que leve a uma máquina totalmente diferente das suas. Essas técnicas são comumente chamandas de técnicas anti-forense.

-f (fragmenta os pacotes); --mtu (usando a MTU especificada)


A opção -f faz com que o scan solicitado (incluindo scans usando ping) utilize pequenos pacotes IP fragmentados. A idéia é dividir o cabeçalho TCP em diversos pacotes para tornar mais difícil para os filtros de pacotes, os sistemas de detecção de intrusão, e outros aborrecimentos, detectar o que você está 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 segmentação assim que recebia o primeiro fragmento. Especifique esta opção uma vez e o Nmap dividirá os pacotes em 8 bytes ou menos após o cabeçalho IP. Portanto, um cabeçalho TCP de 20 bytes seria dividido em 3 pacotes. Dois com oito bytes do cabeçalho TCP e um com os quatro restantes. É claro que cada fragmento também tem um cabeçalho IP. Especifique -f novamente para usar 16 bytes por fragmento (reduzindo o número de fragmentos). Ou então, você pode especificar o seu próprio tamanho de quebra com a opção --mtu. Não especifique também o-f se você usar o --mtu. A quebra deve ser um múltiplo de 8. Embora os pacotes fragmentados não passem por filtros de pacotes e firewalls que enfilerem todos os fragmentos IP, tal como a opção CONFIG_IP_ALWAYS_DEFRAG do kernel do Linux faz, algumas redes não aguentam o impacto no desempenho que isso causa, deixando a opção desabilitada. Outros não conseguem habilitar isso porque os fragmentos podem seguir por rotas diferentes na rede. Alguns sistemas de origem desfragmentam pacotes de saída no kernel. O Linux e o módulo de reastreamento de conexão do iptables é um exemplo desse tipo. Faça um scan enquanto executa um sniffer como o Ethereal para ter a certeza de que pacotes enviados estão fragmentados. Se o SO do seu host estiver causando problemas, tente a opção --send-eth para passar por cima da camada IP e enviar frames ethernet em estado bruto.

-D (Disfarça um scan usando chamarizes)


Faz com que um scan com chamarizes seja executado, o que parece ao host remoto que, o(s) host(s) que você especificou como chamarizes também estejam escaneando a rede-alvo. Com isso, o IDS poderá reportar 5 a 10 scans de portas de endereços IP únicos, mas não saberá qual IP estava realmente escaneando e qual era um chamariz inocente. Embora isso possa ser desvendado através de rastreamento de caminho de roteador, descarte de respostas (response-dropping) e outros mecanismos ativos, normalmente é uma técnica eficaz para esconder o seu endereço IP.

Separe cada host-chamariz com vírgulas, e você pode opcionalmente usar ME como um dos chamarizes para representar a posição do seu endereço IP real. Se você colocar ME na 6a. posição ou acima, alguns detectores de scan de portas comuns (como o excelente scanlogd da Solar Designer) pouco provavelmente irão mostrar o seu endereço IP. Se você não utilizar o ME, o nmap irá colocá-lo em uma posição aleatória.

Observe que os hosts que você utilizar como chamarizes devem estar ativos ou você poderá, acidentamente, inundar com SYN os seus alvos. Também será bastante fácil determinar qual é o host que está escaneando se houver apenas um host realmente ativo na rede. Você pode preferir usar endereços IP ao invés de nomes (de forma que as redes chamarizes não vejam você em seus logs dos servidores de nomes).

Chamarizes são utilizados tanto no scan com ping inicial (usando ICMP, SYN, ACK ou qualquer outro), como também durante a fase real de escaneamento de portas. Chamarizes também são usados durante a detecção de SO remoto (-O). Chamarizes não funcionam com a detecção de versão ou com o scan TCP connect.

Vale a pena observar que usar chamarizes demais pode deixar seu scan lento e potencialmente até torná-lo menos preciso. Outra coisa, alguns provedores de internet (ISP) irão filtrar os seus pacotes disfarçados, mas muitos não restringem pacotes IP disfarçados.

-S (Disfarça o endereço de origem)


Em algumas circunstâncias, o Nmap pode não conseguir determinar o seu endereço de origem (o Nmap irá dizer se for esse o caso). Nesta situação, use o -S com o endereço IP da interface que você deseja utilizar para enviar os pacotes.

Outro uso possível para esta flag é para disfarçar o scan e fazer com que os alvos achem que alguma outra pessoa está escaneando-as. Imagine uma empresa que está constantemente sofrendo scan de portas de um concorrente! A opção -e normalmente seria requerida para este tipo de uso e -P0 seria recomendável.

-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 informará se não conseguir.

--source-port ; -g (Disfarça o número de porta de origem)


Um erro de configuração surpreendentemente comum é confiar no tráfego com base apenas no número da porta de origem. É fácil entender como isso acontece. Um administrador configura um firewall novinho em folha, só para ser inundado com queixas de usuários ingratos cujas aplicações param de funcionar. Em particular, o DNS pode parar de funcionar porque as respostas DNS UDP de servidores externos não conseguem mais entrar na rede. O FTP é outro exemplo comum. Em tranferências FTP ativas, o servidor remoto tenta estabelecer uma conexão de volta com o cliente para poder transferir o arquivo solicitado.

Soluções seguras para esses problemas existem, freqüentemente na forma de proxies no nível da aplicação ou módulos de firewall para análise de protocolo. Infelizmente também há soluções mais fáceis e inseguras. Observando que as respostas DNS chegam pela porta 53 e o FTP ativo pela porta 20, muitos administradores caem na armadilha de apenas permitir tráfego vindo dessas portas. Eles normalmente assumem que nenhum atacante irá notar e explorar essas brechas no firewall. Em outros casos, os administradores consideram isso uma medida provisória de curto prazo até que eles possam implementar uma solução mais segura. Então, eles normalmente se esquecem de fazer as atualizações de segurança.

Administradores de rede sobrecarregados não são os únicos a caírem nessa armadilha. Diversos produtos foram empacotados com essas regras inseguras. Mesmo a Microsoft é culpada. Os filtros IPsec que vieram com o Windows 2000 e com o Windows XP contém uma regra implícita que permite todo o tráfego TCP ou UDP da porta 88 (Kerberos). Em outro caso bastante conhecido, versões do firewall pessoal Zone Alarm, até a versão 2.1.25, permitiam qualquer pacote UDP entrante com a porta de origem 53 (DNS) ou 67 (DHCP).

O Nmap oferece as opções -g e --source-port (elas são equivalentes) para explorar essas fraquezas. Apenas forneça um número de porta e o Nmap irá enviar pacotes dessa porta onde for possível. O Nmap utiliza números de porta diferentes para que certos testes de detecção de SO funcionem direito, e as requisições DNS ignoram a flag --source-port porque o Nmap confia nas bibliotecas de sistema para lidar com isso. A maioria dos scans TCP, incluindo o scan SYN, suportam a opção completamente, assim como o scan UDP.

--randomize-hosts (Torna aleatória a ordem dos hosts-alvo)


Informa ao Nmap que ele deve embaralhar cada grupo de, no máximo, 8096 hosts antes de escaneá-los. Isso torna os scans menos óbvios a vários sistemas de monitoramento de rede, especialmente quando você combina isso com as opções de temporização lentas. Se você deseja fazer isso em grupos maiores, aumente o PING_GROUP_SZ no nmap.h e recompile. Uma solução alternativa é gerar uma lista de endereços IP-alvos com um scan de lista (-sL -n -oN ), embaralhar a lista com um script Perl e então fornecer a lista completa para o Nmap com -iL.

--spoof-mac (Disfarça o endereço MAC)


Solicita ao Nmap que utilize o endereço MAC informado para todos os frames ethernet em estado bruto (raw) que ele enviar. Esta opção implica em --send-eth para assegurar que o Nmap realmente envie pacotes no nível ethernet. O MAC fornecido pode assumir diversos formatos. Se for apenas a string “0”, o Nmap irá escolher um MAC completamente aleatório para a sessão. Se a string informada for um número par de dígitos hexa (com os pares opcionalmente separados por dois pontos), o Nmap irá usa-la como o MAC. Se menos do que 12 dígitos hexa forem informados, o Nmap preenche o restante dos 6 bytes com valores aleatórios. Se o argumento não for um 0 ou uma string hexa, o Nmap irá procurar no nmap-mac-prefixespara encontrar o nome de um fabricante contendo a string informada (não é sensível a maiúsculas ou minúsculas). 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 válidos são Apple, 0,01:02:03:04:05:06, deadbeefcafe, 0020F2 e Cisco.

Para mais informações visite o site com o manual do nmap.

0 comentários:

Postar um comentário

Subscribe to RSS Feed Follow me on Twitter!