A Evolução Dos Agentes Maliciosos

Da autoria de Lenny Zeltser, este texto foi finalizado em Abril mas o autor acedeu a complementá-lo com uma análise sobre o ataque posterior do vírus “I Love You”. Foi publicado em português no suplemento semanal Info&Net, do diário A Capital, a 19 e 26 de Maio de 2000. A tradução é de Nuno Viotti. Este texto examina a evolução de agentes maliciosos através da análise de características e limitações de vírus populares, worms e trojans, detalhando a possibilidade de uma nova espécie de agentes maliciosos correntemente a ser desenvolvida na Internet.

Introdução

No contexto deste texto, um agente malicioso é um programa de computador que opera do lado de um potencial intruso e o ajuda a atacar um sistema ou uma rede. Historicamente, um arsenal de tais agentes consistia em vírus, “worms” [programas replicantes e que se auto-disseminam] e programas troianizados [instalados em computadores sem que o seu utilizador se dê disso conta].

Pela combinação das características principais destes agentes, os atacantes são agora capazes de criar software que coloca uma ameaça significativa mesmo a organizações que fortificam o seu perímetro de rede com “firewalls”.

Este texto examina a evolução dos agentes maliciosos olhando antes de mais para os mecanismos de reprodução e propagação de programas como o Morris Worm e o vírus Melissa. Estes programas são úteis para ilustrar a velocidade a que os vírus se podem alastrar, bem como para demonstrar a facilidade com a qual são capazes de penetrar as defesas das redes das organizações.

Depois, abordam-se vírus espiões como o Calígula, o Marker e o Groov, os quais, depois de infectar um sistema de computadores, reportam os seus achados para a base. Contudo, eles são especialmente perigosos porque utilizam ligações para o exterior para comunicar com os seus autores, e podem ser usados como poderosos “scanners” de reconhecimento. Porque muitas políticas de “firewall” não restringem o tráfego para o exterior do tipo HTTP ou FTP, estes vírus são capazes de permanecer em contacto com os seus autores mesmo operando numa organização que se considera segura do exterior.

Segue-se a análise das características e limitações de agentes controlados remotamente, como o Back Orifice e o NetBus, bem como programas distribuídos de negação de serviços [“distributed denial of service” ou DDoS], como o Trinoo e o TFN. Estes programas podem providenciar os atacantes com a habilidade de emitir remotamente comandos na máquina infectada. Para além disso, programas de DDoS têm a possibilidade de coordenar acções de agentes múltiplos, providenciando os seus operadores com múltiplos pontos para lançamento de ataques. Contudo, versões correntes destes programas não têm as capacidades de propagação de vírus e “worms” e são impedidos de aceitar comandos do operador pela maioria dos “firewalls”, porque o tráfego controlado é sobretudo na entrada.

Finalmente, detalha-se a possibilidade de uma nova raça de agentes maliciosos que combinam as capacidades de propagação dos vírus e “worms” antigos com a interactividade de agentes controlados remotamente que usam o tráfego para o exterior para obter instruções. Em particular, foca-se o troiano RingZero como exemplo de um agente malicioso existente que já exibe muitas destas características.

Como resultado de tal evolução, as organizações podem dar de caras com um “worm” remotamente controlado que tenha a habilidade de infiltrar redes através de canais abertos como o “email” ou a navegação na Web, possa ser controlado através de ligações para o exterior como HTTP e FTP, os quais podem passar através de muitas “firewalls”, e tenham capacidades de propagação que maximizem a sua habilidade para realizar um ataque distribuído efectivo.

Agentes Rapidamente Expansíveis

Visão geral

Um vírus de computador é provavelmente o representante mais proeminente da espécie de agentes maliciosos. Conquanto haja diversas opiniões respeitantes à definição exacta de vírus de computador, as pessoas geralmente concordam que um vírus contém um programa em código que pode explicitamente copiar-se e, ao fazê-lo, tem a possibilidade de “infectar” outros programas ao modificá-los ou ao seu ambiente. Como resultado, um acesso ao programa infectado facilita a distribuição futura e possível evolução do vírus.

Para que um vírus se propague, ele necessita tipicamente de se acoplar a um programa anfitrião. Um “worm” de computador é similar a um vírus em muitos aspectos, excepto que é um programa auto-contido “que é capaz de espalhar cópias funcionais de si ou dos seus segmentos noutros sistemas de computadores” sem a dependência de outro programa que sirva de anfitrião para o seu código.

O Morris Worm e o vírus Melissa foram escolhidos principalmente pela magnitude do efeito que tiveram na comunidade da Internet. Para mais, as técnicas empregues por esses programas para se auto-propagarem através da rede são ainda hoje aplicáveis e podem ser adaptados como o mecanismo de infiltração e réplica para o agente malicioso avançado examinado no fim do texto.

Contudo, a limitação proeminente destes agentes tem sido a falta de controle sobre a sua taxa de propagação. Esta funcionalidade está presente em alguns dos agentes discutidos neste texto e é considerada uma característica importante de um agente malicioso “avançado”.

Morris Worm

O infame Morris Worm, também conhecido como Internet Worm, era um programa auto-contido que explorava algumas vulnerabilidades comuns para se espalhar através da rede a uma velocidade fenomenal. De facto, em apenas horas depois de aparecer, na noite de 2 de Novembro de 1988, já tinha desfeito a maior parte dos centros de pesquisa do país [Estados Unidos]. Uma vez que muitas publicações já descrevem a história do Morris Worm em grande detalhe, este texto limita-se a uma visão geral dos métodos de propagação do “worm” para ilustrar as técnicas que um agente malicioso pode utilizar para se infiltrar de forma agressiva no ambiente de computação alvo.

