IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Unix syscalls hooking


Sujet :

Administration système

  1. #1
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    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

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    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

  3. #3
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    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

  4. #4
    Membre expérimenté

    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2004
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 060
    Points : 1 609
    Points
    1 609
    Par défaut
    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

  5. #5
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    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

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    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

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 86
    Points : 97
    Points
    97
    Par défaut
    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.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 58
    Points : 65
    Points
    65
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/10/2014, 15h13
  2. [Kylix] Kylix sous UNIX
    Par gRRosminet dans le forum EDI
    Réponses: 3
    Dernier message: 09/11/2004, 17h07
  3. write() dans une socket.. unix
    Par slack dans le forum Réseau
    Réponses: 5
    Dernier message: 18/12/2002, 20h42
  4. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 18h25
  5. [langage] Commande Unix en Perl
    Par totox17 dans le forum Langage
    Réponses: 3
    Dernier message: 20/11/2002, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo