Un récepteur AIS côtier, élément clé pour la transmission des signaux de navigation, a été identifié comme ayant un comportement anormal. Les autorités craignent qu’il s’agisse d’un maillon central dans la stratégie d’attaque, permettant aux pirates de détourner le fonctionnement des systèmes critiques du port tout en échappant aux dispositifs de détection.
À la suite de l’analyse du serveur SCADA, nous avons déterminé que des commandes illégitimes telles que l'ouverture de barrières maritimes pouvaient être déclenchées par la réception de messages AIS spécifiques. Ceux-ci ne pouvant provenir que des récepteurs AIS aux abords de la côte, l'équipe d'investigation les a passés en revue et a découvert que l'un d'entre eux avait un Firmware modifié.
Votre mission consiste à analyser ce Firmware modifié et de découvrir les conditions de déclenchement menant à l’exécution de ces commandes malveillantes sur le serveur SCADA, ainsi qu’à extraire toute information pouvant contribuer à identifier les attaquants.
L'objectif de cet exercice est de comprendre comment les phrases AIVDM envoyées au serveur SCADA ont été modifiées et ont permis aux attaquants d'exécuter des commandes.
Pour cela, nous allons principalement utiliser des outils de Reverse Engineering tels que Ghidra ou IDA pour analyser le binaire fourni et identifier les modifications apportées par les attaquants.
Grâce à l'analyse avec Ghidra, on peut repérer des schémas récurrents et une logique spécifique concernant le traitement des fréquences, le décodage des messages AIS ainsi que la transmission des trames AIVDM vers le serveur SCADA.
L'utilisation de modèles de langage (LLM) est également conseillée pour accélérer l'analyse du code source. Ces outils peuvent aider à clarifier le fonctionnement du décodage des messages AIS, à localiser les sections traitant les fréquences, et à cibler plus efficacement le code malveillant.
Cette approche permet de gagner du temps en évitant de comprendre tout le fonctionnement et toute la logique du code.
L'analyse du binaire révèle que le programme suit la séquence de traitement suivante :

Une fois le code malveillant identifié, nous pouvons inverser la formule utilisée par les attaquants pour dissimuler la valeur des MMSI.

En lisant le code, nous pouvons déduire la formule utilisée (simple XOR):
x = mmsi ^ 0x5A17C3D1
mmsi = x ^ 0x5A17C3D1
En appliquant la formule, nous pouvons retrouver la valeur d'origine des MMSI.
0x57D49FA9 ^ 0x5A17C3D1 = 0xDC35C78
0x57A276A9 ^ 0x5A17C3D1 = 0xDB5B578
Nous pouvons ainsi trouver deux MMSI d'origine :
230907000
230012280