Question:
Quels sont les différents formats UPX et en quoi diffèrent-ils?
qbi
2013-03-24 01:12:39 UTC
view on stackexchange narkive permalink

J'ai récemment posé une question sur la détection de la compression UPX. 0xC0000022L voulait savoir s'il s'agissait d'un UPX pur. Cependant, jusqu'à ce point, je n'étais au courant que de l ' UPX standard. Ma question est donc:

  • Quelles versions / modifications d'UPX existent-elles?
  • En quoi diffèrent-elles? Quelles sont leurs fonctionnalités?
Trois réponses:
#1
+16
Ange
2013-04-12 01:45:33 UTC
view on stackexchange narkive permalink

Tout d'abord, voyons la structure UPX.

Structure UPX

  1. Prologue

    1. CMP / JNZ pour Vérification des paramètres des DLL

    2. Pushad, définir des registres

    3. alignement NOP facultatif

  2. Algorithme de décompression

    • que ce soit NRV ou LZMA
  3. Restauration d'appels / sauts

    • UPX transforme les appels relatifs et saute en appels absolus, pour améliorer la compression.
  4. Imports

    • charger des bibliothèques, résoudre des API
  5. Réinitialiser les indicateurs de section

  6. Épilogue

    • nettoyer la pile
    • sauter au point d'entrée d'origine

Pour plus de détails, ici est une IDA commentée (version gratuite) d'un PE UPX.

UPX modifié variantes

Les parties simples comme prologue / épilogue sont faciles à modifier, et sont par conséquent souvent modifiées:

  • polymorphisme de base: remplacer une instruction par un équivalent
  • les déplacer avec des sauts

Les parties complexes comme la décompression, la restauration des appels, le chargement des importations sont généralement conservées sans modification, donc généralement, un code personnalisé est inséré entre elles:

  • un anti-débogage
  • une boucle xor supplémentaire (après décompression)
  • un marqueur qui sera vérifié plus loin dans le code décompressé, afin que le fichier sache qu'il a été décompressé.

truquer

Comme le prologue ne fait pas grand-chose, il est également trivial de le copier dans le EntryPoint d'un sur PE emballé UPX, pour tromper les identifiants et faux emballage UPX.

Certains outils s'appuient également sur les noms de section par défaut, dans le cas des fichiers PE.
#2
+12
Peter Andersson
2013-03-24 01:29:11 UTC
view on stackexchange narkive permalink

J'ignorerai qu'il existe plusieurs algorithmes de compression dans UPX et qu'il existe plusieurs versions d'UPX.

Généralement, lorsque les gens demandent s'il s'agit d'un UPX simple ou vanille, c'est parce que les logiciels malveillants et autres logiciels aiment prendre UPX et le modifier légèrement afin qu'il ne puisse pas être décompressé avec l'exécutable UPX standard et que les antivirus avoir plus de mal à le déballer. Ce n'est pas très efficace pour contrer l'ingénierie inverse.

Spot sur. Vous ne pouvez pas lire dans les pensées, n'est-ce pas? ;)
Pouvez-vous inclure des exemples / sites sur la façon dont il a été modifié? De telles informations pourraient en outre constituer une réponse solide. :)
Et si une dérivation d'UPX est utilisée comme mécanisme de protection, vous pouvez parier qu'elle produira des faux positifs jusqu'à ce que vous soyez bleu dans le visage. UPX a été effectivement classé comme un outil malveillant par la plupart des sociétés de sécurité, un destin commun aux bibliothèques open source et aux outils exécutables.
#3
+5
EfForEffort
2013-03-24 05:11:30 UTC
view on stackexchange narkive permalink

Je ne sais pas si c'est ce que vous demandez, mais UPX a plusieurs façons de compresser un format donné. Par exemple, un ELF - peut être décompressé directement en mémoire - peut être décompressé dans / tmp et exécuté à partir de là

Par défaut, la première option est préférée, mais je ne pense pas que ce soit obligatoire. Consultez le Manuel UPX pour plus de détails.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...