Como os antivírus funcionam?

54

Então, eu estava pensando em vírus recentemente e me perguntando como exatamente os antivírus se mantêm. Considerando que qualquer um que estivesse codificando por algumas semanas poderia hackear algo que faz coisas desagradáveis ​​e desagradáveis ​​ao PC de alguém, a quantidade por si só tornaria proibida uma lista simples de hashes, então como os antivírus fazem isso? Eles monitoram a atividade do processo e têm uma regra de três advertências para realizar ações semelhantes a vírus? E se sim, o que está impedindo que ele acione coisas perfeitamente inofensivas (como eu movendo arquivos no \ system32)?

Eu pesquisei um pouco no Google, mas os lugares regulares não ajudaram particularmente, e não consegui encontrar um idiota aqui, então pensei que seria bom perguntar :)

Phoshi
fonte
4
@ joe não há necessidade de adicionar uma tag do windows. Um antivírus funciona da mesma maneira em qualquer sistema operacional. Além disso, a maneira como um AV funciona não é subjetiva.
alex
ah Desculpe, eu estava pensando que isso pode ser no Windows e subjetivo. Eu entendo isso
joe
6
Eles vêm pré-instalados quando você compra um laptop e fica gemendo por 60 dias que deve se registrar / pagar por eles, até finalmente tirá-los do seu sistema. Geralmente, as caixas de diálogo são modais e superiores, para que possam efetivamente impedir você de fazer qualquer outra coisa e nunca oferecem uma maneira fácil de desinstalar.
21411 Daniel Daranas
colidir o +1 para uma pergunta muito agradável
dag729
As heurísticas de antivírus são sofisticadas, mas não conseguem detectar novas ameaças (ou variantes inteligentes de ameaças existentes). As heurísticas geralmente produzem falsos positivos em software / código completamente benigno. O software AV é útil, mas geralmente é uma muleta, dando aos usuários uma falsa sensação de segurança. Testei muitos vírus conhecidos em ( virustotal.com/en ) e os principais nomes como Symantec, McAfee e AVG não detectam nada (embora o Kaspersky geralmente faça bem). Melhor é conhecer o seu sistema, assistir o que você faz ... e ter um backup!
precisa saber é

Respostas:

17

Este artigo de 2002 fala sobre a criação de um mecanismo antivírus.

O artigo descreverá as idéias básicas, conceitos, componentes e abordagens envolvidas no desenvolvimento de um programa antivírus do zero, do ponto de vista de um desenvolvedor / engenheiro de software. Ele se concentrará nos principais elementos de um mecanismo antivírus (doravante denominado mecanismo AV) e excluirá aspectos como interfaces gráficas do usuário, monitores em tempo real, drivers de sistema de arquivos e plug-ins para determinados aplicativos como Microsoft Exchange ou Microsoft Office. Embora os mecanismos AV executando / varrendo para plataformas únicas (como Palm OS ou EPOC / Symbian OS) possam ser projetados da mesma maneira, este artigo se concentrará no design de mecanismos de varredura de várias plataformas, que são muito mais complexos.

Há também um artigo sobre técnicas heurísticas para detectar infecções. Também é uma leitura interessante.

