Como funciona um Antivírus
Diretor comercial da Winco, empresa que representa o AVG no Brasil, relata como funcionam os métodos de detecção dos antivírus.
Como o software antivírus sabe que determinado arquivo é um vírus? Existem várias maneiras de determinar que um software é um arquivo malicioso, também conhecido como malware ou, mais popularmente, vírus (ou cavalos de troia, worm, diallers, jokers etc.); vamos começar pelo mais antigo dos métodos: a detecção por assinatura.
A detecção de vírus por assinatura usa um método muito simples de ser compreendido por leigos. Após receber uma cópia do arquivo e verificar o que ele faz no computador (suas ações, APIs que executam, processos que iniciam) e encontrar indícios, um laboratório de análise de vírus determina que aquele artefato é malicioso.
Então, o laboratório de vírus tira um hash do arquivo, uma identificação única do mesmo (como uma assinatura eletrônica) e adiciona esse hash à lista de definições da aplicação antivírus. Uma vez assinado, podemos alterar o nome do arquivo e sua extensão, mas o hash será sempre o mesmo. Um hash usando o MD5, por exemplo, tem a seguinte forma:
B1A8997C82880EC6BCE98F3E8A144E67.EXE
BA43AB1FE371AE1DE4E60676FB840458.EXE
BC960035FB37F8FC07C45036DC78B67F.EXE
BC960035FB37F8FC07C45036DC78B67F.COM
Note que o arquivo BC960035FB37F8FC07C45036DC78B67F tem várias extensões e a mesma assinatura MD5. Portanto, é o mesmo arquivo com várias extensões diferentes; apesar disso, para o antivírus não importa. Se for classificado como malware, será detectado independentemente da extensão, pois o que vale é a sua assinatura. Para efeitos didáticos, usei o MD5, mas ele não é eficiente para ser usado em um antivírus.
As empresas usam algoritmos próprios que aceleram a detecção de potenciais arquivos maliciosos. Além disso, é feita uma otimização do processo de varredura de arquivos; em milissegundos, o sistema de detecção deve comparar o hash dos arquivos em um diretório com milhões de assinaturas conhecidas. Algoritmos próprios evitam o mais terrível dos problemas: falsos positivos.
Quando uma empresa detecta "por engano" um arquivo válido, situações muito ruins podem acontecer. Imagine detectar o "explorer.exe" como vírus? O computador nem vai entrar em operação, devido à remoção do arquivo. Pense em um administrador de rede com 5.000 máquinas com o "explorer.exe" indo para a quarentena devido a um erro. Chega a ser mais problemático do que o vírus em si.
Há um método que simplesmente funciona bem e ocupa menos memória/processador que os outros métodos. Certa empresa tem uma parceria com diversos bancos brasileiros e são enviados, diariamente, cerca de 60 novos artefatos para detecção por assinatura nos laboratórios de vírus da AVG.
A AVG também tem um laboratório no Brasil, em parceria com o CTI-Cenpra de Campinas, onde dezenas de arquivos são analisados diariamente. Somente no Brasil, 60 artefatos são enviados para detecção por dia. Imagine quantos não são detectados aqui e no mundo?
Para isso, teríamos de fazer as análises heurísticas e análises de comportamento, a nova fronteira de análise de arquivos maliciosos - assuntos que serão tratados em artigos posteriores. Se há uma dica possível, ela é simples. Mantenha o antivírus atualizado e passe verificações regulares no disco de seu computador. Saiba que tem muita gente trabalhando para que você fique protegido, mas o trabalho nunca acabará.
Conta a lenda que a palavra "heurística" tem origem no grego; escrita originalmente como "Εὑρίσκω", seu significado é "descoberta", porém o vocábulo mais comumente usado nesse sentido é "eureka" (que tem a mesma origem etimológica).
Todos os antivírus comerciais têm sua máquina de detecção heurística, que pode ter maior ou menor importância dentro da aplicação; também conhecida com "heuristic engine", ela é a maior causadora de um velho e conhecido problema dos antivírus - deixa o PC novinho em folha, porém mais lerdo que uma carroça. Por que isso acontece?
Diferentemente da detecção por assinatura, que usa um hash único para um código malicioso conhecido, a Heurística compara assinaturas conhecidas usando dados genéricos sobre elas. Portanto, usando o exemplo do artigo anterior (parte 1), vamos pegar a assinaturas usando um hash MD5:
B1A8997C82880EC6BCE98F3E8A144E67.EXE -> Trojan
BA43AB1FE371AE1DE4E60676FB840458.EXE -> Worm
BA43AB1FE371AE1DE4E60676FB840460.EXE -> HEUR-Generic Worm
BC960035FB37F8FC07C45036DC78B67F.EXE -> Virus
BC960035FB37F8FC07C45036DC78B68D.EXE -> HEUR-Generic Virus
No exemplo acima, que é estritamente didático, tínhamos algumas assinaturas de vírus conhecidas e a detecção heurística detectou mais dois vírus "genéricos", sem assinatura encontrada, através da comparação com um código conhecido de vírus. Em alguns departamentos de marketing de empresas de antivírus, isso é chamado de "zero-day threats"; apesar no nome incomum, nada mais é do que a comparação entre elementos que já existem.
Estratégia muito eficaz, já que boa parte dos códigos maliciosos encontrados na Internet não são únicos e nem originais - e sim cópias de códigos feitos por especialistas, editados para mudar seu conteúdo e, consequentemente, gerando um novo hash para os vírus. Portanto, ao descobrir um malware, podem ser descobertos também muitos "irmãos" deles, sem nunca nem tê-los visto; somente comparando-os através da heurística computacional.
O que deixa o computador lento?
Se dá um baita trabalho comparar milhões de assinaturas conhecidas com os arquivos em seu computador em milissegundos, imagine comparar milhões de assinaturas e várias combinações delas de forma heurística em seu computador. Esse procedimento usará cada gigahertz de seu novo processador e cada espaço da memória do PC para fazer os caches e cálculos. E não para por aí...
Muitas vezes, você corre o risco de ter um arquivo com uma assinatura parecida com o vírus, mas que é um arquivo legítimo. Nesses casos, o dono do computador terá um bom trabalho para se certificar de que o computador não esteja realmente infectado, pois o antivírus vai acusar a todo o momento a presença do malware.
Como não bastasse isso, ainda existem os famosos worms polimórficos (polymorphic worms), que têm a particularidade de alterarem a si mesmos de forma autônoma (cada novo exemplar é uma nova cópia, com assinatura totalmente diferente); dão uma dor de cabeça danada às empresas que usam pouco as máquinas de heurística, mas são excelentes para as empresas que têm antivírus "pesadões", porque eles detectam melhor o tipo. Quem tem um antivírus leve, precisará vasculhar a Internet em busca do máximo de assinaturas possíveis, um verdadeiro "Deus nos acuda".
Para encerrar, uma frase de Economia que se aplica perfeitamente a softwares antivírus: "Não existe almoço grátis. Sempre alguém paga a conta."
-> Se você trabalha baseando-se somente em assinatura => Nunca vai detectar todos os vírus, porque é virtualmente impossível ter todo o conhecimento do mundo em seu produto.
-> Se você tem uma Heurística avançada => O computador ficará lento demais e, certamente, o usuário reclamará de você.
-> Se você tem 2 ou mais bases de assinaturas de vírus => Além de duplicar a possibilidade de falsos positivos, o computador tem de fazer o dobro dos cálculos para a mesma tarefa.
Então, qual a solução?
O mercado de antivírus é grande e tem mais de 50 grandes players, com equipes enormes tentando ajudar você a se proteger. Existem novas fronteiras e uma dela é baseada na detecção por comportamento, também conhecido como "behavior detection". É o que veremos na próxima matéria.
Softwares antivírus tiveram grandes avanços tecnológicos nos últimos 20 anos, desde que o os vírus começaram a se espalhar em uma "era" pré-Internet. Quem tem 15 anos ou mais de Informática deve lembrar que era uma correria danada para conseguir o disquete com o novo DAT do antivírus mais atualizado ou compartilhar um novo executável das grandes empresas de segurança contra malwares.
Sem dúvida, estávamos na "era do gelo" da proteção antivírus. Com o passar do tempo, além da verificação de arquivos (processo popularmente chamado de scan), outras ferramentas foram acrescentadas, como a proteção residente, proteção de e-mails, proteção on-line...
A última geração de produtos antivírus utiliza também uma proteção bastante interessante chamada "proteção por comportamento": no AVG, é chamado de AVG Identity Protection, nome criado para mostrar que o produto pode reconhecer malwares totalmente novos, sem nenhuma assinatura previamente conhecida.
Ou seja, além da detecção por assinatura e da detecção heurística, alguns produtos de última geração, como o AVG Internet Security 9.0, são capazes de detectar arquivos de vírus completamente novos e sem nenhuma correlação com a base de dados previamente conhecida. Como os novos antivírus fazem isso
É de conhecimento público o comportamento que boa parte dos vírus toma ao infectar uma máquina qualquer com o sistema operacional Windows. Os desenvolvedores de vírus, principalmente os de cavalos de troia e droppers, usam a mesma sequência de processos e chaves dentro do Windows para fazer a varredura de senhas, downloads, zumbis etc. Então, a detecção
por comportamento verifica a sequência de processos e determina se aquele processo monitorado é ou não um vírus.
Veja a imagem abaixo, que explica melhor o comportamento de um malware detectado por comportamento:
Para resumir (e dando um exemplo figurado das formas de detecção de vírus), imagine que você está está desconfiado de que uma pessoa é um ladrão de carros. Então:
* Se essa pessoa tiver ficha na polícia por furto/roubo de carros, certamente é um ladrão de carros. Isso é detecção por assinatura, pois, graças a um furto anterior, você deduziu e determinou que ele rouba carros;
* Se ela não tem ficha na polícia, mas existe um conhecido ladrão com o nome muito parecido e com o mesmo endereço e tipo físico, provavelmente eles são a mesma pessoa: detecção heurística. Suas características são tão parecidas que permitem determinar que ele é a mesma pessoa de quem você está desconfiado;
* Se não tem ficha na polícia nem nenhum indício que comprove que ele é um ladrão de carros, mas a pessoa comporta-se como tal, andando com chaves variadas, olhando seu carro com jeito estranho, sabe tudo de alarmes de carros e de como desativá-los: detecção por comportamento, por não termos assinatura (ficha) nem heurística (dados semelhantes), mas, devido seu comportamento, determinamos que ele é mesmo um ladrão de carros.
Desnecessário dizer que a detecção por comportamento pode dar muitos falsos positivos e que a possibilidade de detectar algo errado é bastante alta. Por isso, essa tecnologia não é usada pela maioria dos antivírus e somente empresas que sabem muito bem o que estão fazendo incluem essa tecnologia em seus produtos.
Que vários mitos sobre esta indústria definitivamente caiam e possamos ter o máximo de colaboradores possíveis para fazermos os melhores produtos para o mercado de segurança. É o que todos devemos esperar.