jueves, 11 de febrero de 2010

Conclusiones

A partir de la realizacón de este blog se ha podido mostrar con mayor detenimiento los principales problemas de seguridad que ofrece un protocolo muy utilizado en las redes de comunicaciones. Por ejemplo, en la siguiente página se muestra un listado de las principales pruebas de vulnerabilidades realizadas sobre el protocolo FTP.

Lista de vulnerabilidades FTP


Se han descrito de estas las más importantes como son que el protocolo FTP trasmite el texto en claro, el FTP Bounce Attack, ataques por fuerza bruta.... y se han mostrado las contramedidas para evitar estos ataques, siendo importante resaltar lo importante que resulta la prevención de ataques, para minimizar y dificultar que estos se produzcan.

Ataque por fuerza bruta

En primer lugar es importante aclarar que es un Ataque por Fuerza Bruta. En Criptografía se denominan a este tipo de ataques a aquellos cuya función es recuperar claves probando todas las posibles combinaciones hasta encontrar aquella que nos permita obtener el acceso al lugar de nuestro ataque. Este tipo de ataques suele ser muy costoso en cuanto al número de operaciones necesarias para conseguir el objetivo requerido, puesto que usan el método de prueba y error, muy costoso computacionalmente.

Puesto que el protocolo FTP es usado para transferir constantemente información entre clientes y servidores (principalmente web), y la gran mayoría de la información transmitida usando este protocolo es llevada a cabo sin ningún método de cifrado, por esto la interceptación de dichas transmisiones origina un enorme peligro en la integridad y confidencialidad de los datos. Muchos de estos datos, son usuarios o contraseñas que pueden ser obtenidos fácilmente con numerosos programas como el BrutusAET, que es un crackeador de contraseñas http, FTP, Telnet, SMB entre otros.

Este programa al igual que otros muchos como Cain & Abel 4.6, SAG 0.2.0, PwDumpX11...posee una interfaz gráfica que nos permite de forma sencilla configurar numerosos campos como:

- Target (objetivo): dirección IP de la máquina (servidor) objetivo.

- Tipo: Tipo de protocolo a auditar (para nuestro caso FTP).

- Puerto: Por defecto trae seleccionado el 80 (comunmente utilizado para servicios Web,
para nuestro caso al seleccionar el protocolo FTP se habilitará el puerto 21).

Opciones de autenticación: en este apartado puede indicarse el método de ataque. Uno de los más comúnmente utilizados es el método de diccionario (método que hace uso de un archivo con los posibles nombres de usuarios y contraseñas) método mas efectivo con aquellos usuarios “novatos” o ingenuos que aún utilizan palabras comunes para sus inicios de sesión: fechas de nacimiento, ciudad, mismos nombres, palabras de uso común,etcDeben ubicarse los dos archivos diccionarios “usuarios” y “palabras”.

Tras esta configuración se pasaría a ejecutar el testeo comprobando cada uno de los usuarios contenidos en el archivo users contra cada una de las palabras contenidas en el archivo de words.
Hay que tener en cuenta que cada intento de inicio de conexión puede quedar registrado en función de la configuración que tenga el servidor al que intentemos atacar, pudiendo ocurrir que una IP sea restringida tras un número configurado de intentos fallidos, lo que provocaría que sería necesario la utilización de servidores proxys como métodos de ocultación de clientes.


Referencias

-http://kernelerror.net/infosec/ftp-by-brute-force/
-http://www.baxware.com/fuerza-bruta-bruteforce.htm
-http://labs.dragonjar.org/laboratorios-hacking-tecnicas-y-contramedidas-ataques-por-fuerza-bruta-brute-force-i

miércoles, 10 de febrero de 2010

Ataques por errores en la configuración FTP

A continuación se describirán algunos errores que se pueden producir en cuanto a la configuración del servidor FTP que lo harían susceptible de ser atacado.

