J'essaie de trouver toutes les vulnérabilités dans mon système donné.
Supposons qu'un utilisateur malveillant a l'exécutable (.exe
fichier) de mon application .NET (C #) et un malveillant DLL il ou elle a créé. Peut-on le DLL être injecté dans mon exécutable à exécuter Code contenu dans la DLL?
Le article Wikipedia concernant l'injection DLL a bien fait un résumé de différentes techniques.
Résumer:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
et il sera chargé dans chaque processus (nouveau) qui relie User32.dll (c'est-à-dire à peu près tous les processus en mode utilisateur)Oui, il y a plusieurs possibilités de faire cela et une très grande partie des attaques repose sur DLL accrochaing.
Et c'est aussi la cause, pourquoi les versions Windows plus récentes et les plus récentes contiennent des politiques normalement plus strictes et plus strictes sur la manipulation DLL.
L'objectif principal est de construire un faux DLL, qui n'envoie que certaines des appels d'API dans sa DLL d'origine et fait également une autre chose. L'objectif de l'attaquant est dans ce cas de laisser charger la fausse DLL par l'application à craquer, contre sa version originale.
L'alternative à cette solution est que lorsque la DLL d'origine obtient un type de hack binaire. C'est plus difficile.
Le fonctionnement interne de la DLL accrochée est ce qui suit:
dllopen()
Appelez et trouve l'adresse des appels de l'API également.Comment pouvez-vous injecter la DLL accrochée dans l'application?
La solution la plus courante consiste uniquement à mettre cela dans le même répertoire où l'EXE à accrocher une vie. Sur le point de départ d'un exécutable, Windows recherche ses DLL toujours dans le même répertoire d'abord. C'est ce qui se fait par la plupart des fissures de protection/activation de copie logicielles.
Une deuxième possibilité est de mettre la dll enveloppe quelque part sur le chemin, mais pourtant avant C:\windows\...
. Les DLL sont recherchées dans le chemin, comme les exécutables également.
Une troisième possibilité est d'utiliser un débogueur ou l'API Windows initialement destiné au débogage. Avec cela, vous pouvez manipuler le code d'ouverture DLL de l'exe exécutant. C'est aussi dur aussi bien, bien que cela soit aussi vraiment utile.