Cours de sécurité : analyse et défense

Tristan de CACQUERAY

Solal JACOB

Julien STERCKEMAN


Table des matières

1. Présentation du cours de sécurité
Pré-requis
Objectifs
Méthodologie
Vous avez dit sécurité informatique ?
Introduction
La sécurité des systèmes
La sécurité des réseaux
2. La sécurité d'un système en général
Théorie: comment ca marche ?
Les mots de passe
Les privilèges des processus
L'utilisation d'une chroot
La sécurité de X
Vulnérabilités: à quel point c'est vulnérable ?
Les failles liées à la configuration
Création d'une backdoor avec un shell setuidbité
Casser la chroot
Le danger des RootKit (rk)
Exploitation d'un Xauthority
Défense: comment se protéger ?
Augmenter la sécurité d'un noyau Linux avec Grsecurity
N'autoriser que le minimum de connexions réseaux
Les IDS locaux et les anti-rootkits
3. L'analyse de fichier binaire
Théorie
Intro
La programmation de bas niveau
L'analyse dynamique
Syscall / Library Monitor
Comment marche un debugger (gdb)
Les commandes de bases de gdb a connaitre
Exercice: Modifier le flux d'execution d'un programme
L'analyse statique
Exercice: Modifier un programme pour en faire un keygen
Défense
Quelques protections basiques contre l'analyse statique et dynamique
Aller plus loin avec l'analyse binaire: elfsh, ...
Etude de cas reel: Analyse d'un binaire retrouve apres une attaque sur le twiki du lse
4. Exercices a rendre du TP numero 1
Les rootkits LKM
Preliminaires
Ce qui est attendu de vous
Crackme
Preliminaires
Ce qui est attendu de vous
5. Introduction aux attaques logiciel
Théorie: comment ca marche ?
Exploiter un logiciel dites vous ?
L'organisation de la memoire
Qu'est-ce qu'un shellcode ?
Vulnérabilités: comment cela s'exploite ?
Ecrivons un shellcode
Exercice: Un `catcode`
Exploitons un buffer overflow
Exo: exploit classique
Quelques exemples de la vie reelle
Défense: comment se protéger ?
Protections Userland contre les débordements de tampons
6. Attaque logiciel avancée
L'art des shellcodes avancés
Les protections contres les shellcodes
Differentes techniques pour passer outres les filtres communs.
Comments les IDS detecte les shellcodes ?
Les techniques avances des IDS
Une messagerie pas si sure que ca
String Format Bug
'Utilisation' speciale de printf
Ecrire dans la mémoire
Résumé
Les débordements sur le tas
Doug Lee malloc (linux)
Poul-Henning Kamp's malloc (*BSD)
Les race conditions
Des exemples
Défense
Protection mémoire avec PaX
7. Exercices à valider
Consignes
1/ Buffer Overflow
1-1/ Retourner dans l'environnement
1-2/ Retourner dans le buffer
1-3/ Retourner dans un shellcode avec randomize_va_space activé.
1-3_bis/ Exploiter un off-by-one
2/ Shellcoding
2-1/ Passer le detecteur de chiche
2-2/ Faire un bind shell
3/ String Format Bug
3-1/ Trouver les adresses
3-2/ Coder l'exploit
4/ Heap Overflow
4-1/ Trouver le bug
4-2/ exploiter un 'Heap Overflow' avec la version 2.2.4-x de la glibc
4-3/ enquête sur la glibc-2.8.6
8. Introduction à la sécurité des réseaux
Introduction a la securite reseau
Théorie
Forger des paquets a la main
Fingerprinting
Vulnerabilite et Defense
Le sniffing et l'ARP spoofing
Le port scanning
Le Spoofing
Quelques failles courantes sur des sites internet
9. Exercices a rendre du TP numero 3
Backdoor avancee, reniflage de paquets
Preliminaires
Ce qui est attendu de vous
10. Computer Forensic
L'analyse Legal (Computer Forensic)
Live Response
Live Response
Analyse des donnees volatiles
Analyse des donnees non-volatiles
Network-Based Evidence
NBE: Network-Based Evidence
Analyse des NBE
Duplication
Forensic Duplication
Une duplication avec des outils open-source.
Forensic Analysis
Retrouver des fichiers detruits.
Creer une liste de temps d'acces des fichiers
Supprimer les fichiers connus
Signature de fichier
Recherche de chaine de caracteres et de fragments de fichiers
11. Conclusion
Bibliographie

Liste des exemples

2.1. Fichier /etc/shadow
2.2. [ER][UG]D demonstration
2.3. setuid demonstration
2.4. ELF chrooter
2.5. Chroot init
2.6. Linux /bin/sh wrapper
2.7. exemple de script iptables standard
6.1. Structure de l'entète d'une chunk
6.2. Chunk alloué
6.3. Chunk libre
6.4. Disposition du tas

Abstract

Ce document est le support des cours dispensés aux élèves de la spécialisation Système Réseau et Sécurité de l'EPITA. Ces cours sont répartis en 7 sessions de 2H de cours/tp en salle machine.

mars/avril 2006 : cours par Tristan De Cacqueray, Solal Jacob et Julien Sterckeman pour les SRS 2007