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


47

Possível duplicata:
Um computador pode ser infectado por malware através do navegador da web?

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

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

Entendo que obviamente obtenho 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? (Faria sentido, pois é uma linguagem de programação executada localmente.) Se sim, quais funções JavaScript são as mais usadas?


2
Geralmente, é uma combinação de várias técnicas e vazamentos de segurança dos navegadores.
Paŭlo Ebermann

Boa pergunta, e IMHO, como é web, depende de HTTP e não é mais afetado pelo sistema operacional, o navegador importa mais que o sistema operacional.
precisa

Tópico muito amplo, as vulnerabilidades do navegador podem mudar à medida que são descobertas e variam de navegador para navegador.
Moab


@ LordCover: embora as táticas iniciais de medo possam ser http, a carga útil deve ser um executável direcionado a sistemas específicos, a fim de superar um simples aborrecimento e se tornar um verdadeiro vírus. Como o Linux e o Mac não podem executar exe (sem ajuda, de qualquer maneira) e o Win não pode executar executáveis ​​escritos para os outros sistemas operacionais, ele ainda é um sistema dependente do sistema operacional. Recentes hack-fests mostraram que o Win7 é comparável ao (e de certa forma, melhor que) Mac e Linux em relação à segurança. Atualmente, ainda é o fato de a maioria das pessoas executar o Windows que o torna um alvo popular.
music2myear

Respostas:


24

É do conhecimento geral que você pode obter um vírus apenas visitando um site. Alguém pode explicar como isso é possível?

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

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

Então agora que eu tenho código arbitrário em execução em sua máquina, como você (você não está executando como administrador, certo?), Posso baixar um arquivo da Internet e executá-lo, eliminando alguns malwares em sua máquina.

Os vírus estão programados em JavaScript? (Faria sentido, pois é uma linguagem de programação executada localmente.) Se sim, quais funções JavaScript são as mais usadas?

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 é finalmente retirado da Internet.


4
Isso é impreciso. Os vírus costumam fazer isso, mas não são obrigados a (baixar código extra). Eles podem ter uma carga útil incorporada na exploração baseada em javascript. Essa carga útil seria um código de montagem, mas seria apresentado como javascript. Tudo depende do bug e da implementação de exploração específica.
Merlyn Morgan-Graham

2
Você acabou de escrever que o Java não tem sandbox? Porque ele realmente funciona em todos os navegadores que eu conheço.
27411 CarlF

4
@CarlF: Não, não se trata da sandbox Java (que ainda existe). Trata-se de bugs no Java - se eles permitem que você saia da área restrita, há pouca segurança adicional (como a DEP) para interromper um invasor.
sleske

3
Java é um grande buraco de exploração, já me mordi duas vezes. I desativá-lo religiosamente agora: superuser.com/questions/201613/...
Jeff Atwood

2
@ Merlyn Sim, é possível colocar toda a carga útil em javascript e não baixar código adicional (por exemplo, todos os módulos de metasploit, como 'Adicionar um usuário adicional ao sistema' ou reverse_tcp). Porém, malware sofisticado geralmente usa o código de shell em javascript como um stager para obter código mais complicado e sofisticado. Tudo depende do bug e da exploração - toda a lógica e o código do shell podem estar em uma imagem que interrompe um analisador de imagens - estou apenas dizendo a rota mais comum.
Tom Ritter

14

Infelizmente e perversamente, existem inúmeras maneiras de isso acontecer.

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

O problema ocorre sempre que existe a possibilidade de que dados externos da Internet, que devemos sempre assumir como criados com a maior intenção maliciosa, de alguma forma consigam ser executados pelo seu sistema.

Se você apenas se 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 o preenchimento do disco). Mas se você digitar o endereço no seu navegador, ele estará livre para fazer o que quiser - formate seu disco rígido, envie os detalhes do seu cartão de crédito, etc. Depende de você confiar no seu navegador para não fazer isso. A maioria dos navegadores realmente tenta não fazer essas coisas ruins, mas nós, os usuários de ovelhas , exigimos que os navegadores possam fazer cada vez mais "truques inteligentes" e exibir comportamento automático com base nas instruções da Internet. Nossas demandas levaram à criação de tecnologias de execução de código do lado do cliente, como JavaScript e Flash, que baixam código arbitrário, estrangeiro, não confiável e malicioso e o executam, tudo para nosso prazer.

