Como posso obter um vírus apenas visitando um site? [duplicado]

48

É de conhecimento geral que você pode obter um vírus apenas visitando um site. Mas como isso é possível?

Esses vírus atacam usuários do Windows, Mac e Linux ou os usuários de Mac / Linux estão imunes?

Eu entendo que, obviamente, posso obter um vírus baixando e executando um .exe no Windows, mas como posso obter um vírus apenas acessando um site?

Os vírus estão programados em JavaScript? (Isso faria sentido, pois é uma linguagem de programação que é executada localmente.) Em caso afirmativo, quais funções JavaScript são as mais usadas?

    
por Community 27.06.2011 / 20:01

8 respostas

24

It is common knowledge that you can get a virus just by visiting a website. Can anybody explain how this is possible ?

Exemplos em parênteses. Há um bug no navegador (IE), no interpretador de javascript ou em um plug-in (como flash ou java). Esse bug leva à execução de código - essa parte pode ser muito complicada, mas geralmente envolve um bug de uso após a liberação livre e manipulação de heap .

Então eu tenho alguns shellcode em execução. O shellcode deve escapar de todas as proteções que o navegador tiver - para um bug V8 / Chrome, você teria que escapar da sandbox do Chrome e derrotar o DEP e o ASLR. Para o IE, você teria que vencer o DEP e o ASLR e então sair do modo de baixa integridade. Para Java você teria que ... não fazer nada - você é todo de ouro. (É por isso que tem havido uma série de bugs java.)

Então, agora que tenho código arbitrário em execução na sua máquina, como você (você não está executando como administrador, certo?), posso baixar um arquivo da Internet e executá-lo, soltando algum malware no seu computador. máquina.

Are the viruses programmed in JavaScript ? (It would make sense since it is a programming language that runs locally.) If so, what JavaScript functions are the ones commonly used ?

Especificamente - não. Javascript é um vetor de ataque que as pessoas usarão para encontrar um bug em um navegador. Eles também podem usar Flash, Java ou Silverlight como um vetor de ataque. No caso do javascript, eles escrevem javascript para acionar o bug do navegador e, em seguida, o vírus é eventualmente retirado da internet.

    
por 27.06.2011 / 20:09
14

Infelizmente e de forma perversa, há várias maneiras de acontecer isso.

Você está absolutamente certo em ficar surpreso que um "dispositivo de leitura", como um navegador, possa manipular ativamente o seu próprio sistema (e causar danos). Ler um livro não esvazia sua conta bancária e abrir um jornal não prejudica seus filhos, então por que abrir um site faz tudo isso e muito mais?

O problema ocorre sempre que existe a possibilidade de que dados estrangeiros da Internet, que devemos sempre pressupor serem criados com a máxima intenção maliciosa, de alguma forma consigam ser executados pelo seu sistema.

Se você apenas sentar na linha de comando e digitar wget http://evil.com/hitme.php , o cliente HTTP wget simplesmente gravará um despejo binário da solicitação em seu disco e nada de ruim aconteceu (exceto talvez o preenchimento de seu disco). Mas se você digitar o endereço no seu navegador, o seu navegador é livre para fazer o que quiser - formatar o seu disco rígido, enviar detalhes do seu cartão de crédito, etc. Cabe a você confie em seu navegador para não fazer isso. A maioria dos navegadores realmente tenta não fazer essas coisas ruins, mas nós, os carneiros , exigimos que os navegadores façam cada vez mais "truques inteligentes" e exibam um comportamento automático baseado nas instruções do internet . Nossas demandas levaram à criação de tecnologias de execução de código do lado do cliente, como JavaScript e Flash, que fazem o download de código arbitrário, estrangeiro, não confiável, malicioso e o executam, tudo para nosso prazer.

A razão pela qual as pessoas que inventaram essas tecnologias não foram linchadas imediatamente é porque a) fez coelhos dançarem em nossas telas, eb) eles alegaram que eles colocaram verificações de segurança suficientes no projeto para prevenir os erros maliciosos arbitrários. código de manipular o sistema local (por exemplo, não permitindo ler / gravar os discos locais, ler / escrever na área de transferência, ler / escrever campos de formulário em outras abas).

Infelizmente, a abordagem de design para "primeiro permitir tudo e então encobrir alguns pontos ruins que podemos imaginar" é fundamentalmente falha, e agora estamos diante de um fluxo interminável de novas maneiras em que o nosso lado do cliente recursos de conveniência podem ser usados para comprometer nossos sistemas.

A única saída moderadamente segura é desativar JavaScript e plug-ins em seu navegador. Seguro como estávamos em 1995.

    
por 27.06.2011 / 20:28
11

