FTP Hacking, bounce attack tutorial

Un servidor FTP, como un servidor cualquiera es siempre un arma de doble filo. Por un lado tienen como objetivo cubrir una necesidad, solucionarnos un problema, o darnos una alternativa para la resolución de una situación. Pero por el contrario es un punto de entrada tanto al equipo donde está alojado el servidor FTP como a la red interna del propio servidor. Por ello, se hace más que importante que nuestro servidor esté lo mas securizado posible tanto si estamos sobre una plataforma windows, linux o mac

Ya sabemos que los servidores FTP crean un canal de comuniación por el cual viajan los comandos de la sesión principal y otro canal secundario que se establece para hacer la descarga de datos y evitar así que la sesión quede inutilizable hasta que se descarguen o suban los datos que hemos pedido. Como vimos también el establecimiento del canal secundaría goza de varios comandos como son el PORT y el PASV para poder configurar los parámetros de conexión de dicho canal, y es mediante estos comandos con los cuales un servidor FTP mal configurado puede ofrecer la posibilidad a un hacker de escanear y/o corromper nuestra red.

(IN)Securizando un servidor FTP

Lo primero que vamos a hacer es bajar la seguridad de nuestro servidor FTP filezilla para ponerlo al nivel de muchos otros servidores que están distribuidos en la red y que operan con tal configuración. Filezilla por defecto viene configurado para evitar este tipo de hacking a servidores ftp. Así nosotros lo primero que debemos hacer es cambiar la configuración en nuestro entorno controlado para poder practicar esta técnica. Para ellos nos vamos la sección de configuración de filezilla y en la pestaña de seguridad desactivamos las restricciones de conexiones entrantes como de conexiones salientes.
Configuración bounce attacks en filezilla ftp server
Será el propio servidor quien nos advierta que el desactivar estas restricciones de seguridad podrían ser necesarias bajo ciertas condiciones con servidores proxys, pero que si lo hacemos estaremos corriendo el riesgo de permitir en nuestra red ataques de tipo DoS (denial of service, denegación de servicio) y ataques de tipo escaneo y descubrimiento tanto de máquinas como de puertos abiertos en las mismas. Así que si nos vemos obligados bajo estas condiciones a quitar estas restricciones en un servidor FTP en producción deberíamos tomar medidas adicionales tanto el firewalls perimetrales/internos, routers y switches para delegar al responsabilidad de evitar estos ataques a dichos componentes de nuestra red. Nosotros de momento, al estar trabajado en un entorno de pruebas y controlado no vamos a ver por ahora estas medidas, ya que entre otras cosas aún no estamos en posición suficiente para entender cómo implementarlas.

Cómo realizar ataques a equipos desde un servidor FTP

La teoría que respalda este tipo de ataques es muy sencilla y deriba de cómo nosotros podemos engañar a un serivor FTP para que cree canales secundarios para enviar datos datos a máquinas que en realidad no son la nuestra. Entrando en algo mas de detalle, nosotros con el comando PORT indicamos al servidor FTP tanto «nuestra IP como el puerto en el que estamos esperando su conexión«. Y aquí es donde radica toda la base de este tipo de hacking, en «nuestra IP«. No hay absolutamente ningún problema en especificar cualquier otra IP  distinta a la nuestra y engañar al servidor FTP para hacerle creer que la IP de cualquier otro equipo en internet es la nuestra. Filezilla tiene la opción (habilitada por defecto) de comprobar si estamos tratando de engañarle mirando la IP desde la cual se ha establecido el canal principal y la IP que se está especificando para crear los canales secundarios. Como norma general estas IPs deberían concidir ya que si nosotros establecemos un canal primario desde nuestra IP los canales secundarios deberían estar también ligados a nuestra IP y no a otra. Al desmarcar esta opción estamos eliminado esta comprobación y PERMITIENDO que se creen canales secundarios con IPs distintas al canal primario. Bajo este escenario nosotros desde el ángulo del hacking estamos en condiciones suficientes para realizar 2 tipos de ataques con fines muy distintos, ataques de denegación de servicio (DoS) y escaneos en la red.

