Color Plant 1 (Misc) - FCSC2022

Principe:
Accéder au système SCADA (virtuel) d'une usine

Infos (cf menu latéral):
🚩 Flaggué! +389 points gagnés — 💾 Téléchargez les fichiers du challenge
FCSC{266350f412840c932b29bb095394d318c17c844f70c05f49c9998a8e614be531}

Le challenge

On doit contacter un automate via netcat pour récupérer un token et accéder à l'interface SCADA d'une usine

Partie 1, Accéder au SCADA

Un contexte est donné, avec des informations pour les deux parties du challenge (qu'on va regarder séparément)
Pour cette première partie, la liste des registres sera l'information la plus utile, dont Holding Register 0-31 qui contient le token que l'on cherche
On cherche d'abord le fonctionnement du protocole ModBus (mentionné et donné par le challenge)
Une lib Python pyModBusTCP va nous aider à directement communiquer avec l'OT, pour lire le registre contenant le token
On lit 32 octets du registre (le code est dans le zip) Holding Register à partir de l'indice zéro (informations données par le contexte du challenge)

Les octets sont alors à transcrire en ASCII. Le sleep est une astuce, très moche, pour garder la connexion ouverte car j'ignorai (à la lecture du contexte du challenge) si l'interface SCADA se coupe en cas de fermeture de la connexion TCP

On se log à l'interface SCADA via le token, et on a le flag

Le token varie au fil du temps, et il faudra donc réutiliser notre code Python pour en récupérer d'autres et résoudre la seconde partie du challenge

Flag: FCSC{266350f412840c932b29bb095394d318c17c844f70c05f49c9998a8e614be531}