alex
fonte
+1 para esse artigo sobre heurística - muito interessante :)
Phoshi #
Esse é o que realmente vale a pena ler. A parte heurística é :) essencial
alex
Eu tenho um respeito recém-encontrado por antivírus depois de ler isso, coisas bem inteligentes!
Phoshi
São aplicativos incrivelmente complexos. Infelizmente, eles os transformaram em algo que muitas pessoas, inclusive eu, detestam. Interfaces personalizadas, desleixadas e não intuitivas, recursos abordados apenas para adicionar outro marcador à lista de recursos, o inchaço. Isso é coisa que os transformou em pesadelos. As coisas estão mudando; o melhor exemplo de uma boa solução AV é o MSE.
alex
Foram as coisas heurísticas que deram gorjeta, desculpe joe: P Boa resposta, independentemente :) :) @alex; Infelizmente, eu tenho que concordar, mas entender as complexidades abaixo me faz simpatizar mais. É uma coisa complexa e não faria sentido o bastante para atrair um cliente em potencial, como "GUI de cores personalizável!" pode :(
Phoshi
13

Há cerca de um ano, participei de uma palestra de Mikko Hyyppönen, um dos principais pesquisadores da F-Secure. Ele mostrou sua rede de testes automatizados, onde eles criam máquinas virtuais para cada amostra enviada a eles, analisam sua estrutura, permitem executar, registram tudo o que fazem, fazem referência cruzada com amostras anteriores e geram um resumo para um humano verificar posteriormente. Se o humano concluir que é um vírus, o sistema gera automaticamente a assinatura de detecção e envia uma atualização aos clientes. Imagino que outros fornecedores também tenham sistemas semelhantes para manter seus bancos de dados de assinaturas atualizados.

Hirvox
fonte
4

De Como funciona o software antivírus? (AntivirusWorld):

Um programa antivírus é um programa de computador que pode ser usado para verificar arquivos para identificar e eliminar vírus de computador e outro software malicioso (malware).

O software antivírus geralmente usa duas técnicas diferentes para fazer isso:

  • Examinando arquivos para procurar vírus conhecidos por meio de um dicionário de vírus Identificando comportamentos suspeitos em qualquer programa de computador que possa indicar infecção
  • A maioria dos softwares antivírus comerciais usa essas duas abordagens, com ênfase na abordagem de dicionário de vírus.

Abordagem de dicionário de vírus Na abordagem de dicionário de vírus, quando o software antivírus examina um arquivo, refere-se a um dicionário de vírus conhecidos que foram identificados pelo autor do software antivírus. Se um trecho de código no arquivo corresponder a qualquer vírus identificado no dicionário, o software antivírus poderá excluir o arquivo, colocá-lo em quarentena para que o arquivo fique inacessível a outros programas e seu vírus não possa se espalhar ou tente para reparar o arquivo removendo o próprio vírus do arquivo.

Para ter sucesso a médio e longo prazo, a abordagem do dicionário de vírus requer downloads online periódicos de entradas atualizadas do dicionário de vírus. À medida que novos vírus são identificados "in natura", os usuários de espírito cívico e tecnicamente inclinados podem enviar seus arquivos infectados aos autores do software antivírus, que depois incluem informações sobre os novos vírus em seus dicionários.

O software antivírus baseado em dicionário normalmente examina os arquivos quando o sistema operacional do computador os cria, abre e fecha; e quando os arquivos forem enviados por email. Dessa maneira, um vírus conhecido pode ser detectado imediatamente após o recebimento. O software também pode ser programado para examinar todos os arquivos no disco rígido do usuário regularmente.

Embora a abordagem do dicionário seja considerada eficaz, os autores de vírus tentaram ficar um passo à frente desse software escrevendo "vírus polimórficos", que criptografam partes de si mesmos ou se modificam como método de disfarce, para não coincidir com a assinatura do vírus. no dicionário.

Abordagem de comportamento suspeito A abordagem de comportamento suspeito, por outro lado, não tenta identificar vírus conhecidos, mas monitora o comportamento de todos os programas. Se um programa tentar gravar dados em um programa executável, por exemplo, isso será sinalizado como comportamento suspeito e o usuário será alertado sobre isso, e perguntado o que fazer.

Ao contrário da abordagem de dicionário, a abordagem de comportamento suspeito fornece proteção contra vírus novos que ainda não existem em nenhum dicionário de vírus. No entanto, também soa um grande número de falsos positivos, e os usuários provavelmente ficam dessensibilizados com todos os avisos. Se o usuário clicar em "Aceitar" em cada aviso, o software antivírus é obviamente inútil para esse usuário. Esse problema foi especialmente agravado nos últimos sete anos, pois muitos outros designs de programas não maliciosos optaram por modificar outros .exes sem considerar esse problema de falso positivo. Assim, a maioria dos softwares antivírus modernos usa essa técnica cada vez menos.

Outras maneiras de detectar vírus Alguns softwares antivírus tentarão emular o início do código de cada novo executável que está sendo executado antes de transferir o controle para o executável. Se o programa parece estar usando código auto-modificável ou aparece como um vírus (ele imediatamente tenta encontrar outros executáveis), pode-se supor que o executável foi infectado por um vírus. No entanto, esse método resulta em muitos falsos positivos.

Ainda outro método de detecção está usando uma sandbox. Uma caixa de areia emula o sistema operacional e executa o executável nesta simulação. Após o término do programa, a sandbox analisa as alterações que podem indicar um vírus. Devido a problemas de desempenho, esse tipo de detecção normalmente é realizado apenas durante verificações sob demanda.

Questões de preocupação

Os vírus de macro, sem dúvida os vírus de computador mais destrutivos e difundidos, poderiam ser evitados de maneira mais barata e eficaz e sem a necessidade de todos os usuários comprarem software antivírus, se a Microsoft corrigisse falhas de segurança no Microsoft Outlook e no Microsoft Office relacionadas ao execução de código baixado e capacidade das macros de documentos de espalhar e causar estragos.

A educação do usuário é tão importante quanto o software antivírus; simplesmente treinar os usuários em práticas seguras de computação, como não baixar e executar programas desconhecidos da Internet, retardaria a propagação de vírus, sem a necessidade de software antivírus.

Os usuários de computador nem sempre devem executar com acesso de administrador à sua própria máquina. Se eles simplesmente rodassem no modo de usuário, alguns tipos de vírus não seriam capazes de se espalhar.

A abordagem de dicionário para detectar vírus geralmente é insuficiente devido à criação contínua de novos vírus, mas a abordagem de comportamento suspeito é ineficaz devido ao problema de falso positivo; portanto, o entendimento atual do software antivírus nunca conquistará vírus de computador.

Existem vários métodos para criptografar e compactar software malicioso que tornarão até vírus conhecidos indetectáveis ​​para software antivírus. A detecção desses vírus "camuflados" requer um poderoso mecanismo de descompactação, que pode descriptografar os arquivos antes de examiná-los. Infelizmente, muitos programas antivírus populares não possuem isso e, portanto, geralmente não conseguem detectar vírus criptografados.

As empresas que vendem software antivírus parecem ter um incentivo financeiro para a criação e disseminação de vírus, e para o público entrar em pânico com a ameaça.

(Gosto deste artigo e apenas copio e colo do AntivirusWorld.)

Joe
fonte
Obrigado :) Pela abordagem do dicionário, isso significa que se eu copiasse o código de um vírus conhecido e o colocasse no meu aplicativo, ele seria detectado, mas se eu escrevesse algo semelhante, teria que esperar pelo comportamento suspeito? (Hipoteticamente, é claro)
Phoshi 20/10/2009
SIM .. será.
joe
Isso faz sentido, se você não consegue parar de vírus que está sendo feito, em seguida, parar o código existente é bom bastante (e dada uma quantidade infinita de tempo, iria parar todos os vírus possíveis - não é ruim: P)
Phoshi
Isso é o que é uma assinatura. Parte do código malicioso da máquina comum a mais de um vírus.
alex
Se o AV comparar um arquivo com um dicionário de, digamos, 10.000 vírus conhecidos, por que é RÁPIDO? Como é que cada arquivo leva milissegundos para fazer a varredura ..
LantisGaius
3