FTP Bounce attack, escaneo de máquinas en la red.

Escenario, estamos conectados a un servidor FTP que nos da libertad de utilizar el comando PORT a nuestro antojo. Objetivo descubrir puertos abiertos en máquinas de la red en la que está el servidor FTP. ¿Por qué hacerlo utilizando un servidor FTP como punto central y no escanear desde nuestra propia máquina? Por dos motivos. Primero, privacidad y ocultación. Los escaneos de redes suelen ser muy ruidosos, hay técnicas para disminuir el ruido que hacen y evitar generar un volumen excesivo de tráfico y logs en los servidores, pero aún así será nuestra IP la que puede quedar logeada y la que estará generando tráfico en la red, permitiendo a un buen administrador de sistemas descubrirnos. Sin embargo si lo hacemos mediante esta técnica será el servidor FTP quien genere el tráfico y nosotros permaneceremos ocultos tras el, dificultando al administrador su labor de detectarnos. La segunda razón es que si estamos frente a un buen administrador de redes el firewall perimetral de su red (el que colinda con su red interna privada e internet) bloqueará el escaneo haciéndonos creer que no existen puertos abiertos en los equipos de la red, al hacer el escaneo desde el servidor FTP ya nos hemos saltado este firewall y toda la protección que en el haya implementada. Resumiendo escanear desde un servidor FTP ubicado en una red privada nos da 2 ventajas, la primera nos oculta de cara a los administradores, la segunda nos otorga todos los privilegios que tendríamos si estuvieramos físicamente en la red interna.

FTP escaneo de puertos, bounce attack tutorial.

