Aller au contenu

TP2 — Analyse statique avec des outils standards (2h)

Cadre du TP

L'exécutable analysé dans ce TP (programme_pedagogique) est un binaire bénin, compilé spécialement pour l'exercice à partir d'un code source fourni par l'enseignant : il n'exécute aucune action nuisible et ne contacte aucun serveur réel. Il a simplement été conçu pour présenter, à l'analyse statique, des caractéristiques (structure, chaînes de caractères, table d'importation) proches de celles décrites en cours (chapitre 2), afin de s'exercer sur des outils réels sans aucun risque.

Objectifs

  • Utiliser des outils standards d'analyse statique sur un exécutable pédagogique.
  • Identifier le type de fichier, ses sections et sa table d'importation.
  • Repérer des indices d'obfuscation ou d'empaquetage à partir de mesures d'entropie.

Exercice 1 — Identification et empreinte

  1. Identifier le type réel du fichier programme_pedagogique fourni, indépendamment de son extension :
file programme_pedagogique
  1. Calculer son empreinte SHA-256 et la consigner comme référence pour la suite de l'analyse.

Exercice 2 — Extraction et analyse des chaînes de caractères

Extraire les chaînes de caractères imprimables du binaire et identifier celles qui semblent correspondre à des indices exploitables (chemins de fichiers, éventuelles adresses réseau fictives, messages de journalisation) :

strings -n 6 programme_pedagogique > chaines.txt

Classer les chaînes trouvées en catégories (système, réseau, message utilisateur, autre) dans un court tableau.

Exercice 3 — Structure du binaire et table d'importation

À l'aide d'un outil adapté au format du binaire fourni (objdump, readelf sous Linux, ou un équivalent indiqué par l'enseignant), lister :

  1. Les sections du fichier (.text, .data, .rodata, etc.) et leur taille respective.
  2. Les fonctions de bibliothèques externes importées par le programme.
readelf -S programme_pedagogique     # sections
readelf -d programme_pedagogique     # dépendances dynamiques
objdump -T programme_pedagogique     # symboles importés (le cas échéant)

À partir de cette liste, indiquer quelles capacités potentielles du programme peuvent raisonnablement être déduites de ses importations (par exemple, des fonctions de manipulation de fichiers, de réseau, ou de processus), en rappelant qu'une importation seule ne prouve pas un comportement, mais l'oriente.

Exercice 4 — Désassemblage ciblé et entropie

  1. Désassembler la fonction principale du programme et identifier, à l'aide des motifs vus en cours (comparaisons, sauts conditionnels, appels de fonction), la logique générale qu'elle implémente.
objdump -d -M intel programme_pedagogique | less
  1. Calculer (avec le script Python fourni par l'enseignant ou un outil équivalent) l'entropie de chaque section du binaire, et indiquer si une section présente une entropie anormalement élevée, révélatrice d'un empaquetage ou d'un chiffrement de contenu.

À rendre

Le tableau des chaînes classées (exercice 2), la liste commentée des importations (exercice 3), et une brève synthèse écrite (15 lignes maximum) résumant les capacités potentielles déduites de l'analyse statique du programme pédagogique, avec ses limites.


Dr. Zakaria Sawadogo — École Polytechnique de Ouagadougou