Code polymorphe
Dans la terminologie d'ordinateur, le code polymorphe est le code qui subit une mutation tout en maintenant l'algorithme original intact. Cette technique est parfois employée par le Shellcodes des virus d'ordinateur et les vers d'ordinateur de pour cacher leur présence.
La plupart de logiciel d'antivirus de et systèmes de détection anti-intrusion essayent de localiser le code malveillant près de la recherche par des paquets de fichiers informatiques et de données envoyés au-dessus d'un réseau informatique . Si le logiciel de sécurité trouve les modèles qui correspondent aux virus ou aux vers d'ordinateur connus, ils prennent des mesures appropriées pour neutraliser la menace. Les algorithmes polymorphes le rendent difficile pour qu'un tel logiciel localise le code offensant pendant qu'il subit une mutation constamment.
Le chiffrage est la méthode la plus utilisée généralement de réaliser le polymorphisme en code. Cependant, non tout les code peut être chiffré en tant que lui serait complètement inutilisable. Une petite partie de elle est laissée non codée et est employée pour jumpstart le logiciel chiffré. Le logiciel d'antivirus vise cette petite partie non codée de code.
Les programmeurs malveillants ont cherché à protéger leur code polymorphe contre cette stratégie de virus-balayage en récrivant le moteur non codé de déchiffrage chaque fois que le virus ou le ver est propagé. Les utilisations de logiciel d'antivirus ont sophistiqué l'analyse de modèle pour trouver les modèles fondamentaux dans les différentes mutations du moteur de déchiffrage, dans les espoirs de détecter sûrement un tel Malware .
Le virus polymorphe d'abord connu a été écrit par Mark Washburn. Le virus, appelé le les 1260 , a été écrit en 1990. Un virus polymorphe plus bien connu a été inventé en 1992 par le vengeur foncé (un pseudonyme du de bulgare du biscuit ) afin d'éviter la reconnaissance des structures du l'antivirus-logiciel.
Exemple
Un algorithme qui emploie, par exemple, les variables A et B mais pas le C variable pourrait rester intact même si vous avez ajouté un bon nombre de code qui ont changé le contenu du C.
L'algorithme original :
Début : Decryption_Code GOTO Chiffré : … un bon nombre de code chiffré … Decryption_Code : A = a chiffré Boucle : B = *A B = B XOR CryptoKey *A = B A = A + 1 Boucle GOTO SINON A = Decryption_Code GOTO chiffré CryptoKey : some_random_number
Le même algorithme, mais avec un bon nombre de code de C-changement inutile :
Début : Decryption_Code GOTO Chiffré : … un bon nombre de code chiffré … Decryption_Code : C = C + 1 A = a chiffré Boucle : B = *A C = 3214 * A B = B XOR CryptoKey *A = B C = 1 C = A + B A = A + 1 Boucle GOTO SINON A = Decryption_Code C = C^2 GOTO chiffré CryptoKey : some_random_number
Le code à l'intérieur du " ; Encrypted" ; (" ; un bon nombre de code" chiffré ;) pourrait alors rechercher le code entre Decryption_Code et CryptoKey et enlever tout le code qui change le C. Avant la prochaine fois que le moteur de chiffrage est utilisé, il pourrait entrer de nouveaux codes inutiles qui change C, ou même échange le code dans l'algorithme pour le nouveau code qui fait la même chose. Habituellement le codeur emploie des zéro clefs (par exemple ; Un Xor 0 = A) pour la première génération du virus, le facilitant pour lui parce qu'avec cette clef le code n'est pas chiffré. Il met en application alors un algorithme principal par accroissement ou aléatoire.
Une autre technique de polymorphisme est au NOP (aucune opération) d'autoinject ou à d'autres opcodes qui ne changent pas l'algorithme.
Voir également
Chronologie de des virus d'ordinateur et des vers notables Code métamorphique
code de Individu-modification
Code alphanumérique
Shellcode
Logiciel de fendant
Sécurité de fendant
.
| Random links: | John Casablancas | Néerlandais allant | Région de Huánuco | DES Écrins de massif | Santa Teresita, Cagayan | Código_polimórfico |