En tant qu'étudiant en biologie de niveau A, j'ai beaucoup réfléchi aux liens avec la biologie et l'informatique, et quelque chose qui me vient souvent à l'esprit sont les liens entre l'immunologie et la sécurité informatique / les virus. Par exemple, j'ai (en lisant sur le fonctionnement des programmes antivirus) décidé que la façon dont le système immunitaire traite les virus est très similaire aux programmes antivirus (les deux contiennent une base de données de définitions de virus (que ce soit, cellules de mémoire ou signatures de virus) et les deux contiennent une méthode d'extrapolation). La progression naturelle pour moi était alors de penser à l'évolution naturelle des virus par rapport aux virus informatiques. Passons donc à ma question:
Serait-il possible que des virus informatiques évoluent vers de nouvelles souches possédant de nouveaux "gènes" pour leur permettre d'accomplir leur travail?
Il semble que ce genre de réflexion ne puisse vraiment s'appliquer qu'aux virus, je veux dire que votre ancienne calculatrice habituelle ne sera jamais soumise à la "sélection naturelle". Mais pour autant que je sais que les virus ne se muter, afin d'éviter les programmes anti-virus, mais sans doute ceux - ci sont plutôt contrôlés, de sorte que le virus ne gagnerait pas des mutations non bénéfiques qui pourraient autrement le rendre inutilisable. Si la véritable nature aléatoire de la nature pouvait être appliquée aux virus, est-ce qu'ils pourraient jamais faire évoluer de nouvelles fonctionnalités, comme par exemple devenir un rétro-virus qui prend le contrôle d'un programme anti-virus, ou muter pour inclure un nouveau code qui lui permet de faire tomber un pare-feu? Seraient-ils impliqués dans une sorte de sélection naturelle informatique, où les virus les plus forts survivent et transmettent leurs gènes bénéfiques?
Réponses:
Je suppose que ce serait possible en théorie, mais les logiciels malveillants (virus, vers, etc.) ne fonctionnent généralement pas de cette façon aujourd'hui, et il y a de bonnes raisons pour lesquelles ils sont écrits tels qu'ils sont.
Vous pourriez être intéressé par le code polymorphe , qui se change lui-même pour échapper à la détection. Il change la séquence d'instructions en une autre séquence d'instructions qui aura le même effet, mais aura un binaire différent. Cela permet d'éviter la détection par des outils antivirus qui recherchent une "signature" spécifique d'octets. Cependant, ce n'est pas la forme de mutation que vous demandez, car elle ne fera jamais "évoluer" le malware contre un nouveau comportement qu'il n'avait pas déjà.
Vraiment, il n'y a pas beaucoup de raisons pour lesquelles les auteurs de logiciels malveillants voudraient ou auraient besoin de leur logiciel malveillant pour faire évoluer de nouvelles fonctionnalités. Ils peuvent soit intégrer le comportement souhaité dans le logiciel malveillant. Ou, ils peuvent demander au logiciel malveillant de contacter un serveur central de "commande et contrôle" pour télécharger périodiquement du nouveau code ("mises à jour logicielles" pour le logiciel malveillant), afin de lui permettre de contrôler le comportement du logiciel malveillant. Habituellement, les méchants déterminent hors ligne les attaques qu'ils veulent monter, puis implémentent cela dans le logiciel malveillant ou commandent au logiciel malveillant d'exécuter ces attaques.
En travaillant à l'avance les attaques hors ligne, les attaquants peuvent tester ces attaques sur leurs propres systèmes et s'assurer qu'elles fonctionneront correctement et ne seront pas détectées. Du point de vue de l'attaquant, c'est bien mieux que d'écrire un malware qui essaie au hasard des trucs dans l'espoir qu'il évoluera en une attaque utile; les logiciels malveillants qui essaient des choses aléatoires seront beaucoup plus susceptibles de déclencher des alarmes et d'être détectés.
Il n'y a donc pas vraiment de besoin ou de motivation pour utiliser la "sélection naturelle" dans les logiciels malveillants, et ce n'est généralement pas vu dans la pratique.
la source
TL; DR: les ordinateurs ne sont pas des entités autonomes comme les organismes, avec un instinct de survie. Ils exécutent simplement des instructions, et parfois ils exécutent des instructions que nous n'aimons pas, nous exécutons donc d'autres instructions pour trouver les mauvaises.
J'ai commencé à le dire dans les commentaires, mais je pense qu'il y a encore beaucoup à dire.
La métaphore virale est obsolète et trop largement utilisée par des personnes qui ne comprennent pas comment fonctionnent réellement les ordinateurs. Ils essaient de les comparer aux êtres vivants, car ils comprennent les êtres vivants. Voici une meilleure métaphore.
Vous êtes un employé de bureau. Vous travaillez pour une méga-société géante, où vous ne voyez pas votre patron. On ne vous dit jamais pourquoi vous faites votre travail, vous ne savez même pas ce que fait votre entreprise. Tout ce que vous savez, c'est que vous vous présentez au travail tous les jours et que vous suivez vos instructions.
Il y a une petite fenêtre près de votre bureau, qui est la seule façon d'interagir avec quelqu'un d'autre. Vous ne voyez personne, mais parfois des morceaux de papier passent par la fenêtre.
Vos instructions sont toujours les mêmes au début, mais vous avez une énorme pile de papiers à votre bureau. Certains contiennent des instructions, d'autres contiennent des éléments que vous avez écrits. Parfois, vos instructions vous diront de trouver un autre morceau de papier et de commencer à l'utiliser comme instructions. Parfois, ils vous demandent de changer les morceaux de papier, de les déchirer ou d'en effacer des parties. (C'est ce qu'est un programme. Parfois, les programmes modifient les fichiers, parfois ils exécutent d'autres programmes, etc.)
Parfois, vos instructions vous disent d'attendre près de la fenêtre pour plus de papier à venir. Le papier peut contenir une image, du texte ou d'autres instructions. (C'est ce qui se produit lorsqu'un ordinateur attend l'entrée de la souris ou du clavier, ou quelque chose d'un réseau (c'est-à-dire des fichiers)).
Vous ne faites que suivre ces instructions. Vous ne savez jamais pourquoi, vous ne savez jamais pour qui, mais vous le faites simplement.
Parfois, vos instructions vous demandent d'effectuer plusieurs tâches. Vous avez une pile de papiers. Vous définissez une minuterie et vous travaillez sur les instructions du papier supérieur pendant 5 minutes. Lorsque le chronomètre passe, vous placez ce papier au bas de la pile et faites tout ce qui se trouve sur le nouveau papier supérieur. (C'est ainsi que les ordinateurs exécutent plusieurs programmes à la fois).
Maintenant, un jour, vous attendez un morceau de papier près de la fenêtre, et vous savez que lorsque vous l'obtiendrez, vous ferez tout ce qui est indiqué, car c'est ce que le dernier morceau d'instructions vous a dit de faire. Vous l'obtenez, et il indique de trouver certains de vos principaux morceaux de papier, avec vos instructions de base, et de les effacer. Il vous indique de nouvelles instructions à y mettre. Cela fait des choses étranges, comme envoyer vos fichiers par la fenêtre à des endroits étranges, ou collecter des copies de sauvegarde de tout ce qui passe par la fenêtre. Mais ce qui est important, c'est que vous n'y pensez pas. Ce ne sont que des instructions. Vous les faites juste.
Voilà ce qu'est un virus. Ce n'est qu'un ensemble d'instructions que vous incitez l'ordinateur à exécuter.
Maintenant, disons que vous êtes un travailleur multitâche. Vous obtenez l'une de ces instructions d'effacement dans la fenêtre. Mais, vous êtes occupé, vous le mettez donc au bas de la pile. Vous regardez en haut de votre tas de choses à faire, et il y a un ensemble d'instructions marquées "antivirus". Il dit de lire tous vos papiers et de voir si certains d'entre eux ressemblent à leur échantillon de papier. Vous le faites et vous voyez que les instructions d'effacement sont sur votre liste.
Notez que si vous commencez à exécuter les instructions de virus, vous n'y pensez pas. Sans antivirus, il n'y a pas d'attaque, pas de réponse immunitaire. Ce n'est pas vous attaquer, c'est juste un ensemble d'instructions. L'antivirus n'est qu'une liste TODO qui implique de consulter vos autres instructions et de trouver celles qui correspondent à un modèle. Ce n'est pas essayer de préserver le système dans son ensemble, c'est juste une feuille de papier que quelqu'un vous a donnée depuis la fenêtre, car cela empêche les autres de vous inciter à faire des choses en faisant passer des choses par la fenêtre.
Maintenant, qu'en est-il de vos virus "en évolution"? C'est certainement possible, mais regardons ce que cela implique. Un virus en évolution est essentiellement une feuille d'instructions qui vous indique comment faire plus d'instructions. C'est un morceau de papier qui vous dit d'effacer un tas de vos anciennes instructions, puis d'en mettre de nouvelles à sa place, mais ces nouvelles instructions vous demandent également d'effacer les anciennes instructions, d'en mettre de nouvelles, etc. Les instructions d'origine ne changent donc pas. Le virus ne mute pas. Au lieu de cela, il fait juste ce qu'il fait, tout en laissant des instructions pour créer sa prochaine génération.
Alors, est-ce possible de faire ça? Oui. Mais c'est extrêmement compliqué. Avoir un programme qui se change lui-même, mais dont la séquence de changements ne converge pas finalement vers un programme qui ne fait rien d'utile, est incroyablement complexe.
la source
la question générale concerne l'évolution des logiciels malveillants. la question spécifique concerne les gènes. il existe en effet un mécanisme d'algorithme génétique qui utilise des "gènes" numériques pour l'optimisation et pourrait certainement être utilisé dans des virus / programmes malveillants, bien qu'il ne semble pas y avoir de rapport à ce jour "dans la nature". d'autre part, les logiciels malveillants ont en effet évolué au fil des années, passant d'une curiosité théorique à une cybercriminalité organisée, etc., avec une sophistication croissante des menaces. jusqu'à présent, cela est alimenté en grande partie (mais pas entièrement!) par "l'évolution" dirigée par le développeur humain. Dans un certain sens, on peut dire que les virus informatiques évoluent dans le temps avec une "intelligence" ou une "sophistication d'attaque" accrues.
voici quelques références qui étudient "l'évolution des / dans les malwares".
Darwin Inside the Machines: évolution des logiciels malveillants et conséquences pour la sécurité informatique Dimitris Iliopoulos, Péter Ször et Christoph Adam
Évolution des logiciels malveillants L'évolution des logiciels malveillants et le paysage des menaces - un examen décennal / Microsoft
Une étude empirique de Malware Evolution Archit Gupta, Pavan Kuppili, Aditya Akella et Paul Barford
La nouvelle tendance dans "Malware Evolution" / Raff (étude de cas de "Carberp")
le ver Stuxnet est une étude de cas extraordinaire sur les caractéristiques / antécédents avancés / évolutifs des virus. Les États-Unis et Israël ont développé un virus informatique Flame pour ralentir les efforts nucléaires iraniens, selon des responsables
la source
L'essentiel est de le faire fonctionner. Les versions naïves, c'est-à-dire prendre un logiciel malveillant quelque peu réussi et faire en sorte que chaque tentative de reproduction comporte des mutations, seraient probablement mortelles pour le logiciel malveillant dans la plupart des cas.
Cela ne signifie pas, cependant, qu'il ne pourrait pas évoluer, juste que son objectif initial, la réplication, pourrait être entravé. Avec un taux de mutation suffisamment bas et suffisamment de patience, des mutations bénéfiques et bénignes seraient finalement sélectionnées.
Un problème, cependant, est qu’ils ÉVOLUERONT. Plus précisément, ils évolueraient sur de purs principes darwiniens. Si j'écris un morceau de code qui s'exécute, puis, uniquement en cas d'exécution réussie, copie son fichier binaire 1000 fois vers 1000 emplacements avec une erreur aléatoire ou plusieurs dans chacun et les exécute tous, il peut sembler que j'ai subordonné la réplication à la réalisation de n'importe quelle tâche est effectuée avec succès, mais en réalité, la réplication ne dépend que du programme pensant qu'elle a terminé cette tâche avec succès.
Il y a donc de fortes chances que s'il s'agissait d'un logiciel malveillant, ses deux objectifs fondamentaux, en particulier la réplication et le vissage des ordinateurs des gens, seraient en contradiction. Sur une période suffisamment longue, une mutation se produirait probablement pour que cela ne gâche pas aussi mal leurs ordinateurs, ce qui rend moins important la lutte contre les antivirus, se reproduisant ainsi avec des symptômes minimes, comme c'est la stratégie la plus efficace au début pandemic or plague inc, ou faire croire à lui-même qu'il a même réussi à visser leurs ordinateurs, transformant la fonction principale en un intron assez rapidement si elle ne s'exécute pas mais la fonction de réplication continue de fonctionner.
Beaucoup de gens s'émerveillent de l'efficacité du système immunitaire à vaincre toutes sortes de menaces, mais à bien des égards, les ordinateurs sont beaucoup, beaucoup plus sûrs que les cellules. Votre ordinateur ne peut tout simplement pas télécharger un virus en premier lieu. Un système antivirus parfait avec un utilisateur parfait n'a jamais besoin d'analyser le disque dur. Le code informatique ne peut pas être simplement inséré physiquement dans le disque dur.
Cellules de contraste, où les virus ont développé des mécanismes PHYSIQUES assez uniques pour passer les défenses cellulaires. Par exemple, certains virus sont totalement inertes jusqu'à ce qu'ils rencontrent une cellule, mais ensuite leur structure physique s'accroche et perce violemment la membrane cellulaire pour injecter leur matériel génétique. C'est comme un virus informatique qui coupe physiquement l'ouverture de votre machine et ajoute du nouveau matériel tandis que votre système d'exploitation et votre antivirus pensent que "tout va bien" et exécutent le code trouvé sur ce matériel.
Il est donc en fait assez probable que plus le code est bénin, meilleure est sa reproduction. Dans certains cas, il peut être plus facile pour l'évolution de convaincre l'utilisateur de l'aider que de développer un nouvel antivirus. IE s'ajoutant aux fichiers susceptibles d'être partagés avec d'autres utilisateurs.
Donc, en fin de compte, il me semble plus probable que les chances de réplication sont plus élevées lorsqu'elles sont inutiles en tant que logiciels malveillants en tant que telles, et probablement encore plus si elles peuvent convaincre l'utilisateur ou le code antivirus qu'il s'agit en fait de quelque chose de bénin. , important ou bénéfique.
Une autre chose est que la plupart des machines ont des opérations invalides, donc les modifications aléatoires du code sont susceptibles non seulement d'empêcher la fonctionnalité, mais aussi de provoquer le crash du code, même avec de la mémoire non protégée.
la source
Imaginez des programmes informatiques non malveillants comme les microbes de votre intestin. Imaginez un virus informatique comme une bactérie infectieuse.
L'ordinateur ne peut pas faire la différence entre les bonnes et les mauvaises bactéries, contrairement au système immunitaire.
Il serait simple de créer un programme auto-modifiable, mais 99% des mutations entraîneraient une erreur. Un programme est comme une liste d'instructions - et les ordinateurs sont très stricts sur la façon dont ces instructions sont écrites. Disons que nous avons ce programme:
Une mutation peut entraîner ce programme:
Bien que cela soit clair pour l'homme, cela signifiait "arachide", ce n'est pas clair pour l'ordinateur. Je pourrais écrire un script simple qui se mute en Python - mais la plupart du temps, les mutations échoueront.
Il serait très intéressé par un virus qui s'est muté et pourrait rester en vie - nous pourrions même le classer comme vie.
Oui, je suis en retard à la fête - mais c'est un sujet intéressant qui mérite d'être écrit.
la source