Skip to main content

Qu'est-ce qu'un shellcode?

ShellCode est la séquence du code machine ou des instructions exécutables, qui est injectée dans une mémoire d'ordinateurs avec l'intention de prendre le contrôle d'un programme en cours d'exécution.Dans une telle attaque, l'une des étapes consiste à prendre le contrôle du compteur du programme, qui identifie les instructions suivantes à exécuter.Le flux du programme peut ensuite être redirigé vers le code inséré.Le code machine intrusif est appelé la charge utile de l'attaque et est l'élément communément mentionné par le terme shellcode.Cette méthode a souvent été utilisée pour accorder un accès à un attaquant en ouvrant un shell de commande du système d'opération, de sorte que les attaques d'injection de code en général sont connues sous le nom de shellcode.

La vulnérabilité exploitée implique généralement la façon dont un programme affecte la mémoire, vérifie la validitédes données d'entrée et gère les erreurs de mémoire.Les développeurs de logiciels peuvent généralement éviter cette menace en définissant strictement les données d'entrée et en rejetant des valeurs inappropriées.S'il n'est pas contrôlé, les valeurs nécessitant plus d'espace de stockage que la mémoire allouée pour cette valeur pourraient être acceptées.Cela provoque une culasse de sécurité appelée débordement de tampon, où une partie des données est écrite dans des emplacements de mémoire adjacents à l'espace des valeurs attribuées.Lorsqu'il est soigneusement manipulé, cette anomalie peut permettre l'introduction de code intrusif.

ShellCode est normalement écrit dans un langage de programmation avec un accès de système de bas niveau tel que l'assemblage, C ou C ++.Selon la vulnérabilité ciblée, cependant, le même résultat peut être réalisé en insérant du code pour un langage de script interprété, comme Perl ou Bytecode pour une machine virtuelle, comme Java.Le code peut être implanté avant, pendant ou après le détournement du compteur du programme.Ainsi, le code intrusif peut être contenu dans un fichier sur la machine ciblée ou transmis sur une connexion réseau en temps réel.

Les exploits locaux de shellcode sont conçus pour donner un contrôle à un attaquant sur une machine à laquelle il a un accès physique.Un objectif dans ce cas peut être de créer un compte avec les privilèges de l'administrateur, par exemple.De même, si un processus en cours d'exécution a un niveau de privilège élevé, un exploit réussi accorderait temporairement le même niveau d'accès à l'intrus.

Les processus exécutés sur une machine distante peuvent être exploités à l'aide de protocoles réseau standard pour communiquer avec l'ordinateur cible.Connect Back Shellcode ordonne à la machine cible de lancer une connexion à l'ordinateur des intrus.Si l'intrus initie la connexion, le code est appelé bindshell, car il tente de prendre le contrôle d'une connexion réseau appelée port sur la machine distante.La méthode de connexion est plus largement utilisée, car les pare-feu interdisent rarement les connexions sortantes.