Vous êtes sur la page 1sur 13

RESETEO

ILEGTIMO
CONEXIONES TCP

DE

Garcia Canet, Juan Ral


NIF: 20024841-Y
4 Ingenieria en Informtica
ETSE - UV

Indice
1.- Resumen
2.- Introduccin
3.- Fundamentos de TCP
3.1.- El protocolo TCP
3.2.-Funciones de TCP
3.3.- Formato de los Segmentos TCP
3.4.- Funcionamiento de TCP
3.5.- La Ventana Deslizante
4.- Reseteo de Conexiones TCP
4.1.- Cierre de conexin cordial (FIN)
4.2.- Cierre de conexin abrupta o por condicin de error grosera 1
Ejemplo de un ataque
5.- Contramedidas
6.- Referencias

La condicin de Error Grosera o grave se estable ce mediante uun mensaje ICMP que
indica el cdigo del error. (p.ej: el cdigo 3 => Port unreachable). Segn el RFC 1122 :TCP
SHOULD abort the connection (TCP debera abortar la conexin)

1.- Resumen
El presente trabajo muestra una introduccin a los problemas ocasionados por los
ataques de reseteo de conexin TCP, y se describen una variedad de dichos ataques,
que permiten a un atacante lograr que una conexin TCP sea abortada de forma
ilegtima.
2.- Introduccin
TCP es sin duda el protocolo de transporte ms utilizado en la red Internet. De l
dependen aplicaciones tales como el correo electrnico, la Web y hasta incluso
diversas aplicaciones en tiempo real para su sealizacin).
Cada una de estas aplicaciones depende, en distinto grado, de la estabilidad de la
conexin TCP correspondiente. Es decir, el error en la conexin TCP utilizada afectar a
la aplicacin que la est usando en mayor o menor medida, dependiendo de las
caractersticas de la aplicacin en particular.
Como ejemplo, en una conexin HTTP, utilizada por la web, si la conexin TCP fuese
abortada, se producira una interrupcin en la transferencia de informaci (p. ej:
descarga de ficheros o en la visualizacin de una pgina web). Sin embargo, este
efecto no sera grave, ya que bastara con reiniciar la transferencia del fichero
interrumpida o recargar la pgina para volver a establecer la conexin.
En otro caso, como en VoIP(Voz sobre IP), la interrupcin de la conexin TCP (utilizada
para sealizacin) provocara la prdida de la comunicacin de voz, siendo este efecto
ms grave que en el caso anterior.
No obstante, en el caso de los protocolos de ruteo, como BGP, que hacen uso de
coenxiones TCP para la transferencia de informacin de las rutas de encaminamiento,
el reseteo de la conexin TCP establecidad para dicho fin sera mucho ms grave que
en los casos anteriores, ya que el efecto producido sera la eliminacin de todas
aquellas entradas de la tabla de ruteo que haban sido adquiridas a travs de la
conexin que ha sido abortada. sta situacin provocar, en la mayora de los casos,
la prdidad de la conectividad con todos aquellos sistemas que dependan de las
entradas de la tabla que han sido eliminadas.
Como se ha podido ver en esta pequea introduccin, el impacto de los ataques de
resteo de conexioones TCP vara en funcin de la aplicacin que est haciendo uso de
la conexin TCP atacada. Es pues, evidente, que en aquellos casos en que el correcto
funcionamiento de la infraestructura de Internet depende, en gran medida, de una
apliccin que est haciendo uso de los servicios TCP, la proteccin contra ataques de
la ndole de los descritos, es de gran importancia.
En apartados posteriores veremos en que se basan estos ataques, algunos ejemplo de
ataques y las soluciones que se han propuesto para solucionar este tipo de
incidencias.
3.- Fundamentos de TCP
En el anterior apartado hemos descrito los inconvenientes del ataque de reseteo de
conexiones TCP, pero no hemos descrito el motivo por el que se pueden producir
dichos ataques. Es el presente apartado introduciremos los conceptos en los que se
basa el protocolo TCP para establecer la comunicacin entre dos hosts y
estableceremos los principios en los que se fundamentan este tipo de ataques
descritos.

