sábado, 23 de enero de 2010

FTP Bounce Attack

El comando PORT fue creado para especificar la dirección IP y el puerto del destinatario para establecer la transferencia de datos entre cliente y servidor (véase el RFC 959). Realizar este conexión malintencionada mediante este comando a una maquina arbitraria es lo que se conoce como FTP Bounce Attack.

A continuación se muestran algunos ejemplos de lo que se conseguiría hacer mediante este tipo de ataque:

1º ejemplo:

Supongamos que tenemos un firewall detrás del cual se encuentra un servidor FTP anónimo. Un intruso puede saltar este firewall en ciertas configuraciones de la red. Mediante la utilización de una técnica de escaneo de puertos, un atacante puede determinar que el servidor Web interno en este sitio está disponible en el puerto 8080, puerto que normalmente se encuentra bloqueado por el firewall.


Una vez establecida la conexión con el servidor publico FTP, el atacante inicia una conexión entre este servidor y un puerto arbitrario de una máquina, por ejemplo el puerto 8080 del servidor Web. De esta forma el atacante consigue establecer una conexión con la maquina dentro del área protegida por el firewall.


2º ejemplo:

En sitios protegidos por un firewall que realice un filtrado dinámico de paquetes el ataque puede realizarse mediante la utilización de un applet Java.

La victima de este ataque con solo solicitar una página Web, leer un mail o las noticias en un browser puede bajarse un applet Java fabricado por el atacante. De manera invisible, el ejecutable se ejecuta en la máquina del cliente dentro del área protegida por el firewall, pues este considera que puede confiar en este código que esta ejecutándose.

El applet lo que hace es enviar un comando PORT al servidor FTP del atacante, indicándole que abra una conexión al puerto telnet de la victima. El firewall con filtrado dinámico de paquetes como ve que el comando PORT fue generado por una maquina local permite la conexión que viene desde el servidor de la victima al puerto telnet, suponiendo que el cliente requiere la transferencia de un archivo. Por lo tanto, el atacante ha conseguido burlar el firewall.


Contramedidas

Control del software FTP

Una solución para evitar este tipo de ataques es asegurarse que el software del servidor FTP pueda realizar conexiones a maquinas arbitrarias. No obstante, aquellos sitios que basan su comportamiento en la compatibilidad con el RFC, se encuentran con que la aplicación de esta solución afecta a las aplicaciones que utilizan.

Correcta configuración del servidor FTP

Consiste en configurar el servidor de forma que ofrezca aplicaciones de cuenta anónima solo cuando sea absolutamente necesario y se debe tener mucho cuidado en la configuración del área de entrada.

Configuración adecuada de la red

Es importante siempre diseñar la topología de la red de forma que se limite el tráfico entre aquellos sistemas que ofrecen distintos servicios, mediante la utilización de zonas militarizadas, firewall, etc

Estricta autenticación de los usuarios

Aquellos servidores que requieren una fuerte autenticación de los usuarios que intenten generar una conexión hacia fuera del área protegida no caerían antes estos ataques, puesto que el applet sería detectado y el no sería capaz de identificarse como un usuario.


Referencias

A continuación se enumeran algunas páginas de interes que tratan sobre este tipo de ataque:

jueves, 14 de enero de 2010

Vulnerabilidad: transmisión de texto en claro

Una de las principales características del protocolo FTP estándar definido en el RFC 959 es que está diseñado para la transferencia de archivos ofreciendo la máxima velocidad de transmisión posible durante la conexión, pero en cambio no dispone de una gran seguridad puesto que todo lo que se transmite, se transmite en texto en claro, es decir, sin aplicarle ningún tipo de cifrado.

Por un lado, debido a que los argumentos de los comandos de control de acceso USER y PASS se transmiten en texto en claro cualquier atacante que monitorice la red, por ejemplo, con la utilización de un sniffer, puede hacerse con un nombre de usuario y contraseña. Una vez adquiridos estos el atacante tiene acceso al servidor, en principio sin ningún tipo de restricción.
Además, como no solo el control de acceso, sino que también los archivos se transmiten sin cifrar, el atacante puede apropiarse también de estos.



Contramedidas

-Encriptar los datos
Este es uno de los principales problemas de FTP, por lo tanto, para solucionarlo se han desarrollado una serie de aplicaciones que transfieren todo el tráfico de forma cifrada. Ejemplos de estas aplicaciones son
scp o sftp.

- Configurar adecuadamente la red
Es importante siempre diseñar la topología de la red de forma que se limite el tráfico entre aquellos sistemas que ofrecen distintos servicios, mediante la utilización de zonas militarizadas, firewall, etc


-Cuentas de invitado
Resulta importante también la correcta asignación de cuentas a los usuarios. Mediante la utilización de las cuentas de invitados se establecen restricciones a los usuarios para que no puedan acceder a archivos que no necesitan, de esta forma, si roban una cuenta se reduce el acceso que puede tener al atacante mediante su utilización.


-Extensiones de seguridad
Implementar el servicio FTP con las especificaciones definidas en el RFC 2228. Estas extensiones introducen mejoras en la seguridad FTP mediante nuevos comandos, respuestas y codificación en la transferencia de datos, los cuales son compatibles con la RFC 959.

Referencias

-SCP: Información general obtenida en la Wikipedia sobre SCP.
-SFTP: Información general obtenida en la Wikipedia sobre SFTP.
-RFC 959. File Transfer Protocol (FTP) 1985.
-RFC 114.File Transfer Protocol (FTP) 1976.
-RFC 2228. FTP security extensions.1997.
-Securiy issues in FTP. Página web donde se habla del problema de la captura de usuarios y contraseñas por la transmisión de texto en claro.

martes, 12 de enero de 2010

