Download Hacking y Forensic
Document related concepts
no text concepts found
Transcript
Hacking y Forensic Desarrolle sus propias herramientas en Python Python: Los fundamentos 1. Introducción 13 2. Historia 15 3. Características del lenguaje 15 4. Tipos de datos 19 4.1 Los números 4.2 Las operaciones aritméticas 4.3 Las cadenas de caracteres 4.4 Las tuplas 4.5 Las listas 4.6 Los diccionarios 4.7 Tipos de datos adicionales 19 23 24 27 28 32 34 5. Estructuras condicionales y repetitivas 36 5.1 Test if ... elif ... else 5.2 Bucle while 5.3 Bucle for 5.4 Las listas por comprensión (list comprehension) 6. Funciones, módulos y paquetes 41 6.1 Definición y llamadas de función 6.2 Espacios de nombres 6.3 Funciones particulares 6.4 Módulos 6.5 Paquetes 6.6 Instrucción yield 7. Las clases 41 43 44 45 46 47 48 7.1 Declaración de una clase www.ediciones-eni.com 36 37 38 39 49 © Ediciones ENI 1/12 Hacking y Forensic Desarrolle sus propias herramientas en Python 7.2 Sobrecarga de operadores 7.3 Propiedades, accesores y mutadores 7.4 Herencia 7.5 Polimorfismo 50 52 53 54 8. Manipulación de archivos 55 9. Las excepciones 58 10. Módulos útiles para la continuación del libro 61 10.1 Módulo sys 10.2 Módulo os 10.3 Módulo re 10.4 Módulos pickle y shelve 10.5 Módulos de bases de datos 10.5.1 MySQLdb 10.5.2 PostgreSQL 10.6 Módulo thread 10.6.1 Principio del módulo 10.6.2 Threading 10.6.3 Clase Lock() 61 63 68 72 74 74 79 85 86 86 87 11. Conclusión 89 La red 1. Introducción 91 2. Los sockets 92 2.1 Creación de un socket 2.2 Intercambio de datos 2.3 Socket en UDP 2.4 Los errores www.ediciones-eni.com 92 93 94 97 © Ediciones ENI 2/12 Hacking y Forensic Desarrolle sus propias herramientas en Python 2.5 Socket y FTP 99 3. Creación de un servidor 101 3.1 Introducción 3.2 Conexión cliente 3.3 Conversación con el cliente 3.4 Creación de un troyano básico 3.5 Creación de un troyano más complejo 4. DNS: Domain Name Server 114 4.1 Introducción 4.1.1 ¿Qué significa DNS? 4.1.2 Principales registros DNS 4.2 nslookup básico 4.3 Reverse lookup 4.4 La librería DNS 4.5 Consulta a partir de un servidor especificado 4.6 Formato de los resultados obtenidos 5. FTP: File Transfer Protocol 114 115 115 117 120 121 122 124 127 5.1 Introducción 5.2 FTP anónimo 5.3 Descargas de archivos ASCIII 5.4 Descargas de archivos binarios 5.5 Descarga avanzada de archivos binarios 5.6 Envío de datos 5.7 Los errores FTP 5.8 Listar el contenido de las carpetas 5.9 Otros comandos útiles 5.10 Descarga recursiva de datos 6. Las expresiones regulares 127 127 128 130 131 132 133 134 137 138 140 6.1 Introducción 6.2 El módulo re 6.3 Los métodos útiles www.ediciones-eni.com 101 103 105 106 109 140 142 143 © Ediciones ENI 3/12 Hacking y Forensic Desarrolle sus propias herramientas en Python 6.3.1 Método search() 6.3.2 Método match() 6.3.3 Método sub() 6.3.4 Ir más allá con los grupos 6.4 ¿Cómo construir su patrón o expresión? 7. La Web 148 7.1 Introducción 7.2 Recuperación de una página fuente 7.3 Métodos GET y POST 7.3.1 Método GET 7.3.2 Método POST 7.4 Gestión de errores 7.4.1 Errores de conexión: urllib2.URLErrorv 7.4.2 Error 404 7.5 Autenticación 8. Analizar páginas HTML y XHTML 148 149 150 151 152 153 153 153 154 156 8.1 Introducción 8.2 Primer enfoque 8.3 Trabajo con páginas "reales" 8.3.1 Ampersand 8.3.2 Caracteres especiales 8.4 BeautifulSoup 8.4.1 Introducción 8.4.2 Recuperar los enlaces 156 156 159 159 160 162 162 163 9. El XML 165 9.1 Introducción 9.2 Representación de un archivo XML 9.3 Python y XML 9.4 Leer un canal RSS 10. Los e-mails 165 165 166 170 170 10.1 Introducción www.ediciones-eni.com 143 144 145 146 146 170 © Ediciones ENI 4/12 Hacking y Forensic Desarrolle sus propias herramientas en Python 10.2 La librería smtplib 10.2.1 El cuerpo del texto 10.2.2 Mail con archivo adjunto 10.3 Análisis de e-mails 10.4 Analizar las fechas 10.5 Errores y depuración 10.6 Mail y POP 11. SSL y Python 172 172 174 176 179 180 182 185 11.1 Introducción 11.2 Utilización de OpenSSL 11.3 Verificar los certificados 185 186 188 12. La utilización de bases de datos 192 12.1 Introducción 12.2 MySQLdb 12.2.1 Recordatorio 12.2.2 Utilización 12.3 PostgreSQL 12.3.1 Introducción y primera conexión 12.3.2 Ejecutar los comandos 12.3.3 Ocultar los cambios 12.3.4 Repetición de comandos 12.3.5 Recuperar los datos 192 193 193 193 198 198 199 201 202 203 13. Conclusión 205 14. Puesta en práctica 206 14.1 Caso 1: Escaneo de puertos 14.2 Caso 2: Envío de mails 14.3 Caso 3: Fuzzing FTP 14.4 Caso 4: Parsing de página web 14.5 Caso 5: Fuerza bruta MySQL www.ediciones-eni.com © Ediciones ENI 206 208 214 215 217 5/12 Hacking y Forensic Desarrolle sus propias herramientas en Python Red: la librería Scapy 1. Introducción 219 2. Programación de red con Scapy 221 2.1 Lista de protocolos soportados 2.2 Algunas nociones sobre las redes 2.2.1 Topología de redes 2.2.2 Los diferentes tipos de redes 2.2.3 ¿Qué es un protocolo? 2.2.4 Dirección IP 2.2.5 Las clases de direcciones 2.2.6 La máscara de subred 2.2.7 El modelo OSI 2.3 Operaciones básicas 2.3.1 Comandos básicos 2.3.2 Fabricación de paquetes 2.3.3 Las entradas/salidas 2.3.4 Entramos en detalle 2.4 Utilización avanzada: seguridad de red 2.4.1 traceroute 2.4.2 Sniffing 2.4.3 Scan TCP 2.4.4 Tunneling 2.5 Algunos ejemplos sencillos de "one-liner" 2.5.1 Scan ACK 2.5.2 Scan Xmas 2.5.3 Scan IP 2.5.4 Los distintos ping 2.5.5 Los ataques clásicos 3. Scapy e IPv6 272 3.1 Nociones de IPv6 3.1.1 Aspectos generales 3.1.2 IPv6: RFC 2373 www.ediciones-eni.com 221 227 227 228 229 229 230 231 231 236 236 239 245 249 257 257 263 266 267 268 268 269 271 271 271 272 272 273 © Ediciones ENI 6/12 Hacking y Forensic Desarrolle sus propias herramientas en Python 3.2 Aplicación 3.2.1 Consulta ICMP IPv6 3.2.2 Enrutamiento de paquetes IPv6 3.2.3 Ejemplo de enrutamiento de cabecera 3.2.4 traceroute 3.2.5 IPv6 NA 3.2.6 Aviso de daemon muertos 3.2.7 Ejemplo 275 275 275 276 276 276 277 277 4. Otros ejemplos 278 5. Conclusión 279 6. Puesta en práctica 280 6.1 Canal encubierto IP 6.2 Detección de Rogue AP (Access Point) 6.3 IP Spoofing 6.4 Spoofing IPv6 de los vecinos 280 281 282 283 Depuración en Windows 1. Introducción 285 2. El módulo ctypes de Python 286 3. Primer enfoque 288 4. Estado de los registros 302 4.1 Enumeración de los hilos (threads) 4.2 Recuperar los valores de los registros 5. Los eventos del debugger www.ediciones-eni.com 302 303 305 © Ediciones ENI 7/12 Hacking y Forensic Desarrolle sus propias herramientas en Python 6. Los puntos de parada (breakpoints) 316 6.1 Puntos de parada software 6.2 Puntos de parada hardware 6.3 Punto de parada de memoria 316 318 320 7. La librería PyDbg 321 7.1 Violación de acceso de las cabeceras (handlers) 7.2 Process snapshot 8. Puesta en práctica: Hooking 323 326 332 El fuzzing 1. Introducción 337 2. Fuzzing FTP 338 3. Fuzzing con Scapy 342 4. Fuzzing con PyDbg: Format string 345 4.1 Introducción 4.2 Fuzzer de archivos 345 346 5. Sulley 351 5.1 Introducción 5.2 Instalación 5.2.1 Instalación normal 5.2.2 Instalación no estándar 5.3 Utilización 5.3.1 Estructura del directorio de Sulley 5.3.2 Representación de datos www.ediciones-eni.com © Ediciones ENI 351 351 351 354 362 363 365 8/12 Hacking y Forensic Desarrolle sus propias herramientas en Python 5.3.3 Primitivas estáticas y aleatorias 5.3.4 Los enteros 5.3.5 Cadenas de caracteres y delimitadores 5.3.6 Las extensiones Fuzz Library 5.3.7 Blocks 5.3.8 Grupos 5.3.9 Codificador 5.3.10 Dependencias 5.3.11 Block helpers 5.3.12 Legos 6. Puesta en práctica 365 366 367 368 369 370 371 371 372 374 375 6.1 Fuzzing 1: HTTP 6.2 Fuzzing 2: FTP 375 378 Tratamiento de imágenes 1. Introducción 381 2. Utilización 382 2.1 La clase Image 2.2 Leer y escribir 2.3 Cortar, pegar y fusionar 2.4 Transformaciones geométricas 2.5 Transformación de los colores 2.6 Mejora de imágenes 2.6.1 Filtros 2.6.2 Operaciones sobre los puntos 2.6.3 Mejoras 3. Ejemplos de uso 390 3.1 Creación de un captcha 3.2 Captura de Imagen y transformación 3.3 Lectura del captcha www.ediciones-eni.com 382 383 386 387 388 388 388 388 389 © Ediciones ENI 390 391 392 9/12 Hacking y Forensic Desarrolle sus propias herramientas en Python Un poco más sobre la Web 1. Introducción 397 2. Recordemos lo básico 397 3. Mapping de sitios web 399 4. Fuerza bruta de carpetas o de ubicación de archivos 401 5. Fuerza bruta autenticación HTML 404 6. Selenium 407 6.1 Introducción 6.2 Instalación 6.3 Primera prueba 6.4 Captura de pantalla con Selenium 407 408 408 409 7. Conexión a un sitio web y navegación 410 8. Conclusión 415 Análisis forense 1. Introducción 417 2. Criptografía y otros 418 2.1 ROT13 2.2 Base 64 2.3 Hash 418 420 423 www.ediciones-eni.com © Ediciones ENI 10/12 Hacking y Forensic Desarrolle sus propias herramientas en Python 3. Extracción de metadatos de los archivos 3.1 Metadatos MP3 3.2 Metadatos de imágenes 3.3 Metadatos PDF 3.4 Metadatos OLE2 3.5 Caso concreto 425 427 428 428 429 4. Archivos ZIP 430 4.1 Leer de un archivo ZIP 4.2 Ataque de fuerza bruta de contraseñas 5. Leer de un archivo OpenOffice o Word 5.1 Recorrer un árbol 5.2 Buscar en un documento OpenOffice 5.3 Buscar en un documento Word 6. E-mail 430 431 431 431 432 433 434 6.1 Encontrar e-mails en los archivos 6.2 Buscar en el buzón de correo 7. Esteganografía 434 435 436 7.1 Buscar información en una imagen 7.2 Ocultar un mensaje en una imagen 7.3 Lectura del mensaje 8. Volatility 436 437 439 439 8.1 Información de la imagen 8.2 Proceso y DLL 8.3 Captura de contraseñas hash 8.4 Ejemplo de programa 440 441 442 444 9. Análisis de puntos de acceso inalámbrico en base al registro www.ediciones-eni.com 425 © Ediciones ENI 451 11/12 Hacking y Forensic Desarrolle sus propias herramientas en Python 10. Recuperar los elementos eliminados (de la papelera) 453 11. Puesta en práctica 456 11.1 Descifrado 11.2 OCR 11.3 ZIP 11.4 Scapy y la geolocalización 456 456 457 458 índice 459 www.ediciones-eni.com © Ediciones ENI 12/12