Ultimate Packer for Executables (UPX) est un packeur open source capable de réduire considérablement la taille d’un fichier exécutable (davantage que les fichiers Zip) et compatible avec un large éventail de formats exécutables, comme les DLL Windows, les applications macOS ou les fichiers ELF Linux.
Les éditeurs utilisent parfois le packing pour empêcher la rétro-ingénierie basique ou la redistribution illégale. Les packeurs prennent essentiellement l’exécutable d’origine et lui ajoutent un petit morceau de code appelé « stub » dans l’exécutable nouvellement créé. Le stub sert ensuite à décompresser le fichier et à « restaurer » l’exécutable dans son état d’origine.
Si certains packeurs comme UPX se contentent de compresser le fichier, d’autres peuvent également le chiffrer.
Les attaquants peuvent utiliser la compression pour dissimuler des logiciels malveillants dans des fichiers apparemment inoffensifs et légitimes, ce qui peut tromper la détection basée sur les signatures, voire des solutions antivirus avancées basées sur l’intelligence artificielle (IA). Voici comment les hackers peuvent utiliser UPX pour rendre les logiciels malveillants indétectables.
À lire également : Comment les hackers échappent à la détection
- Comment fonctionne l’évasion basée sur UPX
- La compression, une technique d’évasion classique
- Détecter les fichiers empaquetés avec UPX
- Déjouer le brouillage d’UPX et les fichiers corrompus
- Analyse des packeurs et techniques de dépaquetage anti-UPX
- Bonnes pratiques pour limiter les logiciels malveillants empaquetés avec UPX
Comment fonctionne l’évasion basée sur UPX
UPX peut empaqueter un exécutable malveillant et modifier ses octets afin de générer une version indétectable du logiciel malveillant.
Grâce à un exécutable d’archive auto-extractible, un packeur peut se décompresser en mémoire lorsqu’un fichier empaqueté est exécuté.
Le fichier empaqueté est généralement plus petit sur le disque, mais plus volumineux en mémoire. Si vous examinez un fichier suspect, vous pourrez voir des sections typiques comme les suivantes :
- UPX0 : Une section vide qui ne contient aucune donnée brute réelle, mais dont la taille en mémoire virtuelle est énorme
- UPX1 : Le stub et l’exécutable compressé
Il existe d’autres sections, mais nous nous en tiendrons ici à l’essentiel.
Lorsque le fichier empaqueté avec UPX est exécuté, toutes les sections empaquetées sont décompressées en mémoire, y compris le code malveillant que le hacker peut y avoir stocké, puis le programme passe au point d’entrée d’origine (OEP) pour exécuter l’exécutable.
La compression, une technique d’évasion classique
Si l’évasion basée sur UPX peut sembler un peu difficile à comprendre au premier abord, la compression est une méthode classique pour éviter la détection par les antivirus.
Un test simple que vous pouvez effectuer consiste à téléverser la version originale et la version empaquetée d’un échantillon de logiciel malveillant sur votre plateforme préférée — par exemple, VirusTotal. La version empaquetée est généralement détectée bien moins souvent que la version originale du logiciel malveillant, et de nombreux outils antivirus peuvent tout simplement ne pas la détecter.
Il n’existe pas beaucoup de statistiques sur la fréquence d’utilisation d’UPX dans le déploiement de logiciels malveillants, mais MITRE recense diverses procédures « fondées sur le packing » que les adversaires peuvent exploiter pour dissimuler leur code. De nombreux cas semblent impliquer UPX.
Détecter les fichiers empaquetés avec UPX
Vous pouvez essayer une simple commande UPX pour repérer les fichiers empaquetés avec UPX :
upx -l {suspicious_binary}
Bien sûr, cette méthode est limitée et ne fonctionnera pas à tous les coups. Une autre option limitée, mais néanmoins valable, consiste à afficher le code hexadécimal et à rechercher des chaînes spécifiques comme UPX :
hexdump -C {suspicious_binary} | grep "UPX"
Vous pouvez également utiliser des analyseurs d’exécutables portables (PE) pour détecter les fichiers empaquetés avec UPX.
Déjouer le brouillage d’UPX et les fichiers corrompus
De nombreux exploits observés sur le terrain ne s’appuient pas sur UPX lui-même pour décompresser le code malveillant, mais génèrent intentionnellement des fichiers empaquetés corrompus.
L’exemple basique que nous avons examiné précédemment comportait des sections très reconnaissables, mais il est possible de modifier des octets ou d’insérer des chaînes à l’aide d’un éditeur hexadécimal ou d’un autre outil afin de rendre le fichier beaucoup plus difficile à détecter.
Même si une telle opération risque de rendre impossible le dépaquetage classique avec la commande upx -d et de provoquer des erreurs, le binaire continuera de s’exécuter.
Des outils comme upxdump.py, recommandés par Akamai, peuvent être capables de réparer des fichiers empaquetés avec UPX intentionnellement corrompus, en réparant les en-têtes corrompus fréquemment utilisés pour brouiller les logiciels malveillants empaquetés avec UPX.
Attention toutefois : l’auteur prévient que certaines variantes se contentent de supprimer les en-têtes UPX ou d’injecter des octets nuls, ce qui ferait échouer l’outil.
Analyse des packeurs et techniques de dépaquetage anti-UPX
Les spécialistes de la rétro-ingénierie et les analystes de logiciels malveillants peuvent utiliser des outils comme ollydbg, radar2 ou même le populaire Ghydra pour analyser les fichiers empaquetés. L’étape critique consiste à déterminer si le binaire utilise ou non des techniques de dépaquetage anti-UPX avant de poursuivre.
Bien que de nombreux types de logiciels malveillants, comme Mirai, utilisent des techniques de dépaquetage anti-UPX telles que des fichiers remplis d’octets nuls pour ralentir les chercheurs en sécurité, cela ne signifie pas qu’il est impossible de les dépaqueter. Des outils comme upx-mod peuvent vous aider.
Cela dit, les acteurs les plus sophistiqués pourraient rendre leurs fichiers « indépaquetables » par les implémentations UPX standard, mais cela semble plutôt rare.
Bonnes pratiques pour limiter les logiciels malveillants empaquetés avec UPX
L’utilisation de fichiers malveillants empaquetés avec UPX montre que vous ne pouvez pas vous reposer uniquement sur les logiciels antivirus et autres solutions basées sur les signatures pour détecter les logiciels malveillants, aussi sophistiqués ces outils se présentent-ils.
Sans ces outils, vous seriez encore plus vulnérable, mais les attaquants chercheront toujours des moyens de détourner des utilitaires légitimes et de contourner la détection.
UPX est un format universel qui peut servir à cibler diverses plateformes, et les techniques de dépaquetage anti-UPX peuvent être utilisées pour entraver la rétro-ingénierie et l’analyse des logiciels malveillants.
Une bonne pratique consiste à désactiver l’exécution dans certains répertoires, comme ceux utilisés pour les fichiers temporaires et les téléchargements, lorsque les utilisateurs n’en ont pas besoin, en particulier dans les environnements professionnels, ce qui peut être réalisé à l’aide de politiques de sécurité.
Veillez à ce que le système n masque pas les extensions de fichiers, mais même si ce n’est pas le cas, cela ne garantit pas que personne ne cliquera imprudemment, notamment lors de campagnes ciblées. Vous devez journaliser les activités et comportements suspects.
À lire ensuite :