O objectivo básico do Morris Worm era ganhar acesso a outra máquina para que se pudesse duplicar na nova máquina e continuar a reproduzir-se. O “worm” conseguia isto explorando erros de implementação em diversos programas populares, bem como tirando vantagem de conhecidas falhas no acesso ao anfitrião, para se propagar através da rede.

O Sendmail era, e ainda é, um popular programa para providenciar “routing” de “email” e serviços de entrega a máquinas na Internet. O “worm” explorou um comando não normalizado disponível numa versão particular do “sendmail” para se propagar de uma máquina para outra. Assim que o “worm” se instalava no novo anfitrião comprometido, uma nova instância do programa começava a auto-multiplicar-se de novo de um modo recursivo.

O Fingerd, destinado a ajudar utilizadores da Internet remotos a partilhar informação pública de uns sobre os outros, é outro programa que o “worm” usava para se propagar através da rede. Neste caso, tirava partido de um problema de quando se tenta armazenar dados numa memória cheia (“buffer overflow”) numa versão particular do fingerd, o que lhe permitia executar um pequeno programa arbitrário numa máquina remota para prosseguir o seu processo de cópia.

Outro dos métodos de propagação do “worm” explora possibilidades fiáveis de programas como o rexec ou o rsh, que os administradores usam habitualmente para facilitar a administração de múltiplas máquinas. Isto envolvia examinar listas locais de nomes de anfitriões dos quais o anfitrião infectado tinha conhecimento, e tentar ligá-los na esperança de que a máquina infectada tivesse a confiança da máquina remota para nela poder executar comandos.

Finalmente, o Morris Worm tinha a capacidade de infectar sistemas tentando adivinhar “passwords” de utilizador, baseado num dicionário de palavras comuns e em toda a informação acerca do utilizador que estivesse localmente disponível. Depois de ganhar acesso, o “worm” conseguia ligar-se à máquina remota fazendo-se passar por um utilizador legítimo.

As técnicas de propagação empregues pelo Morris Worm em 1988 podem ser igualmente efectivas em redes modernas. Ao longo da história da Internet, problemas de “buffer overflow”, relacionamentos de confiança perdidos e “passwords” fracas de utilizador têm sido frequentemente exploradas para conseguir acesso não autorizado a um sistema em rede. Se um agente tipo “worm” for programado para tirar partido de diversas vulnerabilidades comuns do software, terá a habilidade de se propagar rapidamente pela rede das vítimas. Técnicas para controlar a taxa de propagação do agente e o seu comportamento de ataque são discutidas em subsequentes secções do texto.

Vírus Melissa

A discussão acima ilustra como um agente malicioso se pode auto-propagar ao atacar recursivamente anfitriões na vizinhança de cada uma das máquinas conquistadas. Deste modo, a taxa de infecção pode crescer exponencialmente. No mundo moderno, contudo, muitas organizações usam “firewalls” para separar a sua rede da Internet, o que forma um obstáculo substancial ao mecanismo de ataque do agente, tornando muito difícil a sua infiltração na rede da organização.

O vírus Melissa, que se espalhou numa larga porção da Internet por volta de 20 de Maio de 1999, era muito eficaz a penetrar os perímetros de defesa, mesmo de organizações que estavam protegidas com “firewalls”. De facto, durante o primeiro fim-de-semana da sua existência em campo, o vírus infectou pelo menos 100.000 computadores pessoais. Uma vez mais, já que tanto outro material cobre o vírus Melissa em grande profundidade, esta secção pretende apenas focar-se no mecanismo de propagação do programa, que é típico de um agente malicioso avançado.

A técnica usada pelo Melissa para ultrapassar a maioria das restrições dos “firewall” era muito simples – o programa era tipicamente transportado como um “attachment” de uma mensagem de “email” recebida. Uma vez que a maioria das organizações permitem “attachments” nas mensagens de “email” recebidas, o vírus conseguia penetrar com sucesso o perímetro de defesa. Mesmo em casos onde a organização faz um “scan” do “email” recebido à procura de vírus, o malicioso código não era detectado porque a assinatura do Melissa ainda não era conhecida dos fabricantes de antivírus da altura. De facto, depender das assinaturas dos vírus como única medida para proteger a rede de agentes maliciosos é geralmente problemático, porque há sempre um atraso entre o surgimento de um novo agente e o aparecimento de actualizações no software de antivírus.

Para que o vírus Melissa possa infectar uma máquina, o destinatário da mensagem infectada precisava abrir o documento em “attach” usando o Microsoft Word. De facto, o Melissa não está classificado como “worm” principalmente porque é necessária a acção do utilizador para que o programa se propague. Uma vez o “attachment” infectado aberto no Microsoft Word, o vírus enviava um “email” de si próprio aos primeiros 50 registos de cada livro de endereços MAPI do Microsoft Outlook, legíveis pelo utilizador que disparava o código do vírus.

Embora os utilizadores pudessem inadvertidamente disseminar o Melissa através da troca manual de documentos infectados, o maior contribuidor para a rápida proliferação do vírus era a técnica de se auto-enviar por “email” para outros sistemas. Assim como a maior parte dos firewalls não impediam o vírus de entrar nas organizações através do “email” recebido, a maior parte das políticas de “firewall” não bloqueavam tentativas de propagação do vírus para o exterior, que se mascaravam como normal tráfego de “email” para fora.

