Buffer overflow et shellcodes sous Win

morganitos Messages postés 28 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 27 septembre 2007 - 30 juil. 2005 à 13:44
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 4 août 2005 à 09:02
Bon déjà bonjour à tous.


J'espère que ce topic ne sera pas "censuré" en raison de son caractère quelque peu "tangent" au niveau de la sécurité informatique...


Quoi qu'il en soit, j'espère que vous comprendrez que je ne suis ici que pour comprendre le sujet que j'ouvre, et non pour profiter de failles quelconque (surtout que les BOF commencent àêtre dépassés...)

Bref, trève de parlementations superflues, j'ai une question à poser sur ces BOF ( Ha ! enfin !). La voici :
Bien prenons un prog vulnérable basique avec une instruction gets(), tout simplement...

Alors on fait un overflow c'est bien joli, mais on voit souvent qu'il faut remplacer l'adresse de retour de eip par une adresse pointant sur une instruction "jmp esp" contenue dans une dll déjà chargée.

Alors
1) J'ai beau fouiller les dll kernel32, user32,ect... ben rien à faire, je trouve pas ; que je sois sous XP ou Win98...

2) Ensuite, ya t'il une autre manière, c'est à dire, de mettre une adresse qui pointerait directement sur notre buffer... Comment en connaître l'adresse ???

Voilà donc deux questions que google n'a pu répondre, on dirai que les shellcodes sont assez mis en veilleuse...
Si vous pouvez m'aider, je vous en serait reconnaisant....

Merci !

<M0RG1ITO$>

8 réponses

mcjoedassin Messages postés 196 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 2 septembre 2005
30 juil. 2005 à 13:53
il
faut remplacer l'adresse de retour de eip par une adresse pointant sur
une instruction "jmp esp" contenue dans une dll déjà chargée



non, pas forcément
0
mcjoedassin Messages postés 196 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 2 septembre 2005
30 juil. 2005 à 13:54
si tu contrôles eip, tu peux peut-être directe le faire pointer vers l'adresse de ton shellcode en mémoire par exemple ...
0
mcjoedassin Messages postés 196 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 2 septembre 2005
30 juil. 2005 à 13:55
Comment en connaître l'adresse



mais, c'est tout l'art du débugage !
0
morganitos Messages postés 28 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 27 septembre 2007
31 juil. 2005 à 13:41
Ok pour le debugage, quand t'es en local, pas bien compliqué...

Mais si on est en remote, l'adresse de esp (par exemple) de sera pas forcément toujours la même... J'en déduis qu'on ne peut la connaitre autrement et qu'en remote la seule solution reste "jmp esp".

Merci en tous cas.
Bye
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 1
3 août 2005 à 12:39
salut,

plutot que de rechercher jmp esp, recherche la suite d'octet de cette operande.
tu auras peut-etre plus de chance...

@++
0
mcjoedassin Messages postés 196 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 2 septembre 2005
3 août 2005 à 13:38
a seule solution reste "jmp esp"

non

regarde des exploits si tu veux en savoir plus ...
0
morganitos Messages postés 28 Date d'inscription samedi 1 février 2003 Statut Membre Dernière intervention 27 septembre 2007
3 août 2005 à 18:11
Pour trouver "jmp esp" dans les dll j'ai trouver un prog super pratique : findjmp.

<M0RG1ITO$>Pour ce qui est des exploits, j'irai chercher sur google... merci en tous cas !
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 1
4 août 2005 à 09:02
re,

push esp; ret; c bon aussi:54h,C3h

je ne sais pas si findjmp pense à rechercher d'autres combinaisons.
un programme similaire serait simple a faire.

mapper la dll
rechercher section code
calculer la position files de section code
rechercher dans section code les différentes chaines utilisables
si trouvé convertir la position file en adresse:base section + offset file
et afficher les résultats
unmapper la dll

la solutions pourrait etre de placer les dll en mémoire de manière aléatoire le jmp esp n'est alors plus utilisable. Avec un serveur sensible, il serait intéressant d'améliorer le Peloader.

@++
0