Liens rapides:
- L1: Initiation à l'Informatique (4TPU114U/4TPU115U)
- L2: Architecture (4TIN408U)
- L2: Réseau (4TIN310U)
- L3: Compilation (4TIN603U)
- Lpro ADSILLH
- Lpro: Réseau (4TAH506U)
- Lpro: Installation&Configuration (4TAH507U)
- M1: Systèmes d'Exploitation (4TIN705U)
- M1 CSI: Sécurité Logicielle (4TCY801U)
- M2 CSI: Sécurité Systèmes (4TCY904U)
- Virtualisation
L1: Initiation à l'Informatique
Je suis coordinateur de l'UE et responsable de la L1.
Voir le site principal d'initinfo.
Voir le wiki de la L1.
L2: Architecture
Voir le site principal d'archi.
L2: Réseau
Pas de réseau en L2 pour moi en ce momentL3: Compilation
Voir le site principal de compilation.
Licence pro ADSILLH
Je suis co-responsable, voir le site principal de la licence pro Logiciels libres ADSILLH de l'université de Bordeaux (Administration et Développement de Systèmes Informatiques à base de Logiciels Libres et Hybrides).
Lpro: Réseau
Objectif: Comprendre l'organisation générale des protocoles réseaux et savoir les utiliser.
Voici le support que l'on utilise en cours, au format PDF. Ce n'est qu'un support, il n'est pas fait pour être compréhensible sans aller en cours !
Programme:
- Introduction, piles de protocoles, principe d'encapsulation, calculs
- Couche physique, addresse IPv4/6, routage
- Principe de protocole, exemples d'en-têtes, TCP
- HTTP, SMTP, DNS
- Programmation socket TCP et UDP, en C et en Java
- Utilisation de select, options, getaddrinfo
- Firewalls, masquerading
- Technologies web, Couche présentation
- Diffusion à grande échelle, les figures pour la DHT
Biblio:
- Disponible sur l'ENT: Apprenez le fonctionnement des réseaux TCP/IP
- Tanenbaum « Réseaux »
- Comer « Internetworking with TCP/IP Volume One », en Français « TCP/IP Architecture, protocoles, applications
- Qu'est-ce qu'Internet ? par Benjamin Bayart, 3 conférences d'1h30-2h environ.
- What happens when you type google.com into your browser and press enter?
- Documentation API Python
Quelques statistiques:
- Une carte des adresses IP d'Internet en 2006
- Utilisation d'IPv6 vu depuis google
- Préfixes IPv4 sur Internet (Plus de stats IPv4)
- Préfixes IPv6 sur Internet (Plus de stats IPv6)
Quelques weathermaps:
Plan des séances:
- Introduction empilement ISO (documentation), débit réseau (documentation), latence réseau
- Couche physique, adresses MAC/IPv4/IPv6 (documentation)
- Problème des deux armées (documentation), checksum (documentation), en-têtes Ethernet/IP/UDP/TCP, transmission TCP, contrôle de flux TCP (documentation)
- connection/terminaison TCP, http, smtp, ARP/NDP(documentation courte, documentation longue)
- Programmation socket: API C (documentation courte)
- Programmation socket: buffers, gestion d'adresses, API Java, API Python (documentation sockets, documentation select)
- Distribution d'IPs. Acentré/décentralisé/centralisé
- Structure d'Internet à grande échelle
- HTTP statique/dynamique/applet/servlet. Imbrication de protocoles. Schéma d'une pile ADSL
- Présentation: SSL, XML, JSON, encodage caractères
- Présentation: Heures, accessibilité. Flexibilité L2
- Diffusion à grande échelle: CDN, multicast, P2P
Le support d'un autre cours de réseau, avec plus de HTML/XML/etc.: 1 (fondements, TCP/UDP/IP), 2 (programmation socket), 3 (http, légèrement hors-programme), 4 (XHTML, hors-programme), 5 (SOAP/WSDL, hors-programme), 6 (web 2.0, AJAX, hors-programme), 7 (Wikis, hors-programme),
Voici les sujets de TD/TP (attention, ils peuvent évoluer jusqu'à la séance correspondante):
- TD1: Calculs d'adresses, avec correction
- TD2: Calculs de débits et de latences, avec correction
- TD3: Analyse de trames et routage, avec correction
- TD4: Calculs de code de contrôle d'erreurs, avec correction
- TP1: Découverte de TCP/IP, avec correction
- TP2: Découverte de TCP/IP (2), avec correction
- TP3: Sockets python, avec correction
- TP4: Sockets python avec clients multiples, avec correction
- TP5: HTTP
- TP6: TLS/SSL
- TP7: routage, firewall
- TP8: VLANs, génération ; ping.py, daytime.py
Et le Sujet de projet, avec la base de code. À rendre pour le 18 novembre au soir.
Voici par ailleurs les annales d'examens 2008, 2009 (correction), 2010 (correction), 2011, 2012, 2013 (correction partielle), 2014 (correction partielle), 2015, 2016 (correction partielle), 2016 ADSILLH (correction), 2016 L2 (correction partielle), 2017 ADSILLH (correction), 2018 ADSILLH, 2019 ADSILLH. 2020 ADSILLH. 2021 ADSILLH. 2022 ADSILLH (correction). 2023 ADSILLH (correction). 2024 ADSILLH (correction).
Lpro: Installation & Configuration
- TP1: Installation de base, DHCP, DNS
- TP2: DHCP + DNS, redondance
- TP3: Installation Mail
- TP4: Installation LDAP
- TP noté
M1: Systèmes d'Exploitation
Voir le site principal de SE.
Master 1 CSI: Sécurité Logicielle
Resources de cours
- Remise à niveau programmation système: Étudier les parties Introduction, Fichiers et Processus
- TD de remise à niveau programmation système: Regarder le TD 1
- Cours 1: motivation, vulnerabilities, process layout
- Cours 2: quelques notions de sécurité système
- Cours 3: Assembly language, part 1, generics
- Cours 4: Assembly language, part 2, model, instructions, registers, syscall
- Cours 5: Assembly language, part 3, indirect memory accesses, stack, tarball des programmes
- Cours 6: Assembly language, part 4, function call, ABI, tarball des programmes
- Cours 7: stack buffer overflow + shellcode, pour plus de détails:
- Cours 8: ROP, heap buffer overflow, pour plus de détails:
- Advanced return-into-lib(c) exploits
- The Geometry of Innocent Flesh on the Bone: Return-to-libc without Function Calls (on the x86)
- Return to libc on modern 32 bit and 64 bit Linux
- Un exemple récent de buffer overflow dans sudo
- The art of exploiting heap overflow, part 6
- The art of exploiting heap overflow, part 7
- Cours 9: format strings, escapes, undefined behaviors, pour plus de détails:
- Exploiting Format String Vulnerabilities
- Format Strings: GOT overwrite to change Control Flow Remotely on ASLR
- Format Strings: GOT overwrite to change Control Flow Remotely on ASLR
- Sql Injection Myths and Fallacies
- Trojan Source: tricks (no treats) with Unicode
- Trojan Source and Python
- A Guide to Undefined Behavior in C and C++
- Undefined behaviors in 2017
- What every C programmer should know about Undefined behavior
- Abusing printf to implement tic-tac-toe
- Cours 10: compilation hardening, tarball des programmes, pour plus de détails:
- Debian Hardening
- Ubuntu Hardening
- Les options de sécurité de GCC
- Stack Smashing Protection
- Stack Clash
- Control-Flow Enforcement Technology
- Shadow stacks for user space
- Address Sanitizer
- Cours 11: dynamic/static analysis, pour plus de détails:
- The Design and Implementation of Valgrind
- Using Valgrind to detect undefined value errors with bit-precision
- Commun Weaknesses Enumeration
- A few billion lines of code later: using static analysis to find bugs in the real world (coverity)
- Cours 12: Software supply chain, pour plus de détails:
- Finding and Understanding Bugs in C Compilers
- CompCert, compilers you can formally trust
- Debootstrapping without Archeology: Stacked Implementations in Camlboot
- Reflections on Trusting Trust
- Bootstrappable builds
- The Full-Source Bootstrap: Building from source all the way down
- An attempt to backdoor the kernel
- [PHP-DEV] Changes to Git commit workflow
- Hidden surprises in the Bitcoin blockchain and how they are stored: Nelson Mandela, Wikileaks, photos, and Python software
- The Future of Software Supply Chain Security
- Python Typosquatting for Fun not Profit
- Typosquatting in Programming Language PackageManagers
- A single Node of failure
- A backdoor in xz
- A backdoor in xz
- Cours 13: Case studies, pour plus de détails:
- JPEG of the Death
- A day in the life of the JPEG Vulnerability
- Exploiting GDI+ marker integer underflow vulnerability
- How does the JPEG of Death vulnerability operate? (attention, assembleur Intel ! format opcode dst, src)
- Debian weak keys
- valgrind-clean the RNG
- Commit
- Resulting file
- [SECURITY] [DSA 1571-1] New openssl packages fix predictable random number generator
- Debian, OpenSSL, and a lack of cooperation
- Debian vulnerability has widespread effects
- Heartbleed
- Shellschock
- Bash gets shellshocked
- Bash Code Injection Vulnerability via Specially Crafted Environment Variables
- getaddrinfo
- Cours 14: Side/Covert channels, pour plus de détails:
- TD1: Virtual memory of a process
- TD2: Nebula Challenges (2 séances)
- TD3: x86-32 and x86-64 assembly (part 1, 2 séances), shellcode
- TD4: x86-32 and x86-64 assembly (part 2, 1 séance)
- TD5: shell-code, on-stack buffer overflow (2 séances), tarball
- TD6: Format Strings Vulnerabilities (2 séances), tarball
- TD7: dynamic/static analysis (2 séances), tarball
- TD8: Using gdb, tarball
- TD9: Hackme!
- Image Nebula
- Liste des appels système 64bit
- Hello, world!, à compiler avec -static !
- factorielle
- get+put
- exec version C
- exec, à compiler avec -static !
- hello 32bit, à compiler avec -m32 -static !
- hello 64bit, à compiler avec -static !
- pframe
- à décompacter par exemple dans $HOME/pframe:
- ajouter à .bashrc:
export PYTHONPATH=$HOME/pframe${PYTHONPATH:+:${PYTHONPATH}}
- ajouter à .gdbinit:
python import pframe
tar xf pframe.tgz
Voici par ailleurs les annales d'examens 2021 (correction), 2022 (correction) 2023
Livres disponibles gratuitement en ligne avec votre compte u-bordeaux sur ScholarVox (Cyberlibris):
Livres de référence
- Secure Coding in C and C++ (2nd edition), by Robert C. Seacord, 2013.
- The Shellcoder’s Handbook: Discovering and Exploiting Security Holes (2nd edition), by Chris Anley, John Heasman, Felix Lindner, and Gerardo Richarte, 2007.
- Learning Linux Binary Analysis, by Ryan O’Neill, 2016.
- Hacking: The Art of Exploitation (2nd edition), by Jon Erickson, 2008.
- Reversing: Secrets of Reverse Engineering, by Eldad Eilam, 2005.
- Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation, by Bruce Dang, Alexandre Gazet, Elias Bachaalany, and Sébastien Josse, 2014.
- Practical Malware Analysis: A Hands-On Guide to Dissecting Malicious Software, by Michael Sikorski and Andrew Honig, 2012.
- The Art of Memory Forensics: Detecting Malware and Threats in Windows, Linux, and Mac Memory, by Michael Hale Ligh, Andrew Case, Jamie Levy and Aaron Walters, 2014.
Pour vous entraîner
- Root-me
- Exploit-Exercises
- Exploit-Education
- HackTheBox
- Newbie Contest
- Nightmare
- Smash The Stack
- Over-the-Wire
- Matasano Microcorruption
- Matasano Crypto-challenges
- ReversingHero
Magasines et conférences
Master 2 CSI: Sécurité Système
Cours
- Cours 1: A glimpse into the kernel
- Cours 2: Rootkit, countermeasures
- Cours 3: Capabilities, credentials
- Cours 4: Virtualization
Resources
- TD1: Your first Linux kernel module and more
- TD2: Linux Kernel Rootkits
- TD3: Capabilities / credentials
- TD4: Studying an exploit
- TD5: Virtualization, micro-kernels
Voici par ailleurs les annales d'examens 2021 2022 2023
Livres de référence
- Linux Kernel Development (Third Edition), by Robert Love (2010).
- Linux Kernel Architecture, by Wolfgang Mauerer (2008).
- The Linux Kernel Module Programming Guide, by Peter Jay Salzman, Michael Burian, and Ori Pomerantz (2007).
- Linux Device Drivers (Third Edition), by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman (2005).
Sites web
- Inline assembly chapter of linux-insides
- Official Linux Kernel Website
- Linux Kernel Documentation
- KernelNewbies
- Linux Weekly News
- KernelPlanet
- Linux Kernel Mailing-list
- Linux Kernel Interactive Map