3.1.- El protocolo TCP


El Protocolo de Control de Transmisin (TCP en sus siglas en ingls, Transmission
Control Protocol que fue creado entre los aos 1973 - 1974 por Vint Cerf y
Robert Kahn) es uno de los protocolos fundamentales en Internet. Muchos
programas dentro de una red de datos compuesta por ordenadores pueden usar
TCP para crear conexiones entre ellos a travs de las cuales enviarse un flujo de
datos. El protocolo garantiza que los datos sern entregados en su destino sin
errores y en el mismo orden en que se transmitieron. Tambin proporciona un
mecanismo para distinguir distintas aplicaciones dentro de una misma mquina,
a travs del concepto de puerto. TCP da soporte a muchas de las aplicaciones
ms populares de Internet, incluidas HTTP, SMTP y SSH. Se documenta a travs
de IETF RFC 793.
3.2.-Funciones de TCP
En la pila de protocolos TCP/IP, TCP es la capa intermedia entre el protocolo de
internet (IP) y la aplicacin. Habitualmente, las aplicaciones necesitan que la
comunicacin sea fiable y, dado que la capa IP aporta un servicio de
datagramas no fiable (sin confirmacin), TCP aade las funciones necesarias
para prestar un servicio que permita que la comunicacin entre dos sistemas se
efecte: libre de errores, sin perdidas y con seguridad.
3.3.- Formato de los Segmentos TCP
15 16

20
by
tes

Ilustracin 1: Cabecera TCP

Explicaremos a continuacin, y para no extendernos demasiado, los campos de


este segmento que nos van a interesear para este trabajo:
Puerto origen y Puerto destino identifican, junto a las direcciones origen y
destino del paquete IP, la conexin a la que pertenece el segmento.
Nmero de secuencia (Sequence number) indica el orden, dentro de la
transmisin, del primer byte de datos contenido en el segmento. Junto al
tamao total del paquete IP, que permite conocer cuntos bytes de datos se
reciben, es posible determinar cul ser el nmero de secuencia del siguiente
segmento.
Nmero acuse de recibo (Acknowledgement number) indica cul es el
byte que el emisor del segmento espera recibir como nmero de secuencia.
Esto implica que todos los bytes transmitidos en segmentos anteriores han

31

llegado de forma satisfactoria. Slo es significativo cuando el bit ACK del


campo FLAGS est a 1
FLAGS: Consta de seis bits, teniendo cada uno de ellos un significado
independiente del resto.
ACK
El campo de acuse de recibo es vlido
RST
Reiniciar la conexin
SYN
Establecimiento de conexin
FIN
El emisor lleg al final de su secuencia de datos
Ventana (Window) indica cul es el tamao de la ventana de recepcin del
emisor del segmento, es decir, el espacio en memoria disponible en el receptor.
Este campo limita la ventana de transmisin del receptor del segmento,
limitando el nmero de bytes que puede transmitir sin recibir reconocimientos.
3.4.- Funcionamiento de TCP
Ahora que hemos visto la estructura de los segmentos TCP, veremos cmo se
establece la comunicacin mediante el protocolo TCP.
Las conexiones TCP se componen de tres etapas: establecimiento de conexin,
transferencia de datos y fin de la conexin.
Para establecer la conexin se usa el procedimiento llamado negociacin en
tres pasos (3-way handshake).
Para la desconexin, en cambio, se usa una negociacin en cuatro pasos (4-way
handshake) es usada para la desconexin.
De modo grfico la conexin y desconexin TCP se establece de la siguiente
manera:

Ilustracin 2: Establecimiento
de conexin TCP

Ilustracin 3: Fin Conexin TCP

TCP usa el concepto de nmero de puerto para identificar a las aplicaciones


emisoras y receptoras. Cada lado de la conexin TCP tiene asociado un nmero
de puerto (de 16 bits sin signo, con lo que existen 65536 puertos posibles)
asignado por la aplicacin emisora o receptora.
Los puertos son clasificados en tres categoras:
Bien conocidos: Son asignados por la Internet Assigned Numbers
Authority (IANA), van del 0 al 1023 y son usados normalmente por el
sistema o por procesos con privilegios. Las aplicaciones que usan este
tipo de puertos son ejecutadas como servidores y se quedan a la escucha

