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 :

Interpreteur binaire linux


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut Interpreteur binaire linux
    Bonjour,

    pour un projet je dois effectuer un chiffrement sur un fichier binaire. Je chiffre donc mon fichier et j'injecter mon code de déchiffrement, celui-ci effectue bien le déchiffrement (un simple xor).

    Cependant, lors de l’exécution l'interpreteur (./helloworld), me renvoie une erreur :

    Ce qui arrive évidemment car les instructions chiffrées ne représente plus des instructions valides.

    Je me suis mis en tête de contourner cette restriction. Pour cela j'insère une interruption (exit), que je modifie ensuite dynamiquement en une interruption inutile.

    Malheureusement je n'arrive pas à tromper l’interpréteur, car celui-ci détecte ma modification.

    J'ai remarqué un point intéressant :
    - Le processeur charge des blocs d'instruction en mémoire (en cache), donc je dois effectuer la modification avant le chargement du bloc.

    Je voulais savoir si l'interpréteur linux faisait de même (j'en suis convaincu ), et surtout si il le fait utilise-t-il le processeur ? Ou s'agit-il d'un logiciel de check interne, donc qui peut avoir une configuration différente ou que je peux tenter de tromper.

    Je voulais savoir si vous aviez de la documentation sur le sujet.

    J'espère avoir été clair sur ce sujet relativement complexe, et je suis disponible pour tout renseignement supplémentaire.

    merci d'avance de votre aide

    p.s. Je travaille sur :

    OS : Linux armadeus 2.6.29.6
    Support matériel : APF27

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    j'aurai plutot pensé faire carrement autrement, faire un binaire autoextracteur style compression+encryptage qui copie un bin en mémoire adressée et l'execute ça ralentit le démarrage de l'appli mais ca marche du coup puisque le code interpreté est "lisible" nativement

    comme ça tu travailles qu'en memoire et donc le code "executé" n'est jamais visible par l'utilisateur ni un bot...a moins de faire un dump de toute la ram pile poil au bon moment entre la copie et l'execution, et encore savoir qu'il y a un truc interessant dedans et savoir a quelle adresse etc....bref quasi impossible...

  3. #3
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut
    Oui c'est sur quoi je vais me rabattre si je n'arrive pas à gagner ma lutte avec l’interpréteur linux. Par contre le quasiment impossible, je ne suis pas d'accord, les packers demande un minimum de connaissance, mais ils sont largement dumpable ;=)

    [EDIT] L'exécutable livré est bien sur entre les mains de l'utilisateur, je travaille sur la mise en place de protection anti Reverse-engeneering. Dans ce cas la faire un dump n'est pas excessivement difficile.

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    je dis pas que c'est pas dumpable je dis qu'il faut etre déjà sur la bonne machine, et au bon moment, etc...ETc...etc... et même si tu as tout ça il faut encore savoir quoi chercher..... donc .... la probabilité est a peut pres celle de gagner au loto quoi

    bien sur ca restera eternellement possible tant que l'humain existera.... mais bon il suffit d'éliminer la menace... genre le 21/12/2012 vers 21H30....

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Par défaut
    C’est normal que je ne comprenne pas un mot de cette affaire ? Interpréteur linux ? Mais de quoi parlez-vous ?
    Si un code est lancé, il n'y a pas d'interpréteur. Le code binaire n'est pas interprété, il est exécuté directement par le processeur (à quelques subtilités prêts quand même) : soit il est conforme, soit il ne l'est pas.
    Si vous parlez du shell, le shell ne fait pas de vérification du code, ni le noyau d'ailleurs. Un code qui fait une illegal instruction émet un code SIGILL et plante. On peut capturer un SIGILL pour faire ce qu'on veut, mais c'est à l'intérieur de helloworld qu'il faut faire le boulot, pas ailleurs.

  6. #6
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2009
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 377
    Par défaut
    Si vous parlez du shell, le shell ne fait pas de vérification du code, ni le noyau d'ailleurs. Un code qui fait une illegal instruction émet un code SIGILL et plante. On peut capturer un SIGILL pour faire ce qu'on veut, mais c'est à l'intérieur de helloworld qu'il faut faire le boulot, pas ailleurs.
    J'aurai dis pareil en premier temps, mais j'ai pas l'impression que cela se passe vraiment comme ça.

    Voila les tests que j'ai réalisé et pourquoi je pense qu'il y a une couche de test avant exécution :

    - Si je lance mon programme dans gdb il effectue bien le travail, pas de SIGILL
    - Si je trace pas a pas avec IDA-PRO, il effectue bien le travail que je lui demande (dechiffrement de mes opcodes).

    Mais je vais quand même faire un dernier test, je vais écrire sur la sortie standard avant ma routine de déchiffrement, si il affiche quelques chose c'est qu'il n'y a pas de pré-analyse et que je foire à quelque part d'autre.

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

Discussions similaires

  1. [MySQL-5.6] Comment installer les binaires sur une VM opteron GNU/Linux
    Par qadddd dans le forum Installation
    Réponses: 2
    Dernier message: 09/04/2013, 17h34
  2. Cherche les binaires csscan 10gr2 32 bits Linux
    Par tck-lt dans le forum Installation
    Réponses: 1
    Dernier message: 14/11/2012, 14h17
  3. fichier binaire de debian linux
    Par mariem2 dans le forum Linux
    Réponses: 1
    Dernier message: 25/03/2009, 21h11
  4. interpreteur de fichier binaire
    Par sone47 dans le forum Langage
    Réponses: 0
    Dernier message: 24/02/2009, 16h18
  5. Réponses: 1
    Dernier message: 21/12/2006, 13h06

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