FTP ACTIVO vs FTP PASIVO

Como ya sabemos, en toda transferencia ftp interviene un programa servidor y otro cliente. El servidor se ejecuta donde se encuentran almacenados los ficheros que se desean descargar (o donde se almacenan aquellos que son subidos) y el cliente es el programa ftp usado desde la máquina local para descargar o subir los ficheros deseados.

En este proceso de comunicación entre el cliente y el servidor, el cliente puede actuar de dos maneras diferentes: modo ACTIVO o modo PASIVO.

MODO ACTIVO

Dicho modo es el habitual por defecto. Cuando usamos ftp de esta forma, se establecen dos conexiones distintas. En primer lugar se establece una conexión para la transmisión de comandos desde cualquier puerto de nuestro ordenador, inferior al 1024 hacia el puerto 21 del servidor. A través de esta misma conexión, mediante un comando PORT se indica al servidor cual será el puerto de nuestra máquina que se colocará a la escucha de datos.

De esta forma, si nos disponemos a descargar un fichero, es el servidor quien inicia la transferencia de los datos, desde su puerto 20 al puerto que se le ha sido indicado. Debido a esto, es por lo que se conoce como modo ACTIVO.
EJEMPLO 1. El puerto de control del cliente (1026) se conecta al puerto de control del servidor (21) y le envía el numero del puerto de datos (1027).

2. El servidor responde con un ACK al puerto de control del cliente.

3. El servidor inicia una conexión entre su puerto de datos (20) y el puerto de datos del cliente (1027).

4. El cliente responde con un ACK al servidor.

MODO PASIVO

Por el contrario, en modo pasivo es siempre el programa cliente quien inicia la conexión con el servidor. Al abrir una conexión ftp, se abre primeramente una conexión de control desde un puerto inferior a 1024 de la máquina local al puerto 21 del servidor. El cliente pasa a modo pasivo enviando el comando PASV y pidiendo un puerto abierto al servidor. Tras recibir la respuesta, será el cliente quien establezca la conexión de datos con el servidor a través del puerto que le ha sido enviado.

EJEMPLO

1. El puerto de control del cliente (1026) se conecta al puerto de control del servidor (21) y envía PASV.

2. El servidor responde al cliente con el puerto 2024, puerto aleatorio de datos abierto para conexiones de datos.

3. El cliente inicia una conexión desde su puerto de datos (1027) al puerto de datos del servidor (2024).

4. Finalmente, el servidor envía de vuelta un ACK al puerto de datos del cliente.


Como resumen podríamos decir, que en el modo pasivo las conexiones son siempre abiertas por el cliente, mientras que en el modo activo son abiertas por aquel que envía los datos, es decir, el servidor si se trata de descargar archivos a la máquina local y el cliente si de lo que se trata es de subir archivos al servidor.

PROBLEMA CONEXIÓN MODO ACTIVO

Como ya se ha comentado, en el modo activo se abre una conexión para datos desde el servidor hacia el cliente, es decir, una conexión desde fuera hacia dentro, lo que podría provocar que si el cliente estuviera protegido con un cortafuegos, éste filtrara o bloqueara la conexión entrante, al considerarlo un proceso desconocido. Debido a esto, surge el modo pasivo, en el cual es el cliente quien inicia ambas conexiones, tanto control como datos, con lo que el contafuegos ya no tiene ninguna conexion entrante que filtrar o bloquear.

domingo, 10 de enero de 2010

Introducción al FTP

¿Qué es FTP?

FTP (File Transfer Protocol) es un protocolo de red utilizado para la transferencia de archivos en la red utilizando el protocolo TCP, el cual es un modelo de conexión basado en la estructura cliente-servidor.

El servicio FTP es ofrecido por la capa de aplicación al usuario a través de los puertos 20 o 21.

Modo de funcionamiento

Al iniciar el usuario una comunicación FTP, se inicia una conexión de control desde un puerto arbitrario de la máquina del usuario al puerto 21 del servidor de FTP. Este canal de control utiliza el protocolo Telnet para transmitir los comandos entre cliente y servidor.

Mediante esta conexión de control, una vez que el usuario es autenticado, el cliente FTP elige un puerto por el que espera recibir los datos. Una vez realizado esto envía el comando PORT con la información del puerto elegido al servidor. Después transmite al servidor información sobre el tipo de operación que se va a realizar sobre el sistema de archivos (almacenar, añadir, borrar, etc.).

El servidor responde creando una conexión desde el puerto 20 al puerto especificado anteriormente para el cliente, en la conexión de control mediante el comando PORT y realiza la transferencia de datos sobre este nuevo canal.

Esta conexión es full-duplex o bidireccional, es decir, se puede enviar y recibir simultáneamente información a través de ella.

Modos de acceso al servidor

El cliente FTP dispone de tres tipos distintos de acceso al servidor FTP:

a) Acceso anónimo: Este tipo de acceso permite a todos los servidores FTP anónimos ofrecer servicios libremente a los usuarios, sin la necesidad de tener una cuenta de usuario. Para entrar en este tipo de servidores hay que introducir “anonymous” en usuario y como contraseña cualquiera, aunque lo correcto es utilizar la dirección de correo propia.

Este tipo de acceso permite el acceso a los archivos FTP, pero con privilegios limitados, con respecto a los que dispondría un usuario normal.

b) Acceso de usuario: Mediante las introducciones de un usuario y una contraseña almacenadas en el servidor, de forma que mediante este acceso se permite tener privilegios de acceso a cualquier parte del sistema de archivos del servidor FTP.

c) Acceso de invitado: Es una mezcla de los dos anteriores. Existen restricciones que evitan que el usuario tenga acceso a partes del sistema de archivos que no necesita para realizar su trabajo.