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

Windows Discussion :

A propos des DLL (sécurité, injection ..)


Sujet :

Windows

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Points : 59
    Points
    59
    Par défaut A propos des DLL (sécurité, injection ..)
    Dans le cadre du portage d'une appli maison vers Windows, je suis plongé dans l'api win32 et plus précisement sur les DLL.
    Après une question sur FreeLibrary(), en voilà une autre par contre sur la sécurité de l'usage des DLL. En fait plusieurs autres.

    1. Quel(s) solution(s) existe(nt) au niveau de l'api win32 pour vérifier que la DLL chargée est bien celle qui était attendue (qu'un rigolo ne s'amuse(ra) pas à remplacer la DLL en question par une autre DLL, exportant les meme fonctions mais executant en fait tout à fait autre chose) ? Ou je dois passer par la bonne vieille vérification du checksum du fichier?

    2. Est-il possible d'intercepter les évenements (s'ils existent au niveau du processus sujet à l'injection) DLL_PROCESS_ATTACH et DLL_THREAD_ATTACH pour éviter l'injection de DLL, ou y'a t'il une autre facon de proteger les processus contre cela?

    Certains diront que c'est de la parano sécuritaire, c'est peut être vrai (j'ai l'impression de pas maitriser totalement les droits et privilèges et autres concepts sous windows comme sous unix) et c'est que les DLL en question me sont fournis sous ce format là, quand on maitrise pas vraiment les chose (la programmation api win32 et les environnements windows), on a souvent peur que quelque chose nous échappe ...

    Merci d'avance pour votre aide/éclaircissements.

  2. #2
    Futur Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par hh-cx Voir le message

    1. Quel(s) solution(s) existe(nt) au niveau de l'api win32 pour vérifier que la DLL chargée est bien celle qui était attendue (qu'un rigolo ne s'amuse(ra) pas à remplacer la DLL en question par une autre DLL, exportant les meme fonctions mais executant en fait tout à fait autre chose) ? Ou je dois passer par la bonne vieille vérification du checksum du fichier?
    A ma connaissance il n'y en a pas. Les DLL "Proxy" en sont l'exemple parfait. Elles permettent de dérouter les appels de fonction de la library vers une DLL intermédiaire qui possède les mêmes interfaces de fonctions que ceux de la DLL d'origine.
    Il existe des DLL proxy pour DirectX ou OpenGL qui permettent d'intercepter les objets 3D des applications ou jeux video pour les enregistrer et s'en servir dans nos propres applications.

  3. #3
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    comme indiqué par Agadoodoodoo, il n'y pas de solution simple pour authentifier une dll au chargement
    et c'est bien commode parce que c'est un trick que j'utilise souvent
    quant au checksum, pas très réaliste car il ne suffit pas de vérifier les dll explicitement liées ou chargées dynamiquement par le prog mais aussi toutes celles chargées par la foultitude des libs standards microsoft qui peuvent varier suivant les version de l'os...
    Est-il possible d'intercepter les évenements (s'ils existent au niveau du processus sujet à l'injection) DLL_PROCESS_ATTACH et DLL_THREAD_ATTACH pour éviter l'injection de DLL, ou y'a t'il une autre facon de proteger les processus contre cela?
    l'injection de dll n'agit généralement pas au stade de la création du process
    le +souvent, elle se fait à partir d'un autre process vers le process cible déjà créé au moyen d'api système documentée ou mieux encore émulée pour contourner les protections éventuelles
    la dll injectée prend ensuite la main au moyen de hooks divers et variés

    (la programmation api win32 et les environnements windows), on a souvent peur que quelque chose nous échappe ...
    sous windows, c'est déjà fait...
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 44
    Points : 59
    Points
    59
    Par défaut
    Citation Envoyé par Agadoodoodoo Voir le message
    A ma connaissance il n'y en a pas. Les DLL "Proxy" en sont l'exemple parfait.
    Citation Envoyé par omen999 Voir le message
    l'injection de dll n'agit généralement pas au stade de la création du process
    le +souvent, elle se fait à partir d'un autre process vers le process cible déjà créé au moyen d'api système documentée ou mieux encore émulée pour contourner les protections éventuelles
    la dll injectée prend ensuite la main au moyen de hooks divers et variés sous windows, c'est déjà fait...
    Au moins comme ca c'est clair merci à vous deux.
    Je pensais concrétement que lorsqu'un autre process lancerait un procédure d'attachement de dll au mien, il y'aurait un évenement à récupérer quelque part. Apparemment non.
    Pour le checksum, je charge une 12ène de DLL faite maison, et je pense que je vais adopter cette solution, au moins pour ajouter un obstacle.

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

Discussions similaires

  1. à propos des .dll .ocx utilisés par un programme VB6
    Par HRS dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/11/2012, 13h34
  2. Toujours à propos des DLL
    Par Athur dans le forum Threads & Processus
    Réponses: 6
    Dernier message: 17/03/2011, 19h29
  3. Réponses: 1
    Dernier message: 07/10/2009, 23h15
  4. Questions à propos des dll
    Par sansblague dans le forum C++
    Réponses: 3
    Dernier message: 14/08/2007, 19h00
  5. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22

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