Para mais, um elemento de engenharia social aumentava a probabilidade de que o destinatário da mensagem infectada fizesse disparar o código do vírus ao abrir o documento em “attach”. Em particular, o assunto do “email” infectado continha o nome completo do utilizador de cuja conta o vírus estava a mandar a mensagem. Uma vez que os destinatários das mensagens eram compilados do livro de endereços do utilizador, estes deveriam quase certamente reconhecer o nome do remetente nas linhas Subject e From. Pensando que essa mensagem vinha de um amigo, os receptores do vírus tinham uma maior tendência a ver o “attachment”.

Como demonstrado pela rápida expansão do vírus Melissa, a técnica de propagar agentes maliciosos através de documentos infectados ou de software é muito efectiva. Este método confia sobretudo em canais abertos como o “email” ou o navegação na Web, os quais são raramente controlados por “firewalls”, para infiltrar a rede da organização. Uma vez dentro, o agente pode utilizar técnicas de replicação como as empregues pelo Morris Worm para se auto-propagar para anfitriões na vizinhança, de uma forma inteligente e sem restrições.

Agentes Espiões

Visão geral

A ameaça de espionagem ou de agentes maliciosos com capacidade de espiar ganhou protagonismo em 1999 com a emergência de vírus como o Calígula e o Marker, os quais demonstram a tendência crescente de autores de vírus em criarem agentes que tiram partido da conectividade da Internet de uma forma ou outra.

Agentes espiões são especialmente perigosos porque podem transmitir informação sensível da organização para o autor do vírus. Muito como o Melissa, estes programas tipicamente infiltram o perímetro de defesa da rede através de canais abertos como o “email” ou a navegação na Web. Para aumentar a probabilidade de estabelecerem uma ligação com sucesso para a base principal, os agentes espiões tipicamente mascaram as transmissões de saída como vulgar “email” ou tráfego de Web.

As características de espionagem de tais vírus podem ser usadas para fazer sondagens de reconhecimento que muitas vezes antecedem muitos ataques de sucesso. Além disso, a habilidade do agente em comunicar com o seu autor pode levar ao desenvolvimento de um vírus que modifica o seu comportamento de forma dinâmica em resposta a instruções do seu operador. Porque as ligações de saída são utilizadas para estas comunicações, o “firewall” da organização raramente bloqueará as transmissões.

Esta secção concentra-se em métodos que um agente malicioso pode utilizar para estabelecer um canal efectivo de comunicação, assim como nas ameaças que agentes espiões colocam a modernos sistemas de defesa.

Vírus Calígula

O Calígula, conhecido para os entusiastas como W97M/Caligula, ganhou a atenção do público em Janeiro de 1999, sobretudo por causa do seu ataque ao PGP, que é um programa comum de encriptação conhecido pelas suas reais capacidades de confidencialidade. Quando activado, o vírus tentava localizar um ficheiro secreto do PGP, o “keyring”, que guarda informação sensível do utilizador, e transmitia-o ao autor do vírus.

Embora uma “password” seja habitualmente necessária para ler o conteúdo do “keyring” secreto do PGP, o Calígula demonstrou uma técnica poderosa para obter informação sensível de um alvo sob ataque – o vírus iniciava sessões de envio utilizando o comando interno de software ftp.exe para comunicar com o autor. Porque a maioria das políticas de “firewall” permite aos utilizadores ir buscar ficheiros FTP do exterior, o vírus pode utilizar um protocolo como o FTP para iniciar ligações para a base principal a partir da rede da vítima.

Vírus Marker

O Marker, também conhecido por W97M/Marker, apareceu pela primeira vez em Abril de 1999. Este vírus é particularmente interessante por manter um registo da data e hora do contágio, bem como informação pessoal acerca das suas vítimas. Depois de infectar uma máquina, o vírus guardava informação do utilizador, a qual podia ser vista manualmente através do menu Tools do Microsoft Word. Esta informação era depois enviada para o site FTP do autor usando o comando FTP do computador. O vírus assegurava que a informação era transmitida apenas uma vez inscrevendo-a no registo (“registry”) do Windows.

A técnica de usar ftp.exe parece-se com a empregue no vírus Calígula por uma razão – ambos os agentes parecem ter tido origem num grupo de troca de vírus conhecido como CodeBreakers. De facto, o Calígula também usava o “registry” do Windows para limitar o número de comunicações para o exterior. Ambos os vírus parecem ter sido desenvolvidos em resposta a um “paper” publicado em 1997, que descrevia ataques práticos ao PGP e profetizava um “futuro brilhante para vírus com possibilidades de espionagem”.

Mantendo o registo do contágio, um agente espião permite ao seu operador estudar as relações entre membros da organização alvo. Por exemplo, um relatório a listar informação pessoal acerca das vítimas e altura em que foram contagiadas pode ser usado para avaliar quão próximo estes indivíduos trabalham uns com os outros. Essa informação tanto pode ser usada para um alvo baseado em computador, como para um ataque de engenharia social.

Vírus Groov

O Groov, também conhecido pelo W97M/Groov.a, foi descoberto em Maio de 1998. Embora antecedesse significativamente o aparecimento dos Marker e Calígula, já exibia as características dos vírus espiões. Depois de infectar uma máquina, o Groov carregava a configuração de IP da vítima, obtida por via do comando interno ipconfig.exe, para um site FTP externo.

O Groov mandava os seus relatórios para um site FTP pertencendo a um fabricante de software antivírus, a Frisk Software International, aparentemente numa tentativa de sobrecarregar a rede da empresa com tráfego não solicitado. De facto, esta pode ter considerada como uma primeira tentativa de um ataque DDoS.