A razão pela qual as pessoas que criaram essas tecnologias não foi imediatamente linchada é porque: a) fez os coelhos dançarem em nossas telas; eb) alegaram que colocavam verificações de segurança suficientes no design para impedir que códigos maliciosos arbitrários manipulassem o sistema local (por exemplo, não permitindo ler / gravar os discos locais, ler / gravar a área de transferência, ler / gravar campos de formulário em outras guias).

Infelizmente, a abordagem de design para "primeiro permitir tudo e depois encobrir alguns pontos ruins em que podemos pensar" é fundamentalmente falha, e agora estamos enfrentando um fluxo interminável de novas maneiras pelas quais nossos recursos de conveniência do cliente podem ser usado para comprometer nossos sistemas.

A única saída moderadamente segura é desativar o JavaScript e os plugins no seu navegador. Seguro como estávamos em 1995.


6
O Wget não é "seguro", nem os drivers que executam sua máquina, nem os sistemas no nível do kernel. Existem mitigações, mas, em última análise, todo código está potencialmente sujeito a ataques.
Merlyn Morgan-Graham

@Eryll: eu estava omitindo toda uma classe de problemas, a saber, os que vinham de código defeituoso. Sim, definitivamente existe uma ameaça de bibliotecas de imagens quebradas, analisadores de cabeçalho de MP3 e coisas assim. Eu não queria ir longe demais. Eu achei os problemas decorrentes do design de modernas tecnologias da Internet muito mais pertinentes à pergunta do OP.
27411 Kerrek SB

11
@Kerrek: A pergunta deles era "posso obter um vírus visitando uma página da web" e você continuou dizendo que eles não conseguiram obter um vírus do wget. Você também fala sobre confiança. Mas a questão não é sobre "como me protejo", mas mais sobre "como uma exploração funcionaria". A superfície de ataque parece ser o seu ponto principal, que é excelente, mas nublado por essas imprecisões e tangentes.
Merlyn Morgan-Graham

3
Sim, eu estava simplificando um pouco ... Eu não queria confundir o argumento com um detalhe "em princípio, pode haver uma falha no wget que faz com que ele se comporte inesperadamente" à parte. Você está certo, é claro. Imaginei que o OP parece ser novo para o campo e queria me concentrar nos problemas mais fundamentais e conceituais da nossa sociedade de TI, em vez de problemas devido a falhas técnicas.
27411 Kerrek SB

-1 Esta resposta não entende o problema: "Nossas demandas levaram à criação de tecnologias de execução de código do lado do cliente, como JavaScript e Flash, que baixam código arbitrário, estrangeiro, não confiável e malicioso e o executam, tudo para nosso prazer". - a intenção não é fazer o download de código arbitrário; e mesmo sem eles, ainda receberíamos vírus da internet. Você pode obter um vírus abrindo um arquivo .jpg com tinta ou assistindo a um filme no VLC. Não é comum, mas já aconteceu antes.
BlueRaja - Danny Pflughoeft

11

O ponto que realmente foi evitado nessas respostas, que eu realmente quero responder, é o seguinte: a razão pela qual você pode obter um vírus em uma página da Web é que algum software que você está executando possui um bug - uma vulnerabilidade de segurança .

Em todas as etapas do processo de criação do software, os criadores do Flash; do seu navegador; do seu sistema operacional tentaram garantir que códigos maliciosos e aleatórios da Internet não descubram apenas uma maneira de se executar. Infelizmente, fazer isso é difícil . Muito difícil .

Portanto, como todos os humanos, os desenvolvedores deste software cometem erros: o analisador de HTML substitui acidentalmente um byte na pilha quando você finaliza o html </p. Eles acidentalmente usaram um em signed intvez de umunsigned int . O compilador JIT javascript tenta desreferenciar um índice de matriz em um ponteiro nulo. Todas essas vulnerabilidades, além de milhões, ocorrem o tempo todo no software, devido à falta de conhecimento de segurança ou supervisão, ou mesmo um simples erro. Software é simplesmente maneira muito complexa para pegá-los todos.

