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