Argumento de Seguridad Informática: Ethical Hacking
En esta nueva edición, se ha revisado, corregido o incluso reescrito cada capítulo para tener en cuenta la actualidad en materia de seguridad informática. Se presentan nuevas herramientas y aspectos no tratados en la edición anterior, como la profundización del análisis de memoria mediante herramientas especializadas, el Bypass de Stack Cookies en el capítulo de fallos aplicativos, los CAPTCHA en el capítulo Web, etc... La gran novedad de esta edición es la creación de un nuevo capítulo sobre la seguridad del Cloud Computing, de rabiosa actualidad.
Después de una definición precisa de los diferentes tipos de hackers y de sus objetivos, los autores presentan la metodología de un ataque y los medios para identificar las vulnerabilidades o fallos de seguridad a través de los que introducirse en un sistema. El capítulo sobre Ingeniería social, o manipulación social, ilustra que más de un 60% de los ataques con éxito se debe a errores humanos. Los fallos físicos, que permiten un acceso directo a ordenadores, y los fallos de red y Wi-Fi se presentan e ilustran cada uno con propuestas de contramedidas. Se presenta a continuación el Cloud Computing (su historia, su funcionamiento) para dominar mejor la seguridad. También se presenta la seguridad en la web y los fallos actuales identificados gracias a la ayuda de herramientas que el lector puede implantar fácilmente en sus propios sistemas. El objetivo es identificar siempre los posibles fallos para establecer después la estrategia de protección adecuada. Por último, se identifican con algunos ejemplos los fallos de sistemas en Windows o Linux y los fallos de aplicación, para familiarizarse con el lenguaje ensamblador y comprender mejor las posibilidades de ataque.
Los autores de este libro forman un equipo de personas con la convicción de que la seguridad informática esté al alcance de todos: "conocer el ataque para una mejor defensa" es su lema. Hackers de alma blanca, abren al lector las puertas del conocimiento underground.0- 1. La seguridad informática, ¿ para qué ? , ¿ para quién ?
- 1.1 Hacking, piratería, seguridad informática... ¿ Qué hay detrás de estas palabras ?
- 1.2 La importancia de la seguridad
- 1.2.1 Para particulares
- 1.2.2 Para empresas y centros académicos
- 1.2.3 Para un país o una nación
- 2. El hacking que pretende ser ético
- 2.1 Trabajo en cooperación
- 2.2 Un espíritu habilidoso y apasionado por encima de todo
- 2.3 El hacker se está convirtiendo en un experto muy buscado
- 2.4 En la piel del atacante
- 2.5 Asesoramiento y apoyo para la seguridad
- 3. Conocer al enemigo para defenderse
- 3.1 A cada atacante su sombrero
- 3.1.1 Los hackers black hat
- 3.1.2 Los hackers grey hat
- 3.1.3 Los hackers white hat
- 3.1.4 Los "script kiddies"
- 3.1.5 Los hackers universitarios
- 3.2 Y a cada auditoría su caja de secretos
- 3.2.1 Los test black box
- 3.2.2 Los test grey box
- 3.2.3 Los test white box
- 1. Breve historia de una técnica tan antigua como el mundo
- 1.1 Historia y generalidades
- 1.2 El ser humano: la pieza frágil
- 1.3 La manipulación es una herramienta
- 1.4 Criterios de un ataque por manipulación
- 2. Ingeniería social: ¿ por qué ?
- 2.1 Las razones
- 2.2 El perfil del atacante
- 2.3 El perfil de la víctima
- 2.4 La información, un bien codiciado
- 2.4.1 Importancia de la información
- 2.4.2 La información y su transmisión
- 2.5 Formas de ataque
- 2.5.1 Aclaraciones
- 2.5.2 El más fácil
- 2.5.3 El más frontal
- 2.5.4 El más indirecto
- 2.5.5 El más complejo
- 2.6 La tecnología como herramienta básica
- 2.6.1 Los medios utilizados
- 2.6.2 La investigación preliminar
- 2.6.3 El papel, el bolígrafo y el carisma
- 2.6.4 Carisma y faroles
- 2.6.5 Medios externos puestos en práctica
- 2.6.6 Anonimato
- 2.7 La psicología como punta de lanza
- 2.7.1 Aclaraciones
- 2.7.2 Ausencia de desconfianza
- 2.7.3 Ignorancia
- 2.7.4 Credulidad
- 2.7.5 Confianza
- 2.7.6 Altruismo
- 2.7.7 Necesidad de ayuda
- 2.7.8 Intimidación
- 2.8 Otros ejemplos
- 3. Solución de protección
- 3.1 Hacia una clasificación funcional
- 3.2 Detección al alcance de todos
- 3.3 Buenas prácticas
- 4. Para ir más lejos
- 1. Generalidades
- 2. Acceso físico directo al ordenador
- 2.1 Acceso a un ordenador apagado cuya BIOS está protegida
- 2.2 Acceso a un ordenador apagado cuya BIOS no está protegida
- 2.2.1 Utilización de Offline NT Password & Registry Editor v110511
- 2.2.2 Utilización de Trinity Rescue Kit
- 2.2.3 Obtener la base de datos SAM con Backtrack
- 2.2.4 Windows Password Recovery Bootdisk
- 2.2.5 Los distintos tipos de algoritmos de encriptación
- 2.2.6 Los hash de tipo LM y NTLM
- 2.2.7 Utilizar John the Ripper para encontrar las contraseñas
- 2.2.8 Utilizar la potencia de la tarjeta gráfica
- 2.2.9 Utilización de tablas arco iris (rainbow tables)
- 2.2.10 Generar sus propias tablas rainbow
- 2.2.11 Utilizar OPHCRACK
- 2.2.12 Utilización del programa Cain&Abel
- 2.2.13 Utilización del script Findmyhash
- 2.2.14 Bypass de la autentificación de Windows y Linux
- 2.2.15 Esquivar la autentificación de Windows - Método Adam Boileau
- 2.2.16 Adaptación de winlockpwn: Inception
- 2.2.17 Ejemplos de elevación de privilegios vía exploits en Linux
- 2.2.18 Fallo de Windows Vista y Windows 7
- 2.3 Acceso a un ordenador encendido en modo usuario normal
- 2.3.1 Recopilar información
- 2.3.2 Recogida de información automatizada
- 2.3.3 La memoria USB Microsoft COFEE
- 2.3.4 Las memorias USB U3
- 2.3.5 El programa Gonzor-SwitchBlade
- 2.3.6 Medidas contra memorias U3 trucadas
- 2.3.7 Keyloggers hardware y software
- 2.3.8 Contramedidas para los keyloggers
- 2.3.9 Los flujos ADS
- 2.3.10 Contramedidas a los flujos ADS
- 2.3.11 Obtención de imágenes de memoria
- 2.3.12 Métodos de recuperación de la memoria RAM
- 2.3.13 Crear una memoria USB de arranque para vaciar la memoria
- 2.3.14 Extracción de memoria usando la conexión FireWire - Método Adam Boileau
- 2.3.15 Extracción de memoria usando la conexión FireWire - Método Carsten Maartmann-Moe (Inception)
- 2.3.16 Análisis de las imágenes de memoria
- 2.4 Conclusión
- 2.5 índices de sitios web
- 1. El hacking ético
- 1.1 Definición
- 1.2 Perfiles de hacker
- 1.3 Tipos de auditoría
- 1.4 Estrategias de auditoría
- 1.5 Metodología de auditoría
- 2. Recopilación de información
- 2.1 Footprinting
- 2.1.1 Recolección de información mediante redes sociales
- 2.1.2 Herramientas Web
- 2.1.3 Herramientas de listado
- 2.2 Fingerprinting
- 2.3 Descubrimiento de fallos potenciales (escáneres de vulnerabilidades)
- 2.3.1 Nessus
- 2.3.2 Openvas
- 2.3.3 AutoScan Network
- 2.3.4 Encontrar exploits
- 2.4 Informes
- 2.5 Páginas web en Internet
- 1. Introducción
- 2. Recordatorio de redes TCP/IP
- 2.1 Direccionamiento IP
- 2.2 Cliente/Servidor
- 3. Herramientas prácticas
- 3.1 Información sobre sockets
- 3.2 Escáner de puertos TCP
- 3.3 Netcat
- 3.4 SSH
- 3.5 Túnel SSH
- 4. DoS y DDoS
- 5. Sniffing
- 5.1 Capturar datos con Wireshark
- 5.2 Filtros
- 6. Man In The Middle (MITM)
- 6.1 Teoría
- 6.2 Práctica
- 6.2.1 Plug-ins
- 6.2.2 Creación de un filtro
- 6.3 Contramedidas
- 7. Robo de sesión TCP (HIJACKING) y Spoofing de IP
- 7.1 El fallo: ACK/SEQ
- 7.2 Consecuencias del ataque
- 7.3 Puesta en práctica
- 7.4 Automatizar el ataque
- 7.5 Spoofing de dirección IP
- 8. Fallos Wi-Fi
- 8.1 Crackear una red con cifrado WEP
- 8.2 Crackear WPA
- 8.3 Rogue AP
- 8.3.1 Introducción
- 8.3.2 Despliegue de un Rogue AP con Karmetasploit
- 9. IP over DNS
- 9.1 Principio
- 9.2 Uso
- 9.3 Contramedida
- 10. La telefonía IP
- 10.1 Escucha de la conversación
- 10.2 Usurpación de la línea
- 10.3 Otros ataques
- 11. IPv6
- 11.1 Los programas
- 11.2 El hardware
- 11.3 Factor humano
- 11.4 THC-IPv6
- 11.5 Escanear los hosts
- 11.6 Flooder
- 11.7 Ataque Man in the Middle
- 12. Conclusión
- 1. Presentación
- 2. Introducción al Cloud Computing
- 2.1 Historia
- 2.2 Conceptos clave
- 2.2.1 Facturación por uso
- 2.2.2 Elasticidad y agilidad de recursos
- 2.2.3 Socializar recursos
- 2.2.4 Acceso sencillo a través de la red
- 2.3 Niveles de Interacción
- 2.4 Cloud privado, público e híbrido
- 2.4.1 Cloud público
- 2.4.2 Cloud privado
- 2.4.3 Cloud híbrido
- 2.5 La responsabilidad de los proveedores
- 3. Riesgos asociados a los datos
- 3.1 Responsabilidad jurídica del cliente y del prestatario
- 3.1.1 Derechos y obligaciones
- 3.1.2 Responsable de los datos
- 3.1.3 Obligación de información del proveedor
- 3.1.4 Seguridad de los datos
- 3.2 Cifrado de los datos
- 3.2.1 Criptografía simétrica
- 3.2.2 Criptografía asimétrica
- 3.3 Accesibilidad de los datos
- 3.4 Disponibilidad de los datos
- 3.5 Localización de los datos
- 3.6 Protección y recuperación de los datos
- 4. La seguridad lógica en el Cloud Computing
- 4.1 Virtualización: los nuevos riesgos
- 4.2 Soluciones de hermetismo lógico
- 4.3 El factor humano
- 4.4 Seguridad en el acceso: autentificación y autorización
- 4.5 Auditorías regulares
- 5. La seguridad física
- 5.1 Control de acceso
- 5.2 Catástrofes naturales
- 5.3 Redundancia del hardware
- 5.4 Normas a aplicar
- 5.4.1 TIA 942
- 5.4.2 ISO 27001
- 5.5 Auditorías regulares
- 6. Ataques mediante Cloud Computing
- 6.1 Descripción
- 6.2 Captura de claves: ejemplo con un hash SHA1
- 6.3 Ejemplo de un ataque DDoS
- 7. Conclusión
- 8. Enlaces
- 1. Recordatorio sobre las tecnologías Web
- 1.1 Preámbulo
- 1.2 La red Internet
- 1.3 ¿ Qué es un sitio Web ?
- 1.4 Consulta de una página Web, anatomía de los intercambios cliente/servidor
- 1.5 ¿ Cómo se construyen las páginas Web ?
- 2. Aspectos generales en la seguridad de sitios Web
- 3. Pequeño análisis de un sitio Web
- 3.1 Mapa de las partes visibles de un sitio Web
- 3.1.1 ¿ El sitio web es estático o dinámico ?
- 3.1.2 ¿ Cuáles son las variables usadas ?
- 3.1.3 ¿ Qué formularios y qué campos las utilizan ?
- 3.1.4 ¿ Recibimos cookies ? ¿ Qué datos contienen ?
- 3.1.5 ¿ Las páginas tienen contenido multimedia ?
- 3.1.6 ¿ El sitio realiza consultas a base de datos ?
- 3.1.7 ¿ Podemos acceder a algunas carpetas ?
- 3.1.8 ¿ El sitio web usa JavaScript ?
- 3.1.9 ¿ Qué servidor se está utilizando y cuál es su versión ?
- 3.1.10 Ayuda
- 3.2 Descubrir la cara oculta de un servidor Web
- 3.2.1 Utilización de Burp Suite
- 3.2.2 Utilización de wfuzz
- 3.3 Analizar la información obtenida
- 4. Pasar al ataque de un sitio Web
- 4.1 Enviar datos no esperados
- 4.1.1 Principios y herramientas
- 4.1.2 Utilización de la URL
- 4.1.3 Utilización de formularios
- 4.1.4 Utilización de la cabecera
- 4.1.5 Utilización de cookies
- 4.2 Robo de sesión
- 4.3 El almacén de archivos perjudiciales
- 5. SQL Injection
- 5.1 Preámbulo
- 5.2 Introducción a las bases de datos
- 5.3 Principio de las inyecciones SQL
- 5.4 Técnica de Blind SQL
- 5.5 Herramientas eficaces
- 6. Pasar un CAPTCHA
- 6.1 Presentación de distintos CAPTCHA
- 6.2 Saltarse CAPTCHAs básicos
- 6.3 Saltarse los CAPTCHAs de imágenes
- 7. Las nuevas amenazas en la web
- 8. Contramedidas y consejos de seguridad
- 8.1 Filtrar todos los datos
- 8.2 Fortalecer la identificación del cliente
- 8.3 Configurar sabiamente el servidor
- 9. Conclusión
- 1. Generalidades
- 2. Contraseñas
- 2.1 Introducción
- 2.2 Averiguar una contraseña en Microsoft Windows
- 2.3 Complejidad
- 2.4 Almacenamiento de contraseñas
- 2.5 Caso práctico: encontrar las contraseñas de Microsoft Windows
- 2.6 Caso práctico: encontrar las contraseñas de GNU/Linux
- 2.7 Caso práctico: encontrar las contraseñas de Mac OS X (Snow) Leopard
- 3. Usuarios, grupos y permisos del sistema
- 3.1 Gestión de usuarios
- 3.1.1 Definición
- 3.1.2 En GNU/Linux
- 3.1.3 En Windows
- 3.1.4 En Mac OS X (Snow) Leopard
- 3.2 Gestión de grupos
- 3.2.1 En GNU/Linux
- 3.2.2 En Windows
- 3.2.3 En Mac OS X (Snow) Leopard
- 3.3 Asignación de permisos
- 3.3.1 En GNU/Linux
- 3.3.2 En Windows
- 3.3.3 En Mac OS X (Snow) Leopard
- 4. Elevación de privilegios
- 4.1 Activación del suid y del sgid
- 4.2 Cómo encontrar los scripts suid root de un sistema GNU/Linux
- 4.3 El Programador de tareas
- 5. Los procesos
- 5.1 Espiar procesos en Windows
- 5.2 El hooking y la inyección de procesos
- 5.2.1 Ejemplo de hooking de eventos de teclado en Windows
- 5.2.2 Ejemplo de hooking de paquetes de red mediante Netfilter en GNU/Linux
- 5.2.3 Ejemplo de inyección de código en otro proceso en Mac OS X
- 5.3 Las condiciones de carrera
- 6. El arranque
- 6.1 Abuso de los modos de arranque degradados
- 6.2 Los ataques de preboot
- 7. Hibernación
- 8. Las RPC
- 9. SeLinux y AppArmor
- 10. La virtualización
- 10.1 Aislamiento
- 10.2 La carga del raíz o chrooting
- 10.3 Kernel en el espacio de usuario
- 10.4 La máquina virtual
- 10.5 La paravirtualización
- 10.6 Ejemplo de solución de paravirtualización: Proxmox VE
- 10.7 Detección y ataque de una máquina virtual
- 11. Logs, actualizaciones y copias de seguridad
- 11.1 Logs
- 11.2 Actualizaciones
- 11.2.1 Implantación de actualizaciones automáticas en GNU/Linux
- 11.2.2 Implantación de actualizaciones automáticas en Microsoft Windows
- 11.2.3 En Mac OS X
- 11.3 Copias de seguridad
- 12. Balance
- 1. Generalidades
- 2. Nociones de ensamblador
- 2.1 Introducción
- 2.2 Primeros pasos
- 2.2.1 Aprendamos a contar
- 2.2.2 Binario
- 2.2.3 Hexadecimal
- 2.3 ¿ Cómo probar nuestros programas ?
- 2.3.1 Plantilla de un programa en ensamblador
- 2.3.2 Nuestro primer programa
- 2.4 Instrucciones
- 2.4.1 Comparación
- 2.4.2 Instrucción IF
- 2.4.3 Bucle FOR
- 2.4.4 Bucle WHILE
- 2.4.5 Bucle DO WHILE
- 2.4.6 Directiva %define
- 2.4.7 Directivas de datos
- 2.4.8 Entrada/Salida
- 2.5 Interrupciones
- 2.6 Subprogramas
- 2.7 Heap y pila
- 2.7.1 Heap
- 2.7.2 Pila
- 2.7.3 Prólogo y epílogo: nociones fundamentales
- 3. Fundamentos de shellcodes
- 3.1 Ejemplo 1: shellcode.py
- 3.2 Ejemplo 2: execve()
- 3.3 Ejemplo 3: Port Binding Shell
- 4. Buffer overflow
- 4.1 Definiciones
- 4.2 Conceptos básicos
- 4.3 Stack overflow
- 4.4 Heap Overflow
- 4.5 return into libc
- 5. Fallos en Windows
- 5.1 Introducción
- 5.2 Primer paso
- 5.2.1 En modo consola
- 5.2.2 Depuración
- 5.2.3 El problema de un shellcode grande
- 5.2.4 Ejecución de una función no prevista
- 5.2.5 Otros métodos
- 5.3 El método de call [reg]
- 5.4 El método pop ret
- 5.5 El método push return
- 5.6 El método jmp [reg] + [offset]
- 5.7 El método blind return
- 5.8 ¿ Qué podemos hacer con un pequeño shellcode ?
- 5.8.1 Principio
- 5.8.2 En la práctica
- 5.9 El SEH (Structured Exception Handling)
- 5.9.1 Conceptos básicos
- 5.9.2 SEH, protecciones
- 5.9.3 XOR y SafeSEH
- 5.10 Saltarse las protecciones
- 5.10.1 Stack cookie, protección /GS
- 5.10.2 Ejemplo: sobrepasar la cookie
- 5.10.3 SafeSEH
- 6. Caso real: Ability Server
- 7. Caso real: MediaCoder-0.7.5.4796
- 7.1 Cuelgue del software
- 7.2 Comprobación de los valores
- 7.3 Finalización del exploit
- 8. Caso concreto: BlazeDVD 5.1 Professional
- 9. Conclusión
- 10. Referencias