* Ces horaires sont donnés à titre indicatif.
Ce cours débute par une présentation de l’environnement de programmation des systèmes Unix/Linux et se prolonge par une analyse d’intrusion est réalisée dans un environnement virtuel.
La première partie du cours, deux axes seront développés : la programmation de l’interpréteur de commande bash et la programmation système à l’aide du langage C. Les risques liés à l’environnement défini par le shell et à l’utilisation d’exécutables seront abordés.
Le shell est l’interface naturelle pour l’exécution de tâches pour plusieurs raisons : c’est en premier lieu l’interface naturelle entre l’utilisateur et le système. Il définit un langage permettant l’exécution, la programmation et la gestion des processus, mais également la gestion des flux d’informations entre les processus. Les shells supportent en règle générale des structures de contrôle qui permettent la réalisation de tâches simples tout comme des tâches plus sophistiquées. Le Bash sera utilisé comme exemple de shell et un ensemble minimal de commandes classiques sera présenté. La programmation de scripts sera également abordée.
La programmation système sera abordée à travers le langage C, en raison de son rôle central dans les systèmes de type Unix. Le langage sera abordé par le biais des fonctions permettant d’étendre les fonctionnalités du shell : exécution de code SUID/SGID, définition de sémaphores, partage de mémoire… Les outils intervenants dans le processus de compilation seront également abordés.
Dans une seconde partie, une analyse forensic est proposée. La mise en place d’un environnement virtuel permet de reconstituer des éléments de contexte utiles à l’analyse d’une intrusion post-mortem (iptable, virtualisation). L’attaque porte sur un gestionnaire de service web.