sábado, 13 de dezembro de 2008

Cap 3 - Remoção de Malwares - Teoria

Usar anti-vírus ou realizar procedimentos manuais?
Infelizmente muitos ainda realizam esse tipo de pergunta, mas como analistas de malwares devemos enteder o por quê dessa cultura e saber pontuar as respotas, vejamos:

Remoção Automatizada com Anti-Vírus
O software de anti-vírus, como um recurso de automatizar a localização, identificação e remoção de malwares, é de conhecimento popular e já aceito como um padrão de segurança junto aos usuários leigos. Hoje, referenciado como uma medida de prevenção e contenção de vírus de computadores.

Sua história começa por volta de 1988, após a grande desordem internacional provacada pelo vírus/worm de Morris, o Internet Worm de 1988, um projeto acadêmico que acidentalmente estrapolou os limites previstos por seu criador. Após este marco histórico, a preocupação das autoridades internacionais em relação aos vírus de rede (worms) começou a crescer, foram criadas comunidades internacionais de pesquisa e contenção dessas ameaças, órgãos e organizações, empresas comerciais também viram nesse incidente um novo mercado, e nasce assim os softwares de antí-vírus.

Como um software voltado ao usuário final, que nesta época crescia exponencialmente com a comercialização dos computadores IBM PC Compatibles e da Internet, seu objetivo final era proporcionar alta usabilidade e eficiência no combate aos vírus de computador. Entretando, a partir do início da década de 90, o mundo começa a presenciar modificações significativas nas estruturas dos vírus, alguns sendo meras mutações, mas outros tendo forma, estrutura e objetivos completamente diferentes. Hoje, em 2008, denominamos essas formas de malwares, e incluímos como um grupo pertencente a esta classificação os vírus de computadores.

Infelizmente os softwares anti-vírus não conseguiram acompanhar a evolução dos malwares (assunto esse que merece um novo capítulo posterior sobre o histórico dos malwares), porém sendo amplamente utilizado, comercializado e recomendado para o usuário final. O que se tem percebido desde 1990 é o esforço individual de várias empresas no combate de certos tipos de malwares. Porém, cada empresa se especializando em um tipo específico de malware e não no controle de malwares.

É apenas em meados de 2007 que começam a chegar no mercado verdadeiros softwares de anti-malwares, e não mais de anti-vírus. O que promete mudar o cenário atual de segurança da informação. Apenas para pontuar, os softwares anti-malwares são compostos por: firewall pessoal, anti-spyware, anti-vírus, proteção contra desabilitadores de anti-vírus, anti-rootkits, anti-trojans, entre outras ferramentas que mencionaremos mais a frente em outro capítulo.

Por fim, muitos administradores de redes, se viram por muito tempo a mercê de um software, que prometia proteção e segurança, mas que era continuamente falho, e muitos desses administradores acabaram por internalizar a cultura da convivência pacífica com os malwares, sendo: "Se eles existem, estão na minha rede, estão nas minhas máquinas, mas não me atrapalham, então deixa viver!". E cultura essa que também se enraizou entre os usuários domésticos, porém esses pela ausência de informações mais precisas.

Apesar do discurso quase que anti-favorável aos softwares de anti-vírus, porém farei agora um contra ponto a fim de mostrar que esse tipo de software é útil, e por se dizer bastante útil, vejamos:

Mesmo apresentando falhas homéricas na detecção e combate aos malwares, os software de antí-vírus sempre cumpriram bem sua função que seria a detecção e combate aos vírus de computadores. Limitados pelas tecnologias que os criaram e seus desenvolvedores, esses softwares sempre se encaixaram bem em determinados nichos de mercados, como por exemplo: sempre houve um execelente software de anti-vírus para aqueles usuários domésticos que apenas utilizavam disquetes, Internet para pesquisa acadêmica e softwares de escritórico. Como também sempre houve um outro software de anti-vírus exelente para o público de estações de trabalho corporativas, que adotavam rígidos controles de segurança. Em fim, sempre houveram excelentes softwares de anti-vírus para públicos específicos de soft-user, heavy-user, corporative-user, servidores de rede e outros. Porém, para alguns públicos como: hard-users, administradores de redes e usuários avançados, sempre foi claro não haver nenhuma solução única de anti-vírus que resolvessem seus problemas. E porque isso acontecia? Resposta: porque não era a finalidade do software. E porque não criar um software que atendesse esse público? Resposta: porque o estudo de malwares é novo e ainda não compreendido em sua totalidade por todos que estão neste mercado. Quando o for, e como dito anteriormente que seu início teve origem em 2007, então isso será uma página virada na história dos software de combate as pragas virtuais.

Resumindo, o software anti-vírus é altamente recomendado e eficiente em um determinado contexto de usuário, onde será as atividades realizadas pelo usuário que determinarão qual o melhor software de anti-vírus que atenderá suas necessidades. Quando adotada soluções genéricas ou não previamente estudadas, os riscos do software não se adequar serão sempre de 50%.

