¿Cómo funcionan los ataques de desbordamiento de búfer? Ir detrás de escena como un hacker

¿Cómo funcionan los ataques de desbordamiento de búfer? Ir detrás de escena como un hacker
Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Leer más.

¿Cómo atacan los hackers los sistemas usando virus y malware? A veces, puede ser ransomware; a veces, puede ser un ataque que consuma los requisitos de su sistema. El desbordamiento de búfer es uno de estos métodos de ataque, pero ¿qué es realmente? ¿Cómo funcionan estos ataques?





MAKEUSEOF VÍDEO DEL DÍA DESPLAZAR PARA CONTINUAR CON EL CONTENIDO

¿Qué es un desbordamiento de búfer?

Entonces, ¿qué son realmente un búfer y una pila? El búfer es un campo donde cierta información de entrada que le das a tu computadora espera antes de que llegue a la memoria. Recuperar datos de la memoria es una operación agotadora para el sistema. Entonces, cuando hay suficiente espacio en el área del búfer, llama a los datos directamente desde aquí. Esto significa un aumento de rendimiento para su dispositivo. Por supuesto, cuando el espacio disponible para el búfer está lleno, es necesario escribirlo en la memoria.





La pila es esencialmente una estructura de datos en la que se llevan a cabo operaciones de inserción (agregar) y extracción (eliminar) de datos. Los conceptos de búfer y pila son bastante similares; sin embargo, el búfer funciona como una pila que almacena temporalmente los datos entrantes.





que hacer con la nueva laptop

Los desbordamientos de búfer pueden ser un tema desafiante, pero como su nombre indica, ocurren cuando hay una sobrecarga de datos. Por ejemplo, desea iniciar sesión en un sistema. Los desarrolladores pueden asignar 250 bytes de espacio para el nombre de usuario. Si ingresa 300 bytes de datos, el búfer se desborda. Este desbordamiento puede afectar a otros datos en la memoria y causar daños.

Esto es genial para los piratas informáticos. Los ciberdelincuentes pueden combinar este lío con diferentes vectores de ataque, por ejemplo, para piratear el sistema e iniciar sesión como administrador.



Para comprender el desbordamiento del búfer, los temas principales que debe reconocer serán los Arquitectura interna de la CPU , registros de memoria y cómo la memoria procesa los datos. Aquí hay algunos términos sobre la CPU que necesita conocer.





Código de ensamblaje





Un lenguaje de programación de bajo nivel. , es decir, cercano al lenguaje de máquina.

Buffer

Un tamaño fijo espacio de memoria asignado .

Código de bytes

Una forma de código de lenguaje intermedio compilable escrito en un lenguaje de alto nivel.

Compilador

Un programa que convierte el lenguaje de programación en código de máquina.

Montón

Espacio de memoria dinámico y variable.

Los fundamentos de la teoría de la memoria

Sin comprender la teoría de la memoria, puede ser difícil abordar los problemas de desbordamiento del búfer en la práctica. Puedes pensar en ello como intentar construir una casa sin saber cómo hacer una pared.

Imagine que desea ejecutar un desbordamiento de búfer desde el punto de vista de un hacker. Para eso, debe manipular la memoria y hacer que la CPU ejecute su código. Si fuera alguien con intenciones maliciosas, su objetivo aquí sería sobrecargar la memoria y manipular también áreas de memoria contiguas.

  Diagrama que muestra el crecimiento de la pila y el crecimiento del montón

Pero antes que nada, debe concentrarse en los conceptos de montón, pila y segmento de texto.

Mientras se crea la pila, la memoria usa direcciones de memoria altas. Las direcciones de memoria alta significan el área de memoria extendida. Entonces los valores de dirección comienzan a disminuir. La pila de memoria utiliza un método llamado LIFO (Last In, First Out) durante el uso de la memoria. Las variables en la memoria de pila son válidas solo dentro del ámbito en el que están definidas. Si están fuera de este ámbito, se producirá un error.

La memoria de pila, por otro lado, funciona dinámicamente y no tiene que comenzar en direcciones altas. No hay un límite establecido en la memoria del montón; todos los límites los establece el sistema operativo. Es posible cambiar la memoria del montón de forma dinámica y estos límites pueden modificarse según las necesidades del usuario durante el uso del montón. Los límites de la memoria del montón dependen de factores determinados por el sistema operativo y el hardware. En otras palabras, ofrece un uso dinámico dentro de estos límites.

