Hacking & Sécurité : les Fondamentaux
Apprenez les fondamentaux de la sécurité informatique!
Objectifs
- Comprendre et détecter les attaques sur un SI
- Exploiter et définir l’impact et la portée d’une vulnérabilité
- Corriger les vulnérabilités
- Sécuriser un réseau et intégrer les outils de sécurité de base
Programme
Jour 1
Introduction
- Définitions
- Objectifs
- Vocabulaire
- Méthodologie de test
Prise d’information
- Objectifs
- Prise d’information passive (WHOIS, réseaux sociaux, Google Hacking, Shodan, etc.)
- Prise d’information active (traceroute, social engineering, etc.)
- Bases de vulnérabilités et d’exploits
Réseau
- Rappels modèles OSI et TCP/IP
- Vocabulaire
- Protocoles ARP, IP, TCP et UDP
- NAT
- Scan de ports
- Sniffing
- ARP Cache Poisoning
- DoS / DDoS
Jour 2
Attaques locales
- Cassage de mots de passe
- Elévation de privilèges
- Attaque du GRUB
Ingénierie sociale
Utilisation de faiblesses humaines afin de récupérer des informations sensibles et/ou compromettre des systèmes
- Phishing
- Outils de contrôle à distance
Attaques à distance
- Introduction à Metasploit Framework
- Scanner de vulnérabilités
- Attaques d’un poste client
- Attaque d’un serveur
- Introduction aux vulnérabilités Web
Se sécuriser
- Les mises à jour
- Configurations par défaut et bonnes pratiques
- Introduction à la cryptographie
- Présentation de la stéganographie
- Anonymat (TOR)
Durant ces 3 jours de formation Python, essentiellement pratiques, nous aborderons les principaux concepts du langage, la syntaxe, les bonnes pratiques, ainsi que l’outillage. Des ateliers pratiques vous permettrons de mettre en oeuvre les notions abordées.
Cette formation aborde les différences entre Python 2 et Python 3.
Les objectifs
- Posséder les bases du langage Python et bien comprendre ses particularités (objets mutables)
- Debugger et maintenir les scripts développés par d’autres développeurs
- Réaliser des scripts d’administration système
- Développer ses propres programmes from scratch
Pré-requis
- Connaissances de base en algorithmique
- Avoir une réelle expérience dans un langage de programmation
- Ordinateur portable à apporter
Le programme de la formation Python
Jour 1
Les types de données
– strings
– nombres
– tuples
– listes
– dictionnaires
– booléens et savoir quels objets sont vrais
– introspection (id, type, dir, help)
– Les particularités du langage Python : objets mutables et immutables (ce qu’il faut savoir)
Les structures de contrôle
– Les boucles for et while, les mots clefs break et continue
– Les tests if, elif et else
– les fonctions, paramètres, la portée des variables
– les fonctions spéciales map, lambda, filter et la notation par compréhension
Consolider son code
– Les exceptions : try, except, raise et finally
– Les assertions
– Le debugger en ligne de commande avec pdb
– Les tests unitaires avec doctest
– Les bonnes pratiques : pep8, property, enumerate
– Les outils de qualité de code
Jour 2
Gérer les charsets, encodings et unicode
– Comprendre et maîtriser ce qui provoque, peut provoquer des erreurs d’encodage
– Tout ce qu’un développeur doit savoir sur les charsets, les encodings et l’unicode
Maîtriser le sys.path
– Comprendre le sys.path, les modules et les packages
– Les environnements virtuels
– Installer un module tiers avec pip
Programmation orientée objet
– Les concepts de la programmation orientée objet
– Attributs de classe et d’instance
– Les méthodes spéciales (constructeur, destructeur, surcharge d’opérateurs…)
– L’héritage et la redéfinition de fonctions
Jour 3
Les librairies communes
– Récupérer les paramètres passés à un script : argparse
– Les expressions régulières
– La gestion de fichiers et le module CSV
– Exécuter des scripts système depuis Python : subprocess
– Test automatisés
– Mesures de performance
Pré-requis : Connaissances de HTML
Tour d’horizon PHP
Principes de fonctionnement
Le contexte Web
Les variables
Les types de données en un clin d’œil
Les opérateurs
Les instructions conditionnelles
Un type particulier : les tableaux
Les boucles, parcourir les tableaux
Trier les tableaux par ordre alphabétique
Introduction aux superglobales
Récupération de données de formulaire
Envoyer un e-mail
Les constantes
Organiser des scripts PHP – les fonctions
Déclaration de fonctions
Les paramètres et l’instruction return
Création de bibliothèques de fonctions
Fonctions prédéfinies : exemples, organisation, documentation
Fonctions pour les tableaux, mathématiques, chaînes de caractères, dates
Autres exemples de fonctions
Comment identifier les types des variables ?
Upload de fichiers : la variable $_FILES et les fonctions associées
Découvrir les méthodes de gestion du contexte applicatif
Principes de l’interaction avec l’utilisateur
Rappels des formulaires
Les champs cachés
Les URL longues
Introduction aux sessions
Sécuriser l’accès à l’administration des candidatures avec les sessions
Présentation des cookies
Afficher la date de dernier accès à la plate-forme d’administration des candidatures
Les bases de données
Utilité des bases de données
Présentation de PHPMyAdmin
Construction d’une base avec PHPMyAdmin
SQL sous PHPMyAdmin :
– Les principales instructions
– Lecture de code SQL
– Génération de multiples requêtes
– Les bonnes habitudes : tester ses requêtes avec PHPMyAdmin
Fonctions d’accès aux bases de données
Formulation de requêtes dans un fichier PHP
Pour aller plus loin avec PHP : création d’un CMS*
Spécifications et organisation du développement
Création des bibliothèques de génération de code HTML (sans connexion aux bases)
Génération de pages à partir des bibliothèques
Création de la base de données
Fonction d’insertion de pages et de stockages dans la base MySQL
Fonction de modification de pages
Fonction de suppression de pages
Modification des bibliothèques de génération de code HTML pour les coupler à la base
HTML5 est maintenant une norme mature et incontournable dans la réalisation de sites web modernes. Elle reste cependant encore méconnue et sujette à beaucoup d’idées fausses.
Dans cette formation nous reprendront les principales composantes de cette norme en transformant progressivement un site HTML4 en site HTML5.
Les objectifs
- Découvrir les nouveautés apportées par HTML5
- Les mettre en pratique dans un contexte concret
Pré-requis
- Syntaxe de base des langages CSS, HTML et javascript
- Expérience en développement web
Le programme de la formation HTML5
Introduction, historique et tour d’horizon du HTML5
- Présentation du socle technique pour les TPs
- Rappels sur javascript et jQuery
- L’origine du HTML5
- Tour d’horizon des nouveautés HTML5 et autour du HTML5
La sémantique
- Nouvelles balises
- Nouvelle gestion des titres
Les formulaires avec WebForms
- Nouveaux type input
- Nouvelles balises
- Nouveaux attributs
- Validations native des champs
- Gestion de la compatibilité
Le multimédia : Audio et Vidéo
- Rappels sur les codecs
- Balises audio et video
- API javascript associé
Le dessin 2D avec Canvas
- Primitives de base
- Courbes de bézier
- Texte
- Ombres et dégradés
- Gestion des images
- Transformations
- Animation
Gestion des fichiers avec FileAPI
- Manipulation des fichiers
Le multitache avec les WebWorkers
- Utilisation des webworkers
Communication via WebSocket
- Utilisation des websockets
- Problématiques et alternatives
Mode Hors Ligne
- Détecter le mode Hors Ligne
- Mise en cache avancée avec AppCache
Stocker en local avec WebStorage
- Utilisation du localstorage
- Utilisation du sessionstorage
- Alternatives et sécurité
Notifications coté serveur avec Server Sent Events
- Recevoir des notifications
- Format des notifications
Communication entre pages avec WebMessaging
- Communication avec une iframe
- Problématiques de sécurité
Nouveautés liées à la sécurité
- Présentation de Web Content Security
- Sécurisation des iframes
Introduction à CSS3
- Nouvelles propriétés les plus communes
- Média Queries
- WebFont
Si la maîtrise de HTML et CSS pour faire des pages complexes reste relativement aisée, JavaScript reste souvent une Terra Icognita pour les intégrateurs web ou les équipes de développement habituellement plus à l’aise côté serveur avec une stack PHP, Java ou C#. Pourtant, la connaissance de JavaScript est fondamentale pour offrir la meilleure expérience utilisateur possible en évitant le rechargement complet de la page à chaque interaction, en sauvegardant localement un commentaire tapé dans un formulaire afin de le restituer en cas de crash ou pour faire des visualisations de données interactives.
On ressort de cette formation JavaScript avec la confiance de savoir faire des pages web interactives qui offrent une meilleure expérience utilisateur.
Les objectifs
- Savoir construire une page web simple (HTML+CSS)
- Comprendre les éléments de base de la programmation en JavaScript et interaction avec la page web (dont programmation événementielle)
- Maîtriser les concepts importants de JavaScript (types, objets, fonctions, syntaxe, etc.)
- Connaître des idiomes de la programmation JavaScript moderne (promesses, programmation fonctionnelle, etc.)
- Savoir trouver une réponse sur le web (documentation, StackOverflow, caniuse.com, spécifications etc.)
- Savoir analyser en autonomie une page web avec les outils développeur.
Pré-requis
- Expérience d’au moins un an dans un autre langage de programmation (PHP, Python, Ruby, etc.)
- Expérience d’au moins un an avec HTML et CSS
Le programme de la formation JavaScript
Jour 1
- Rappels HTML et CSS
- HTML
- structure de base
- éléments HTML importants et sémantiques
- CSS
- couleur
- positionnement
- “box model”
- Étudier une page web avec l’inspecteur des outils développeur
- HTML
- Mise en pratique : construction d’une page web simple
- JavaScript
- Types primitifs
- Objets
- Fonctions
- Notion de “scope”
- Rappels sur le DOM
- Requêtes sur l’arbre DOM
- Programmation événementielle
- Mise en pratique : construction d’une petite application interactive
Jour 2
- (fin mise en pratique jour 1)
- Communication client/serveur
- Introduction simple à HTTP
- GET/POST
- En-têtes HTTP
- Codes de retour
- Cache HTTP
- En JavaScript : XMLHttpRequest
- Introduction aux promesses
- Introduction simple à HTTP
- Mise en pratique : construction d’une petite application utilisant XMLHttpRequest
Jour 3
- (fin mise en pratique jour 2)
- Introduction de l’API de localStorage
- Conseils de performance/sécurité
- Mise en pratique : construction d’une application stockant de l’information localement