web-dev-qa-db-fra.com

Qu'est-ce que Shikata Ga Nai

Je suis tombé sur cette charge utile nommée "Shikata Ga Nai" (en japonais, cela signifie que rien ne peut être fait à ce sujet). Un fichier exe a été généré et lorsqu'il est exécuté, un Shell inversé peut être obtenu. Mais cela peut être fait par de nombreuses charges utiles sur Metasploit. Y a-t-il quelque chose d'unique dans cet encodeur?

Édité: Comme mentionné par Micheal, ce n'est pas une charge utile mais un encodeur.

12
one

Shikata Ga Nai est un encodeur inclus dans le framework Metasploit pour l'architecture x86. Du code source disponible :

Ce codeur implémente un codeur de rétroaction additif polymorphe XOR. Le talon du décodeur est généré sur la base de la substitution d'instructions dynamiques et de l'ordre des blocs dynamiques. Les registres sont également sélectionnés dynamiquement.

Un article académique décrivant les techniques d'extraction des charges utiles codées offre l'explication suivante:

Cet encodeur offre trois fonctionnalités qui offrent une protection avancée lorsqu'il est combiné.

  • Premièrement, le générateur de stub de décodeur utilise des techniques métamorphiques, par le biais de réordonnancement et de substitution de code, pour produire une sortie différente à chaque fois qu'il est utilisé, afin d'éviter la reconnaissance de signature.
  • Deuxièmement, il utilise une clé d'auto-modification enchaînée grâce à une rétroaction additive. Cela signifie que si l'entrée ou les clés de décodage sont incorrectes à n'importe quelle itération, toutes les sorties suivantes seront incorrectes.
  • Troisièmement, le talon du décodeur est lui-même partiellement obscurci via l'auto-modification du bloc de base actuel ainsi que blindé contre l'émulation à l'aide d'instructions FPU.
17
amccormack

Shikata Ga Nai n'est pas une charge utile, mais un encodeur. La charge utile est le Shell inversé.

Metasploit propose plusieurs encodeurs, Shikata Ga Nai étant l'un d'entre eux. Un encodeur tente de surmonter la détection par AV, la détection d'intrusion sur le réseau et de garder les caractères qui peuvent provoquer un crash de la victime hors de la charge utile, comme les octets nuls.

9
h4ckNinja