07.05.2013 Views

Ataques contra redes TCP/IP

Ataques contra redes TCP/IP

Ataques contra redes TCP/IP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

Desbordamiento<br />

(buf1 + 12)<br />

parámetro_3=”c”=3<br />

parámetro_2=”b”=2<br />

parámetro_1=”a”=1<br />

RET<br />

SFP<br />

buf1[5]<br />

buf2[10]<br />

crecimiento<br />

de la pila<br />

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

Parámetros<br />

de la función<br />

Dirección de<br />

retorno de la<br />

llamada a la<br />

función<br />

Variables<br />

locales a la<br />

función<br />

Para poder llevar a cabo el desbordamiento es necesario conocer la arquitectura del sistema<br />

en el que se está ejecutando el programa, así como su sistema operativo. A partir de<br />

esta información, será posible conocer, por ejemplo, el sentido de crecimiento de la pila<br />

de ejecución (puede ser a direcciones menores de memoria o a direcciones mayores), la<br />

definición del puntero de pila (si éste hace referencia a la última posición ocupada en la<br />

pila o a la primera posición libre), etc.<br />

Asimismo, se requiere conocer también en detalle el orden en el que se depositan los<br />

distintos elementos en la pila: el puntero hacia el marco anterior (SFP), la dirección de<br />

retorno (RET), el orden de las variables locales y los parámetros pasados a la función, etc.<br />

Con toda esta información, se podrá introducir un valor en la posición de la dirección de<br />

regreso que modifique el flujo de ejecución justo en el punto que se desee, es decir, una<br />

posición de memoria en el que se haya almacenado previamente el código que hay que<br />

ejecutar. Generalmente, éste suele ser el código en ensamblador necesario para abrir una<br />

consola de sistema (shellcode).<br />

Desbordamiento<br />

(buf1 + 12)<br />

ShellCode<br />

parámetro_3=”c”=3<br />

parámetro_2=”b”=2<br />

parámetro_1=”a”=1<br />

RET<br />

SFP<br />

Buffer[100]=”\xeb\x0b\xd8\<br />

… ... … ... … ... …<br />

… ... … ... … ... …<br />

\xdc\xda\xff/bin/sh”<br />

crecimiento<br />

de la pila<br />

Parámetros<br />

de la función<br />

Dirección de<br />

retorno de la<br />

llamada a la<br />

función<br />

Variables<br />

locales a la<br />

función

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

Saved successfully!

Ooh no, something went wrong!