07.05.2013 Views

Ataques contra redes TCP/IP

Ataques contra redes TCP/IP

Ataques contra redes TCP/IP

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

© FUOC • P06/M2107/01769<br />

48 <strong>Ataques</strong> <strong>contra</strong> <strong>redes</strong> <strong>TCP</strong>/<strong>IP</strong><br />

Los ataques que permiten explotar este tipo de deficiencias se presentan generalmente en Descargar exploits de internet<br />

forma de binarios (programas ejecutables) ya compilados para el sistema operativo en el<br />

La idea de visitar páginas<br />

que se está ejecutando la aplicación vulnerable (conocidos con el nombre de exploits).<br />

web de internet con el<br />

objetivo de en<strong>contra</strong>r exploits<br />

ya creados y ponerse a<br />

.<br />

probar sus efectos no es<br />

nada recomendable. Aunque<br />

conseguir el código fuente de<br />

Un exploit es un programa, generalmente escrito en C o ensamblador, que fuerza<br />

estos exploits es<br />

generalmente posible, es<br />

las condiciones necesarias para aprovecharse de un error de seguridad subyacente.<br />

muy probable que a causa<br />

del desconocimiento del<br />

tema por parte del usuario no<br />

le permita percibir que este<br />

exploit puede ser en realidad<br />

Existen infinidad de exploits para servidores de aplicaciones de internet (servidores de<br />

un ataque <strong>contra</strong> su propia<br />

imap, pop3, smtp, ftp, httpd, . . . ) y generalmente se pueden en<strong>contra</strong>r disponibles en máquina.<br />

internet ya compilados o en forma de código fuente.<br />

Analizaremos a continuación, como ejemplo de dos de las deficiencias de programación<br />

más representativas, los ataques de explotación a través de desbordamientos de buffer y<br />

mediante cadenas de formato.<br />

1.6.1. Desbordamiento de buffer<br />

Un ataque de desbordamiento de buffer se basa en la posibilidad de escribir información Lectura recomendada<br />

más allá de los limites de una tupla almacenada en la pila de ejecución. A partir de esta<br />

Una de las mejores lecturas<br />

tupla, asociada a una llamada a función dentro del programa, se puede conseguir corromper para entender el correcto<br />

el flujo de la ejecución modificando el valor de regreso de la llamada a la función. Si este<br />

funcionamiento de los<br />

ataques de explotación<br />

cambio en el flujo de ejecución es posible, se podrá llevar la ejecución a una dirección de basados en desbordamientos<br />

memoria arbitraria (introducida en los datos de la pila a partir del mismo ataque) y ejecutar<br />

de buffer es el artículo<br />

”Smashing the Stack for Fun<br />

un código malicioso.<br />

and Profit”de Aleph One. Lo<br />

podéis en<strong>contra</strong>r en el<br />

número 49 de la revista<br />

El éxito de este ataque será posible en aquellos programas que utilizan funciones de manipulación<br />

de buffers que no comprueban los límites de las estructuras de los datos como,<br />

por ejemplo, la función strcpy(), en vez de las que sí lo hacen como, por ejemplo, la<br />

función strncpy(). Veamos, a partir del siguiente ejemplo:<br />

digital Phrack<br />

(www.phrack.org).<br />

[usuario@victima /]$ cat a1.c<br />

void f (int a, int b) {<br />

char buffer[100];<br />

}<br />

void main() {<br />

f(1,2);<br />

}<br />

[usuario@victima /]$ gcc a1.c -o a1<br />

[usuario@victima /]$ ./a1

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!