Vírus computacionais e
Vida Artificial
Pedro Eugenio, 30358
Vírus Computacionais
• O termo vírus computacional deriva e é de alguma forma análogo ao vírus biológico
• Infecções virais biológicas são propagadas através do vírus que injecta o seu conteúdo numa célula
• A célula infectada passa a ser uma fábrica replicadora de vírus
computacional/biológico
Vírus Computacionais
• Um vírus computacional não é mais que um segmento de código
• O vírus tem capacidade de se copiar para um ou mais hospedeiros quando activado
• Quando o hospedeiro infectado é executado o vírus é activado e o hospedeiro passa a ser uma fábrica replicadora de vírus
computacional/biológico
Vírus Computacionais
• Vírus computacionais são do mais aproximado ao conceito de vida artificial do que qualquer outra coisa criada pelo homem :
– São capazes de se reproduzirem
– São capazes de se esconderem dos seus predadores
– Têm capacidade de sobrevivência fora de cativeiro
computacional/biológico
Vírus Computacionais
– 1949: J.V. Neumann – “Theory and Organization of Complicated Automata”
– 1950: Bell Labs – “Core Wars”– 1970: Brunner’s “Shockwave Rider” and Ryan’s Adolescence of P-
1”– 1981: O Primeiro Vírus – Apple Computers, Texas A&M– 1983: Tese de Cohen’s – Mathematical Virus– 1986: Basit e Amjad – “Pakistan Brain”– 1988: Jerusalem– 1990: Primeiro Anti-Virus: Norton, Symantec– 1991: Vírus polimórficos– 1992: Aumento de 420% desde 1990!!!– 1995: Windows 95 e o vírus “Macro”– 1996: Vírus em código Java– Hoje: Mais de 50,000– Futuro…?
Evolução histórica
Vírus Computacionais
• O verdadeiro vírus tem duas componentes:• Propagação• Manipulação
• De modo a funcionar; o vírus tem de se adicionar a algum pedaço de código
• Uma forma de classificar estes vírus é a aproximação que o mesmo toma quando se adiciona a outro pedaço de código (cápsula, add-on ou intrusivo)
Estrutura e operação
Vírus Computacionais
• Vírus cápsula:– Forma uma cápsula em volta do código original, torna-se
o programa e o programa original torna-se uma sub-rotina do código viral
• boot virus• …etc…
Estrutura e operação
Vírus Computacionais
• Vírus add-on:– Adicionam o seu código ao código do hospedeiro. A sua
única indicação de presença é a de que o tamanho do hospedeiro original aumenta
• Quase todos os vírus são add-on
Estrutura e operação
Vírus Computacionais
• Vírus intrusivo:– Reescrevem parte, ou todo, do código do hospedeiro
original• Poucos vírus são deste tipo
Estrutura e operação
Vírus Computacionais
• A primeira geração (simples) :
– Estes vírus não faziam nada de extraordinário para além da replicação, alguns vírus de hoje ainda pertencem a esta geração
– Os estragos não vão para além de bugs ou incompatibilidades no software que antes não existiam
– Não são difíceis de descobrir, visto que nada fazem para se esconderem, de modo que um simples aumento num ficheiro, por exemplo, denuncia-o imediatamente
as cinco gerações
Vírus Computacionais
• A segunda geração (auto-reconhecimento) :
– Implementam uma espécie de assinatura que assinala o ficheiro ou sistema como infectado, ou seja, não acontecem infecções duplicadas de hosts, permitindo que o virus seja mais dificil de detectar
– A assinatura pode ser uma sequência de bytes em disco ou memória
– Ao mesmo tempo que a assinatura pode impedir a detecção instantânea do vírus, no reverso da medalha a assinatura por si só é uma indicação da presença do vírus, embora não tão aparentemente fácil de descobrir
as cinco gerações
Vírus Computacionais
• A terceira geração (furtivo) :
– A maior parte dos vírus pode ser identificada analisando padrões de dados próprios dos mesmos nos sistema de armazenamento secundários
– De modo a impedir a detecção alguns vírus usam técnicas furtivas de modo a não serem descobertos
– Como exemplo se numa análise a um disco o vírus detecta que existe uma chamada do sistema para ler uma porção do vírus, este retornaria não o vírus mas os dados que estariam presentes se o sistema estivesse livre de infecção
as cinco gerações
Vírus Computacionais
• A quarta geração (armadura) :
– À medida que antivírus saem para o mercado, autores de vírus voltaram-se para métodos de ofuscarem o seu código
– Estas técnicas de ‘armadura’ incluem:• Adicionar confusão e código desnecessário de modo a dificultar a
análise do código do vírus• Defesas que podem tomar a forma de ataques directos a software
de antivírus
– Estes vírus começam a aparecer por volta de 1990• Em 1990 sai para o mercado o primeiro antivírus da Norton
as cinco gerações
Vírus Computacionais
• A quinta geração (polimórficos) :
– A mais recente classe de vírus a aparecer são os polimórficos, capazes de se mutarem
– Infectam os seus hospedeiros com uma versão modificada ou cifrada deles próprios
– De modo a se poder detectar estes vírus é necessário um algoritmo mais complexo que seja capaz de reverter o processo de mutação de modo a poder detectar se o vírus está presente ou não
as cinco gerações
Vírus Computacionais
• Existem métodos semelhantes de propagação entre vírus computacionais e biológicos
• Existiu uma evolução significativa e adaptativa de vírus computacionais
• São o mais aproximado de vida artificial
• Mas serão de facto uma forma de vida artificial?
recapitulação
Vida Artificial• Espaço temporal:
– A vida é um padrão espaço temporal em vez de um objecto material especifico• Reprodução
– Ou a capacidade de auto-reprodução em si mesmo ou em outro organismo• Representação
– Armazenamento de informação de uma auto-representação• Metabolismo
– Um metabolismo que converte matéria/energia• Interacção
– Interacções funcionais com o ambiente• Interdependência
– Interdependência das partes• Estabilidade
– Estabilidade durante alterações de ambiente• Evolução
– A capacidade para evoluir• Expansão
– Ou crescimento
O que é vida?
Vida Artificial
• Existe, nos vírus computacionais, alguma semelhança neste ponto.
• Vírus são representados por via de padrões de instruções computacionais que existem através do tempo em diversos sistemas computacionais
• É no entanto questionável se existirão no espaço, a não ser que estendêssemos a noção de espaço para ciberespaço
Propriedade espaço temporal
Vida Artificial
• Uma das características chave dos vírus é a capacidade de auto-reprodução
• Contudo o agente da reprodução não é o código do vírus mas sim o sistema em que se envolve
• É questionável se isto pode ser considerado suficiente para propósitos de classificação de vida artificial
Capacidade de Reprodução
Vida Artificial
• Esta característica é obviamente igualada pelos vírus computacionais
• O código que define o vírus é um template usado pelo vírus para se replicar a si mesmo
Capacidade de representação
Vida Artificial
• Esta propriedade envolve tomar energia ou matéria do ambiente e usá-la para seu próprio beneficio
• Vírus computacionais usam a energia de computação do sistema de modo a executar
• Não convertem matéria, mas fazem uso de energia eléctrica presente no computador de modo a infectar outros programas, neste sentido poderão ter um metabolismo
Posse de metabolismo
Vida Artificial
• Os vírus computacionais obviamente alteram o ambiente de modo a este suportar a sua existência
• Efectuam verificações de memória, alteram interrupções, endereços, …
• A maior parte dos estragos em computadores resulta destas alterações do ambiente por parte dos vírus
Capacidade de interacção
Vida Artificial
• Organismos vivos não podem ser divididos arbitrariamente sem serem destruídos
• O mesmo acontece com vírus computacionais, se a um vírus se tirar parte do código provavelmente o mesmo iria deixar de funcionar correctamente
• Contudo é interessante de verificar que um vírus pode ser ‘reagrupado’ posteriormente e voltar a ganhar a sua funcionalidade, organismos vivos já não partilham desta funcionalidade, como tal vírus são mais como máquinas em vez de instâncias de coisas vivas
Capacidade de interdependência
Vida Artificial
• Curiosamente vírus computacionais detêm uma estabilidade e robustez que a maior parte de aplicações comerciais inveja
– São capazes de correr numa variedade de máquinas e sistemas operativos
– Muitos deles são capazes de comprometer (até destruir) mecanismos de antivírus
– Podem ajustar-se imediatamente a condições de pouco espaço em disco, erros, e outras excepções
– Alguns são capazes de correr nos mais diversos computadores pessoais, em qualquer sistema operativo, sobre qualquer configuração
Capacidade de estabilidade
Vida Artificial
• Aqui vírus computacionais diferem de organismos vivos, outra vez
• Vírus não são capazes de evolução, embora seja concebível, teoricamente, que um vírus extremamente complexo possa ser programado de modo a poder evoluir, contudo provavelmente seria maior do que o sistema operativo onde iria penetrar
Capacidade de evolução
Vida Artificial
• Vírus computacionais claramente exibem uma forma de crescimento no sentido de que existem mais num dado ambiente a através do tempo
• Alguns vírus afectarão todos os ficheiro num sistema apenas após algumas activações
Capacidade de expansão
Conclusão
Conclusão
• Primeiramente pode parecer que um vírus computacional é uma forma de vida artificial
• Contudo são encontradas deficiências quando confrontados com características que definem o que é vida
• Não é possível afirmar que estão “vivos” sem alterarmos a noção do que é a vida
Bibliografia
• Computer Viruses as Artificial Life– Eugene H. Spafford
• Computer Viruses, Artificial Life and The Origin Of Life– Robert C. Newman
• The Code of Life– Laura Janet