46 votes

Comment puis-je attraper un virus en visitant simplement un site web ?

Duplicata possible :
Un ordinateur peut-il être infecté par un logiciel malveillant via un navigateur web ?

Il est de notoriété publique que l'on peut attraper un virus simplement en visitant un site web. Mais il n'en reste pas moins qu'il est possible d'être infecté par un virus. comment est-ce possible ?

Ces virus attaquent-ils les utilisateurs de Windows, de Mac et de Linux, ou les utilisateurs de Mac/Linux sont-ils immunisés ?

Je sais que je peux évidemment attraper un virus en téléchargeant et en exécutant un fichier .exe dans Windows, mais comment Puis-je attraper un virus simplement en accédant à un site web ?

Les virus sont-ils programmés en JavaScript ? (Si c'est le cas, quelles sont les fonctions JavaScript les plus couramment utilisées ?

24voto

cringe Points 2759

Il est de notoriété publique que l'on peut attraper un virus simplement en visitant un site web. Quelqu'un peut-il expliquer comment cela est possible ?

Exemples entre parenthèses. Il y a un bogue dans le navigateur (IE), l'interpréteur javascript, ou dans un plugin (comme flash ou java). Ce bogue entraîne l'exécution de code - cette partie peut être très compliquée, mais elle implique souvent un bogue de type "use-after-free" et un bogue de type "use-after-free". manipulation du tas .

Ensuite, j'ai un shellcode en cours d'exécution. Le shellcode doit échapper à toutes les protections dont dispose le navigateur - pour un bogue V8/Chrome, il faut échapper au bac à sable de Chrome et vaincre DEP et ASLR. Pour IE, il faudrait vaincre DEP et ASLR, puis sortir du mode à faible intégrité. Pour Java, il faut... ne rien faire - tout est en ordre. (C'est la raison pour laquelle il y a eu une vague de bogues Java).

Maintenant que j'ai un code arbitraire qui s'exécute sur votre machine, en tant que vous (vous n'êtes pas administrateur, n'est-ce pas ?), je peux télécharger un fichier sur Internet et l'exécuter, déposant ainsi un logiciel malveillant sur votre machine.

Les virus sont-ils programmés en JavaScript ? (Si oui, quelles sont les fonctions JavaScript les plus couramment utilisées ?

Concrètement, non. Javascript est un vecteur d'attaque que les gens utiliseront pour trouver un bogue dans un navigateur. Ils pourraient également utiliser Flash, Java ou Silverlight comme vecteur d'attaque. Dans le cas du javascript, ils écrivent du javascript pour déclencher le bogue du navigateur, puis le virus est finalement retiré de l'internet.

14voto

Kerrek SB Points 831

Malheureusement, et de manière perverse, il y a de nombreuses façons dont cela pourrait se produire.

Vous avez tout à fait raison de vous étonner qu'un "dispositif de lecture" tel qu'un navigateur puisse manipuler activement votre propre système (et lui nuire). La lecture d'un livre n'épuise pas votre compte en banque et l'ouverture d'un journal ne fait pas de mal à vos enfants, alors pourquoi l'ouverture d'un site web pourrait-elle faire tout cela et plus encore ?

Le problème survient lorsqu'il est possible que des données étrangères provenant d'Internet, dont nous devons toujours supposer qu'elles sont élaborées avec les intentions les plus malveillantes, parviennent d'une manière ou d'une autre à être exécutées par votre système.

Si vous vous contentez de vous asseoir à la ligne de commande et de taper wget http://evil.com/hitme.php Le client HTTP wget écrira simplement un fichier binaire de la requête sur votre disque et rien de grave ne s'est produit (à part peut-être le fait que votre disque se remplit). Mais si vous tapez l'adresse dans votre navigateur, celui-ci est libre de faire ce qu'elle veut -- Formatez votre disque dur, envoyez les données de votre carte de crédit, etc. C'est à vous de confiance votre navigateur de ne pas le faire. La plupart des navigateurs essaient en effet de ne pas faire ces mauvaises choses, mais nous, les mouton les utilisateurs ont exigé que les navigateurs soient capables de faire des "tours de passe-passe" de plus en plus astucieux et d'adopter un comportement automatique sur la base d'instructions provenant de l'internet . Nos exigences ont conduit à la création de technologies d'exécution de code côté client, telles que JavaScript et Flash, qui téléchargent les données de l'ordinateur. arbitraire, étranger, non fiable, malveillant et l'exécuter, pour notre plus grand plaisir.

La raison pour laquelle les personnes qui ont conçu ces technologies n'ont pas été immédiatement lynchées est que a) elles ont fait danser des lapins sur nos écrans, et b) elles ont affirmé avoir mis en place suffisamment de contrôles de sécurité dans la conception pour empêcher le code malveillant arbitraire de manipuler le système local (par exemple, en ne permettant pas de lire/écrire les disques locaux, de lire/écrire le presse-papiers, de lire/écrire les champs de formulaire dans d'autres onglets).

Malheureusement, l'approche de la conception consistant à "tout autoriser d'abord, puis à couvrir de façon disparate les quelques points faibles auxquels nous pouvons penser" est fondamentalement erronée, et nous sommes désormais confrontés à un flot ininterrompu de nouvelles façons d'utiliser nos fonctions de commodité côté client pour compromettre nos systèmes.

La seule solution relativement sûre consiste à désactiver JavaScript et les plugins dans votre navigateur. Comme en 1995.

11voto

Le point qui a vraiment été éludé dans ces réponses, et que je tiens à souligner, est le suivant : La raison pour laquelle vous pouvez attraper un virus à partir d'une page web est qu'un logiciel que vous utilisez présente un bogue - une faille de sécurité. .

À chaque étape du processus de création du logiciel, les créateurs de Flash, de votre navigateur et de votre système d'exploitation ont essayé de s'assurer qu'un code malveillant aléatoire provenant d'Internet ne puisse pas simplement trouver un moyen de s'exécuter. Malheureusement, c'est dur . Très difficile .

Ainsi, comme tous les humains, les développeurs de ce logiciel sont condamnés à faire des erreurs : l'analyseur HTML écrase accidentellement un octet dans la pile lorsque vous terminez le texte html par </p . Ils ont accidentellement a utilisé un signed int au lieu d'un unsigned int . Le compilateur JIT de javascript tente accidentellement de déréférencer un index de tableau en un pointeur nul. Toutes ces vulnérabilités, et des millions d'autres, se produisent en permanence dans les logiciels, soit à cause d'un manque de connaissances en matière de sécurité, soit à cause d'un oubli, soit même à cause d'une simple erreur. Les logiciels sont tout simplement manière trop complexe pour tous les attraper.

C'est pourquoi les systèmes d'exploitation sont dotés de mécanismes intégrés permettant d'éviter que le système ne soit endommagé, même lorsqu'une vulnérabilité est découverte. Votre système d'exploitation a probablement DEP y ASLR . Les programmes peuvent avoir diverses protections ajoutés par le compilateur. Les navigateurs fonctionnent à des niveaux inférieurs. Les programmes sont exécutés par analyse automatique y essais qui peut détecter un grand nombre de ces vulnérabilités.

Ce que je veux dire, c'est que personne n'est laisser Mais il est impossible de concevoir des logiciels totalement sûrs, tout comme il est impossible de concevoir un coffre-fort totalement sûr. Quelqu'un disposant de suffisamment de temps, de connaissances, d'argent et de motivation trouvera toujours un moyen de l'ouvrir. Et le problème avec este En effet, une fois qu'un pirate informatique a ouvert sa copie, il peut facilement ouvrir d'autres copies dans le monde entier sans quitter sa chambre.

8voto

Vos questions spécifiques

Je comprends qu'il est évident que je peux attraper un virus en téléchargeant et en exécutant un fichier .exe dans Windows, mais comment puis-je attraper un virus simplement en accédant à un site web ?

Votre navigateur exécute du code en permanence (il est fait de code). Lorsqu'il télécharge des pages web, ce code télécharge et affiche des données arbitraires (pixels, caractères, etc.).

Le code est également une donnée (au niveau du processeur).

Le code étant une donnée, si votre navigateur tente d'exécuter les données (quelle que soit l'extension ou le format du fichier), il est possible qu'il s'exécute (s'il est correctement conçu).

Normalement, votre navigateur ne sera pas assez stupide pour essayer d'exécuter des données aléatoires qu'il a téléchargées. Cependant, cela peut arriver.

L'un des moyens d'y parvenir consiste à former les données de telle sorte que, lorsqu'elles sont lues, elles "fuient" et écrasent les données qui constituent le programme exécutable du navigateur. Pour ce faire, il faut que le navigateur présente un bogue (le plus souvent, dans ce cas, il s'agit de permettre à un utilisateur d'accéder à une page Web). Dépassement de mémoire tampon ).

Votre navigateur exécute également des programmes au-dessus des pages web. Javascript, comme vous l'avez mentionné, est l'un de ces types de code. Mais il en existe des dizaines. ActiveX, Flash, add-ons, grease monkey scripts, etc. sont autant de codes que vous exécutez lorsque vous visitez des pages web. Ce code peut contenir des bogues qui entraînent des failles de sécurité.

Ces virus attaquent-ils les utilisateurs de Windows, Mac et Linux ou les utilisateurs de Mac/Linux sont-ils immunisés ?

Aucune plateforme que nous utilisons n'est totalement à l'abri des bogues, car elles utilisent toutes des processeurs qui traitent les données comme du code. C'est tout simplement ainsi que fonctionne notre architecture informatique actuelle.

La raison de ce mythe est que les Mac et Linux ont des taux d'adoption beaucoup plus faibles que les machines Windows (au niveau des ordinateurs de bureau). Les logiciels de bureau sur ces machines ne sont donc pas une cible aussi courante pour les créateurs de virus.

Les virus n'apparaissent pas par magie, ni par évolution fortuite (comme les virus biologiques). Il s'agit de logiciels écrits par des individus ou des équipes de développeurs. Et ils veulent cibler la plus grande part de marché, comme le font les vendeurs de logiciels ordinaires.

Quant à savoir si un virus peut cibler plusieurs plates-formes, tous les navigateurs exécutent un code différent et présentent donc des bogues différents (même le même navigateur sur différentes plates-formes). Cependant, certaines bibliothèques de code sont partagées par plusieurs plates-formes. Si une telle bibliothèque contient le bogue, il est possible que l'exploit existe sur plusieurs plateformes.

Mais, selon le type d'attaque effectué, un virus écrit pour un Mac non Intel pourrait ne fonctionne pas sur un Mac Intel, et vice-versa, parce qu'ils ont des processeurs différents. Pour les différents processeurs, les données qui représentent le code ont un format différent.

En revanche, lorsqu'il s'agit d'une machine virtuelle ou d'un langage de script, les attaques peuvent être indépendantes de la plate-forme. Cela nous amène à la question suivante...

Les virus sont-ils programmés en JavaScript ?

Certains virus sont. Les informations que j'ai mentionnées ci-dessus (sur les exploits de dépassement de tampon) seraient généralement utilisées comme une attaque en dehors de Javascript, mais pourraient tout aussi bien s'appliquer à un virus conçu pour attaquer un exploit dans un interpréteur Javascript.

Javascript aura également sa propre série d'exploits, à un niveau d'exploitation supérieur à celui des dépassements de tampon. Il existe toute une série de moyens d'attaquer n'importe quel logiciel. Plus le logiciel est volumineux (lignes de code), plus il est susceptible de recevoir de variétés d'entrées utilisateur (dans ce cas, des types de code) et plus il peut contenir de bogues.

En outre, plus un logiciel en cours d'exécution (par exemple, un logiciel fonctionnant sur un serveur) est exposé, plus il est vulnérable aux attaques.

En général, on appelle cela Surface d'attaque

Exploits en général

Microsoft dispose d'un moyen mnémotechnique pour les types d'exploitation les plus courants, et ils ont tous leurs propres propriétés intéressantes, ainsi que différents niveaux de logiciels qu'ils peuvent attaquer. STRIDE qui signifie :

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

Certains d'entre eux sont plus susceptibles d'être utilisés dans une attaque basée sur Javascript que d'autres, certains sur des serveurs, d'autres sur des fichiers de données (tels que des images).

Mais la sécurité est un domaine vaste et évolutif. Il y a vraiment trop d'informations pour répondre à toutes vos questions.

7voto

Moab Points 56700

Le terme est appelé "Drive By Download"

Voici un bel exemple de la façon dont cela se produit sans que vous ne fassiez rien d'autre que de visiter un site web.

M. Schneider a déclaré que l'équipe de chercheurs de l'entreprise avait découvert un élément JavaScript sur la page qui injectait une iframe pointant vers un site malveillant. Un examen plus approfondi a révélé qu'il utilisait un exploit précédemment inconnu (0 jour) d'IE capable de planter une version entièrement corrigée de ce navigateur et d'exécuter un code malveillant. L'exploit 0-day a cependant été de courte durée, car Microsoft a rapidement publié des détails sur la vulnérabilité.

Une analyse plus poussée du shellcode a révélé une URL en clair pointant vers un serveur malveillant connu, qui a été stocké dans le répertoire de M86 comme ayant exploité la vulnérabilité bien connue iepeers.dll, MS10-018.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X