Initiation à la sécurité UE Systèmes informatiques 12 septembre 2011 Julien Raeis - http://raeis.iiens.net/
Présentation Ingénieur IIE 2005 Carrière dans la sécurité des systèmes Consultant en sécurité pendant 4 ans Inspecteur SSI à l'anssi depuis mi-2010 Expert en sécurité Audits, tests d'intrusion Développement sécurisé Conférences Option «Sécurité des Systèmes d'information» http://raeis.iiens.net/
Enseignement UE Systèmes Informatiques (ISI) 4 / 60 crédits ECTS Notation Contrôle continu (50%) Contrôle final (30%) Test d'entrée (20%) 22,75h d'enseignement (45,5h pour l'isi)
Être ingénieur Concevoir Gérer Implémenter Vérifier Auditer
Informatique (nom féminin) De «information» et «automatique» Science du traitement automatique et rationnel de l'information considérée comme le support des connaissances et des communications. Ensemble des applications de cette science, mettant en œuvre des matériels (ordinateurs) et des logiciels. Source : Larousse
Quelques devinettes
Copyright 2010 XKCD http://xkcd.com/802/
25 août 1991
Système d'exploitation Ensemble central de programmes d'un appareil informatique qui sert d'interface entre le matériel et les logiciels applicatifs.
Linux
Modes processeur Mode réel Processeurs > 80286 Mémoire segmentée Adressage 20 bits (1 Mo de mémoire adressable) Accès direct aux adresses I/O des périphériques Mode protégé Processeurs > 80386 Mémoire virtuelle Pagination
Segmentation Niveaux de privilèges («anneaux» ou «rings») 0 : noyau 3 : utilisateur Support de mémoire virtuelle BASE:OFFSET Linux : pas de segmentation
Pagination Adressage virtuel Par processus Zones de mêmes tailles : les pages (4k par défaut sous Linux) Permissions : lecture, écriture Adressage physique Unique au système (RAM) et linéaire «Cadres» (ou «frames»), équivalents des pages Traduction nécessaire Conversion virtuel <=> physique Registre cr3 Consultation de la «page table» Traduction bufferisée par les TLB («Translation Look-Aside Buffers») Possibilité de stockage sur disque (swap)
PAE Nécessité d'adresser plus de 4 Go en 32 bits Pentium Pro (1995) 4 lignes d'adressage supplémentaires (36 bits) Mémoire physique adressable jusqu'à 64 Go Mémoire virtuelle reste à 4 Go Bit NX
Sécurité
Risques et menaces Définir les risques et menaces en amont Quelle est l'information critique? Où est-elle stockée? Qu'est-ce qui doit être protégé? Définition du périmètre A quelles attaques suis-je exposé? Lesquelles parer? Comment?
Vulnérabilité/exploitation Vulnérabilité Faiblesse exploitable Exploitation Réalisation pratique d'une menace Utilise un ou plusieurs vecteurs d'attaque Exécute une charge utile Souvent automatisée
Démonstration Vulnérabilité MS08-067
Quelques détails Affecte le service «Server» Octobre 2008 (MS08-067 - KB958644) Affecte de Windows 2000 à Windows 2008 Exploitation à distance anonyme (port 445/tcp) Code d'exploitation public De 2000 à 2003 au moins Contourne ASLR/DEP Utilisé en masse par le ver Conflicker
Shellcode Chaîne de caractères représentant un code binaire exécutable capable de lancer un shell Généralement injecté dans la mémoire grâce à l'exploitation d'un dépassement de tampon Nombreuses contraintes Taille limitée Spécifique à l'architecture processeur Caractères interdits (\x00 par exemple)
Exemple char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08" "\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89" "\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb" "\x89\xd8\x40\xcd\x80\xe8\xdc\xff\xff\xff" "/bin/sh"; void main() { int *ret; ret = (int *)&ret + 2 ; (*ret) = (int)shellcode ; }
0000 0002 0003 0006 0008 000B 000E 0010 0012 0015 0018 001A 001C 001E 001F 0021 0026 EB 1F jmp 53 popl 89 76 08 movl 31 C0 xorl 88 46 07 movb 89 46 0C movl B0 0B movb 89 F3 movl 8D 4E 08 leal 84 56 0C leal CD 80 int 31 DB xorl 89 D8 movl 40 inc CD 80 int E8 DC FF FF FF call.string \"/bin/sh\" 0x1f %esi %esi,0x8(%esi) %eax,%eax %eax,0x7(%esi) %eax,0xc(%esi) $0xb,%al %esi,%ebx 0x8(%esi),%ecx 0xc(%esi),%edx $0x80 %ebx,%ebx %ebx,%eax %eax $0x80-0x24
Sécurisation Au niveau du système Mises à jour ASLR NX/DEP Projets PaX ou grsecurity sous Linux Au niveau du réseau IPsec Pare-feu VLAN
ASLR «Address-Space Layout Randomization» Introduit en 2001 par le projet PaX Distribution aléatoire des adresses Base de la pile Base du tas Chargement des bibliothèques Au moins 24 bits sous Linux 2.6 (en 32 bits) 8 sous Vista...
NX/DEP Bit NX («No execute») Existait par segment dès le 286 Granularité insuffisante Rajouté dans AMD64 Marque une page non-exécutable Émulé logiciellement si non-supporté SEGMEXEC/PAGEEXEC avec PaX sous Linux W^X sous OpenBSD DEP sous Windows uniquement si support matériel
Réseaux Risques et menaces Confidentialité par écoute réseau Intégrité par altération de trafic Disponibilité par déni de service TCP/IP ne fournit pas de sécurité Pas de chiffrement... ni authentification
IPsec IPsec (IP security) Défini dans la RFC 2401 (11/98) puis 4301 Extension de sécurité IP au niveau 3 Deux protocoles AH : authentification, intégrité, anti-rejeu ESP : authentification, intégrité (partielle), antirejeu et confidentialité
AH ESP
IPsec : IKE/ISAKMP Besoin d'un échange de secret Authentification Mise en place d'un canal sécurisé Peut se baser sur PSK Certificats x.509 Chiffrement RSA Kerberos...
Organisation Définition d'un périmètre Politique de sécurité (PSSI) Analyse de risques Organisation d'audits Norme ISO/CEI 27001 Succède à la BS 7799-2 Gestion de la sécurité de l'information Systèmes de Management de la Sécurité de l'information (SMSI) Basée sur le modèle PDCA
Roue de Deming
Références Understanding the Linux Kernel, Third Edition O'Reilly Linux - http://www.kernel.org/ Smashing The Stack For Fun And Profit http://www.phrack.org/issues.html?id=14&issue=49 The PaX project - http://pax.grsecurity.net/ Bulletin de sécurité Microsoft MS08-067 http://support.microsoft.com/kb/958644 Security Architecture for the Internet Protocol http://tools.ietf.org/html/rfc4301 Tout savoir sur la norme ISO 27001 http://www.hsc.fr/ressources/articles/fntc_iso27001/index.html.fr
Interrogation n 1 Durée : 20 minutes Tous documents acceptés Merci d'inscrire le nom de vos voisins de droite et de gauche