Remoções Manuais
Como vimos anteriormente, os softwares de anti-vírus são voltados para públicos específicos de usuários. Alguns tipos de usuários, como: hard-users (usuários que testam muitos jogos, muitos programas diferentes e que são verdadeiros fuçadores de computadores), administradores de redes e usuários avançados (parecidos com os hard-users, mas que utilizam vários computadores ao mesmo tempo) estariam desacobertados de soluções automatizadas. Além desse público excluído, ainda entra em pauta a questão da solução de anti-vírus que foi mal empregada em um determinado usuário, e que por consequência conduziou a infecção do host. Como ficariam esses usuários se não houvesse uma alternativa aos softwares de anti-vírus?

Apesar da explicação acima esclarescer alguns pontos sobre a necessidade de procedimentos manuais, entretando a história na verdade começa por outro ângulo: no começo dos tempos, por volta de 1970, quando ainda não eram previstos os softwares de anti-vírus, entretando o combate a processos maliciosos já existiam. Nesta época, dominada por computadores Mainframes, sistemas Unix e redes coaxiais, os administradores de redes e de sistemas, denominados de sysadmin (System Administrator) e seus sysops (System Operators) já se preocupavam com o combate e prevenção de ameaças a seus sistemas e redes. Muitos desses procedimentos foram simplificados pelo uso da linguagem de programação BATCH, que auxiliava os sysadmins e sysops na automatização de procedimentos repetitíveis.

Geralmente esses procedimentos envolviam a pesquisa em áreas como: serviços em execução na memória RAM da máquina, processos inicializados automaticamente quando do início do sistema operacional, serviços e processos acessando recursos da rede e finalmente pelo comportamento anômalo de determinado serviço ou processo legítimo do sistema operacional, entre outros.

Nasce assim, de forma informal, gerada pela troca de comunicação entre comunidades de informática da época, procedimentos manuais, facilitados pelo uso de programação em BATCH, para o combate de processos maliciosos. Foram esses procedimentos manuais, que em 1988 mostraram seus diferenciais, ao interceptarem, decodificarem e solucionarem o problema do Internet Worm de 1988.

Podemos assim dizer que, as soluções de anti-vírus que decorreram deste marco, foi uma forma de transferir os scripts BATCHS, desenvolvidos por sysadmins e sysops, para executáveis nos computadores dos usuários finais, além de desenvolverem interfaces amigáveis e formas de cativar seus clientes.

Então vem a pergunta: o que são os softwares de anti-vírus? Resposta: a compilação de procedimentos BATCHS de remoção de malwares agregado a uma interface amigável.

Assim, podemos então compreender que o estudo de malwares não consiste em estudar as diferenças (benchmarketing) entre as diversas soluções de anti-vírus e anti-malwares (isso na verdade seria um estudo de design de interface de software), e sim de estudar os diversos procedimentos manuais de remoção de malwares, que conduzem a uma automatização através de um software de anti-vírus.

No próximo capítulo veremos como trazer para a prática os procedimentos de remoção manual.

quarta-feira, 5 de novembro de 2008

Cap 2 - Elementos de Malwares

No capítulo anterior apresentei uma proposta de taxonomia para os malwares (vírus, worms, trojans, loggers, etc), agora explicarei como separei os elementos que formaram essas categorias.

Elementos
Apesar de particularmente não gostar de referenciar informações provindas de fontes de dados não cientificamente válidas, entretando, a definição de Elementos já é tão amplamente conhecida, que aqui utilizarei o Wikipedia apenas para formalizar o conceito para o estudo apresentado:

Segundo Wikipedia (2008) , elemento pode ser:
  1. aquilo que é simples
  2. o que se pensa impossível de decompor
  3. o que é um componente de um todo
  4. matéria-prima
Dessa forma, compreendemos o termo "Elemento" como aquilo que é simples, indivisível e que participa de um todo.

Elementos de Malwares
Os elementos de malwares foram definidos aqui segundo suas características técnicas. Essas características foram percebidas através de uma pesquisa documental, resgatando a histórica de evolução dos malwares (1979~2008), e destacando as ações realizadas por cada malware registrado na história. São elas:

  • Inicialização – altera arquivos de inicialização do computador (Bios, Fat, boot.ini, autoexec.bat, registro,etc), para ser automaticamente inicializado junto ao sistema operacional;
  • Infecção – infecta outros arquivos em execução no computador como forma de se multiplicar;
  • Ocultaçãoutiliza códigos de compactação, criptografia ou criação de proxies (memória, FAT ou substituição de arquivos originais por falsos), a fim de se mascarar contra sistemas antivírus e de detecções manuais dos usuários;
  • Incubaçãodepende da existência de um programa para se propagar e reproduzir;
  • Engenharia Socialdepende da utilização de técnicas contra a ingenuidade dos usuários a fim de serem executados no sistema operacional;
  • Propagaçãoutiliza as redes de computadores como forma de se alastrar e infectar outras máquinas em redes, utiliza os conceitos de bugs, exploits e vulnerabilidades;
  • Remotopermite o envio de informações para um master a fim da realização de controle remoto slave (ou zumbie);