Deveras importante é o facto de, ao fornecer informação específica sobre um dado “site” aos seus autores, um vírus pode ser utilizado como uma importante ferramenta de reconhecimento, ajudando o atacante a estudar a topologia de rede de potenciais alvos. Neste cenário, informação transmitida sobre as configurações de IP podem divulgar detalhes críticos acerca da infra-estrutura interna da organização. Informação reportada deste modo apresenta uma visão por dentro da rede e é extremamente valiosa para perpetrar ataques directos contra um “site” específico, especialmente quando correlacionada com os resultados de “scans” externos à rede.

Agentes Remotamente Controlados

Visão geral

Agentes remotamente controlados como o Back Orifice e o NetBus podem providenciar o atacante com o completo controle da máquina da vítima. A extensão desse controlo é muito maior do que aquele associado a típicos vírus ou “worms” e é uma característica altamente desejável para um agente malicioso avançado.

Em essência, programas como o Back Orifice e o NetBus partilham de uma grande porção de funcionalidade com ferramentas de administração remota como a Symantec pcAnywhere. A distinção maior que pode ser feita entre estas duas classes de software nasce do seu propósito de utilização. Ambas podem ser usadas por administradores de rede para propósitos legítimos, assim como por atacantes para propósitos que muitas vezes não são assim tão nobres.

O software de controle remoto é habitualmente composto por duas partes: um servidor peso-pluma que corre na máquina infectada, executando comandos à medida que vão sendo ditados pelo seu operador, e um cliente, que corre na máquina do atacante e que remotamente controla o componente servidor através da rede.

O componente servidor do agente é tipicamente escrito para ser o mais camuflado possível, para diminuir as possibilidades de descoberta acidental. Servidores pertencendo a agentes múltiplos podem coexistir pacificamente na mesma máquina. De facto, este cenário é muitas vezes desejado pelo intruso, pois introduz um elemento de resistência à falha do ataque.

Antes que uma máquina possa ser remotamente controlada, deve ser “infectada” pelo componente servidor do agente. Isto é normalmente conseguido usando métodos que são empregues pela maioria dos vírus – através de canais de entrada abertos como o “email” ou a navegação na Web. Contudo, é possível que um agente avançado remotamente controlado possa denotar um comportamento do tipo “worm” ao se auto-propagar através da rede.

Uma vez que a maioria dos clientes remotamente controlados operam mandando comandos pela entrada, com respeito aos seus componentes de servidor, a maioria dos “firewall” bloqueiam efectivamente o tráfego de controle. Dessa forma, as versões actuais de agentes como o Back Orifice e o NetBus colocam a mais elevada ameaça aos utilizadores caseiros, que só muito raramente estão protegidos por “firewalls”.

Para aumentar a possibilidade de estabelecer uma ligação de controle com sucesso, um agente avançado remotamente controlado pode utilizar o tráfego de saída que é iniciado pelo componente servidor do agente, de forma similar à que um agente espião se conecta à sua base. Isto é discutido em grande detalhe mais adiante. Esta secção foca-se na extensão das capacidades de controle remoto de agentes como o Net Orifice e o NetBus.

Back Orifice

O Back Orifice [BO] é provavelmente o agente remotamente controlado mais famoso actualmente disponível na Internet. A sua versão original foi lançada em 3 de Agosto de 1998 por um grupo conhecido como o Cult of the Dead Cow. Eles lançaram a segunda versão do programa, conhecido como Back Orifice 2000 (BO2K) a 10 de Julho de 1999, reforçando a sua posição como líder dos agentes remotamente controlados entre os “hackers” e outros brincalhões.

Algumas das possibilidades nativamente suportadas pelo BO2K incluem registo de inserções no teclado, redireccionamento de “ports”, captura de vídeo e áudio, acesso ao “registry” e a ficheiros, recuperação da “password” em “cache”, controlo de processos, bem como uma porção de outras acções, por controle remoto. Para além disso, o BO providencia programação API que permite, a quem queira desenvolver, estender a funcionalidade nativa do BO2K ao escrever os seus próprios “plug-ins”. Por exemplo, há “plug-ins” correntemente disponíveis que melhoram o mecanismo de comunicação do BO2K ao encriptar o seu controlo de tráfego, tornando as transmissões muito difíceis de decifrar e detectar.

Porque o componente servidor do BO se tende a propagar através de “attachments” de “email” ou carregamentos de software troianizados, o seu ciclo de vida é tipicamente diferente face à sua parte cliente. Como resultado, é muitas vezes difícil para o atacante localizar uma instância particular do servidor BO. Para tentar melhorar esta tarefa, alguns “plug-ins” do BO2K permitem ao servidor registar-se na base principal, o que é usualmente conseguido através de “email”. Porque este tráfego é de saída, não será detido por muitos “firewalls”. Contudo, uma vez que as comunicações de controlo remoto são enviadas no sentido da entrada, a maioria das configurações de “firewall” previnem o cliente do BO de se ligarem à máquina infectada.

NetBus

A primeira versão do NetBus antecipou o BO e foi lançada em Março de 1998 com o intento de permitir às pessoas “divertir-se com os seus/suas amigos(as)” e, de acordo com o autor, não estava destinada a ser nem uma ferramenta de administração nem uma ferramenta para “hacking”. A versão corrente do programa, o NetBus 2.0 Pro, foi lançado em Fevereiro de 1999 e rivaliza com o BO2K ao oferecer uma funcionalidade similar num “package” ligeiramente diferente. O NetBus 2.0 Pro está a ser comercializado por uma companhia chamada UltraAccess Networks como uma “ferramenta de administração remota e de espionagem”.

