Franck EBEL
Datos técnicos
Este libro se dirige a toda persona que desee aprender Python para el Hacking y el análisis forense y formarse en el diseño de herramientas en Python, así como a los profesionales de la seguridad informática y del Análisis Forense. Tiene como objetivo llevar al lector a una comprensión de las librerías específicas de Python para poder luego diseñar sus herramientas personalizadas, adaptadas a situaciones particulares en Hacking y Forensic. Para sacar el máximo provecho posible, es necesario contar con nociones de seguridad informática.
El libro consta de 8 capítulos, cada uno ilustrado por muchos ejemplos y ejercicios con sus correcciones al final del capítulo, para proporcionar al lector una forma de auto-evaluación.
El capítulo 1 permitirá aprender los conceptos del lenguaje Python, y las bases del lenguaje. El capítulo 2 está dedicado a la programación en red. Abordaremos la programación de sockets y luego los diferentes servicios tales como HTTP, FTP, POP, SSL, al igual que las expresiones regulares y el acceso a bases de datos. El capítulo 3 está dedicado a la librería scapy, muy útil en hacking y Forensic; el autor detalla el tratamiento de las tramas, el tunneling, los diferentes tipos de escaneo de red y también aborda el protocolo IPv6. Para el capítulo 4, son indispensables conocimientos básicos de la arquitectura PC y ensamblador, así como el uso de depuradores, para la correcta comprensión de la librería PyDbg empleada. El capítulo 5 está dedicado al Fuzzing ; en la primera parte el autor utiliza librerías ya vistas en capítulos anteriores para luego, en una segunda parte, estudiar una librería específica, llamada Sulley, especializada en el fuzzing. El capítulo 6 examina la librería PIL que va a permitir la gestión de imágenes, su edición, y captura de imágenes desde una webcam para extraer los datos; el autor examinará también un elemento particular de la seguridad en la web, los captcha. El capítulo 7 desarrolla los conceptos vistos en el capítulo 2, a fin de construir en Python herramientas de análisis de seguridad para sitios web. Por último, el capítulo final está dedicado íntegramente al análisis forense (Forensic); el autor efectúa una revisión, no exhaustiva, de las diferentes técnicas, recorriendo la esteganografía, la criptografía, y el acoso por e-mail.
El autor ha querido hacer de este libro un compendio no exhaustivo de las librerías más útiles, explicándolas e ilustrándolas con ejemplos concretos para que el lector pueda dominar su funcionamiento.
Los scripts de cada capítulo pueden descargarse desde el sitio www.ediciones-eni.com.
Python: Los fundamentos
1. Introducción
2. Historia
3. Características del lenguaje
4. Tipos de datos
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
5. Estructuras condicionales y repetitivas
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
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
7.1 Declaración de una clase
7.2 Sobrecarga de operadores
7.3 Propiedades, accesores y mutadores
7.4 Herencia
7.5 Polimorfismo
8. Manipulación de archivos
9. Las excepciones
10. Módulos útiles para la continuación del libro
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()
11. Conclusión
La red
1. Introducción
2. Los sockets
2.1 Creación de un socket
2.2 Intercambio de datos
2.3 Socket en UDP
2.4 Los errores
2.5 Socket y FTP
3. Creación de un servidor
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
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
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
6.1 Introducción
6.2 El módulo re
6.3 Los métodos útiles
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
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
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
9. El XML
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
10.1 Introducción
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
11.1 Introducción
11.2 Utilización de OpenSSL
11.3 Verificar los certificados
12. La utilización de bases de datos
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
13. Conclusión
14. Puesta en práctica
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
Red: la librería Scapy
1. Introducción
2. Programación de red con Scapy
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
3.1 Nociones de IPv6
3.1.1 Aspectos generales
3.1.2 IPv6: RFC 2373
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
4. Otros ejemplos
5. Conclusión
6. Puesta en práctica
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
Depuración en Windows
1. Introducción
2. El módulo ctypes de Python
3. Primer enfoque
4. Estado de los registros
4.1 Enumeración de los hilos (threads)
4.2 Recuperar los valores de los registros
5. Los eventos del debugger
6. Los puntos de parada (breakpoints)
6.1 Puntos de parada software
6.2 Puntos de parada hardware
6.3 Punto de parada de memoria
7. La librería PyDbg
7.1 Violación de acceso de las cabeceras (handlers)
7.2 Process snapshot
8. Puesta en práctica: Hooking
El fuzzing
1. Introducción
2. Fuzzing FTP
3. Fuzzing con Scapy
4. Fuzzing con PyDbg: Format string
4.1 Introducción
4.2 Fuzzer de archivos
5. Sulley
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
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
6.1 Fuzzing 1: HTTP
6.2 Fuzzing 2: FTP
Tratamiento de imágenes
1. Introducción
2. Utilización
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
3.1 Creación de un captcha
3.2 Captura de Imagen y transformación
3.3 Lectura del captcha
Un poco más sobre la Web
1. Introducción
2. Recordemos lo básico
3. Mapping de sitios web
4. Fuerza bruta de carpetas o de ubicación de archivos
5. Fuerza bruta autenticación HTML
6. Selenium
6.1 Introducción
6.2 Instalación
6.3 Primera prueba
6.4 Captura de pantalla con Selenium
7. Conexión a un sitio web y navegación
8. Conclusión
Análisis forense
1. Introducción
2. Criptografía y otros
2.1 ROT13
2.2 Base 64
2.3 Hash
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
4. Archivos ZIP
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
6.1 Encontrar e-mails en los archivos
6.2 Buscar en el buzón de correo
7. Esteganografía
7.1 Buscar información en una imagen
7.2 Ocultar un mensaje en una imagen
7.3 Lectura del mensaje
8. Volatility
8.1 Información de la imagen
8.2 Proceso y DLL
8.3 Captura de contraseñas hash
8.4 Ejemplo de programa
9. Análisis de puntos de acceso inalámbrico en base al registro
10. Recuperar los elementos eliminados (de la papelera)
11. Puesta en práctica
11.1 Descifrado
11.2 OCR
11.3 ZIP
11.4 Scapy y la geolocalización
índice
2024 © Vuestros Libros Siglo XXI | Desarrollo Web Factor Ideas