O ponto que realmente tem sido esquecido nessas respostas, que eu realmente quero superar, é: a razão pela qual você pode pegar um vírus em uma página da Web é que algum software que você está executando tem um bug - vulnerabilidade de segurança .

Em cada etapa do processo de criação do software, os criadores do Flash; do seu navegador; do seu sistema operacional tentaram garantir que códigos aleatórios e maliciosos da Internet não pudessem apenas descobrir uma maneira de se executar. Infelizmente, isso é difícil . Realmente difícil .

Assim, como todos os humanos, os desenvolvedores deste software estão propensos a cometer erros: o analisador de HTML acidentalmente substitui um byte na pilha quando você finaliza o HTML com </p . Eles acidentalmente usou signed int em vez de unsigned int . O compilador JIT do javascript acidentalmente tenta desreferenciar um índice de matriz em um ponteiro nulo. Todas essas vulnerabilidades, mais milhões, ocorrem o tempo todo no software, seja por falta de conhecimento de segurança, ou por um descuido, ou mesmo por um simples erro. O software é simplesmente caminho muito complexo para capturar todos eles.

Por causa disso, os sistemas operacionais têm mecanismos integrados para evitar danos ao sistema, mesmo quando uma vulnerabilidade é encontrada. Seu sistema operacional provavelmente tem DEP e ASLR . Os programas podem ter várias proteções adicionadas pelo compilador. Os navegadores são executados em privilégios mais baixos. Os programas são executados através da análise automática e teste que pode pegar muitas dessas vulnerabilidades.

Meu ponto é, ninguém está deixando isso acontecer - mas é impossível criar um software completamente seguro, assim como é impossível projetar um cofre completamente seguro. Alguém com tempo, conhecimento, dinheiro e incentivo suficientes sempre encontrará uma maneira de se abrir. E o problema com este seguro é que, uma vez que algum hacker abra sua cópia, eles podem facilmente abrir outras cópias ao redor do mundo sem sair do quarto.

    
por 28.06.2011 / 00:41
8

Suas perguntas específicas

I understand that I obviously can get a virus by downloading and executing a .exe in Windows but how can I get a virus just by accessing a website ?

Seu navegador está executando código o tempo todo (é feito de código). Quando ele faz downloads de páginas da web, esse código está baixando e exibindo dados arbitrários (pixels, caracteres, etc.).

O código também é dado (no nível do processador).

Como o código é dado, se o seu navegador tentar executar os dados (independentemente da extensão ou formato do arquivo), ele poderá ser executado (se for criado corretamente).

Normalmente, o seu navegador não será tão tolo a ponto de tentar executar dados aleatórios baixados. No entanto, isso pode acontecer.

Uma maneira de fazer isso é formar os dados de tal maneira que, quando lidos, eles "vazarão" e sobrescrevam os dados que compõem o programa executável do navegador. Isso requer que o navegador tenha um bug (mais comumente neste caso, permitindo um excesso de buffer ).

Seu navegador também executa programas em cima de páginas da web. Javascript, como você mencionou, é um desses tipos de código. Mas existem dezenas. ActiveX, Flash, add-ons, scripts grease monkey, etc., são todos códigos que você está executando enquanto visita páginas web. Este código pode conter erros que causam calções de segurança.

Do these viruses attack both Windows, Mac and Linux users or are Mac/Linux users immune ?

Nenhuma plataforma que usamos é completamente imune a bugs, porque todos eles estão usando processadores que tratam dados como código. É assim que funciona a nossa arquitetura de computadores existente.

A razão para este mito é que Mac e Linux têm taxas de adoção muito menores em comparação com as máquinas Windows (no nível de desktop). Portanto, o software de desktop nessas máquinas não é um alvo tão comum para os criadores de vírus.

Os vírus não ocorrem por mágica, ou pela evolução da situação (como fazem os vírus biológicos). É um software escrito por indivíduos ou equipes de desenvolvedores. E eles querem atingir a maior fatia de mercado, da mesma forma que os fornecedores regulares de software.

Quanto a se um vírus pode ter várias plataformas; Todos os navegadores estão executando códigos diferentes, então terão diferentes bugs (até mesmo o mesmo navegador em diferentes plataformas). Mas existem algumas bibliotecas de código que são compartilhadas entre plataformas. Se essa biblioteca contiver o bug, é possível que a exploração possa existir em várias plataformas.

Mas, dependendo do tipo de ataque feito, um vírus criado para um Mac não-Intel pode não funcionar em um Mac Intel, e vice-versa, porque eles têm processadores diferentes. Para processadores diferentes, os dados que representam o código têm um formato diferente.

Quando você está falando de uma máquina virtual ou linguagem de script, os ataques podem ser independentes da plataforma. Isso nos leva à próxima pergunta ...

