Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2006, 20h58   #1
Membre éclairé
 
Avatar de Goundy
 
Miloud Bel.
Étudiant
Inscription : avril 2005
Messages : 591
Détails du profil
Informations personnelles :
Nom : Miloud Bel.
Âge : 26
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2005
Messages : 591
Points : 324
Points : 324
Par défaut Unix syscalls hooking

Bonsoir,

J'ai une question, je ne veux pas de codes sources mais juste un petit tuiyau pour me mettre dans le bon file

Je veux en fait intercépter des appels systèmes spécifiques, je programme en C et je veux ainsi y répondre par la suite. Pour la réponse là j'ai déjà une idée mais ce que je ne sais pas actuellement c'est comment les intércepters avant que celle-ci n'atteignent le noyau.

Merci
__________________
Compil your life guy!
The Aures Project
Goundy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 21h27   #2
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
je vois bien les signaux... mais rien ne dit que tu pourras les inhiber
__________________
Evitez les MP pour les questions techniques... il y a des forums
Contributions sur DVP : Mes Tutos | Mon Blog
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 21h58   #3
Membre éclairé
 
Avatar de Goundy
 
Miloud Bel.
Étudiant
Inscription : avril 2005
Messages : 591
Détails du profil
Informations personnelles :
Nom : Miloud Bel.
Âge : 26
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2005
Messages : 591
Points : 324
Points : 324
Citation:
Envoyé par gorgonite
je vois bien les signaux... mais rien ne dit que tu pourras les inhiber
j'avoue que je ne vous suis pas ^^
__________________
Compil your life guy!
The Aures Project
Goundy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 09h44   #4
Membre Expert
 
Homme
Inscription : mars 2004
Messages : 1 051
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2004
Messages : 1 051
Points : 1 031
Points : 1 031
tu as la commande trap si mes souvenirs sont bons pour capturer des signaux.
En revanges, certains signaux comme kill par exemple ne sont pas capturables (et heureusement)
__________________
Chaval
__________________
"Monsieur le chat voudriez-vous, s'il vous plait, demanda Alice, me dire de quel côté dois-je aller ?
Ca dépend de l'endroit où vous voulez vous rendre, répondit le chat"
Lewis Carrol
chaval est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 16h42   #5
Membre éclairé
 
Avatar de Goundy
 
Miloud Bel.
Étudiant
Inscription : avril 2005
Messages : 591
Détails du profil
Informations personnelles :
Nom : Miloud Bel.
Âge : 26
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2005
Messages : 591
Points : 324
Points : 324
Le kill ne m'interresse pas donc sinon c'est bon, merci je vais me documenter, si vous avez des choses à ajouter n'hésitez pas
__________________
Compil your life guy!
The Aures Project
Goundy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2006, 17h15   #6
Rédacteur
 
Avatar de gege2061
 
Inscription : juin 2004
Messages : 5 850
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Indre et Loire (Centre)

Informations forums :
Inscription : juin 2004
Messages : 5 850
Points : 8 299
Points : 8 299
Bonjour,

On parle de signaux ou d'appels système

En ce qui concerne les appels système, il faut regarder du côté des modules, d'après mes vagues souvenirs tu peux intercepter un appel système grâce à son numéro (défini dans un fichier d'en tête du noyau) et le remplacer par une fonction maison, ne pas oublier de faire appel à l'appel système d'origine si c'est vital (je m'étais amusé avec exec : réinstallation du système garantie )

Tu trouvera surement ce que tu cherche dans le kit de survie du developpeur Linux
__________________
gege2061's blog
gege2061 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 06h27   #7
Membre régulier
 
Avatar de pirus
 
Inscription : février 2006
Messages : 86
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 86
Points : 82
Points : 82
salut Goundy,

je suppose que tu fais references aux appels systeme de la libc (open(2), close(2), etc..). si c'est le cas, une solution courante et pratique consiste a creer une lib dynamique (un .so sous Linux) dans laquelle tu redefinis les appels systemes qui t'interessent, puis, de jouer avec la variable d'environement LD_PRELOAD afin que ta librairie soit chargee avant les autres (y compris la libc) au moment de l'execution du binaire; de cette facon, les symboles definis dans ta lib "surchargeront" ceux des autres libs (la logique consistant a attribuer une precedance aux symboles charges en premier n'est pas forcement intuitive au premier abord).

attention, cette technique ne fonctionne bien sur que sur les binaires linkes en dynamique.

je te conseille la lecture des man suivants:

ld.so(8)
dlopen(3)

shematiquement, ta lib doit (dans l'ordre):

. dans le _init(), faire un dlopen() de /lib/libc.so.6, puis y recuperer les adresses des fonctions originales via des appels a dlsym(),
. declarer et definir les fonctions "surchargees",
. chaque fonction surchargee appelera eventuellement la fonction d'origine, dont l'adresse aura ete obtenue lors de la premiere etape (et le cas echeant retournera sa valeur de retour).

attention aux petits pieges (un printf() peut avoir comme effet de bord un appel a write(), etc.. donc attention aux eventuels appels recursifs).

ensuite, il te suffit de definir LD_PRELOAD avant de lancer le binaire dont tu souhaites detourner les appels systemes. une bonne methode est de faire ca dans un shell a part:

(export LD_PRELOAD=./mylib.so; /bin/telnet 127.0.0.1 1234)

tu peux trouver de nombreux exemples sur le web en cherchant simplement "LD_PRELOAD" sur Google.
pirus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2006, 15h59   #8
Membre du Club
 
Inscription : novembre 2005
Messages : 58
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 58
Points : 58
Points : 58
Advances in Kernel Hacking
1°) http://www.phrack.org/phrack/58/p58-0x06
2°) http://www.phrack.org/phrack/59/p59-0x05.txt

Linux on-the-fly kernel patching without LKM
http://www.phrack.org/phrack/58/p58-0x07

Toutes ses techniques sont detecter mais c'est deja un bon commencement noter aussi que la plupart de ses techniques ne fonctionne pas avec le kernel 2.6 car la syscall table n'est plus exportes
jean-kevin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h22.


 
 
 
 
Partenaires

Hébergement Web