LoadLibrary, une couche pour charger des DLL Windows dans des applications Linux

Tavis Ormandy (Tavis ormandy), chercheur en sécurité chez Google qui développe le projet ChargerLibrary, visant à porter des DLL compilées pour Windows afin de les utiliser dans des applications Linux. Le projet fournit une bibliothèque de couches avec laquelle vous pouvez charger un fichier DLL au format PE/COFF et appeler les fonctions qui y sont définies. Le chargeur de démarrage PE/COFF est basé sur du code ndiswrapper. Code de projet distribué par sous licence GPLv2.

LoadLibrary se charge de charger la bibliothèque en mémoire et d'importer les symboles existants, fournissant à l'application Linux une API de style dlopen. Le code du plug-in peut être débogué en utilisant gdb, ASAN et Valgrind. Il est possible d'ajuster le code exécutable pendant l'exécution en connectant des hooks et en appliquant des correctifs (runtime patching). Prend en charge la gestion et le déroulement des exceptions pour C++.

L'objectif du projet est d'organiser des tests de fuzzing distribués évolutifs et efficaces des bibliothèques DLL dans un environnement basé sur Linux. Sous Windows, les tests de fuzzing et de couverture ne sont pas très efficaces et nécessitent souvent l'exécution d'une instance virtualisée distincte de Windows, en particulier lorsque vous essayez d'analyser des produits complexes tels qu'un logiciel antivirus qui couvrent le noyau et l'espace utilisateur. À l'aide de LoadLibrary, les chercheurs de Google recherchent des vulnérabilités dans les codecs vidéo, les antivirus, les bibliothèques de décompression de données, les décodeurs d'images, etc.

Par exemple, avec l'aide de LoadLibrary, nous avons pu porter le moteur antivirus Windows Defender pour qu'il fonctionne sous Linux. L'étude de mpengine.dll, qui constitue la base de Windows Defender, a permis d'analyser un grand nombre de processeurs sophistiqués pour différents formats, d'émulateurs de systèmes de fichiers et d'interpréteurs de langage qui fournissent potentiellement des vecteurs pour possible attaques.

LoadLibrary a également été utilisé pour identifier vulnérabilité à distance dans le package antivirus Avast. Lors de l'étude de la DLL de cet antivirus, il a été révélé que le processus d'analyse privilégié clé inclut un interpréteur JavaScript à part entière utilisé pour émuler l'exécution de code JavaScript tiers. Ce processus n'est pas isolé dans un environnement sandbox, ne réinitialise pas les privilèges et analyse les données externes non vérifiées du système de fichiers et le trafic réseau intercepté. Étant donné que toute vulnérabilité dans ce processus complexe et non protégé pourrait potentiellement conduire à une compromission à distance de l'ensemble du système, un shell spécial a été développé sur la base de LoadLibrary. avscript pour analyser les vulnérabilités du scanner antivirus Avast dans un environnement basé sur Linux.

Source: opennet.ru

Ajouter un commentaire