Conquanto o NetBus suporte “plug-ins”, parece-lhe faltar o apoio da comunidade de programadores de desenvolvimento conseguida pelo BO. Apesar disso, o NetBus sobressai do BO por possuir capacidades rudimentares embutidas para controlar múltiplos módulos de servidor NetBus com um único cliente. Esta funcionalidade de comando global de transmissão está reminescente em populares ferramentas de DoS, mas está limitada porque o NetBus executa os comandos de forma sequencial, enquanto que ferramentas como o Trinoo e o TFN podem comandar os seus servidores em paralelo.

O NetBus 2.0 Pro foi escrito obrigando à necessidade de acesso físico ao computador, para instalar o componente servidor em modo camuflado, a fim de impedir o seu uso inapropriado. Contudo, estão disponíveis algumas versões não oficiais do programa, as quais mascaram o seu servidor de um “patch” ICQ, ou como um silencioso programa troianizado.

Agentes De Ataque Corrdenado

Visão geral

Software como o Trinoo e o Tribe Flood Network (TFN) é tipicamente discutido no contexto de ataques distribuídos de “denial-of-service” (DoS). Estas ferrramentas são desenhadas para corromper as funções normais do sistema ao inundarem a rede com grandes quantidades de tráfego e diferem dos seus semelhantes anteriores primeiramente pela habilidade de controlar centralmente um grande grupo de agentes distribuídos durante um ataque. Corrupções de serviço em sites de Internet de alto gabarito como o Yahoo!, eBay, Amazon e CNN em Fevereiro chamaram muita atenção para este método de ataque.

A arquitectura das ferramentas DoS distribuídas actualmente é similar aos agentes remotamente controlados como o Back Orifice ou o NetBus no sentido que os programas são divididos em componentes servidor e cliente. Contudo, enquanto que os clientes da maioria dos agentes remotamente controlados correm tipicamente no sistema do atacante, os componentes de cliente de software DoS distribuídos habitualmente correm em máquinas comprometidas. Como resultado, um atacante lançando um ataque distribuído DoS é ainda mais dissociado do alvo, e pode controlar um ou mais clientes, cada um dos quais pode controlar múltiplos servidores de ataque.

Investigar esses ataques é particularmente difícil porque os agentes estão espalhados pela Internet e só muito raramente estão debaixo do controlo administrativo de uma única entidade legítima. Ainda para mais, o desenho multi-tier (multi-nó?!) destas ferramentas, bem como possibilidades de disfaçar endereços IP (“IP-spoofing”) presentes nas novas versões do software, tornam a busca de tráfego ofensor até ao atacante uma tarefa muito difícil, removendo a noção de contabilização às acções do próprio.

Programas como o Trinoo e o TFN servem primariamente para um único propósito, tendo sido desenhados especificamente para conduzir ataques DoS. Contudo, a tecnologia usada por estes programas para agirem em uníssono durante um ataque pode ser reconstruída sob a forma de um agente multi-usos, capaz de levar a cabo acções de uma forma coordenada.

Desde o aparecimento do Trinoo e do TFN, novos programas foram escritos, os quais possuem uma mais-valia relativamente às versões originais dessas ferramentas. Todavia, esta secção concentra-se em métodos empregues pelo Trinoo e pelo TFN para ilustrar técnicas que podem ser usadas para comandar centralmente um exército de agentes de ataque distribuídos.

Trinoo

Também conhecido por trin00, foi originalmente descoberto numa série de sistemas Solaris comprometidos, em Agosto de 1999, embora relatórios de teste iniciais do programa datem de Junho de 1999. Desde então, o Trinoo foi deslocado para uma série de outros sistemas Unix e por volta de Fevereiro de 2000 foi descoberta a primeira versão para Windows.

Para “infectar” uma máquina com um componente Trinoo, o agressor necessita de ter acesso administrativo ao sistema. Isto é normalmente conseguido através da análise cuidada de enormes quantidades de blocos de rede para identificar potenciais candidatos e explorar vulnerabilidades específicas do sistema, como problemas de sobrecarga, para conseguir acesso remoto aos sistemas. Um subconjunto de máquinas comprometidas é então escolhido para a rede Trinoo e os componentes cliente e servidor do programa são instalados correndo um “script” automático de instalação.

Uma vez uma rede Trinoo instalada, o atacante pode controlar os componentes de servidor, também conhecidos como demónios, ao manipular remotamente os componentes cliente do programa, também conhecidos por mestres. A ligação ao sistema mestre pode ser estabelecida através do protocolo Telnet, ao ligar a uma porta específica e fornecer as devidas credenciais de “login”. O controlo de acesso baseado em “password” é usado para comunicações entre todos os nós da rede Trinoo para impedir tanto a aproximação de investigadores, como atacantes rivais de usurpar os agentes. Se uma tentativa de ligação for feita ao mestre durante uma sessão decorrente, o sistema envia um aviso para o utilizador previamente autenticado, dando ao atacante uma oportunidade para fazer a limpeza e retirar-se.

Uma vez ligado ao mestre, o atacante pode controlar um exército de demónios Trinoos emitindo comandos que iniciam ou param ataques DoS contra anfitriões específicos. Agindo por parte do atacante, o mestre Trinoo comunica com os seus demónios através de um protocolo proprietário de texto que usa o UDP como protocolo de transporte subjacente. Por exemplo, quando o atacante emite o comando “do” a um mestre Trinoo, o mestre envia o comando “aaa” para os seus demónios, o que indica a estes para tentarem sobrecarregar o sistema com pacotes UDP. O ataque termina normalmente depois de um período de tempo pré-determinado ou quando o atacante envia o comando “mdie” ao mestre, que depois envia o comando “dle” aos seus demónios, indicando-lhes que se devem desligar.

