TP2 : Analyse d'un sample malveillant simple

Kaddate |

Dans ce second TP, j'ai développé un malware assez basique qui adopte des comportements classiques qu'on peut retrouver dans la nature.

Ce TP est clairement plus difficile que le premier. C'est OK si vous ne trouvez pas tout : je veux surtout comprendre votre démarche. Si je vois que vous avez appris des trucs et que vous vous êtes creusé la tête, je serai content :) .

Je veux un rendu par personne. Mais vous pouvez faire les TPs en groupe sans soucis, hésitez pas à vous entraider.

Vous pouvez récupérer le sample ici : https://gitlab.com/Kaddate/m2-cyber-malware-analysis/-/tree/main/tp2
J'ai compilé plusieurs versions (OS / arch), prenez celle que vous voulez.

Pour les Mac users… bon courage ¯\_(ツ)_/¯

ATTENTION

Même si le malware est contrôlé, ne le lancez pas n'importe où. Utilisez un dossier ou une VM maîtrisée.


Objectif

Vous êtes dans la peau d’un analyste. Votre objectif premier est de : comprendre ce que fait ce programme.

Pas juste en surface, mais vraiment :
- son comportement
- ses objectifs
- ses mécanismes

Et surtout : comment on s’en défend. C'est ça l'objectif de fin d'un malware analyst


Ce à quoi vous devez être capable de répondre

À la fin du TP, vous devriez être capables de répondre (au moins partiellement) à ces questions :

  • À quelle(s) famille(s) ce malware peut être rattaché ?
  • Est-ce qu’il interagit avec le système ? Comment ?
  • Est-ce qu’il communique avec l’extérieur ?
  • Est-ce qu’il y a une logique de persistance ou de dissimulation ?
  • Est-ce qu’il exploite quelque chose ?
  • Quels sont les impacts sur une machine infectée ?
  • Comment on le détecte ?
  • Est-ce qu'il y a un kill switch, aka un moyen d'inverser ses dégats ?

Gros bonus si vous pouvez me proposer des méthodes concrètes pour essayer de le détecter.


Approche conseillée (mais non obligatoire)

Vous êtes libres de votre méthodologie.
Mais en pratique, une approche classique ressemble à ça :

  • reconnaissance du binaire
  • analyse statique
  • analyse dynamique
  • corrélation des résultats

Encore une fois : vous faites comme vous voulez.


Reconnaissance

Avant même d’ouvrir Ghidra ou de lancer le binaire, posez-vous des questions basiques :

  • C’est quoi ce fichier ?
  • Est-ce qu'on peut identifier le langage dans lequel il a été développé ?
  • Est-ce qu'à première vue il contient des strings qui indiquent que c'est un malware ?

Analyse statique

Sans exécuter le programme :

  • essayez de comprendre sa structure
  • identifiez les fonctions importantes
  • repérez les comportements suspects

Vous pouvez chercher :

  • manipulation de fichiers
  • appels réseau
  • chaînes intéressantes (domaines, chemins, messages)
  • logique conditionnelle
  • patterns connus (chiffrement, propagation, etc.)

Analyse dynamique

Là, on arrête de deviner et on observe, c'est parfois beaucoup plus simple.

Lancez le programme dans un environnement contrôlé et regardez :

  • ce qu’il modifie
  • ce qu’il crée
  • ce qu’il supprime
  • ce qu’il contacte
  • comment il se comporte dans le temps

Ce que vous devez rendre

Un compte rendu simple mais structuré :

  • votre méthodologie
  • vos observations
  • vos hypothèses
  • vos conclusions

Pas besoin d’avoir tout juste.
Par contre, il faut que ça réfléchisse (je veux juste éviter que vous balanciez le binaire dans Claude :'( ).