de conexiones. Algunos ejemplos son: FTP (21), SSH (22), Telnet (23),
SMTP (25) y HTTP (80)
Registrados y dinmicos/privados. Son, normalmente, empleados por
las aplicaciones de usuario de forma temporal cuando conectan con los
servidores, pero tambin pueden representar servicios que hayan sido
registrados por un tercero. Tambin pueden ser usados por las
aplicaciones de usuario, pero este caso es menos comn. Adems, no
tienen significado fuera de la conexin TCP en la que fueron usados.
Cmo se establece la conexin?
Habitualmente la conexin se estable entre dos hosts. Una de ellos abre un
socket en un determinado puerto y queda
la escucha de nuevas
conexiones. A esta accin se le suele llamar apertura pasiva y determina el
lado servidor de una conexin.
Por su parte el cliente, realiza una apertura activa de un puerto enviando un
segmento SYN (1r paso) que inidica al servidor que un determinado cleinte
desea establecer una conexin. El servidor reponder con una peticin SYN
vlida con un paquete SYN/ACK (2 paso). En el tlimo paso (3r paso), el
cliente deber responder al servidor con un segmento ACK, compleando as
la negociacin y estableciendo la conexin. A partir de ese momento, cliente
y servidor pueden empezar a intercambiar informacin.
Cabe destacar que, durante esta negociacin se ha establecido un nmero
de secuencia, generado por ambas partes, que evitar que se puedan
establecer conexiones falseadas.
Esto es cierto en parte, pues como veremos en el siguiente apartado, es
posible suplantar esta comunicacin y enviar informacin falseada. Es en
este punto en el que centraremos el contenido de este trabajo.
3.5.- La Ventana Deslizante
TCP utiliza un mecanismo bastante simple para el control de flujo de
informacin. Simplemente, cada segmento TCP contiene un campo
Ventana que indica cuantos bytes de informacin TCP est dispuesto a
recibir.
Este mecanismo, impide que un hosts est contnuamente mandando
segmentos al otro de manera que el primero no sea capaz de manejar toda
la informacin producindose as una situacin de congestin que
provocara la prdidad de segmentos e informacin.
La siguiente figura ilustra el funcionamiento de la ventana deslizante:

HOST
A

A Procesa
1000 bytes