El segmento de texto contiene el código del programa y los segmentos de datos contienen datos globales. Alto porcentaje de direcciones memoria de pila y montón entre ellos. El sistema asigna ambas memorias en tiempo de ejecución.

Para comprender mejor el desbordamiento del búfer, debe examinar los registros de datos de propósito general que utiliza la arquitectura de su computadora para almacenar datos. En lugar de analizar cada registro individualmente, concéntrese en lo esencial.

  • ESP (Puntero de pila extendida): Este registro contiene la dirección en la parte superior de la pila.
  • EBP (puntero de base extendida): Esto contiene el puntero base.
  • EIP (Puntero de instrucción extendida): Y este registro contiene la dirección de la próxima instrucción a ejecutar.

Estos términos técnicos pueden sonar un poco confusos, pero imagínelos a todos como pequeñas particiones en la memoria.

¿Cómo funcionan los ataques de desbordamiento de búfer?

Cuando agrega nuevos datos a cualquier pila, estos datos se colocarán en la parte superior. Todos los datos nuevos se mueven hacia abajo. ESP está en la parte superior de la pila. Entonces, en este caso, el ESP va a una dirección de memoria más baja. Imagine los datos agregados arriba empujando el ESP hacia abajo.

  Diagrama que muestra el espacio del búfer en algún lugar entre ESP y EBP

Cuando un programa comienza a ejecutarse, el sistema crea un marco de pila con variables locales. El objetivo principal de un ataque de desbordamiento de búfer es obtener acceso al EIP o dirección de retorno. Un pirata informático con acceso a esta dirección puede ordenarle que apunte a cualquier código malicioso que desee, que luego afectará al sistema en general.

  Un diagrama que muestra los datos en el ESP dirigidos a la dirección de retorno

Con cada nuevo bit de datos, la pila crece hacia el EBP. La verdadera pregunta aquí es, si ingresamos demasiados datos, ¿podemos empujar el EBP hacia el EIP? De esa manera, los datos o el código que desea se ubican en el EIP y puede ver los resultados que desea. Todo lo que queda es ejecutarlo. Cuando ejecuta el programa, apunta a su código EIP y comienza la ejecución. Como resultado, si fueras un hacker, habrás llevado a cabo tu primer ataque de desbordamiento de búfer.

Para tomar el ejemplo desde un ángulo diferente, puede considerar líquidos de diferentes densidades, llamados ESP, EBP y EIP, en un recipiente. Imagina que el ESP está ubicado en la parte superior del contenedor porque su densidad es menor. Al igual que el aceite de oliva y el agua, no deben mezclarse. Entonces, el código malicioso es otro líquido: cuando lo agrega al contenedor, altera este equilibrio, desplaza algo de líquido y se mezcla con el EIP. Esto indicará un desbordamiento de búfer.

Cómo protegerse contra ataques de desbordamiento de búfer

Entonces, ¿cómo evitas que esto suceda?

En primer lugar, es importante adoptar buenas prácticas de codificación durante todo el proceso de desarrollo de software para minimizar las vulnerabilidades de seguridad. El código cuidadosamente escrito puede reducir la probabilidad de desbordamientos de búfer.

Otro paso es utilizar mecanismos de defensa que permitan monitorear regiones de memoria, verificar los límites de los búferes y detectar ataques. Finalmente, debe actualizar periódicamente los sistemas y aplicar parches. Las actualizaciones que corrigen las vulnerabilidades dificultan que los atacantes exploten las vulnerabilidades conocidas. Además, el uso de herramientas de defensa, como software y firewall, proporciona una capa adicional de seguridad.

aplicaciones que descargan música a tu teléfono

Actúe contra los desbordamientos de búfer

Los ataques de desbordamiento de búfer representan una amenaza significativa para su seguridad cibernética y, naturalmente, es importante tomar precauciones contra ellos. Afortunadamente, es posible bloquear estos ataques y fortalecer los mecanismos de defensa. Muchas buenas prácticas de seguridad, como mantener el software actualizado para corregir parches, ayudan a proteger contra tales ataques, así como otras vulnerabilidades.