Un problema común en la configuración es que el directorio root FTP anónimo (~ftp) y sus subdirectorios se encuentren en el mismo lugar que la cuenta del usuario FTP y estos no se encuentren protegidos frente a escritura. En este caso, un atacante podría añadir mediante escritura nuevos archivos, como por ejemplo “.rhosts”, o modificar los ya existentes e incluso llegar a destruirlos.

Además si archivos con información privada, como por ejemplo los archivos “/etc/passwd” y "/etc/group” del sistema, se colocan como archivos de password y de grupo en el directorio “~ftp/etc”, permitirá que los atacantes puedan obtener copias de estos archivos.

Algunos servidores FTP se configuran como anónimos para así poder permitir áreas de escritura, por ejemplo, mediante la utilización de directorios “drop off” o de entrada para almacenar los archivos enviados al servidor. Si estos archivos se pueden leer por los usuarios de la cuenta FTP anónimo, podrían producirse abusos por parte de los clientes. Por ejemplo, podrían utilizarse los directorios “drop off” para la distribución de versiones falsificadas de software o para distribuir información comprometida sobre cuentas y archivos de password.

Otro problema debido a una mala configuración es que cuando al configurar el servidor no se establece un límite en el área de escritura, el sistema de archivos pueden ser abarrotado de archivos basura que acaparen todo el espacio, para conseguir la interrupción del servicio, la caída del sistema no simplemente el consumo del espacio de disco.


Contramedidas

Una configuración adecuada del servidor se conseguiría realizando adecuadamente las siguientes acciones:

-Configuración de los directorios del FTP anónimo:

Consiste en hacer que el directorio root ftp y sus subdirectorios pertenezcan únicamente al directorio root y protegerlo para que solo el directorio root tenga permiso de escritura.

Ademas, los archivos y librerias utilizados en “~ftp/bin” y “ftp/etc” no deben estar ubicados en la cuenta ftp o pertenecer al mismo grupo que esta y todos ellos deben estar apropiadamente protegidos frente a escritura.

-Utilización de archivos propios para los archivos de password y de grupo

Consiste en hacer que el directorio “~ftp/etc tenga un archivo de password y de grupo independientes de los archivos del sistema asegurando que “~ftp/etc/passwd” no contiene los mismos nombres de las cuentas que se encuentran en “/etc/passwd”. En este ultimo campo solo se tiene que indicar aquellas entradas que son importantes para la jerarquía FTP o para mostrar los nombres del propietario y del grupo. Además se puede conseguir clarear el campo de password por ejemplo mediante la utilización de un asterisco (*).

-Modificación del dominio FTP

Para permitir el almacenamiento de archivos a los usuarios en el servidor FTP anónimo, es importante modificar la configuración del dominio, que controla el acceso al directorio “drop off”. Esta es la mejor forma de evitar que se utilicen áreas de escritura no deseadas.

Algunas de las modificaciones que se deberían tener en cuenta son las siguientes:

a) Establecer una política en el servidor donde los archivos bajados no puedan ser accedidos por el resto de los usuarios hasta que el administrador del sistema examine los ficheros y los mueva a un directorio de acceso público.

b) Limitar la cantidad de datos transferidos a una sección.

c) Limitar la cantidad de datos que se pueden transferir en función de la disponibilidad que se tenga de almacenamiento en el disco.

d) Crear registros para poder detectar los abusos que se realicen.

-Utilización de directorios protegidos

Otra solución es utilizar directorios protegidos si se planea dar un servicio “drop off” y no es posible modificar el dominio ftpd.

Esto se consigue si se protege el nivel más elevado del directorio “~ftp/incoming” , dando solo permiso de ejecución a los usuarios anónimos, lo cual permite que los usuarios cambien de directorio mediante la instrucción “cd”, pero les impide ver el contenido de los directorios.

Referencias

La principal referencia a partir de la cual se ha obtenido la siguiente información es la siguiente página Web:

http://penta2.ufrgs.br/gereseg/unlp/tut1998/s14barbera.html#Contenidos

Contiene información general de cómo proteger servidor FTP.

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.