Por esse motivo, os sistemas operacionais possuem mecanismos internos para evitar danos ao sistema, mesmo quando uma vulnerabilidade é encontrada. Seu sistema operacional provavelmente possui DEP e ASLR . Os programas podem ter várias proteções adicionadas pelo compilador. Navegadores rodam em privilégios mais baixos. Os programas são executados através de análises e testes automáticos que podem detectar muitas dessas vulnerabilidades.

Meu argumento é que ninguém está deixando isso acontecer - mas é impossível projetar software completamente seguro, assim como é impossível projetar um cofre completamente seguro. Alguém com tempo, conhecimento, dinheiro e incentivos suficientes sempre encontrará uma maneira de abri-lo. E o problema com esse cofre é que, uma vez que alguns hackers abrem sua cópia, eles podem facilmente abrir outras cópias ao redor do mundo sem sair do quarto.


Mas, em muitos casos, o bug existe porque os usuários o "exigem". Ou seja, a especificação para HTML3.14159 está com defeito, pois permite alguns comportamentos que são inerentemente arriscados. E os designers de sites usam os recursos específicos que provocam esses comportamentos, exigindo que os designers de navegadores implementem os "feechurs" (ou correm o risco de serem deixados para trás na "guerra dos navegadores"). O criador do navegador provavelmente tenta atenuar o comportamento arriscado de alguma forma, e os implementadores de antivírus acumulam verificações adicionais, mas sempre há algo a superar.
Daniel R Hicks

@ DanH: Você tem exemplos específicos de falhas de segurança intencionalmente deixadas em todos os navegadores, porque os usuários exigiram?
BlueRaja - Danny Pflughoeft

Não estou dizendo que os buracos são deixados lá intencionalmente. Em vez disso, especificações ruins levam a implementações "arriscadas" e, em muitos casos, a implementação (obviamente) não é comprovadamente correta, do ponto de vista da segurança. (E não é comprovadamente correta porque a especificação não permite isso.)
Daniel R Hicks

Ah, sim, ciência da computação ... A ciência no mundo em que há carros dirigindo de maneira errada em uma rua de mão única na metade do tempo, e se teletransportam para o lado oposto na outra metade.
Breakthrough

8

Suas perguntas específicas

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

Seu navegador está executando código o tempo todo (é feito de código). Ao baixar páginas da Web, esse código está baixando e exibindo dados arbitrários (pixels, caracteres, etc.).

Código também é dados (no nível do processador).

Como o código é um dado, se o navegador tentar executá-lo (independentemente da extensão ou formato do arquivo), ele poderá realmente ser executado (se criado corretamente).

Normalmente, 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 forma que, quando lidos, "vazem" e sobrescrevam os dados que compõem o programa executável do navegador. Isso requer que o navegador tenha um erro (mais comumente nesse caso, permitindo a saturação do buffer ).

Seu navegador também executa programas no topo das páginas da web. Javascript, como você mencionou, é um desses tipos de código. Mas existem dezenas. ActiveX, Flash, complementos, scripts de macaco de graxa, etc. são todos os códigos que você está executando enquanto visita páginas da web. Esse código pode conter bugs que causam culotes de segurança.

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

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

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

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

Quanto à possibilidade de um vírus atingir várias plataformas; Todos os navegadores estão executando código diferente, portanto, haverá bugs diferentes (mesmo o mesmo navegador em plataformas diferentes). Mas existem algumas bibliotecas de código que são compartilhadas entre plataformas. Se essa biblioteca contiver o erro, é possível que a exploração exista em várias plataformas.

Mas, dependendo do tipo de ataque realizado, 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.

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

Os vírus estão programados em JavaScript?

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

O Javascript também terá seu próprio conjunto de explorações, em um nível operacional acima da saturação de buffer. Existem várias 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) provavelmente receberão e mais erros poderão 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 de superfície de ataque

Façanhas em geral

A Microsoft possui um mnemônico para tipos comuns de exploração, 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

Algumas delas têm mais probabilidade de serem usadas em um ataque baseado em Javascript do que outras, algumas em servidores e outras em arquivos de dados (como imagens).

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