Por definición un puerto abierto es aquel que está a la espera de una conexión. entonces si nosotros mediante el comando PORT indicamos la IP de la máquina que queremos escanear y el puerto en concreto puede pasar 2 cosas, o bien que el servidor nos diga que no hay podido establecer el canal secuandario o que nos diga que se ha creado correctamente. Si se da el primer caso se deduce que el puerto escaneado está abierto, en el segundo se deduce que está cerrado. Para poder llevar a cabo esta tarea, desde la línea de comandos CMD, debemos utilizar telnet, ya que si utilizamos el cliente que trae integrado por defecto la línea de comandos no nos dejará enviar los comandos PORT modificados por nosotros. En cambio telnet al ser un cliente de conexión multiuosos no nos impondrá ninguna restricción. Telnet dejó de incluirse como herramienta incluida por defecto desde Windows 7 en adelante, si estás trabajando con Windows 7 o Windows 8 deberás debes utilizar la herramienta putty, la cual es gratuita y la puedes descargar pinchando aquí. Tanto con la herramienta telnet como con la herramienta putty debéis de conectaros como ya sabéis al puerto 21 (si no lo habéis cambiado, es el puerto por defecto del servidor FTP) Para conectarnos con putty es bastante sencilla ya que solo debéis especificar la IP del servidor FTP, el puerto 21 y el protocolo telnet, como es una herramienta gráfica no tendréis problema alguno, para conectar con telnet desde la línea de comandos debéis lanzar la siguiente orden (en mi caso el servidor está en la IP 192.168.255.2)
telnet 192.168.255.2 21
Se os quedará la pantalla en negro a la espera de que introduzcáis comandos. Esto es así porque telnet es un protocolo de bajo nivel en el que no tenéis ni restricciones ni asistencia automática:
Abrir sesion en servidor FTP con telnet
Como podéis ver la conexión se ha creado ya que en caso contrario telnet nos habría dicho que no se ha podido establecer la conexión. Una vez aquí debemos de enviar al servidor FTP los comandos de usuario y contraseña para poder identificarnos. Si hemos encontrado un servidor público que permite el acceso anónimo podemos probar el usuario anonymous en nuestro caso, ya que el servidor es nuestro vamos a trabajar con el usuario test cuya contraseña es test:
Login en servidor FTP, pasando credenciales con TELNET
Ya hemos iniciado sesión en el servidor FTP utilizando el protocolo TELNET. Es decir, estamos trabajando a bajo nivel, sin intermediarios que emitan comandos que a nosotros nos perjudiquen para realizar nuestras actividades. Ahora llega el momento de hacer que el servidor FTP haga escaneos en la red que se encuentra y nos diga si el puerto que queremos analizar está abierto o cerrado. En nuestro caso, tenemos otra máquina en la IP 192.168.255.129 que sospechamos que puede tener el puerto 80 abierto, nosotros no lo sospechamos, lo sabemos porque la hemos configurado así para poder realizar este estudio. Procedemos a engañar al servidor FTP mediante el comando PORT para obligarle a crear el canal secundario con la máquina objetivo en lugar de con nuestra máquina.
FTP bounce attack telnet port comando
Como vemos el servidor ahora está preparado para establecer el canal secundario con la máquina objetivo. Llega el momento de dar el segundo paso. Decirle al servidor FTP que le envíe un archivo, esta orden obligará al servidor FTP a crear el canal secundario y podrán ocurrir dos cosas, que pueda crearlo o que no. En el primer caso sabremos que el puerto de la máquina objetivo está abierto y en el segundo sabremos que está cerrado:
Haciendo un escaneo de puertos desde un servidor FTP
Como podéis observar el servidor FTP ha sido capaz de establecer de crear el canal secundario con la máquina objetivo 192.168.2.129 en el puerto 80 y le ha enviado el archivo foto.jpg. Con esto nosotros ya estamos en posición de saber que el PC ubicado en esa dirección IP tiene el puerto 80 abierto. Nosotros en ningún momento hemos hecho petición alguna a la máquina 192.168.2.129, todo lo ha hecho el servidor FTP ubicado en 192.168.2.128, ha sido el quien por nosotros ha detectado un puerto abierto en 192.168.2.129. La máquina objetivo es en realidad un windows XP con un servidor FTP corriendo bajo el puerto 80, y si miramos su log veremos esto:
log ftp bounce attack
Fijaros que en el log de la máquina 192.168.255.129 aparece una conexión que proviene de la IP 192.168.255.128 (la del servidor FTP) que fijaros como le envía el archivo imagen.jpg a bocajarro. Nuestra IP jamás queda reflejada en ninguna parte. Ahora bien si nosotros hubieras intenado que el servidor FTP estableciese una canal secundario contra un puerto cerrado de la máquina objetivo, por ejemplo el 81, habriamos objetivo esta respuesta:
FTP bounce attack puerto cerrado
El servidor nos dice que no ha podido establecer una conexión con la máquina y puerto objetivo, señal de que el puerto en esa máquina está cerrado. Ver esto a bajo nivel era necesario para poder comprender cómo funcionan la técnica de escaneo de puertos utilizando un servidor FTP como máquina intermediaria. Evidentemente escanaear a mano una red completa con este método sería algo muy tedioso y largo de hacer, con lo cual hacer el escaneo a mano es útil para confirmar la sospecha de que cierta máquina tiene algún puerto abierto que a nosotros nos podría interesar. 

Automatizar el proceso de escaneo de puertos Bounce Attack con Nmap