ACK 1500, w
in=
2000
000)
SEQ 1500 (1
00)
SEQ 2500(10
ACK 3500, w
in= 0
ACK 3500, w
in=
1000
, win=
0
5
5
3
K
C
A
1000

HOST
B

B Deja de enviar

B vuelve a
enviar

En este ejemplo el host B se comporta tal y como se espera, es decir, dejando de


enviar cuando A ha anunciado una ventana de 0 bytes. Es decir, el host B slo ha
enviado informacin cuando la ventana TCP lo permita. Sin embargo, si el Hosta B
hubiera continuando enviando informacin, a pesar de recibir un win=0, el Host A slo
hubiera aceptado aquellos bytes de informacin con nmeros de secuencia (SEQ) que
estuvieran dentro de la ventan de recepcin TCP. Dicho de otro modo, TCP considera
vaidos solamente aquellos segmentos-datos que se encuantran dentro de laventana
de recepcin, el resto son descartados.
A raza de lo visto, podemos afirmar que la ventana TCP tiene un impacto directo
sobre el rendimiento de la conexin ya que la tasa de transferencia de toda conexin
queda limitada por la expresin:
Mx. Tasa Transf= Ventana / RTT
Dnde RTT corresponde a Round-Trip Time (Tiempo de ida y vuelta.

Con el fin de evitar que la ventana TCP imponga un lmte artificial en la tasa de
transferencia, a menudo, se suele utilizar un tamao de ventana superior al
necesario.
Es en este punto dnde encontramos el punto dbil del sistema, ya que cuanto
mayor es el tamao de la ventana ms probabilidades hay que un atacante pueda
falsificar un segmento TCP con un nmero de secuencia tal que sea aceptado como
vlido2 por el sistema atacado.
Como se puede adivinar, si un atacante logra adivinar un nmero de secuencia
correcto, sera capaz de realizar cualquier tipo de operacin que puedan realizar los
sistemas que han establecido la comunicacin legtimamamente (incluyendo el envi
de segmentos RST que permitirn abortar la conexin TCP actual).
Como se puede ver, una caracterstica que, a priori, podra considerarse una gran
ventaja, se convierte en un problema con graves implicaciones para la seguridad.
4.- Reseteo de Conexiones TCP
Ya hemos analizado a los participante en el caso que nos ocupa, que como
recordamos, se trata del reseteo de conexiones TCP de manera ilegtima. Antes de
entrar en detalla, veremos la diferencia entre el cierre de una conexin TCP de manera
cordial (FIN) y el cierre de conexin TCP debido a una condicin de error
grosera(RST)
4.1.- Cierre de conexin cordial (FIN)
En la cabecera TCP mostrada en la Ilustracin 1 podemos ver que existen
una serie de flags que indican el tipo de segmento TCP que se est
enviando.
Cuando uno de los hosts decide cerrar la conexin, genralmente el cliente
cuando ha terminado de enviar los datos, enva un segmento con el bit FIN
activo, situacin que indica el servidor que la conexin desea abortarse. En
este momento se realiza la negociacin del cierre mediante 4 pasos (vase
Ilustracin 3). Finalizada la negociacin, la conexin queda abortada de
mtuo acuerdo.
4.2.- Cierre de conexin abrupta o por condicin de error grosera 3
2

Como se ha mencionado anteriormente, un segmento se considera vlido si su nmero de


secuencia se encuentra dentro de la ventana TCP.
La condicin de Error Grosera o grave se estable ce mediante uun mensaje ICMP que
indica el cdigo del error. (p.ej: el cdigo 3 => Port unreachable). Segn el RFC 1122 :TCP

A diferencia del cierre de conexin cordial, la conexin abrupta se


produce cuando existe una condicinn de error en alguno de los hosts. Por
ejemplo, si un host A desea establecer una conexin (enva segmento SYN)
a un puerto determinado de otro sistema en el que no existe ningn proceso
escuchando, el sistema destino (host B) enviar un segmento RST, puesto
que se considera un error. De acuerdo con lo esablecido en el RFC 793, el
segmento tendr en su campo ACK el valor correspondiente para el acuse
de recibo del segmento SYN enviado por A (en caso que el segmento SYN
no tuviera datos, dicho valor sera el nmero de secuencia del segmento
SYN incrementado en una unidad).
Otro posible ejmeplo podra ser aqul en que el proceso que mantiene una
conexin TCP termina de forma anormal y, como consecuencia, se abortan
todas la conexiones que tena establecidas.
Una vez visto esto, podemos entrar de lleno en el tema que nos ocupa.
Segn la exposicin hecha anteriormente, resulta obvio concluir que, si un atacante es
capaz de falsificar un segmento RST con los siguientes datos:
IP origen,
IP destino,
Puerto Origen,
Puerto destino,
Nmero de secuencia que se encuentre dentro de laventana de recepcin del
sistema atacado.
El resultado sera: La conexin TCP en cuestin sera abortada de forma ilegtima.
Son muchos los datos que un atacante debera conecer para poder aprovecharse de
esta vulnerabilidad. No obstante, no es tan difcil el conocimiento de estos datos.
Supongamos que el atancante conoce la identidad de los dos extremos en una
conexin:
En ese caso las IP's de los sistemas sera conocida
En lo que respecta al puerto utilizado por el servidor, lo ms seguro es que
coincida con uno de los well-know port(puerto bien conocido)correspondiente
al servicio en cuestin (p.ej: HTTP=>80; SMPT=>25...)
As pues, lo nico realmente desconocido es el puerto del cliente, lo cua forzara al
atacante a probar las 655364 combinaciones posibles para dicho puerto.
Sin embargo, hay dos consideraciones que deberemos tratar respecto a dicha
afirmacin:
1.- La mayora de los sitemas operativos eligen los puertos efmeros
(puertos TCP utilizados para conexiones salientes) de una porcion del
rango total de puertos disponibles:
Sistema Operativo
Linux Kernel 2.6 y MS Windows
Solaris y AIX
FreeBSD y OpenBSD

Puertos efmeros
1024 - 4999
32768 - 65535
1024 - 49151

SHOULD abort the connection (TCP debera abortar la conexin)


En la cabecera TCP el nmero de puesrt (origen/destino) se indica con una cadena de 16
bits, lo cul nos lleva a un nmero de 216 =65536

NetBSD

49152 - 65535

2.- Muchas implementaciones eligen sus puesrtos de forma incremental. Es


decir, si una conexin saliente usa el puerto 1025, la siguiente usar el
1025,
etc.
De esta manera, es posible, en ciertas situaciones, que un atacante pueda
saber el nmero de puerto TCP del cliente de la conexin atacada.
Si estas condiciones se cumplen, el atacante tendra, las IP's y los puesrtos. Ya slo le
quedara por averigar o adivinar el nmero de secuencia vlido para lograr que el
segmento RST falsificado sea aceptado y, como consecuencia, la conexin abortada.
Hay que decir que el tiempo que el ataque necesitar depender de dos parmetros:
Ancho de banda del atacante
El tamao de la venata TCP usada por el sistema atacado
Cmo se realizara el ataque?
Como ya hemos detallado, para la realizacin del ataque nos har falta un segmento
TCP (con el bit RST activo) falsificado con los valores (IP origen, IP destino, Puerto
origen, Puerto destino) correctos y con un nmero de secuencia que se encuentre
dentro de la ventana de recepcin del sistema atacado.
Escenario 1: El sistema atacado no est recibiendo informacin y por tanto la
ventana TCP est inmvil. El atacante deber escanear todo el espacio de nmeros de
secuencia TCP, enviando segmentos TCP cuyos nmeros de secuencia estaran
separados entre s por un valor aproximado al tamao de la ventana utilizada por el
sistema en cuestin.
Escenario 2: El sistema objetivo est recibiendo informacin, y en este caso, la
ventana est en movimiento con una velocidad promedio igual a la tasa de
transferencia promedio de la conexin TCP. En esta situacin tendremos dos posibles
formas de realizar el ataque.
1 Forma: Consiste, al igual que la descrita en el Escenario 1, en enviar
sucesivos segmentos RST con distintos nmeros de secuencia, pero esta
vez tendrn en cuenta tanto el tamao de la ventan TCP como la tasa de
transferencia de datos de la conexin (en resumen, el movimiento de la
ventana)
2 Forma: El atacante enva segmentos RST a intervalos regulares, pero
todos ellos con el mismo nmero de secuencia. En este caso, en lugar de
intentar acertar en laventana TCP, lo que estara haciendo es esperar a
que la ventana se mueva sobre los segmentos RST que est enviando.

Ejemplo de ataque:
Escenario del ataque

1024

SEGMENTO RST

Para ilustrar el ataque


http://www.gont.com.ar

usaremos

la

herramienta

tcp-reset

disponible

en

Asumiremos que la conexin TCP a atacar no est transfiriendo datos (es decir, se
encuentra incativa). Tambin consideraremos que el atacante conoce los cutro valores
que definen una conexin TCP (IP origen, IP destino, Puesrto origen, Puerto destino), y
el tamao de la ventana utilizada por el sistema objetivo del ataque.
tcp-reset -c 192.168.0.1:1024 -s 172.16.0.1:80 -t client -r 60 -W 400
-c: Permite especificar los datos correspondientes al cliente, que en este
caso, suponemos que el cliente posee la direccin 192.168.0.1 y que usa el
puesrto 1024 para la conexin TCP.
-s: Permite especificar la informacin del servidor, que en este caso posee
la direccin 172.16.0.1 y el nmero de puerto 80.
-t (target): Permite indicar cul ser el destinatario de los segmentos RST.
-r: Permite especificar el kilobits por segundo, el ancho de banda que se
desea utilizar para el ataque.
-W: Especifica el tamao de la ventana usada por el cliente.
De este modo la herramienta tcp-reset barrer todo el espacio de los nmeros de

secuencia mediante saltos del tamao especificado por -W (400.


Una vez realizado el barrido, devolver el control al atacante.
5.- Contramedidas
Para evitar el atqeu de reseteo de conexiones TCP existen variedad de contramedidas.
La primera de ellas puede ser la eleccin aleatoria de los puertos TCP para conexiones
salientes. de esta manera, si se eligen los puertos efmeros de forma aleatoria dentro
del rango 1024-65536, sera virtualmente imposible para un atacante adivinar a
ciegas5, el puesrto usado por el cliente, y como consecuencia, tanto el tiempo como
la cantidad de paquetes requeridos para realizar el ataque en cuestin seran
notablemente ms elevados.
As mismo. la IETF ha propuesto una modificacin al procesamiento de los segmentos
RST, para disminuir considerablemente las posibilidades de xito de un atacante
frente a este ataque:
Punto 1: En caso de recibir un segmento RST con un nmero de secuencia fuera de la
venta TCP, el mismo sera descartado. (RFC 793)
Punto 2: Si el segmento RST recibido contiene como nmero de secuencia TCP, el
prximo nmero de secuencia que se espera recibir, se abortar la conexin tCp
corespondiente.
Punto 3: Si el segmento RST recibido contiene un nmero de secuencia TCP que se
encuentra dentro de la ventana TCP, pero no cumple con la condicin del punto 2, se
responder a dicho segmnento con RST con un ACK.
Comentarios a estos puntos:
El punto 1 establece lo que ya est definido en el RFC 793 y no merece mayor
comentario.
El punto 2, establece un requerimiento ms estricto que al actualmente establecido en
el RFC 793, que simplemnete exige que el segmnento RST se encuentre dentro de la
venta de recepcin, mientras que en la propuesta actual se exige, adems, que el
nmero de secuencia sea el prximo nmero de secuencia esperado.
Finalmente, el punto 3, establece el concepto de challenge ACK ( desafo ACK),
que permite mitigar los ataques de reseteo de conexin, y al mismo tiempo matener
la funcionalidad de reseteo de conexin para aquellos casos legtimos.

Estando fuera del camino que siguen los paquetes correspondientes a la conexin a ser
atacada.

Ilustraremos el desfo ACK mediante le siguiente grfico:

HOST B
Dibujo 1: "challenge ACKs frente a RST ilegtimo"

Se envia un RST con el


nmero de secuencia
perteneciente a la
ventana de recepcin del
sistema atacado. Si
embargo, segn el punto
3 de la nueva
especificacin, se enviar
un ACK ya que el nmero
de secuencia del RST
enviado no coincide con
el siguiente nmero de
secuencia esperado

En este punto s se
cerraria la conexin de
forma legtima
6.- Referencias
Dafal, M. 2006. Improving TCP's Resitance to Blind In-window Attacks. IETF InternetDraft
http://www.ietf.org/internet-drafts/draft-ietf-tcpm-tcpsecure-07.txt
Gont, F. 2007. ICMP attacks against TCP. IETF Internet Draft
http://www.ietf.org/internet-drafts/draft-ietf-tcpm-icmp-attacks-02.txt
Larsen, M., Gont, F. 2007. Port Randomization. IETF Internet-Draft
http://www.ietf.org/internet-drafts/draft-larsen-tsvwg-port-randomization-01.txt
Boletn de Seguridad UNAM-CERT 2004-006. Vulnerabilidades en TCP
http://www.lugro.org.ar/pipermail/lugro-mix/2004-April/000481.html
Gont's Website: http://www.gont.com.ar/drafts/icmp-attacks-against-tcp.html
Wikipedia: http://es.wikipedia.org/wiki/Transmission_Control_Protocol
Montaana, R. 2007.(Apuntes de Redes) Tema 5: El Nivel de Transporte en Internet
http://www.uv.es/montanan/redes/redes_05.pdf
Montaana, R. 2007.(Material Auxiliar) Cap 3: La capa de enlace

http://www.uv.es/montanan/redes/cap_03.rtf

Vous aimerez peut-être aussi