Taxonomia de Malwares
A tabela a seguir é uma proposta de categorizar os malwares através de seus elementos:


Malware

Inicialização

Infecção

Ocultação

Incubação

Eng. Social

Propagação

Remoto

Vírus

X

X

X

X

X



Worm





X

X


Trojan





X



Backdoor

X




X



Rootkits

X


X


X


X

Loggers

X


X


X


X

Spywares





X


X

Bots

X

X

X



X

X




O terpo malwares seria então o conjunto de categorias simples, e estas por sua vez formadas por conjuntos de elementos únicos que as tornassem distintas umas das outras.
Fica agora as seguintes questões: todos os elementos foram listados? todas as categorias foram formuladas?

Conclusão e Estudos Futuros
Acredito que em linhas gerais, a forma para categorizar os malwares, tenha sido apresentada de forma clara e fundamentada em teoria consistente. Particularmente já consegui elencar 12 elementos de malwares e formular 10 categorias de malwares, entretando não disponibilizei ainda para não esgotar o assunto e abrir o tema para discussões.


Referência Bibliográfica
Wikipedia, disponível em http://pt.wiktionary.org/wiki/elemento, acessado em Novembro, 2008.

Cap 1 - Malwares, vírus e pragas virtuais.

Malware não é vírus!
Vírus é um tipo de malware!
Malware é qualquer tipo de software malicioso que visa obter vantagens sobre o usuário.

Essa confusão sobre tipos de malwares é relativamente nova. Desde o surgimento dos primeiros vírus de computadores (na década de 80) que todo problema relacionado a um comportamento anômalo do sistema é atribuído a vírus de computador. Porém, com o passar do tempo, estudiosos da área de segurança de rede perceberam a necessidade de distinguir os tipos de softwares maliciosos, em função de suas características técnicas, modus operandi, objetivos e formas de combatê-los. Vejamos a seguir um breve resumo sobre este tema:

Histórico
O primeiro malware da história é o vírus de computador. Nasce na forma de um trecho de código, geralmente em assembler, a ser injetado dentro de um programa aplicativo (.exe, .com, .bat, etc). Várias formas e variações surgiram, mas todas com o mesmo modus operandi: necessidade de um código hospedeiro para sobreviver e replicar.

Nessa mesma época já se discutia um segundo tipo de malware, o keylogger, um programa cujo modus operandi residia em escrita bash, voltado para capturar senhas e usuários de terminais Unix, e utilizado geralmente em universidades. Para disseminar, controlar e ocultar a presença dos keyloggers foi desenvolvido um terceiro tipo de malware, o rootkit. Um conjunto de scripts que tinham por finalidade: 1) invadir um alvo vulnerável, 2) adulterar os principais programas de monitoração do host a fim de tornar-se invisível, 3) excluir as entradas em logs do host que pudessem registrar sua presença, 4) instalar o keylooger.

O conceito destes tipos de malware só seriam portados para plataformas Windows por volta de 1996, quando do lançamento do Windows 95. O principal representante nesta época, para Windows, seria o BackOrifice, seguido do seu concorrente em ambiente gráfico: o NetBus.

Entretando, apesar do surgimento dos vírus e dos keyloogers, muito se discutiu em relação ao meio de propagação. Tanto o vírus quanto o keylogger eram programas que precisavam ser executados para terem seu payload (veneno) executado. Então nessa mesma época, começou o debate sobre os aplicativos trojans (Cavalos de Tróia). Os trojans seriam aplicativos válidos ou não, cuja principal finalidade seria de infectar um hospedeiro, no caso do conteúdo do trojan ser um vírus, ou instalar um logger, caso o conteúdo do trojan ser um keylogger. De fato, a maioria dos Trojans existentes nessa época consistiam de aplicativos válidos, como jogos, músicas ou websites, mas que traziam consigo um presente de grego atrelado. Nasce assim o terceiro tipo de malwares, os Trojan. Não como uma praga propriamente dita, mas como um meio de transporte para pragas diversas.

