Análisis de Vulnerabilidades: Buffer Overflow, DoS, Troyanos y Pharming
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 10,31 KB
Buffer Overflow
Buffer Overflow / Buffer Overrun
EIP contiene la dirección de la siguiente instrucción que ejecutará el procesador, ESP contiene la dirección de la cima de la pila y EBP la dirección del marco actual.
Para llamar a una función, primero se guarda en la pila la siguiente instrucción a ejecutar, es decir, el contenido que deberá tener el registro EIP al salir de nuestra función (dirección de retorno). Seguidamente, se guarda el registro EBP, y después las variables locales de nuestra función. Una vez hecho esto, el puntero EBP toma el valor de la dirección "base" de las variables de la función, es decir, apunta a la dirección de la pila que se encuentra justo encima del puntero EBP anterior. A continuación, se muestra un gráfico de ejemplo:
BoF
Al momento de ejecutar código, se tendrá básicamente un prompt (símbolo de sistema) que nos solicita el ingreso de una contraseña y que no permite el acceso al resto de la funcionalidad. Sin embargo, se puede observar que la función scanf
recoge la cadena que se introduce por teclado sin tener en consideración su longitud, por lo que si se introduce una cadena de más de los 10 caracteres que se tienen reservados se producirá un Buffer Overflow.
Debugger
Para saltar la autenticación, veremos la memoria con un programa depurador llamado OllyDbg.
Con este programa cargaremos el programa objetivo ingresando la contraseña "patata". Al momento de depurar se verá de la siguiente forma:
Como se puede apreciar, se ha producido un desbordamiento de buffer de tal manera que se ha sobreescrito la cadena que contenía la contraseña de acceso. De esta manera, en este momento, si el programa accede a esta cadena ya no contendrá la cadena "p3nt3st3r", sino la cadena "a".
De esta forma, se ha aprovechado un Buffer Overflow para evadir un proceso de autenticación. El ejemplo es bastante simple, ya que es difícil encontrarnos con un caso exactamente como este.
Esquema de una Pila
Como se muestra, EBP está apuntando a la base del espacio de memoria de la función suma, es decir, justo debajo de la primera de sus variables locales. Como se ha dicho antes, EBP delimita el marco de una función, por tanto se puede ver el marco de la función como una especie de "ventana" de la memoria, donde se encuentran sus propias variables. Cuando una función termina, debe dejar la pila tal y como se encontraba justo antes de su ejecución, por tanto debe haber retirado de la pila todas sus variables locales. Seguidamente se restablecen los valores de EBP y EIP, y se retiran de la pila los argumentos de la función. Así, todo ha vuelto a su normalidad y el programa continuará como si la llamada a la función no fuese más que una simple instrucción.
¿Qué pasaría si se modifican los valores de la dirección de retorno? Como se ha mostrado, al finalizar la función, el programa saltará a la dirección que uno hubiese puesto.
Ataques de Denegación de Servicio (DoS)
A lo largo del tiempo, los ataques de denegación de servicio han sido un medio que, junto con otras aplicaciones (recordemos el caso MyDOOM), han sido una verdadera pesadilla para administradores de sistemas y profesionales del sector.
Se caracterizan por su fácil ejecución y su principal rasgo es la dificultad con la que pueden ser mitigados. DoS es el acrónimo de Denial of Service (Denegación de Servicio). Un ataque DoS a un servidor conectado a Internet tiene como objetivo agotar sus recursos, ya sean de ancho de banda o de procesamiento, para que sea (prácticamente) imposible acceder a él. En principio, el realizar un ataque DoS está a disposición de cualquiera que disponga de mayor ancho de banda que el servidor atacado y/o haya descubierto alguna vulnerabilidad del sistema operativo que gestiona el servidor (o los routers). Está claro que la primera opción no está al alcance de cualquiera, por lo que los ataques DoS suelen ser del segundo tipo.
DoS mediante paquetes ICMP (ping)
Es una técnica DoS que pretende agotar el ancho de banda de la víctima. Consiste en enviar de forma continuada un número elevado de paquetes ICMP echo request (ping) de tamaño considerable a la víctima, de forma que esta ha de responder con paquetes ICMP echo reply (pong), lo que supone una sobrecarga tanto en la red como en el sistema de la víctima. Dependiendo de la relación entre la capacidad de procesamiento de la víctima y el atacante, el grado de sobrecarga varía; es decir, si un atacante tiene una capacidad mucho mayor, la víctima no puede manejar el tráfico generado.
Ataque Land
Un ataque LAND (Local Area Network DoS) se produce al enviar un paquete TCP/SYN falsificado con la dirección del servidor objetivo como si fuera la dirección origen y la dirección destino a la vez. Esto causa que el servidor se responda a sí mismo continuamente, acabe desbordándose y al final falle.
SYN Flood (Inundación con paquetes SYN)
El protocolo TCP se inicia con una conexión en tres pasos. Si el paso final no llega a establecerse, la conexión permanece en un estado denominado "semiabierto".
El Syn Flood es el más famoso de los ataques tipo Denial of Service (DoS). Se basa en un "saludo" incompleto entre los dos sistemas.
El Cliente envía un paquete SYN pero no responde al paquete ACK del segundo paso del saludo, ocasionando que el servidor permanezca a la escucha un determinado tiempo hasta cancelar la llamada.
Si se envían muchos saludos incompletos, se consigue que el servidor se paralice o, por lo menos, el tráfico funcione demasiado lento.
Para operar con este sistema hay que mantener el Sys Flood activo, ya que la mayoría de los sistemas tienen un límite de espera muy corto para conexiones semiabiertas. Cuando se ha esperado mucho tiempo, se libera un hueco para aceptar otras posibles peticiones, lo cual puede ser aprovechado para "colar" un paquete SYN destructivo o malicioso. Así que, este ataque se puede utilizar tanto para consumir los recursos de un sistema como para abrir el camino a otro tipo de ataque.
Troyanos
En informática, se denomina troyano o caballo de Troya (traducción literal del inglés Trojan horse) a un software malicioso que, bajo una apariencia inofensiva, se ejecuta de manera oculta en el sistema y permite el acceso remoto de un usuario no autorizado al sistema.
Operaciones de Troyanos
- Utilizar la máquina como parte de una botnet (por ejemplo, para realizar ataques de denegación de servicio o envío de correo no deseado).
- Instalación de otros programas (incluyendo otros programas maliciosos).
- Robo de información personal: información bancaria, contraseñas, códigos de seguridad.
- Borrado, modificación o transferencia de archivos (descarga o subida).
- Ejecutar o terminar procesos.
- Apagar o reiniciar el equipo.
- Monitorizar las pulsaciones del teclado.
- Realizar capturas de pantalla.
- Ocupar el espacio libre del disco duro con archivos inútiles.
Formas de Infección
- Descarga de programas de redes P2P y sitios web que no son de confianza.
- Páginas web que contienen contenido ejecutable (por ejemplo, controles ActiveX o aplicaciones Java).
- Exploits para aplicaciones no actualizadas (navegadores, reproductores multimedia, clientes de mensajería instantánea).
- Ingeniería social (por ejemplo, un cracker manda directamente el troyano a la víctima a través de la mensajería instantánea).
- Archivos adjuntos en correos electrónicos y archivos enviados por mensajería instantánea.
Tipos de Troyanos
- Bancario: Ayudan en la ejecución de ataques de phishing. Modifican el contenido del archivo hosts de los sistemas Windows. Esta técnica es denominada pharming local.
- Downloader: Se encargan de descargar otros códigos maliciosos mientras se encuentran activos.
- Bot: Convierte una computadora en zombi. Cada una de estas computadoras zombis formará parte de redes botnets.
- Backdoor: Habilita un canal de acceso no convencional en el sistema, permitiendo que otros malware y/o personas ingresen sin inconvenientes al mismo.
- Dropper: Se caracteriza por ejecutar otros códigos maliciosos al momento de su ejecución.
- Keylogger: En este caso, el troyano se encarga de monitorear y registrar todo lo que se teclea. Está netamente orientado al robo de información confidencial. Algunos de ellos tienen la capacidad de realizar capturas de pantallas.
Pharming y Botnets
Pharming es la explotación de una vulnerabilidad en el software de los servidores DNS o en el de los equipos de los propios usuarios, que permite a un atacante redirigir un nombre de dominio a otra máquina distinta. De esta forma, un usuario que introduzca un determinado nombre de dominio que haya sido redirigido, accederá en su explorador de internet a la página web que el atacante haya especificado para ese nombre de dominio.
Un bot (aféresis de robot) es un programa informático que imita el comportamiento de un humano. En sitios wiki, como Wikipedia, un bot puede realizar funciones rutinarias de edición. En otros sitios, como YouTube, el bot puede responder a cuestiones sobre el propio contenido del sitio (bots conversacionales).
Botnet es un término que hace referencia a un conjunto o red de robots informáticos o bots, que se ejecutan de manera autónoma y automática. El artífice de la botnet puede controlar todos los ordenadores/servidores infectados de forma remota y se usan para diversas actividades criminales.