Injection de Code DLL


..:: DescriptioN ::..

Là, on passe au niveau supérieur. Je vais essayer d'énoncer clairement l'utilité d'un tel programme, et sa réalisation. Tout d'abord, il s'agit d'une idée de Kdm (kodmaker@netcourrier.com). J'ai juste fait quelques modifications de code et quelques ajouts de commentaires pour bien comprendre ce qu'il a fait. Il s'agit juste d'une demande d'une page HTML avec le protocole HTTP 1.1 depuis Internet Explorer.

L'injection de code ? Késako ?

On va manipuler une DLL. Une DLL est un programme qui ne peut pas fonctionner seul. Il faut charger son code en mémoire, via un programme principal, pour exécuter le code d'une DLL. Jusque là, rien de transcendant. Le code de la DLL peut, par exemple, demander au programme principal de se connecter à un site Web et récupérer des informations. Si le programme principal est "autorisé" par le firewall, pas de soucis. Sinon, il faut utiliser l'injection. L'injection consiste à exécuter le code de notre DLL, non pas dans notre programme principal (non "autorisé"), mais dans un programme tiers (Internet Explorer, par exemple).

C'est bien beau, mais ca sert à quoi ?

On va parler de trois programmes.
Le premier est NOTRE programme principal, celui qui injecte la DLL : on le notera P1 (kInject.exe).
Le second est le code de NOTRE DLL : noté P2 (injDLL.dll).
La troisième est un programme tiers, dont on ne dispose pas du source : noté P3 (IEXPLORE.EXE).

Pour que la manipulation fonctionne, il faut un PC relié à internet (pour notre exemple) et un programme P3 "autorisé" par le firewall à se connecter à internet (Internet Explorer, AOL, eMule, Kazaa, etc ...). Le programme P1 va injecter P2 dans la zone mémoire de P3, ensuite P3 va l'exécuter. Enfin, P2 récupère le résultat (on affichera un MessageBox, avec le source HTML de la page).

C'est vraiment efficace ?

Tous les PC reliés à internet ont forcément un firewall et un antivirus à jour. J'ai moi-même Norton Antivirus 2002 et ZoneAlarm Pro 4.5.538.001. Le code que je vous propose fait clairement un bras d'honneur à ce genre de programme. Ils n'y voient que du feu. ZoneAlarm autorise IE à faire ce qu'il veut sur Internet.

J'ai peur quand même !

Il y a de quoi. Je n'ai pas encore envisagé les pires scénarios. On peut penser rapidement à un cheval de Troies capable de récupérer toutes vos informations personnelles pour les envoyer (avec votre IP) à un site internet malveillant. C'est très rapide d'envoyer ce genre d'informations, surtout avec une connexion DSL ou supérieure.

Pourquoi diffuser ce code !

Pour que les failles de sécurités soient bouchées, pour montrer que cette manipulation est possible. Ce code est assez vieux, donc il a forcément déjà du être expérimenté.
Mise à jour : depuis quelques mois, les firewalls se sont améliorés. Les dernières version de Kerio peuvent détecter l'injection de code (en mode très sécurisé), idem pour Look'n'Stop (en mode normal). Je n'ai pas testé sur d'autres.

..:: Téléchargez InjDLL ::..


..:: ScreenshotS ::..



..:: InformationS ::..

Version : 1.0 (08 juillet 2004)
Compilateur : Dev-C++ 4.9.8.10
Programmation : Langage C
Configuration Recommandée :
  • Etre relié à Internet ;)
  • Windows 2000/XP (non testé sur 95/98)


    ..:: Compilation ::..

    Sous DevCpp

    Double-cliquez sur le fichier injDLL.dev.
    Lancez la compilation en appuyant sur la touche CTRL+F11.
    Vous obtiendrez injDLL.dll

    Double-cliquez sur le fichier kInject.dev.
    Lancez la compilation en appuyant sur la touche CTRL+F11.
    Vous obtiendrez kInject.exe

    Lancez ensuite injection.bat

    dllmain.c : fichier source de la DLL
    kInject.c : fichier source du programme principal pour l'injection


    ..:: Liens ::..

    Logiciel DevCpp
    http://www.bloodshed.net/devcpp.html

    Idée
    http://espionet.com:7080/espi00gle/programmation/c/Contournement%20firewall%20-%20injection%20de%20code.html
    http://www.thehackademy.net/download.php?man=12


    BeLZeL - [http] belzel.free.fr
    belzel [at] free [dot] fr
    visiteurs