Quando você lida com linguagens interpretadas (versus compiladas), as explorações geralmente são independentes da arquitetura. Um aplicativo (ou vírus) compilado para uma arquitetura de processador diferente simplesmente não será executado (a menos que o processador contenha uma camada de compatibilidade).
Breakout

@ Breakthrough: Eles perguntando "eles estão programados em javascript?" não torna o que eu disse menos verdadeiro, especialmente quando aplicado a "como obter um vírus apenas acessando um site". Eles fizeram várias perguntas, e o que eu descrevi se aplicava a parte da pergunta, se não a toda.
Merlyn Morgan-Graham

@ Breakthrough: Adicionei mais informações sobre Javascript especificamente e ameaças em geral.
Merlyn Morgan-Graham

@ Morganlyn-Graham, eu estava me referindo especificamente quando você disse "... 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". e não toda a sua resposta.
Breakout

11
@Merlyn Morgan-Graham "A razão para este mito é que Mac e Linux têm muito as taxas de adoção mais baixas em comparação com máquina Windows"
Lincity

7

O termo é chamado "Drive By Download"

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

Schneider disse que a equipe de pesquisadores da empresa descobriu um pedaço de JavaScript na página que estava injetando um iframe que apontava para um site malicioso. Uma inspeção mais detalhada revelou que estava usando uma exploração desconhecida (0 dias) do IE, capaz de travar uma versão totalmente corrigida desse navegador e executar código malicioso. O dia 0 durou pouco, pois a Microsoft logo divulgou detalhes sobre a vulnerabilidade.

Uma análise mais aprofundada do shellcode revelou um URL de texto não criptografado que aponta para um servidor malicioso conhecido, que foi armazenado no repositório do M86 como tendo explorado a conhecida vulnerabilidade iepeers.dll, MS10-018.


+1 por ser a única resposta até o momento para usar o termo adequado.
Breakthrough

3

O truque é que os fabricantes de vírus / especialistas em segurança encontram brechas nos navegadores. Em palavras simples, eles encontram um buraco na segurança do navegador e podem usá-lo para fazer algo no seu sistema. Há casos em que o Adobe Flash possui falhas e, com código específico, pode ser explorado. Também existem seqüências de caracteres 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!)


Existem erros de segurança em todos os softwares existentes. Nem todos são encontrados. O Microsoft Paint teve um bug desagradável por um longo tempo, por exemplo, que era facilmente reproduzível (em poucos minutos) simplesmente jogando dados gerados aleatoriamente como "imagens" na caixa de diálogo "arquivo-> abrir".
Merlyn Morgan-Graham

Bem, tenho certeza de que houve algum software escrito em algum lugar sem erros de segurança. (Acho que talvez eu tenha escrito um ou dois.) Mas você tem um bom argumento. Cerca de 35 anos atrás, alguém demonstrou dezenas de bugs no Unix simplesmente alimentando caracteres aleatórios no analisador de comandos do shell. Deixou de funcionar a máquina em questão de minutos.
Daniel R Hicks

2

Vírus como os que o infectam visitando um site exploram uma falha no sistema de visitas. Por exemplo, um navegador ou plug-in pode ter uma falha na programação para permitir que uma imagem (acidentalmente, da perspectiva do desenvolvedor do navegador) execute um comando arbitrário no computador visitante.

Como tal, supostamente todo sistema operacional é uma vítima em potencial, mas os criadores de vírus geralmente estruturam 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 direcionados.

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

Sua melhor aposta é executar um antivírus de qualidade. Eu usei o NOD32 da Eset . Além disso, não clique em algo se for bom demais para ser verdade. Use NoScript no Firefox e AdBlock .


1

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

Se um site consegue violar a segurança do seu navegador, que poderia mexer com qualquer coisa que pertence a você no computador. No entanto, se ele puder escalar seus privilégios e obter acesso administrativo, poderá atrapalhar 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, a recente reformulação (como no Windows Vista) de recursos de segurança da Microsoft pode ter tornado o Windows muito mais seguro do que antes - ou pelo menos, é nisso que eles acreditam.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.