Puntos clave
1. El Hacking es un Arte de Resolución de Problemas No Convencional
La esencia del hacking radica en encontrar usos no intencionados o pasados por alto para las leyes y propiedades de una situación dada y luego aplicarlos de maneras nuevas e inventivas para resolver un problema.
Más Allá de los Límites Legales. Hacking no se trata inherentemente de romper la ley, sino de resolver problemas de manera creativa al encontrar usos novedosos para las reglas y propiedades existentes. Esto puede abarcar desde la optimización de programas informáticos hasta la adaptación de equipos telefónicos antiguos para nuevos propósitos. La clave es pensar fuera de las metodologías convencionales y encontrar soluciones únicas.
La Ética del Hacker. Los primeros hackers en el MIT valoraban el flujo libre de información y el aprendizaje continuo, trascendiendo límites convencionales como la discriminación. Apreciaban la lógica como una forma de arte y buscaban entender mejor el mundo eludiendo restricciones. Esta ética enfatiza el conocimiento, la innovación y el empuje de los límites, sin importar la legalidad.
Hacker vs. Cracker. Aunque el término "cracker" se utilizaba anteriormente para distinguir a los hackers maliciosos de los éticos, la línea se ha difuminado. Las leyes modernas que restringen la criptografía y la investigación pueden hacer que incluso los hackers bien intencionados parezcan estar violando la ley. El verdadero espíritu hacker trasciende las leyes gubernamentales y se centra en la aplicación del conocimiento, ya sea para el bien o para el mal.
2. La Elegancia de la Programación Radica en Soluciones Ingeniosas y Contrarias a la Intuición
Hacking es realmente solo el acto de encontrar una solución ingeniosa y contraria a la intuición para un problema.
Más Allá del Código Funcional. La programación no se trata solo de hacer que el código funcione; se trata de encontrar la manera más eficiente y elegante de realizar una tarea. Esto implica utilizar las reglas de la computadora de maneras nuevas e inventivas, lo que a menudo resulta en un código pequeño, eficiente y ordenado. Esta búsqueda de la elegancia es una forma de hacking en sí misma.
El Valor de los Hacks. Mientras que los negocios modernos a menudo priorizan la velocidad y el costo sobre la optimización, la verdadera apreciación de la elegancia de la programación queda reservada para los aficionados, los escritores de exploits y aquellos que buscan la mejor solución posible. Estas personas encuentran belleza en el código elegante y genialidad en los hacks ingeniosos, empujando los límites de lo que es posible.
La Programación como Base. Comprender la programación es crucial tanto para escribir código como para explotarlo. Al entender cómo se escriben los programas, los hackers pueden comprender mejor cómo encontrar y explotar vulnerabilidades. Este conocimiento es esencial para ambos lados del espectro de la programación.
3. La Explotación de Programas Revela Usos No Intencionados de las Reglas Informáticas
Explotar un programa es simplemente una forma ingeniosa de hacer que la computadora haga lo que quieres que haga, incluso si el programa que se está ejecutando actualmente fue diseñado para prevenir esa acción.
Explotando Fallos. La explotación de programas implica encontrar fallos u omisiones en el diseño o entorno de un programa y utilizarlos para hacer que la computadora realice algo que no estaba destinada a hacer. Esto a menudo implica eludir medidas de seguridad y obtener acceso no autorizado. Las brechas de seguridad son, en realidad, fallos u omisiones en el diseño del programa o en el entorno en el que se está ejecutando.
Errores Off-by-One. Un error común de programación que puede ser explotado es el error off-by-one, donde el programador cuenta incorrectamente por uno. Esto puede llevar a vulnerabilidades que permiten a los atacantes obtener derechos administrativos o eludir restricciones de seguridad. Por ejemplo, un error off-by-one en OpenSSH permitió a usuarios normales obtener derechos administrativos completos.
La Letra de la Ley. Los programas siguen instrucciones exactamente, incluso si los resultados no son lo que el programador pretendía. Esto puede llevar a resultados inesperados y catastróficos, como se vio en la "Laguna de LaMacchia", donde un estudiante explotó una laguna legal para facilitar la piratería de software sin obtener ganancias financieras personales.
4. Desbordamientos de Búfer y Cadenas de Formato: Técnicas de Explotación Generalizadas
Con ambas técnicas, el objetivo final es tomar control del flujo de ejecución del programa objetivo para engañarlo y hacer que ejecute un código malicioso que puede ser introducido en la memoria de diversas maneras.
Errores Comunes. Ciertos errores comunes de programación pueden ser explotados de maneras que no siempre son obvias. Estos errores han dado lugar a técnicas de explotación generalizadas que pueden ser utilizadas en diversas situaciones. Los dos tipos más comunes de técnicas de explotación generalizadas son los exploits de desbordamiento de búfer y los exploits de cadenas de formato.
Desbordamientos de Búfer. Los desbordamientos de búfer ocurren cuando un programa intenta escribir más datos en un búfer de los que puede contener, sobrescribiendo ubicaciones de memoria adyacentes. Esto puede ser utilizado para sobrescribir datos críticos, como direcciones de retorno, y tomar control del flujo de ejecución del programa.
Exploits de Cadenas de Formato. Los exploits de cadenas de formato implican manipular cadenas de formato en funciones como printf()
para leer o escribir ubicaciones de memoria arbitrarias. Esto puede ser utilizado para sobrescribir punteros de función u otros datos críticos y obtener control del flujo de ejecución del programa.
5. Segmentación de Memoria: Comprendiendo el Flujo de Ejecución del Programa
La memoria del programa se divide en cinco segmentos: texto, datos, bss, heap y stack.
Organización de la Memoria. La memoria del programa se divide en cinco segmentos: texto (código), datos, bss, heap y stack. Cada segmento cumple un propósito específico, como almacenar instrucciones del programa, variables globales o datos temporales. Comprender cómo están organizados estos segmentos es crucial para explotar vulnerabilidades.
El Stack. El stack es un espacio temporal utilizado para almacenar el contexto durante las llamadas a funciones. Contiene parámetros, variables locales y punteros necesarios para restaurar el estado del programa después de que la función termina de ejecutarse. Los desbordamientos basados en el stack pueden sobrescribir direcciones de retorno y cambiar el flujo de ejecución.
El Heap. El heap se utiliza para la asignación dinámica de memoria, permitiendo a los programas reservar memoria según sea necesario. Los desbordamientos basados en el heap pueden sobrescribir variables importantes o punteros de función, lo que lleva a vulnerabilidades de seguridad.
6. Permisos de Archivos Multiusuario: Obteniendo Privilegios de Root
Si el flujo de un programa suid root puede ser cambiado para ejecutar un código arbitrario inyectado, entonces el atacante podría hacer que el programa haga cualquier cosa como usuario root.
Modelo de Seguridad de Linux. Linux es un sistema operativo multiusuario con todos los privilegios del sistema invertidos en el usuario "root". Los permisos de archivo se basan en usuarios y grupos, evitando el acceso no autorizado a archivos.
Programas SUID. Los programas SUID (set user ID) permiten a usuarios no privilegiados realizar funciones del sistema que requieren privilegios de root. Cuando se ejecuta un programa SUID, el ID de usuario efectivo (EUID) del usuario se cambia al del propietario del programa, que normalmente es root.
Explotando Programas SUID. Si el flujo de un programa SUID root puede ser cambiado para ejecutar código inyectado, un atacante puede obtener privilegios de root. Esto puede lograrse a través de desbordamientos de búfer o exploits de cadenas de formato, permitiendo al atacante controlar el sistema como usuario root.
7. La Redes se Basan en Protocolos Estándar para la Comunicación
La red se trata de comunicación, y para que dos o más partes se comuniquen adecuadamente, se requieren estándares y protocolos.
El Modelo OSI. La comunicación en red se basa en protocolos estándar definidos por el modelo de referencia de Interconexión de Sistemas Abiertos (OSI). Este modelo consta de siete capas, cada una de las cuales trata un aspecto diferente de la comunicación, desde la conexión física hasta la capa de aplicación.
Capas Clave. La capa de red (IP), la capa de transporte (TCP/UDP) y la capa de enlace de datos (Ethernet) son particularmente importantes para comprender las vulnerabilidades de la red. Estas capas manejan direccionamiento, enrutamiento, transferencia de datos confiable y direccionamiento de hardware.
Paquetes y Encapsulación. Los datos se comunican a través de paquetes, que están encapsulados con encabezados de protocolo en cada capa. Comprender cómo están estructurados estos encabezados y cómo interactúan es crucial para explotar vulnerabilidades de red.
8. La Captura de Paquetes en Redes Expone Vulnerabilidades en la Transmisión de Datos
La explotación de programas es un pilar del hacking.
Modo Promiscuo. La captura de paquetes implica capturar paquetes transmitidos a través de una red. En una red no conmutada, los dispositivos pueden configurarse en modo promiscuo, lo que les permite capturar todos los paquetes, independientemente de la dirección de destino.
Redes Conmutadas. Las redes conmutadas limitan el tráfico a puertos específicos según las direcciones MAC, lo que dificulta la captura. Sin embargo, técnicas como la redirección ARP pueden utilizarse para eludir esta medida de seguridad.
Redirección ARP. La redirección ARP implica falsificar respuestas ARP para envenenar las cachés ARP de las máquinas objetivo, redirigiendo su tráfico a través de la máquina del atacante. Esto permite al atacante capturar y potencialmente modificar el tráfico.
9. Criptología: Equilibrando Seguridad y Práctica
No hay nada bueno o malo en el conocimiento en sí; la moralidad radica en la aplicación de ese conocimiento.
Criptografía y Criptoanálisis. La criptología abarca tanto la criptografía (el arte de la comunicación secreta) como el criptoanálisis (el arte de romper esos secretos). Una criptografía fuerte es esencial para transacciones en línea seguras y para proteger datos sensibles.
Seguridad Incondicional vs. Computacional. La seguridad incondicional, como la proporcionada por los pads de un solo uso, es irrompible incluso con recursos infinitos. Sin embargo, a menudo es impráctica. La seguridad computacional se basa en la dificultad de romper un cifrado dentro de un plazo razonable, dada la tecnología actual.
Cifrado Simétrico vs. Asimétrico. Los cifrados simétricos utilizan la misma clave para cifrar y descifrar, ofreciendo velocidad pero planteando desafíos en la distribución de claves. Los cifrados asimétricos utilizan claves públicas y privadas, simplificando el intercambio de claves pero sacrificando velocidad. Los cifrados híbridos combinan ambos enfoques para una seguridad y eficiencia óptimas.
10. Explotando la Encriptación Inalámbrica 802.11b: Ataques WEP
Las ciencias de la física nuclear y la bioquímica pueden ser utilizadas para matar, sin embargo, también nos proporcionan avances científicos significativos y medicina moderna.
Propósito Previsto de WEP. WEP (Privacidad Equivalente a Cableada) fue diseñado para proporcionar seguridad equivalente a una red cableada. Sin embargo, las debilidades en el protocolo lo hacen vulnerable a varios ataques.
Proceso de Encriptación de WEP. WEP utiliza el cifrado de flujo RC4 con un vector de inicialización (IV) de 24 bits y una clave de 40 bits o 104 bits. El IV se antepone a la clave para sembrar el algoritmo RC4, generando un flujo de claves que se XOR con el mensaje en texto plano.
Vulnerabilidades de WEP. WEP es vulnerable a ataques de fuerza bruta fuera de línea, reutilización de flujos de claves y ataques de diccionario de descifrado basados en IV. Estas vulnerabilidades pueden ser explotadas para descifrar claves WEP y obtener acceso no autorizado a redes inalámbricas.
Última actualización:
Reseñas
Hacking: El arte de la explotación es muy valorado por sus explicaciones técnicas profundas sobre las técnicas de hacking, abarcando temas como desbordamientos de búfer, redes y criptografía. Los lectores aprecian el enfoque práctico que ofrece el LiveCD incluido, lo que permite la experimentación práctica. Si bien algunos lo encuentran desafiante y potencialmente desactualizado, muchos lo consideran un recurso esencial para comprender los exploits de bajo nivel y mejorar las habilidades de programación. El libro es recomendado para aquellos interesados en la ciberseguridad, aunque puede resultar demasiado avanzado para principiantes y se centra principalmente en la programación en C y los sistemas Linux.
Similar Books









