Format des fichiers Office

Avant de commencer à exploiter un fichier Office (Excel, World, Powerpoint ou autre) il est nécessaire de comprendre comment ces fichiers sont formés. A première vue on pourrait s'attendre à ce qu'un fichier world ne soit qu'un fichier texte classique alors qu'en fait pas du tout, c'est bien plus sophistiqué!

En effet un fichier Office est une archive zip que l'on peut déziper:

unzip whatever.xlsm

Et qui contient tout un tas de fichiers. Mais à quoi servent-ils ?

  • [Content_Types].xml contient l'ensemble des types MIME qu'il est nécessaire de supporter pour pouvoir le fichier.
  • _rels/.rels contient la liste des relations entre fichiers (par exemple quelles sont les images attachées au document)
  • docPropx/core.xml contient l'ensemble des propriétés principales du document (nom du créateur, date de création etc)

Ensuite suivant le type du fichier que vous disséquez vous trouverez des fichiers spécifiques. Par exemple pour un fichier Excel vous aurez les fichier workbook.xml, styles.xml ou encore sheet.xml qui contiennent les données de vos tableaux alors que sur un document Word on trouvera plutôt le fichier word/document.xml qui contient votre texte.

On pourra aussi y trouver les macros (s'il y en a) dont l'extension est .bin. C'est le cas sur le screen ci-dessous:

L'analyse de la structure d'un document Office nous montre que globalement ces documents sont constitués principalement de fichiers XML compressés. Or qui dit XML dit aussi XXE. Et en effet les fichiers Office sont de très bons vecteurs d'attaques XXE. Il suffit qu'un parser mal configuré accepte n'importe quel fichier Office pour trigger une XXE qui vous permettra d'exécuter des commandes ou encore exfiltrer des données sensibles.

Mais le plus intéressant ça reste l'exploitation des macros! Or pour exploiter les macros il faut connaître un minimum le Visual Basic. La suite au prochain article :) !