Phoshi, sua pergunta é muito interessante, mas eu sugiro que você comece sua busca com outra. Aconselho isso porque as respostas para a pergunta que você fez podem enganá-lo.

Eu sugiro que você comece pensando sobre o que você considera um vírus, qual é a sua definição.

Os criadores de vírus de elite são pesquisadores de segurança, não crianças de script. Sua definição de vírus é: "um vírus é um pedaço de código que pode se multiplicar". É isso aí. Como você pode ver, não há recursos destrutivos mencionados aqui. Todos os vírus são obrigatórios - eles são FUD que você obtém de fabricantes de antivírus proprietários para que eles possam vender seus softwares.

IMHO é prudente tratar os vírus como parte de todo o ecossistema de software, não como "alienígenas" malignos externos.

nerd
fonte
Bem, eu perguntar como AVs trabalho, então eu acho que as respostas ... resposta que muito bem, mas você faz um ponto muito bom, é algo para se pensar :)
Phoshi
Assistir a dois antivírus no mesmo computador tentando matar um ao outro também é hilário. Sinta-se livre para perguntar por que eles fazem isso :-)
nerd
1

Uma maneira muito importante de ver os vírus é o contrário. Como os vírus comprometem os sistemas. Isso geralmente ocorre através de vulnerabilidades de software. O software antivírus está ciente dessas vulnerabilidades e procura por software que as influencie. De qualquer maneira, os vírus sempre fazem algo. Portanto, eles precisam de um processo de trabalho para fazer o que fazem de melhor. Às vezes, isso existe em um já existente, às vezes eles se criam.

No entanto, a maioria dos vírus funciona de maneira semelhante, facilitando a distinção entre um scanner de vírus. Existem muitos vírus diferentes usando a mesma vulnerabilidade!

http://en.wikipedia.org/wiki/List_of_computer_viruses

Cova
fonte