Are the viruses programmed in JavaScript?

Alguns vírus são. As informações que mencionei acima (sobre explorações de buffer overrun) normalmente seriam usadas como um ataque fora do Javascript, mas poderiam se aplicar igualmente a um vírus criado para atacar uma exploração em um interpretador de Javascript.

O Javascript também terá seu próprio conjunto de explorações, em um nível operacional que está acima do buffer overruns. Há toda uma série de maneiras de atacar qualquer parte do software. Quanto maior o software (linhas de código), mais variedades de entrada do usuário (nesse caso, tipos de código) é provável que recebam e mais erros podem conter.

Além disso, quanto mais exposto um software em execução (por exemplo, software executando um servidor), mais vulnerável é o ataque.

Em geral, isso é chamado Attack Surface

Explorações em geral

A Microsoft tem um mnemônico para os tipos comuns de exploits, e todos eles têm suas próprias propriedades interessantes e diferentes níveis de software que podem atacar - STRIDE , que significa:

Spoofing (of user identity)
Tampering
Repudiation
Information disclosure (privacy breach or Data leak)
Denial of Service (D.o.S.)
Elevation of privilege

Alguns deles são mais propensos a serem usados em um ataque baseado em Javascript do que outros, alguns em servidores, alguns em arquivos de dados (como imagens).

Mas a segurança é um campo grande e em evolução. Existe muita informação para responder completamente a todas as suas perguntas.

    
por 27.06.2011 / 20:10
7

O termo é chamado de "Drive By Download"

Aqui está um bom exemplo de como isso acontece sem você fazer nada além de visitar um site.

Schneider said that the company's team of researchers discovered a piece of JavaScript on the page that was injecting an iframe that pointed to a malicious site. Closer inspection revealed that it was using a previously unknown (0 day) exploit of IE capable of crashing a fully patched version of that browser and executing malicious code. The 0-day was short lived though, as Microsoft soon released details on the vulnerability.

Further analysis of the shellcode revealed a clear-text URL pointing to a known malicious server, which was stored in M86’s repository as having exploited the well-known iepeers.dll vulnerability, MS10-018.

    
por 27.06.2011 / 22:43
3

O truque é que os criadores de vírus / especialistas em segurança encontram brechas nos navegadores. Em palavras simples, eles encontram um buraco na segurança do navegador e eles são capazes de usar esse buraco para fazer algo em seu sistema. Há casos em que o Adobe Flash tinha buracos e com código específico poderia ser explorado. Há também strings javascript que podem acionar essas falhas de segurança.

No entanto, se você mantiver seu navegador atualizado, é muito improvável que você seja infectado apenas visitando um site (baixar arquivos e executá-los é outra história!)

    
por 27.06.2011 / 20:05
2

Vírus como aqueles que o infectam, visitando um site, exploram uma falha no sistema visitante. Por exemplo, um navegador ou plug-in pode ter uma falha em sua programação para que uma imagem possa ser permitida (acidentalmente, do ponto de vista do desenvolvedor do navegador) para executar um comando arbitrário no computador visitante.

Como tal, supostamente todo sistema operacional é uma vítima em potencial, mas os criadores de vírus costumam enquadrar seus ataques com base em economias de escala - quanto mais usuários, melhor. É por isso que o Windows e o Internet Explorer são mais frequentemente segmentados.

Qualquer parte de um navegador ou plug-in pode ser segmentada por um vírus. A imagem acima mencionada, que causou um vírus, foi um exemplo real. O Flash é um alvo comum. O mecanismo JavaScript nos navegadores também é. Há muitas coisas diferentes que podem dar errado.

Sua melhor aposta é executar um scanner de vírus de qualidade. Eu usei NOD32 por Eset . Além disso, não clique em algo se for bom demais para ser verdade. Use o NoScript no Firefox, e Bloqueio de anúncios .

    
por 27.06.2011 / 20:14
1

Do these viruses attack Windows, Mac and Linux users, or are Mac/Linux users immune?

Se um site conseguir violar a segurança do seu navegador, ele poderá interferir com qualquer coisa que pertença a você no computador. No entanto, se ele puder escalonar seus privilégios e obter acesso administrativo, ele poderá interferir com qualquer coisa no sistema.

Há muito se afirma que é mais difícil obter privilégios administrativos em uma máquina Unix (por exemplo, Linux, Mac ou BSD) do que no Windows. No entanto, o recente (como o do Windows Vista) reformular os recursos de segurança da Microsoft pode ter tornado o Windows muito mais seguro do que antes - ou, pelo menos, é isso que eles acreditam que você acredita.

    
por 28.06.2011 / 01:53