O tráfego de rede entre o atacante, os mestres, os demónios e a vítima é de entrada com respeito ao destino de um segmento particular de comunicação. Como resultado, organizações cujos “firewalls” bloqueiem grandes quantidades de “ports” UDP podem efectivamente cortar a comunicação entre os nós do Trinoo. Contudo, os “firewall” não conseguem proteger uma organização de um ataque DoS distribuído, uma vez que a verdadeira natureza das comunicações baseadas na Internet permitem ao atacante consumir os recursos do alvo ao inundarem o ponto de entrada da rede com tráfego não solicitado.

Tribe Flood Network

O Tribe Flood Network, ou TFN, foi descoberto mais ou menos ao mesmo tempo do Trinoo, em Outubro de 1999. Ambos os programas são similares nos objectivos e arquitectura. A versão original do TFN tem um mecanismo de controle de acesso mais primitivo mas excede-se na natureza subversiva do seu canal de controlo, e suporta uma maior diversidade de ataques DoS distribuídos.

Enquanto o Trinoo se limita a pacotes UDP quando ataca um “site”, o TFN pode executar “inundações” ICMP ou UDP, ataques estilo Smurf e tem um modo de fornecer ao atacante uma “porta das traseiras” administrativa para o anfitrião do agente. O TFN é controlado através da execução de comandos de linha no seu componente cliente, o que pode ser conseguido ligando-se à máquina cliente através das ferramentas de administração remotas “standard” como Telnet ou SSH, bem como através de uma “porta das traseiras” que o atacante possa ter colocado para este propósito.

O mecanismo empregue pelos servidores TFN para comunicarem com os seus clientes é particularmente interessante porque é puramente baseado em pacotes ICPM com resposta de eco (“echo reply”). Tais pacotes são normalmente gerados em resposta a mensagens ICPM de pedido de eco (“echo request”) que são produzidas pelo comando “ping” para verificar o acesso à rede de uma máquina.

Para permitir aos seus utilizadores a possilidade de emitir comandos ICPM de “echo request”, muitos administradores de rede não impedem pacotes ICPM de “echo reply” de entrar na rede. Tivesse o programa usado mensagens ICPM de “echo request”, as máquinas anfitriãs dos seus agentes iriam gerar “echo reply” de resposta em ICPM que poderiam trazer atenção desnecessária às comunicações. Além disso, algumas ferramentas populares de monitorização de rede não processam ICPM de forma própria, aumentando a possibilidade que as comunicações TFN possam prosseguir sem interrupção.

Ao utilizar tráfego ICPM de “echo reply” para as suas comunicações, o TFN ilustra uma simples, conquanto efectiva, aproximação ao contorno de mecanismos de segurança, que formam a base de muitos ataques desde os primeiros tempos da Internet – se um protocolo define um determinado tipo de comportamento, surge a tentativa de tirar partido do protocolo violando as especificações ou seguindo o caminho não expressamente mencionado nas especificações. No caso do TFN, as especificações ICMP não consideram a existência de pacotes de “echo reply” sem as mensagens de “echo request” correspondentes. Para além disso, os servidores de TFN usam o campo e identificação do pacote ICMP para encaminhar comandos para os seus clientes, embora o campo esteja oficialmente dedicado a fazer corresponder mensagens de “echo reply” às de “echo request”.

Agentes Maliciosos Avançados

Visão geral

Ao longo deste texto, foi-se focando propriedades proeminentes dos vários agentes maliciosos numa tentativa de ilustrar como podem ser usados para criar uma nova espécie de agente de ataque. A lista abaixo sumariza as propriedades base e as limitações dos programas abordados: Os agentes rapidamente expansíveis como o Morris Worm ilustram modos altamente agressivos de auto-propagação, enquanto o vírus Melissa demonstrou como um agente pode efectivamente infiltrar uma organização através de canais abertos como “email” de entrada ou acesso à Web. Apesar do seu efeito na comunidade da Internet, estes agentes poderão não ter alcançado todo o seu potencial porque todo o seu comportamento foi programado antecipadamente.

Os agentes espiões usam ligações para fora para comunicar com os seus operadores. O vírus Calígula empregava este mecanismo para transmitir informação privada para um site externo, enquanto o Groove reportava detalhes de rede que poderiam ser usados para obter uma perspectiva de dentro da infraestrutura de computação da organização. Esta técnica foi usada para obter informação dos atacantes, por forma a guiar o agente ao longo do seu ciclo de vida.

Os agentes controlados remotamente como o Back Orifice e o NetBus são extremamente camufláveis e disponibilizam ao atacante um controle remoto em tempo real do computador, que rivaliza com o estar efectivamente sentado frente à máquina. O suporte a “plug-ins” que expandem a funcionalidade inicial dos programas permite a estes agentes mutarem-se facilmente. Contudo, devido ao sentido de entrada do tráfego de controlo, muitos “firewalls” podem efectivamente desmantelar os seus canais de comunicação.

Agentes de ataque coordenado, como o Trinoo e o TFN, são particularmente poderosos porque podem fornecer o atacante com a habilidade de controlar centralmente um exército de agentes distribuídos, enquanto tentam esconder a identidade do atacante. Versões recentes destas ferramentas suportam comunicações através de canais encriptados, tornando tais ataques muito difíceis de investigar. O comportamento desses agentes pode ser controlado em tempo real; contudo, muitas “firewall” podem cortar essas comunicações porque elas são tipicamente enviadas de fora para dentro. Para além disso, versões actuais destes programas estão limitados na sua habilidade de auto-propagação e necessitam muitas vezes de operação manual por parte do atacante para se espalharem por novos anfitriões. No contexto deste texto, um agente malicioso avançado é aquele que se alimenta das forças de cada uma das classes de programas acima descritas e que descarta as suas deficiências.

