Paulo Laureano Estar vivo é uma condição precária com um péssimo prognóstico...

Anti-vírus


Introdução



Este artigo não é dirigido aos utilizadores individuais, aos que “pouco ou nada” percebem de tecnologia, aos que não fazem a mínima ideia de como os computadores funcionam, nem querem saber. É sim dirigido a profissionais de TI, hackers (i.e. pessoas que gostam de tecnologia e de perceber como as coisas funcionam) e aos utilizadores “mais interessados” em perceber como as coisas funcionam (mesmo que lhes faltem “as bases” para perceber “tudo&rdquoWinking.

Os conceitos expostos são muito simples de perceber. Não é preciso serem génios. Já aplicar no terreno as soluções e lidar com as ferramentas é outra conversa, e não é para todos. Se a maior parte das pessoas que profissionalmente trabalham em tecnologias de informação não percebem patavina de segurança, e não sabem lidar de forma minimamente airosa com os problemas, é completamente utópico pensar que o comum utilizador vai perceber alguma coisa. Restam os hackers (profissionais de TI ou os que estão a caminho disso) para perceber estes textos.

Ando a observar os vendedores de anti-virus (e afins) a tentarem colocar-se no mercado do Mac OS X. Todas as semanas aparecem noticias sobre “o ultimo potencial grande problema de segurança e troiano da moda”. Claro que os “suspeitos do costume” estão por trás de toda a histeria.

Os press releases são sempre algo do tipo:
http://www.theverge.com/2012/4/26/2976422/eugene-kaspersky-apple-security-behind-microsoft-10-years
http://ismashphone.com/2012/04/malware-is-indeed-abundant-on-mac-os.html

O resultado prático é aparecerem artigos destes em publicações e sites:
http://arstechnica.com/apple/2012/05/hands-on-with-five-antivirus-apps-for-the-mac/
http://lifehacker.com/5800267/the-non+alarmists-guide-to-mac-malware-protection
http://antivirus.about.com/od/antivirussoftwarereviews/tp/aamacvir.htm

O objectivo/agenda é vender assinaturas de anti-vírus, expandir o mercado ao OS X, e fazer o mesmo que fazem no windows… ehr… ou seja quase nada.

É uma industria de bilhões completamente idiota, feita para proteger pessoas de fantasmas (quase todos moderadamente inofensivos), da forma mais ineficiente possível, dado que a ideia não é “resolver nenhum problema ou causa da infecção”, mas sim perpetuar o licenciamento (i.e. venda) do “remédio”. De preferência os vírus são “chatos”, detectados e removidos às resmas, sempre com o utilizador a achar que ficou muito “protegido”, e que lhe prestaram um serviço bestial sem o qual a vida não é possível. Chegamos ao ridículo de haver “milhares de vírus que não fazem nada a não instalar-se, propagar-se, e ficar pacientemente à espera da remoção”. Temos outros que originalmente numa data distante “fariam qualquer coisa”, mas o mundo é salvo regularmente por estes paladinos da desinfecção digital.

A Microsoft alinhou no jogo (não me perguntem a motivação!), e até chateia o utilizador “acabado de comprar o produto deles” (i.e. Windows) para ir imediatamente às compras, dado que falta o anti-vírus, com mensagens do tipo “o seu computador está em risco”. A palhaçada chegou ao ponto de o vulgar utilizador do Windows achar que um “anti-vírus” é uma espécie de “extra” obrigatório. Porque é que isto acontece? Sigam o dinheiro..,



De volta ao básico (virus 101)



http://en.wikipedia.org/wiki/Computer_virus - É para ler ok?

Um vírus é um programa de computador que se propaga (i.e. se copia e instala), e como qualquer organismo equivalente fora do mundo informático, tem que ter uma estratégia de sobrevivência (evitar detecção e remoção). Os que se propagam de forma “pouco eficiente” dão mais tempo a que medidas de detecção existam e impeçam a dita propagação, os que tiverem más estratégias de sobrevivência estão mais expostos e consequentemente são mais susceptíveis de serem eliminados.

Vamos imaginar que o vírus faz algo que “dá nas vistas” (i.e. coloca em risco a sua estratégia de sobrevivência por ser detectado); formata o computador, faz efeitos visuais perceptíveis pelo utilizador, crasha o sistema torto e a direito, comunica para outros sistemas enviando informação. Tudo o que dá “nas vistas” coloca em causa a sobrevivência do próprio vírus. Tudo o que coloque essa sobrevivência em risco diminui a probabilidade de se multiplicar “mais vezes”.

O compromisso ideal para um vírus é portanto ser ultra-discreto e multiplicar-se de forma eficiente (durante tanto tempo quando possível).

O que os anti-virus tipicamente fazem é “monitorizar a rede” (i.e. firewall), que executáveis comunicam, para onde e em que ports. Fazem também a pesquisa “por assinaturas” (i.e. conjuntos de bytes) que permitam identificar um padrão previamente associado a um vírus (é essa a origem das “definições e actualizações” constantes das “bases de dados”, que correspondem ao serviço “assinado” pelos clientes, que devem ser utilizados perpetuamente), quer na comunicação, quer nos ficheiros em disco (i.e. daí os “scans” ao disco, para ver se encontram em ficheiros os ditos padrões).

Esta metodologia não faz qualquer sentido, é a pior abordagem possível para se segurar um sistema informático, serve apenas para perpetuar a venda assinaturas das bases de dados de padrões. Pelo menos enquanto houver “medo” do “bicho seguinte”. O problema começa pelo “funcionamento com base em padrões conhecidos”, que significa que um vírus tem que “chegar aos fornecedores de anti-vírus”, de forma a ser identificado o padrão e distribuída a solução. Ora, eu estranho “a velocidade” a que isso parece suceder (caramba, os vírus chegam lá muito depressa!), estranho a eficiência para determinar um padrão “único” que não se confunda com outros binários e comportamentos, e o facto desta abordagem “tão má” poder ser “tão eficiente” a maior parte do tempo.

Não lhes dá “jeitinho nenhum” que os clientes “com assinatura” sejam infectados, no entanto, e por uma espantosa coincidência constante e quase universal, a maior parte das pessoas com um anti-vírus parece nunca ser infectada ANTES dos vírus chegarem às empresas, serem estudados, e lançado os respectivos antídotos. E enquanto “nada se passa” os fabricantes de anti-vírus parecem estranhamente empenhados em informar o utilizador que as bases de dados foram actualizadas (i.e. está protegido contra mais uma montanha de germes). Alguns fazem aparecer popups, outros anunciam em alta voz, alguns fazem uns ruídos tipo sonar, lembrando os clientes que o guarda-costas está sempre presente. Quando termina a assinatura, claro, volta o Windows volta a queixar-se que o computador está em risco eminente e constante.

Estranhamente os vírus parecem estar, há vários anos, com um sério problema de reprodução… é que, para se reproduzirem precisam de sistemas informáticos com problemas de segurança por resolver. Precisam de ultrapassar os normais patches de segurança (actualizações) dos fabricantes dos sistemas operativos, dos autores dos programas, das ferramentas básicas de sistema (como os firewall que monitorizam a comunicação). As janelas de oportunidade para se propagarem são diminutas e relativamente raras. Quando uma se abre normalmente “dá nas vistas”, é conhecida e tudo quanto é “bichedo” tenta explorar esse canal. Algo que é progressivamente mais complicado (porque os vários sistemas operativos vão evoluindo, bem como as práticas de programação segura).

Para ser muito preciso e claro: sem bugs, defeitos de programação ou de engenharia dos sistemas informáticos, essas janelas de oportunidade não existem. Logo os vírus (e a sua multiplicação/reprodução) só existe em sistemas defeituosos. Corrigido o defeito o “vírus” pode “permanecer” no sistema infectado, mas deixa de se propagar “sozinho”.

Para lidar com esta limitação chata, passámos a ter “vírus” com uma “reprodução assistida”! Usam um “recurso ilimitado” para se espalharem: a estupidez humana. Usam o e-mail, com textos que levem as pessoas a aceder a sites remotos, ou a executar uma aplicação embebida na mensagem, que de alguma forma induza em erro o utilizador. Os anti-vírus lidam com isto, novamente, com a abordagem mais ineficiente possível (bases de dados de sites remotos, que podem estar em constante mutação, logo tornando “a lista” ineficaz com cada infecção) e padrões do executável (novamente provenientes de uma autópsia realizada pela empresa que vende o antídoto, que para isso precisa de receber o mail antes dos clientes).

Qual o papel dos anti-vírus? Bom, a mim parecem-me que partem de uma premissa fatal em termos de ineficiência: precisarem de ser analisados antes de descobrirem os padrões a detectar. Há algum efeito positivo? Há, ninguém é infectado pelas gripes dos anos anteriores, se continuarem a pagar a assinatura. Mas não seria preferível ter os computadores actualizados (i.e. destruir as vias de infecção em vez de “reconhecer” os germes)? Lidar com as limitações humanas de instalar e executar programas “estranhos” ao sistema? Limitando a capacidade de qualquer novo programa de interferir com executáveis e dados , processos de bootstraping e automatizando processos de preservação de dados entre acessos?

Para além das más abordagens “normais” (e ineficazes excepto contra problemas previamente conhecidos), depois temos a entrada no reino da completa fantasia, em que alguns produtos se dizem capazes de “detectar vírus futuros”, variando as abordagens entre o completamente imbecil e o totalmente utópico. Mas nem vou entrar em detalhes, bastando dizer o óbvio: no dia em funcionassem eram feitas as ultimas vendas do programa de anti-vírus… ah, sim, é mesmo isso que pretendem oferecer: a destruição do seu próprio mercado. Essas formulas mágicas não existem, e se existissem estavam nos sistemas operativos, destruindo instantaneamente toda a industria de “medicamentos informáticos e banha da cobra digital”.


Cavalos de troia, rootkits e outro malware.



Os nomes “pomposos” são simples de entender, mas devem estudar o que significam.

Cavalos de troia são a versão digital de um engodo que permita ultrapassar a “muralha” e atacar os inimigos a partir de dentro da fortaleza. A diferença para o vírus que manda o e-mail é a “passividade”, o falso programa não envia “coisa nenhuma”, é colocado na Internet e aguarda que o puxem e instalem, fornecendo o utilizador as “credenciais” necessárias ao sistema para ultrapassar a “muralha virtual”.

Um rootkit é um sistema que perpetua a existência de um programa escondido do sistema operativo, não permitindo às normais ferramentas disponíveis visualizar o que está instalado ou a ser executado. Nem todo o “malware” são “rootkits”, nem todos os “rootkits” são “malware”. O software malicioso pode nem estar particularmente escondido, e o rootkit pode ser apenas um sistema de manutenção “escondido pela equipa de TI de uma empresa” para o processo não ser “morto” ou “removida a aplicação” pelo utilizador.

A maior parte das aplicações de anti-vírus são muito parecidas com rootkits (para evitar que os vírus as removam ou anulem). Muito malware são plugins de browsers (para fazer tracking de utilizadores, apanhar passwords, etc), addons de sistema (drivers de teclados / keyloggers), de video, etc.


Impacto de ter aplicações estranhas no sistema



Eu escrevi há uns tempos um artigo sobre as possibilidades inerentes a ter um rootkit. Basicamente quem instala um rootkit faz o que quiser da máquina. Acrescento só que o Rookit pode correr na BIOS da máquina, no kernel do sistema operativo, e ser absolutamente impossível de detectar pelo sistema operativo. Pode no entanto ser detectado por um sistema externo, desde que se saiba o que devia estar na BIOS e no disco, e se possa comparar com o que lá está. Para os profissionais de IT: esta é a única forma de assegurar a segurança de uma máquina, saber se alguma coisa foi alterada, e ter a certeza que o sistema entregue corresponde ao que está actualmente a uso. Tudo o resto são fantasias e falsas ilusões de segurança, é lutar contra os problemas conhecidos, fechando os olhos a todos os que forem “novos” (ou feitos de propósito para um alvo especifico, como a sua empresa, e não para ataques genéricos e indiscriminados).

O seu portátil é inspeccionado pelo seu serviço de IT com que regularidade? Ah! Como nunca? É viver uma ilusão de segurança, perpetuada por pessoas mal treinadas e que precisam de apoio. A culpa disto é a irresponsabilidade em cadeia, as promessas vazias de muitas empresas “de segurança”, que parecem resistir a tudo menos… 10 minutos de investigação: http://blog.webroot.com/2011/09/13/mebromi-the-first-bios-rootkit-in-the-wild/ , http://www.computerworld.com/s/article/99843/RSA_Microsoft_on_rootkits_Be_afraid_be_very_afraid, etc.




Soluções reais em vez de doces ilusões



Neste ponto do texto, se ainda está na fase dos “anti-vírus”, desista de ler. Não vale a pena. Não percebeu nada do que escrevi. Isto não é para si.

Para os que continuarem a ler:

- Os sistemas precisam de monitorização externa. Investiguem o Tripwire e percebam que é fundamental ser capaz de detectar alterações em sistemas, em particular saber o que é “a normalidade” (i.e. que binários existem) para se poder detectar quando algo muda. A monitorização começa na BIOS e termina no mais recente documento editado pelo utilizador. Todos os sistemas operativos (isto não tem nada a ver com ser Windows, linux ou Mac) precisam de ser conhecidos. A regularidade das alterações define a velocidade a que é descoberta toda e qualquer modificação. É importante que existam pessoas na vossa organização (ou contratadas) para aferir dados caso sistemas sejam alterados. NÂO SE PROCURA POR PADRÕES CONHECIDOS DE VIRUS E MALWARE MAS SIM POR QUALQUER MODIFICAÇÃO AO QUE SABEMOS QUE DEVIA LÁ ESTAR.

- Os sistemas de firewall são absolutamente vitais (assegurado que correm em cima de um kernel e stack de tcp/ip saudável e não adulterado) para evitar qualquer comunicação por binários não explicitamente autorizados.

- O sistema operativo deve ser preservado num filesystem read only. Caso não saibam há discos com switch de hardware (read only / read write) que complementam uma BIOS e kernel saudáveis. As áreas de escrita devem ser limitadas (swap, directorias temporárias e áreas de utilizadores).

- Os binários que correm no sistema devem ser assinados digitalmente e sandboxed/chrooted ou correr em ambientes virtualizados e isolados. É toda a gente tão rápida a usar virtualização nos sistemas de backend e depois esquecem-se dela nos computadores que toda a gente usa. O impacto de qualquer vírus ou troiano em sistemas de chroot/sandbox/virtualizados é próximo de nulo. Se o sistema só corre binários assinados digitalmente é extremamente complicado de ultrapassar, mesmo com a tal “ilimitada disponibilidade humana” para fazer disparates.

- O sistema operativo deve assegurar versões de dados (i.e. todas, sempre que um ficheiro é modificado) e roolback de preferência sincronizada em servidores externos. Ainda não foi assimilado pela maior parte das empresa que deve existir uma clara separação entre dados e executáveis. Os dados devem ser dissociados de máquinas particulares e sincronizados para os servidores da empresa (pensem numa “Dropbox” privada, com encriptação forte, capaz de assegurar que em qualquer local onde o utilizador faça login estão os seus dados disponíveis).

- Os sistemas de DNS devem ser monitorizados e autenticados. Bloqueado todo o tráfego para outros servidores.

- Os sistemas de e-mail devem ser monitorizados e autenticados. Bloqueado todo o tráfego para outros servidores.

- As cadeias de certificação (de certificados digitais) devem estar em suportes read only.

- Os browsers não podem estar desactualizados (nem um update que seja: espreitem o chrome e a próxima versão do Firefox para descobrirem sistemas de auto-update automáticos).

- Os sistemas de backup devem ser automáticos, transparentes, e testados regularmente pelos utilizadores (o “time machine” do OS X ligado a uma “time capsule” é um bom exemplo para seguirem), podendo estes fazer “roolback” para qualquer versão de qualquer documento, aceder ao que foi apagado, etc. Estas funcionalidades estão disponíveis em sistema de cloud storage (e as empresas podem criar os seus ou utilizar sistemas “off the shelf&rdquoWinking.

A ignorância cura-se, os maus procedimentos mudam-se, mas para isso é absolutamente fundamental que liguem o cérebro e ponham a mão na consciência. Todos, de profissionais de TI a gestores. O pior erro que podem cometer é não pensarem sobre o que fazem e usam todos os dias. O sucesso dos programas de anti-vírus e respectivas assinaturas em empresas diz muito sobre a real dimensão do problema…

Quanto a particulares… bom, não vejo que se possa fazer alguma coisa, é tecnologia que não percebem, e é natural que estejam num beco sem saída. Antes com anti-vírus contra as maleitas “conhecidas” que sem eles (e nenhum outro tipo de segurança). Usem os gratuitos. Vai dar ao mesmo.


Para quem tem Windows (particulares)



- Usem o Open DNS.

- 99.9% dos vírus/troianos que podem “apanhar” seguindo links de e-mail, ou páginas na Internet, estão relacionados com software instalado no vosso computador que não está actualizado, esse é o principal problema (via de infecção), pelo que é a primeira prioridade a resolver. Instalem o “Secunia personal scanner” (http://secunia.com/vulnerability_scanning/personal/) que vos ajudará a perceber o que está no vosso computador desactualizado e representa uma vulnerabilidade.

- Mantenham o flash e Java desligados excepto para sites em que implicitamente confiam. No Chrome existe a funcionalidade equivalente nas preferências (liguem a dita cuja). Evitem usar o IE caso não tenham acesso à ultima versão disponível (visto que a Microsoft não permite usar a ultima versão em instalações antigas do Windows), recomendo que usem o Chrome (ou o Firefox, Safari, Opera, desde que tenham um plugin que permita desligar por defeito o Java e Flash excepto para os sites que autorizarem).

- Escolham e dominem um bom firewall (http://www.techsupportalert.com/best-free-firewall.htm). O importante é que vos permite escolher que aplicações comunicam com o exterior, por defeito bloqueie todas excepto as que autorizarem explicitamente, e percebam quando algo de “novo” e “anormal” está a tentar estabelecer ligações com o exterior ou a tentar contactar a vossa máquina.

- Façam backups tão regulares quanto possível (nas empresas isto é facilitado por boas práticas impostas por bons administradores de sistemas profissionais, os particulares precisam de as substituir com alguma disciplina pessoal).

- Ao contrário do Mac OS X (em que não existe um histórico de vírus: nenhum, zero, zilch, batatoides), no Windows é importante estarem protegidos contra infecções do passado (e para isso os anti-vírus com a sua abordagem completamente idiota até “servem&rdquoWinking. Utilizem um anti-vírus gratuito e sem interesses comerciais (i.e. que não tenha interesse em vos vender coisa nenhuma). Não recomendo que usem nenhuma ferramenta que tenha um “interesse implicito” em que comprem uma versão “paga” e para isso ofereçam uma “gratuita” com uma protecção de alguma forma reduzida! Recomendo o ClamWin (http://www.clamwin.com/).


Para quem tem Macs (particulares)



- Usem o OpenDNS.

- Mantenham o vosso Mac actualizado (especialmente o software da Adobe e Microsoft que usarem: estas duas companhias sozinhas são responsáveis pela esmagadora maioria de problemas de segurança do Mac OS X nos últimos anos).

- Mantenham o flash e Java desligados com um plugin (http://hoyois.github.com/safariextensions/clicktoplugin/). No Chrome existe a funcionalidade equivalente nas preferências (liguem a dita cuja).

- Compre e instalem o LitleSnitch (é um firewall com que muitos conseguirão lidar).

- Façam backups com o Time machine e assegurem-se que são tão regulares quanto possível.

- Se querem um anti-vírus (que não vos vai servir para nada, a menos que andem a piratear software, e mesmo nesse cenário é mais uma questão de timing da potencial “infecção” que qualquer outra coisa) usem o ClamXav. Que, repito uma ultima vez, não vos vai servir para nada.

O resto não é simples de explicar nem prático para particulares… a próxima versão do OS X (10.8 / mountain lion) suporta de raiz a opção de correrem apenas binários assinados digitalmente e em sandboxes, deve ajudar…

Os comportamentos de risco no Mac são relacionados com executarem ficheiros de origem “questionável” (piratarias, puxados de links que vos chegam em mensagens de e-mail, ou em “falsos sites&rdquoWinking. Se não o fizerem não vão apanhar malware nenhum.