Le réseau 1. Introduction 11 2. Les sockets 12 2.1 Création d'un socket 12 2.2 Échange de données 13 2.3 Les erreurs 14 2.4 Socket et FTP 17 2.5 Utilisation de l'udp 19 3. Création d'un serveur 20 3.1 Introduction 20 3.2 Connexion cliente 22 3.3 Discussion avec le client 23 3.4 Création d'un «trojan» basique 25 4. DNS : Domain Name Server 28 4.1 Introduction 28 4.1.1 Que signifie DNS? 28 4.1.2 Principaux enregistrements DNS 29 4.2 nslookup basique 31 4.3 Reverse lookup 34 4.4 La librairie DNS 35 4.5 Demande à partir d'un serveur spécifié 36 4.6 Mise en forme des résultats obtenus 39 5. FTP : File Transfer Protocol 41 5.1 Introduction 41 5.2 FTP anonyme 42 5.3 Téléchargement de fichiers ASCII 43 5.4 Téléchargement de fichiers binaires 45 5.5 Téléchargement avancé de fichiers binaires 45 5.6 Envoi de données 47 1/10
5.7 Les erreurs FTP 48 5.8 Lister le contenu des répertoires 49 5.9 Les autres commandes utiles 51 5.10 Télécharger récursivement des données 52 6. Les expressions régulières 55 6.1 Introduction 55 6.2 Le module re 56 6.3 Les méthodes utiles 57 6.3.1 La méthode search() 57 6.3.2 La méthode match() 58 6.3.3 Méthode sub() 59 6.3.4 Aller plus loin avec les groupes 60 6.4 Comment construire son «pattern» ou expression 61 7. Le Web 62 7.1 Introduction 62 7.2 Récupération d'une page source 63 7.3 Méthodes GET et POST 64 7.3.1 Méthode GET 65 7.3.2 Méthode POST 66 7.4 Gestion des erreurs 67 7.4.1 Erreurs de connexion : urllib2.urlerror 67 7.4.2 Erreur 404 67 7.5 Authentification 68 8. Analyser les pages HTML et XHTML 70 8.1 Introduction 70 8.2 Première approche 70 8.3 Travail sur des pages «réelles» 73 8.3.1 Ampersand 73 8.3.2 Caractères spéciaux 74 8.4 BeautifulSoup 76 8.4.1 Introduction 76 8.4.2 Récupérer les liens 77 2/10
9. Le XML 79 9.1 Introduction 79 9.2 Représentation du fichier XML 79 9.3 Python et XML 80 9.4 Lire un flux RSS 84 10. Les e-mails 85 10.1 Introduction 85 10.2 La bibliothèque smtplib 87 10.2.1 Le corps du texte 87 10.2.2 Mail avec pièce jointe 89 10.3 Analyser des e-mails 90 10.4 Analyser les dates 94 10.5 Erreurs et debugging 95 10.6 Mail et POP 97 11. Le SSL en Python 100 11.1 Introduction 100 11.2 Utilisation d'openssl 100 11.3 Vérifier les certificats 102 12. Utilisation de bases de données 107 12.1 Introduction 107 12.2 MySQLdb 108 12.2.1 Rappel 108 12.2.2 Utilisation 109 12.3 PostgreSQL 114 12.3.1 Introduction et première connexion 114 12.3.2 Exécuter des commandes 115 12.3.3 Cacher les changements 116 12.3.4 Répéter des commandes 117 12.3.5 Récupérer des données 118 3/10
13. Conclusion 121 14. Mise en pratique 121 14.1 Cas 1 : Scanner de ports 121 14.1.1 Énoncé 121 14.1.2 Correction 122 14.2 Cas 2 : Envoi de mails 123 14.2.1 Énoncé 123 14.2.2 Correction 124 14.3 Cas 3 : Fuzzing de FTP 129 14.3.1 Énoncé 129 14.3.2 Correction 130 14.4 Cas 4 : Parsing de page Web 131 14.4.1 Énoncé 131 14.4.2 Correction 132 14.5 Cas 5 : Brute force MySQL 132 14.5.1 Énoncé 132 14.5.2 Correction 133 Réseau : la bibliothèque Scapy 1. Introduction 135 2. Programmation réseau avec Scapy 137 2.1 Liste des protocoles supportés 137 2.2 Quelques notions sur les réseaux 143 2.2.1 Topologie des réseaux 143 2.2.2 Les différents types de réseaux 144 2.2.3 Qu'est-ce qu un protocole? 144 2.2.4 Adresse IP 145 2.2.5 Les classes 146 2.2.6 Le masque de sous-réseau 146 2.2.7 Le modèle OSI 147 4/10
2.3 Manipulations basiques 152 2.3.1 Commandes de base 152 2.3.2 Fabrication de paquets 155 2.3.3 Les entrées-sorties 157 2.3.4 Entrons dans le détail 161 2.4 Utilisation avancée : sécurité réseau 169 2.4.1 Traceroute 169 2.4.2 Sniffing 175 2.4.3 Scan TCP 178 2.4.4 Tunneling 179 2.5 Quelques exemples simples en «one-liner» 180 2.5.1 ACK scan 180 2.5.2 Xmas scan 181 2.5.3 IP scan 183 2.5.4 Les différents ping 183 2.5.5 Les attaques classiques 183 3. Scapy et IPv6 184 3.1 Notion d'ipv6 184 3.1.1 Généralités 184 3.1.2 IPv6 : RFC 2373 185 3.2 Application 187 3.2.1 Requête ICMP IPv6 187 3.2.2 Routage de paquets IPv6 187 3.2.3 Exemple de routage de Header 188 3.2.4 traceroute 188 3.2.5 IPv6 NA 188 3.2.6 Avertissement de daemon tués 189 3.2.7 Exemple 189 4. Conclusion 190 5. Mise en pratique 190 5.1 Canal caché IP 190 5.1.1 Énoncé 190 5/10
5.1.2 Correction 191 5.2 Détection de Rogue AP 191 5.2.1 Énoncé 191 5.2.2 Correction 192 5.3 IP Spoofing 193 5.3.1 Énoncé 193 5.3.2 Correction 193 5.4 Spoofing IPv6 des voisins 194 5.4.1 Énoncé 194 5.4.2 Correction 194 Débogage sous Windows 1. Introduction 197 2. Première approche 198 3. État des registres 212 3.1 Énumération des threads 212 3.2 Récupération des valeurs des registres 213 4. Les événements du debugger 215 5. Les points d arrêt (breakpoints) 226 5.1 Points d'arrêt logiciel 226 5.2 Points d'arrêt matériel 228 5.3 Point d'arrêt mémoire 230 6. La bibliothèque PyDbg 231 6.1 Violation d accès des en-têtes (handlers) 233 6.2 Process Snapshot 236 7. Applications : Hooking 242 6/10
7.1 Énoncé 242 7.2 Solution 242 Le Fuzzing 1. Introduction 247 2. Fuzzing FTP 248 3. Fuzzing avec Scapy 253 4. Fuzzing avec PyDbg : format string 256 4.1 Introduction 256 4.2 Fuzzer de fichiers 257 5. Sulley 263 5.1 Introduction 263 5.2 Installation 263 5.2.1 Installation normale 263 5.2.2 Installation non standard 266 5.3 Utilisation 275 5.3.1 Structure du répertoire de Sulley 275 5.3.2 Représentation de données 277 5.3.3 Primitives statiques et aléatoires 277 5.3.4 Les entiers 278 5.3.5 Chaînes de caractères et délimiteurs 279 5.3.6 Les extensions Fuzz Library 280 5.3.7 Blocks 281 5.3.8 Groupes 282 5.3.9 Encodeur 283 5.3.10 Dépendances 283 5.3.11 Blocks Helpers 284 5.3.12 Legos 286 7/10
6. Applications 287 6.1 Fuzzing 1 : HTTP 287 6.1.1 Énoncé 287 6.1.2 Exemple de corrigé 288 6.2 Fuzzing 2 : FTP 290 6.2.1 Énoncé 290 6.2.2 Exemple de corrigé 290 Traitement d'images 1. Introduction 293 2. Utilisation 294 2.1 La classe Image 294 2.2 Lire et écrire 295 2.3 Couper, coller et fusionner 298 2.4 Transformations géométriques 299 2.5 Transformation des couleurs 300 2.6 Amélioration d'image 300 2.6.1 Filtres 300 2.6.2 Opérations sur les points 300 2.6.3 Amélioration 301 3. Exemples d'utilisation 302 3.1 Création d'un captcha 302 3.2 Capture d'image et transformation 303 3.3 Lecture de captcha 305 3.3.1 Énoncé 305 3.3.2 Exemple de corrigé 305 Forensic 8/10
1. Introduction 309 2. Cryptographie et autres 310 2.1 ROT13 310 2.2 Base 64 312 2.3 Hash 314 3. Extraction des métadonnées dans les fichiers 317 3.1 Métadonnées MP3 317 3.2 Métadonnées des images 318 3.3 Métadonnées PDF 319 3.4 Métadonnées OLE2 320 3.5 Cas concret 321 4. Fichiers ZIP 322 4.1 Lire dans un fichier ZIP 322 4.2 Attaque Brute force de mots de passe 322 5. Lire dans un fichier OpenOffice ou Word 323 5.1 Parcourir une arborescence 323 5.2 Rechercher dans un document OpenOffice 324 5.3 Rechercher dans un document Word 325 6. E-mail 326 6.1 Retrouver des e-mails dans des fichiers 326 6.2 Rechercher dans la boîte mail 327 7. Stéganographie 328 7.1 Rechercher des informations dans une image 328 7.2 Cacher une image dans une image 329 7.3 Lecture de l'image 331 8. Volatility 331 9/10
8.1 Informations sur l'image 332 8.2 Processus et DLL 333 8.3 Exemple de programme 334 9. Applications 341 9.1 Décryptage 341 9.1.1 Énoncé 341 9.1.2 Correction 342 9.2 OCR 342 9.2.1 Énoncé 342 9.2.2 Correction 342 9.3 ZIP 343 9.3.1 Énoncé 343 9.3.2 Correction 343 9.4 Scapy et géolocalisation 343 9.4.1 Énoncé 343 9.4.2 Correction 344 Bibliographie 345 Index 347 10/10