Por volta de 1988, um novo tipo de malware surge com expressa agressividade: o Worm (verme). O Worm é um aplicativo, que realiza uma busca por todos os computadores que estão em rede. Após localizar os hosts existentes, realiza um varredura por vulnerabilidades em programas específicos. Uma vez identificado um host vulnerável, o worm explora esta vulnerabilidade a fim de ganhar acesso irrestrito ao host. O host infectado passa então a realizar a ação do worm e continuar sua propagação via rede, infectando as demais máquinas vizinhas. O worm trás consigo duas implicações claras: 1) é um mecanismo de transporte via redes, pois abre espaço para um cavalo de tróia, 2) é um vírus inconsequênte, pois uma vez infectado um host, esse host irá tentar infectar seu progenitor novamente, causando exaustão de serviços da rede e do host.

As consequências indesejadas do Worm, em termos de exaustão da rede e do host, fizeram com que por volta de 1991, surgisse uma nova variação: o bot. O bot é uma variação inteligente do worm, porém, por apresentar um modus operandi diferente, é classificado como um malware específico. O bot além de abrir espaço pelas redes, comprometendo hosts vulneráveis, ele realiza uma busca inteligente excluindo os hosts já penetrados. Os hosts então infectados ficam a mercê de um controlador, ou seja, tornam-se zumbies aguardando a ordem de seu mestre. A principal diferença do bot para o worm é que um worm pode apresentar ciclos de infecções em rede, uma vez que não possui controle. Já os bots são temporários, pois uma vez que o mestre é exterminado, toda a rede zumbie perde relevância.

Em 1995, com a massificação do novo sistema operacional da microsoft, o Windows 95, diversos programadores começaram a corrida pela busca de vulnerabilidades. Nesta corrida, diversas formas de congelar (travar) o sistema foram descobertas na tentativa de localizar endereços na memória que permitissem o controle total de um host. Nasce o tipo de malware denominado Denied of Service (DoS). O DoS consistia em executar uma operação remota, contra um host, e como consequência o host ficaria congelado ao tentar responder a operação remota. O conceito de DoS porém é mais antigo que o fato histórico como malware. Originalmente, o DoS fora utilizado em contextos de segurança de rede, para silenciar uma determinada máquina, a fim de que um invasor de rede pudesse assumir a identidade daquele host mudo. Conceitos como DNS Spoofing, ARP Poising, ARP Spooing, Men-in-the-Middle Attack e ferramentas como a DSniff, tornaram o conceito de DoS mais conhecidos no mundo Unix/Linux, porém, este conceito aplicado contra plataformas da Microsoft, criaram uma série de programas específicos, cujas classificações é apresentada aqui como DoS.

Por volta do ano 2000, uma nova explosão de vírus, worms, trojans, loggers e DoS assolam a comunidade da Internet. Principalmente em função da massificação global da Internet. Nesse novo cenário de economias globalizadas, aldeias globais de conhecimento, telecomunicações populares e de longo alcance, nascem novas variações de malwares:

A primeira grande variação, e novo tipo de malware, após a virada do século foi o Spam. O Spam é uma variação do serviço de correio eletrônico, onde o objetivo é a proliferação de mensagens não solicitadas pelos usuários. Semelhante ao trojan, o spam se assemelha mais a um mecanismo de transporte do que infecção. O principal objetivo no uso dos spam, como forma de malware, é para a aplicação de golpes eletrônicos (fraudes online), transporte de trojans, vírus ou bots.

A segundo variação veio na forma do DDoS. Um DoS aplicado a rede. Aqui está uma mistura de bot e DoS, onde um controlador mestre, escravisa uma grande quantidade de zombies, que ao seu sinal irão desencadear um ataque cordenado e síncono contra um ou mais alvo específico.

Logo em seguida, ainda em meados do ano 2002, e com o emplacamento do e-commerce de forma global, os desenvolvedores de código malicioso criaram uma versão subversiva do mecanismo de registro das atividades dos consumidores, o ad-ware. O ad-ware, cuja principal finalidade era o registro de navegação do consumidor para facilitar a navegação entre páginas autenticadas e de perfil de consumo, foi transformada em uma versão espiã, denominada de Spyware. O Spyware possui o mesmo mecanismo técnico do ad-ware, porém se distancia por seu princípio ético. O Spyware coleta o histórico de navegação dos usuários, suas senhas, seus hábitos e encaminha, geralmente para um canal público de chat (IRC), os logs de acesso. Onde desenvolvedores maliciosos aguardam as informações para tirar proveitos para si.

Conclusão e Taxonomia
Ainda existe muito o que se discutir em relação a qual a classificação dos malwares, entretanto, em função dos registros históricos, das características técnicas (modus operandi) e das finalidades de cada tipo de código malicioso, aqui proponho a seguinte taxonomias para os malwares:

  1. Vírus de Computador
  2. Worms
  3. Keyloogers
  4. Rootkits
  5. Trojans
  6. Bots
  7. Spam
  8. DoS
  9. DDoS
  10. Spywares
Deixo um espaço agora para discutir a linha cronológica de surgimento das principais pragas. Qual o primeiro vírus? Qual o primeiro worm? Qual o primeiro logger? etc.