Troiano RingZero

Relatórios em larga escala de actividade associada com o troiano RingZero ficaram disponíveis em Setembro de 1999 mas foi só em Outubro de 1999 que uma instância do programa foi encontrada e apresentada para análise detalhada. Apesar disso, relatos do RingZero datam de Agosto de 1999 e descrevem mensagens de “email” não solicitadas que asseguram conter um “programa realmente interessante”. Numa das variantes do programa, o “attachment” era uma versão troianizada de um jogo que permitia ao utilizador “disparar” buracos no écrã usando o cursor do rato como se fosse uma pistola. Outra distribuição continha uma versão contaminada de um programa shareware chamado iNTERNET Turbo.

Usando a agora clássica técnica de propagação através de “attachments” de “email”, o RingZero infectou tantas máquinas que no início de Outubro analistas de segurança começaram a notar tráfego de rede pouco usual que tinha origem em mais de cem mil anfitriões. O software anti-vírus ainda não podia proteger as máquinas de serem infectadas com o RingZero, uma vez que os fabricantes não conheciam, na altura, a assinatura do troiano.

O RingZero compreendia dois agentes que coexistiam na mesma máquina. Um deles, chamado pst.exe, usava o computador da vítima para prescutar a Internet em busca de servidores de “proxy”, que servem habitualmente para aceder a endereços da Internet para os utilizadores de servidores de “proxy”. Era este o tráfego que os analistas viam nos seus registos. Quando o pst.exe encontrava um servidor de “proxy” activo, o módulo indicava ao servidor para passar uma mensagem para um “site” externo na Web, numa tentativa de registar a existência de um servidor recém-encontrado. A razão exacta para manter uma lista de servidores de “proxy” da Internet não é clara, mas as possibilidades vão desde a utilização de servidores para acesso anónimo a “sites” da Web, até ao seu uso para fazer passar futuros ataques baseados em HTTP.

O segundo executável do RingZero era o its.exe e tentava ligar-se a dois “sites” da Web externos. Uma vez ligado, o agente tentava recuperar um ficheiro que estava codificado, de forma a impedir o estudo do seu conteúdo.

O propósito exacto deste ficheiro permanece desconhecido, mas é provável que forneça alguma espécie de instruções ao troiano, modificando o seu comportamento conforme o atacante disso veja necessidade.

Uma vez que o its.exe carregasse o ficheiro de dados dos seus “sites” Web, o troiano ligava-se a um servidor de “mail” da Internet na Finlândia, tentando usar o servidor como relé para mandar “emails” a milhares de utilizadores de um popular serviço de mensagens instantâneas. As mensagens continham um endereço de remetente fabricado e estavam destinadas a alcançar tantas pessoas quanto possível. No corpo da mensagem, os receptores estavam encorajados a visitar a “Maior Lista de Proxy” no site da Web onde o RingZero mantinha a base de dados dos seus achados. É possível que o autor do troiano quisesse que uma série de gente se ligasse ao seu “site” para aumentar a chance de esconder a sua identidade – quanto mais pessoas vissem a lista mais difícil seria encontrar informação da ligação do autor nos registos de acesso do servidor.

De forma geral, o RingZero exibia características que, até aí, eram raramente vistas num único programa. O troiano espalhava-se rapidamente através de canais como “email” ou navegação na Web. Uma vez dentro da organização, tinha a habilidade de agir como um agente espião, coleccionando informação confidencial e realizando monitorizações internas à rede. Possuía um mecanismo de controlo remoto que era baseado em ligações externas e permitia ao atacante controlar as acções do agente e ritmo de propagação de uma forma camuflada, isto apesar da maior parte dos “firewalls”. Operava de forma distribuída, dirigindo máquinas contaminadas através da Internet para consolidar de forma automática os achados do agente numa localização centralizada.

Uma vez que nem o código de origem nem o conteúdo do ficheiro de dados para o RingZero estavam disponíveis, ainda há muito desconhecido àcerca deste troiano. As suas acções por volta de Outubro de 1999 não pareciam ter um propósito especialmente malicioso, embora alguns relatórios indiquem que uma das suas versões tentou roubar “passwords” em “cache” da máquina de um utilizador.

Contudo, a versão analisada do RingZero não parecia especialmente desenhada para ultrapassar “firewalls”, era mais ruidosa do que o necessário para as suas aparentes funções e não exibia técnicas de propagação agressiva como a exploração de conhecidas vulnerabilidades de software. Porventura, seria destinado a nada mais do que uma ferramenta para recolher estatísticas àcerca de servidores de “proxy” da Internet. Por outro lado, talvez fosse um protótipo de um agente malicioso avançado que demonstrava efectivamente algumas das ameaças que correntemente se materializam na Internet.

A Ameaça De Agentes Maliciosos Avançados

A funcionalidade do RingZero, combinada com a natureza experimental do seu comportamento, sugere que agentes maliciosos avançados estejam presentemente em desenvolvimento pela comunidade de atacantes. De um lado, não há nada de particularmente engenhoso àcerca destes programas, pois eles exibem características já presentes noutro software desde há algum tempo. Contudo, a incorporação de todas estas características num único “package” torna esses agentes especialmente perigosos. A própria existência do RingZero demonstra que a tecnologia por detrás de agentes maliciosos avançados deixou de ser só teórica.

O uso de ligações para o exterior por parte do agente para obter instruções do operador é algo muito raramente visto em anteriores programas. Esta possiblidade mistura as comunicações do agente com as actividades de “browsing” do dia-a-dia nas organizações e torna o seu tráfego de controlo muito difícil de bloquear. Para mais, agentes maliciosos avançados utilizam múltiplos “sites” para se manter em contacto com o operador, criando redundância na rede de controlo.

