Attaques avec des Api Windows ou Injection de code grâce à un cheval de Troie |
| a |
Introduction : Aujourd’hui il existe des méthodes plus ou moins fiables pour sécuriser les réseaux des menaces extérieures ( Firewalls, cryptage, authentification, … ) Mais le maillon faible des systèmes d’information reste encore et toujours à l’intérieur du réseau, c’est à dire le poste client. Même si l’administrateur peut faire confiance à ses utilisateurs, comment faire confiance aux logiciels qui tournent sur leurs machines ? |
| a |
| Les Chevaux de troie sont des outils d’attaque de plus en plus utilisés. Ils sont redoutables pour ce qui est de l’attaque des ordinateurs des particuliers. Mais la plupart des Chevaux de troie sont facilement détectables et inefficaces dans des environnements professionnels. |
| a |
De nos jours on a fait le tour de l’injection de DLLs. Plus récemment est apparue une nouvelle technique : injecter directement du code plutôt qu’une DLL dans la mémoire virtuelle d’un autre processus. Un programme écrira du code dans la mémoire virtuelle d’un processus en cours d’exécution, et ce code uploadera un fichier vers un serveur FTP. Cette technique contournera la plupart des pare-feux. Cependant, comme elle n’est pas nouvelle, quelques pare-feux comportent déjà des mesures contre ce genre d’approche. Pour la majorité cependant, les pare-feux ne vérifient pas les connexions sortantes des processus qu’ils considèrent sûrs. Il se peut, que vous ne compreniez pas tout ce que cet article décrit, néanmoins, sachez qu'une injection de code peut compromettre la sécurité de votre entreprise. |
| a |
Modèle de communication : La communication est la première raison d’être d’un cheval de Troie. Notre cheval de Troie communique avec le monde extérieur via le protocole HTTP. Le cheval de Troie vérifie régulièrement les ordres de l’attaquant en se connectant sur un site WEB maintenu par l’attaquant. |
| a |
| Les Firewalls à l’entrée du réseau voient les requêtes HTTP initiées par le cheval de Troie. Mais ils ne peuvent pas faire la différence avec des requêtes légitimes d’un navigateur WEB. |
| a |
Ce mécanisme de communication est simple, mais efficace. Les tunnels HTTP ne sont pas des techniques nouvelles, mais les chevaux de Troie fonctionnant ainsi sont plutôt rares. Il existe des APIs très simples permettant de générer des requêtes HTTP. Ex: WININET.DLL |
| a |
| 
|
| a |
| 
|
| a |
Injection de code : L’injection de code est une technique connue depuis 10 ans. L’injection de code directe, sans passer par DLL, est plus difficile à programmer, mais plus furtive. Mais surtout : l’injection de code ne requiert pas de privilèges particuliers. Tous les processus appartenant à l’utilisateur peuvent être injectés. |
| a |
APIs d’injection de code: - OpenProcess: Retourne un Handlevers le processus cible,
- VirtualAllocEx: Alloue de la mémoire dans le processus cible,
- WriteProcessMemory: Ecrit du code dans la mémoire allouée,
- CreateRemoteThread: Exécute le code copié à partir du processus visé.
|
| a |
Avantages pour un cheval de Troie - Contournement de Desktop Firewalls en injectant une application autorisée à se connecter,
- Peut tromper d’autres logiciels de surveillance de comportement,
- Permet au cheval de Troie de modifier le comportement des programmes injectés et d’intercepter ses APIs.
|
| a |
Utilisation dans les programmes malveillants Aujourd’hui il existe plusieurs programmes malveillants utilisant la technique d’injection : - BackStealth( proof of concept ),
- Outils de tests Firewalls,
- Optix,Beastet autres Chevaux de troie,
- Keyloggers…
|
| a |
L’avenir de l’injection de code - «Injectand die»: une fois que le cheval de Troie a injecté son code, il peut se terminer et ainsi disparaître du gestionnaire des tâches,
- Survie du thread injecté: une fois que le cheval de Troie meurt, la survie du thread injecté dépend du processus injecté.
Solution: injecter tous les processus utilisateur, ainsi que chaque nouveau processus créé. |
| a |
Api Hooking But : intercepter les appels API des programmes de la machine. Technique connue depuis 10 ans. Méthode la plus utilisée: IAT hooking ( Import AddressTable ) Ne fonctionne pas bien dans un cheval de Troie. Solution la plus efficace: API hooking par JMP |
| a |
| 
|
| a |
| 
|
| a |
| 
|
| a |
API hooking: Quel intérêt pour un « Trojan»? - Identifier les processus communiquants: hooker les APIs de communication telles que connect. But : effectuer des communications vers l’extérieur à partir de ces programmes. ( hook connect ),
- Vol des e-mails entrants et sortants. Vol des mots de passe POP3, proxyet serveur Socks. ( hookde recvetsend ),
- Espionnage et log des URL visitées et formulaires d’authentification remplis sur le Web. ( hook send ),
- Fonctionnalités « Rootkit » : cacher les fichiers et clés de registre du cheval de Troie. Le tout en mode user et… sans privilèges d’administrateur!,
- Intercepter CreateProcess pour rendre la survie du thread plus efficace. Tout processus créé est directement injecté.,
- Interdire ou simuler les connexions vers les sites de mise à jour de signature des anti- Virus ( attaque spécifique qui varie selon l’anti-virus ciblé ).
|
| a |
API hooking et « Malware » aujourd’hui Certains programmes malveillants utilisent l’API hooking, mais uniquement pour des fonctionnalités de Rootkit : Hacker Defender, Vanquish et autres rootkits. |
| a |
L’avenir de l’API hooking dans les « Malware » Hook d’APIs importantes : WinSock. Egalement CreateProcess et LoadLibraryW, afin d’effectuer les actions d’espionnage décrites. Pas d’injection de DLL |
| a |
Evolution Possibles : - Injection & API Hooking,
- Il est possible d’injecter du code sans utiliser CreateRemoteThread, (Lancement de la fonction que nous avons injectée dans la mémoire virtuelle du processus cible. Pour ce faire, on utilisera l’API CreateRemoteThread(), qui d’apres msdn.microsoft.com, "crée un thread qui se lance dans l’adresse virtuelle d’un autre processus". CreateRemoteThread() lance la fonction placée à l’adresse renvoyée par VirtualAllocEx. Un des paramètres passés désigne l’adresse où la structure a été injectée.)
- Inclure un calculateur de taille d’instruction dynamique pour l’API Hooking.
|
| a |
Communication et protocoles Nous avons utilisé le protocole HTTP, mais bien entendu il est possible de faire la même chose avec d’autres protocoles tels que : DNS, FTP, SMTP. Espionnage de trafic crypté en SSL : Faisable! |
| a |
Conclusion : Une fois exécutée, les possibilités d’un programme malveillant sont quasiment illimitées. Et ce, en dépit des Firewalls réseau, firewall personnels et autres anti- Virus. Question : puisque ces techniques existent depuis si longtemps, pourquoi ne voit-on pas plus de tels chevaux de Troie furtifs ? - Le fait que les plateformes Windows ont seulement été unifiées récemment depuis Windows 2000, Windows Xp ou encore Windows Vista,
- Au vue de leur furtivité, il est difficile de savoir s’ils se trouvent déjà sur des postes en production ou pas.
|
| a |
| Quoi qu’il en soit, il faut s’attendre à une forte augmentation dans le développement et l’utilisation de ce genre de chevaux de Troie dans les mois et années à venir. La probabilité de l’introduction d’un tel cheval de Troie est forte avec le manque de vigilance actuelle. |