Para poder desarrollar la tarea de escanear una red completa de ordenadores, o incluso escanear todos los puertos de cierta máquina disponemos de varias herramientas las cuales tienen la habilidad de automatizar el proceso que hemos visto. Entre otras muchas nos econtramos con una de las mejores y más avanzadas herramientas de escaneo de puertos que existen en el mercado, que además es gratuita NMAP. Esta herramienta es multiplataforma, funciona tanto para windows, linux como para mac, pomdemos añadir entre sus múltiples cualidades que satisface tanto a usuarios que les gusta hacer todo desde la consola de comandos Shell como a los que prefieren tener una interfaz gráfica. Como estamos aún en un nivel de conocimiento sobre seguridad informática básico vamos a ver la herramienta desde su interfaz gráfica, ya que consideramos que será mas fácil e intuitiva para quiens se están iniciando en el mundo de la seguridad informática. Vamos utilizar NMAP para descubrir que el puerto 21 de la máquina 192.168.255.128 está abierto. Para ello utilizaremos el siguiente comando:
nmap -p 21 -Pn -b test:test@192.168.255.129:80 192.168.255.128
Que analizándolo, estamos pidiendo que analice el puerto 21 (opción -p 21), que no haga ping para evitar dejar pistas (opción -Pn), establecer el servidor FTP que hará el trabajo por nosotros, opción (-b test:test@192.168.255.129:80, este servidor FTP está corriendo en el puerto 80) y establecer el objetivo 192.168.255.128. Con todo esto vemos:
Nmap bounce attack

Y vemos como Nmap ha sido capaz de automatizar todo el proceso de escaneo descrito anteriormente. Si quitamos la opcíon -p 21, y no especificamos puerto alguno, nmap analizará todos los puertos (y tardará bastante) pero nos hará el trabajo para todos los puertos, además podemos poner varias IPs. Más adelante estudiareamos a fondo Nmap, el objetivo de esta entrega era y es presentar esta técnica de análisis de puertos mediante FTP bounce attack.

Ataques de denegación de servicio utilizando bounce attack

Otra característica que puede dar problemas a los administradores de redes/sistemas y a la par dar una nueva posibilidad a los hackers que tengan malas intenciones es que utilizando la técnica anteriormente descrita no solo se puede conseguir escanear la red en busca de otros servidores y servicios. También es posible utilizar esta técnica para colapsar a una máquina en concreto. Supongamos que accedemos a un servidor FTP, vemos que tiene archivos varios megas, probamos la técnica de bounce attack y vemos que el servidor no está lo suficientemente securizado y nos deja utilizarla. En este punto nosotros podríamos lanzar este archivo de varios megas contra la máquina que quisieramos. Imaginad que ya sabemos programar y hacemos un pequeño programa que pida al servidor FTP de forma automática que lo envíe sin parar contra la máquina objetivo. Y para hacer mas efectivo el ataque descubirmos no uno, sino varios servidores FTP en la red que permiten el bounce attack y a todos los ordenamos que no paren de enviar archivos a la máquina objetivo. El resultado de esto será que la máquina objetivo estará recibiendo mientras nosotros no paremos nuestro ataque una cantidad de tráfico bestial, que puede incluso hacer que se colapse y deje de funcionar, haciendo lo que comunmente se conoce como DoS (Denial Of Service).

Creemos que con lo visto hasta esta publicación ya podéis imaginar que instalar un servidor FTP sin preocuparse por su configuración puede ser una fuente de problemas, así que nuestra recomendación es que si tenéis en vuestra red servidores FTP y comprobáis que son vulnerables a este tipo de ataques os planteéis reconfirgurarlos o cambiarlos si fuera el caso de que fueran servidores muy básicos o antiguos y no hubiera manera de reconfigurarlos para evitar este tipo de ataques. Conforme avancemos en el curso podremos ver cómo evitar este tipo de hacking mediante firewalls, ACLs, Queues… y un largo etcétera, pero de momento debemos de ver los conceptos necesarios previos para poder llegar a implementar estas soluciones.

Contenido extra FTP bounce attack

Este ataque se puede automatizar con una de las mejores herramientas que todo hacker y/o auditor informático debe conocer. El escáner de puertos más completo llamado NMAP. Del cual te recomendamos de forma encarecida la lectura de:

Continua leyendo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Newsletter Signup

Suscríbete a nuestra lista si te interesa recibir turcos exclusivos sobre hacking y seguridad informática