Ataques conduzidos com a ajuda desses agentes são muito difíceis de parar, pois todos os “sites” de controlo necessitam de ser tornados inoperacionais para acabar com o canal de controlo. Esta arquitectura “avançada” está distribuída tanto nas capacidades de ataque como de controlo e permite ao agressor dirigir o ataque de forma absolutamente longínqua ao renovar ficheiros de instruções em um ou mais dos “sites” base.

Tendo experimentado tremendas dificuldades em defender-se de ataques distribuídos por parte de programas como o Trinoo e o TFN, as organizações encontram-se altamente vulneráveis a ataques de agentes maliciosos avançados. Tais ataques serão difíceis de notar porque canais abertos serão usados, difíceis de parar porque múltiplos agentes e múltiplos “sites” de controlo serão usados e difíceis de seguir porque o atacante estará a controlar os agentes de forma distribuída e desconectada. Não, isto não é uma antevisão do fim do mundo – é simplesmente uma indicação de que a necessidade de administradores de segurança qualificados não deve para já vir a diminuir.

Vírus do Amor

O timing deste texto foi certamente acertado, com a ameaça de agentes maliciosos a chamar a atenção do público. O recente contágio do “I Love You” trouxe muita atenção à ameaça de agentes maliciosos, embora os media muitas vezes confundam a ameaça do “worm” “I Love You” ao equaciná-lo com o vírus Melissa. De facto, o conteúdo do VBScript do “worm” espalha-se primariamente da mesma forma que o Melissa, ao se auto-enviar por “email” para os registos do livro de endereços da vítima. Contudo, a vertente mais perigosa do agente, é a sua tentativa de fazer o utilisador carregar e executar o programa WIN-BUGSFIX.exe, o qual, de acordo com alguns relatórios, tenta roubar as “passwords” em “cache” da vítima.

Separar o “worm” em duas partes provou ser muito efectivo. O VBScript do “I Love You” infiltrava as organizações por “email” (um canal geralmente aberto). Ao não espalhar o trojan WIN-BUGSFIX.exe directamente, o autor era capaz de passar os mecanismos de defesa que verificam “attachments” executáveis na entrada de mensagens de “email”. Uma vez executado, o VBScript usava um canal para fora (geralmente aberto) para se ligar à sua “base”, carregando o trojan WIN-BUGSFIX.exe através de um pedido que se parecia como uma ligação típica de navegação pela Web. Por causa do nome do executável e porque era automaticamente carregado pelo Internet Explorer no arranque do programa, era provável que os utilizadores executassem o troiano, pensando ser parte da funcionalidade de auto-actualização do Internet Explorer.

Como resultado, o “I Love You” denotou mais funcionalidade avançada do que se poderia esperar. Questiono-me sobre o quanto disto resultou de um “design” bem projectado e o quanto foi acidental. O “I Love You” foi efectivo ao mostrar as ameaças de agentes maliciosos. Contudo, tecnologia e potencial destrutivo, são apenas a ponta do iceberg. Um recente “post” na “mailing list” BugTrap por Michael Zalewski descrevia a arquitectura de um “worm” muito mais poderoso. O “post” descreve os detalhes de implementação de um “worm” que poderia ser muito difícil de detectar e dele se defender.

Quadro

Características Chave de Agentes Maliciosos

A seguinte matriz consolida características chave de agentes maliciosos que foram discutidos neste texto. Por favor refira-se às secções próprias no papel para uma discussão detalhada destes elementos, já que o formato da tabela não permite disponibilizar uma descrição dos itens. Em particular, quando a presença de firewalls é indicada abaixo, é assumido que os firewalls são estreitamente configurados para permitir apenas um conjunto limitado de serviços a entrar na rede da organização.

Morris WormVírus. Melis.Vírus MarkerVírus CaligVírus GroovBack Orif.Net-BusTrinooTFNRing-Zero
Auto-propagação agressivaSimNãoNãoNãoNãoNãoNãoNãoNãoPoss.
Propag. apesar de firewallsSimSimSimSimSimSimSimPartlyPartSim
Ataque agres.sem firewallsSimPart (DoS)NãoNãoPart (DoS)SimSimSimSimPoss.
Ataque agres. firewallsNãoPart (DoS)NãoNãoPart (DoS)NãoNãoPart (DoS)Part (DoS)Poss.
Revela inform.confid.NãoNãoSimSimSimSimSimNãoNãoSim
Remot. controlado quando sem firewallsNãoNãoNãoNãoNãoSimSimSimSimSim
Remot. controlado apesar de firewallsNãoNãoNãoNãoNãoNãoNãoNãoNãoSim
Actuando coordenada e distribuídaNãoNãoNãoNãoNãoNãoNãoSimSimSim

As seguintes abreviações foram usadas na tabela acima para que o seu conteúdo pudesse caber nas típicas janelas de terminal: “Propag.” significa “Propagação”; “agres.” significa “agressivo”; “Remot.” significa “Remotamente” “inform.” significa “informação”; “confid.” significa “confidencial”

Updated

About the Author

Lenny Zeltser is a seasoned business and technology leader with extensive information security experience. He builds innovative endpoint defense solutions as VP of Products at Minerva Labs. He also trains incident response and digital forensics professionals at SANS Institute. Lenny frequently speaks at industry events, writes articles and has co-authored books. He has earned the prestigious GIAC Security Expert designation, has an MBA from MIT Sloan and a Computer Science degree from the University of Pennsylvania.

Learn more