Bienvenido a cursohacker.es. Puedes acceder a todo el contenido líbremente pero si deseas poder crear tus propios temas en el foro y que tus respuestas y comentarios se publiquen de forma automática regístrate como alumno aquí

Cliente FTP gratuito portable y multiplataforma (winSCP)

En las últimas entregas hemos visto cómo instalar un servidor FTP, los comandos mas útiles para trabajar con ellos cuando hay problemas y cómo conectarnos a ellos en redes hostiles haciendo uso de los comandos PORT y PASV. Hoy veremos Una herramienta de conexión gráfica que nos permite trabajar con los servidores FTP cómodamente y que hace automáticamente los comandos PORT y PASV por nosotros.

Cliente FTP gratuito (WinSCP) para Windows, Linux y Mac

Una de las mejores herramientas para trabajar con servidores FTP que soporten o no el protocolo seguro SFTP es sin duda alguna WINSCP. Es un cliente gratuito y multiplataforma, lo que segnifica que tanto si eres usuario de Windows, como de Linux o como de Mac podrás utilizarlo sin ningún problema. 
Descargamos la versión de instalación para windows aquí: http://winscp.net/download/winscp550setup.exe, en el caso de que queráis el portable o descargarlo para otra plataforma podéis elegirlo desde winscp.net. Una vez descargado comenzamos la instalación (es una instalación bastante sencilla del tipo siguiente, siguiente, siguiente....) dejamos por defecto la configuración típica de WinSCP:
cliente ftp gratuito winscp, instalación, configuración típica
En el siguiete paso vamos a escoger el modo commander (también viene seleccionado por defecto) en este modo veremos en la parte izquierda del programa nuestro ordenador y en la parte derecha el servidor FTP, lo cual nos vendrá muy bien para ver de un vistazo lo que hay en el servidor y lo que hay en nuestro PC:
Instalación WinSCP, modo commander
A mi personalmente no me gusta que los programas que tiene una utilidad me modifiquen otros programas o me instalen extensiones que no quiero utilizar a priori, así que yo os recomiendo desactivar la opción "include google chrome, along with WinSCP" y la opción de "Make google chrome my default browser":
Instalación WinSCP, no google chrome inclusión
En el siguiente paso hacéis click en "finish" y termina la instalación. Enhorabuena, ya tienes instalada en tu máquina una de las mejores herramientas gratuitas para trabajar con servidores FTP. 

Configuración de nuestro cliente FTP winSCP

La primera vez que arrancamos nuestro cliente nos va a pedir los datos del servidor FTP al que queremos conectarnos. En nuestro caso vamos a trabajar con el servidor que hemos instalado unos días atrás, para ello tendréis que mirar vuestra IP ya que vuestro servidor funciona en local, y recordar tanto el usuario y contraseña del usuario de pruebas que creásteis:
Cliente FTP, WinSCP, creando un perfil de conexión.
Una vez puestos estos datos solo nos queda hacer click sobre el botón "Save As..." para guardar estos credenciales y no tener que ponerlos cada vez que queramos conectarnos. Justo antes de guardar la sesión os va a pedir si queréis almacenar también la contraseña. Debéis saber que al guardar la contraseña si alguien tiene acceso a vuestro PC podrá verla. Este es el motivo por el que por defecto WinSCP te recomienda no guardarla, sin embargo, nosotros la vamos a guardar, ya que en primer lugar estamos trabajando con un usuario de prueba y en segundo lugar nos va a facilitar mucho el trabajo que nuestro cliente WinSCP actúe cómo gestor de claves:
Cliente WinSCP, guardar contraseña de sesión
Una vez ya configurada la sesión en WinSCP y guardados los datos solo nos queda hacer click en "Login" para conectarnos a nuestro servidor FTP. Justo al hacer esto y si no habéis puesto ningún dato erróneo os va a aparecer una interfaz bastante sencilla e intuitiva en la cual veréis 2 partes, en la izquierda estaréis viendo los archivos y carpetas de vuestro ordenador, en la derecha veréis los archivos y carpetas a los que tenéis acceso en el servidor FTP al que os acabáis de conectar:
Cliente FTP WinSCP, interfaz commander

Analizando cómo WinSCP descarga y sube archivos a un servidor FTP

La gestión más común es la de subir archivos al servidor y bajar archivos del servidor, para esto solo debéis de arrastrar de una ventana a otra, WinSCP traducirá la orden que habéis dado al arrastrar a comandos FTP que llegarán al servidor y le darán la orden de hacer lo que habéis pedido. En nuestro ejemplo, vamos a suponer que me quiero descargar a mi escritorio el archivo del servidor FTP llamado "imagen.jpg". EL primer paso sería en la ventana de la izquierda navegar hasta mi escritorio y luego arrastrar el archivo de la parte de la derecha (servidor FTP) a la parte de la izquierda (mi PC). Vamos a ver varias opciones que tenemos a la hora de descargar el archivo:
descargar archivos FTP con WinSCP
La primera opción que os he marcado es la de "Transfer type: Binary", esto es porque WinSCP sabe que es un archivo binario, haced memoria o revisad la entrega de comandos FTP para recordar que había 2 formas de transferir fichros, en binario y en modo texto. Esta la primera tarea que WinSCP ha hecho por vostros, activar el modo correcto para este archivo. La segunda opción que os remarco es: "Transfer on background (add to transfer queue)". Nosotros no la vamos a marcar puesto que para descargar un archivo será muy rápido y nos da igual hacerlo en primer plano o en segundo plano. Tenéis que saber que si empezáis una descarga en primer plano no podréis hacer nada más hasta que no finalice la descarga. Así que si váis a descargar archivos pesados os recomiendo marcar la opcíon de "background" para poder seguir trabajando en el servidor mientras descargáis vuestro archivo.

Si nos vamos al log del servidor FTP (que es Filezilla en nuestro caso) podremos ver los comandos que se han utilizado para realizar la descarga, que son justo los que  nosotros habríamos tenido que escribir:
 

 test (192.168.255.128)> PWD
 test (192.168.255.128)> 257 "/" is current directory.
test (192.168.255.128)> TYPE I
test (192.168.255.128)> 200 Type set to I
test (192.168.255.128)> PASV
test (192.168.255.128)> 227 Entering Passive Mode (192,168,255,128,4,139)
test (192.168.255.128)> RETR imagen.jpg
test (192.168.255.128)> 150 Connection accepted
test (192.168.255.128)> 226 Transfer OK

El primero (PWD) se ha hecho para saber WinSCP en que directorio se encuentra, y el servidor ha contestado que se encuentra en la carpeta de entrada, también denominada raiz (/). Luego ha hecho uso del comando (TYPE I) que es un comando que tiene la misma función que "Binary" y lo que hace es establecer el modo binario para descargar un archivo, el servidor contesta con "200 Type set to I" que quiere decir que se ha establecido el modo binario sin ningún tipo de problemas. Acto seguido WinSCP ha activado el modo pasivo mediante el comando (PASV). Recordemos que este comando se utiliza para indicar al servidor que nos abra un puerto para nosotros establecer un canal secundario para descargar un archivo. Al hacer la petición con el comando PASV, el servidor nos responde con "227 Entering Passive Mode (192,168,255,128,4,139)" Lo cual significa que nos ha aceptado el PASV y está esperando la conexión del canal secundario en la IP 192.168.255.128, en el puerto 1163. ¿Recuerdas cómo se calculaba este puerto? (4*256=1024 + 1391163). Después WinSCP ha hecho uso del comando (RETR imagen.jpg) que es igual que el comando GET, se ha creado el canal secundario y se ha descargado el archivo.
Todo esto es lo que ha hecho por ti la herramienta WinSCP cuando tu has arrastrado el archivo.

Ahora pasamos a ver cómo actúa WinSCP cuando pedimos que suba un archivo al servidor. Para nosotros el proceso es idéntico al de descargar un archivo solo que en lugar de pasar un archivo desde la ventana de la derecha a la ventana de la izquierda, ahora pasamos el archivo de la ventana de la izquierda (nuestro PC) a la de la derecha (servidor FTP). El archivo se subirá y si miramos el log del servidor veremos una secuencia muy parecida a la anterior:

test (192.168.255.128)> TYPE I
test (192.168.255.128)> 200 Type set to I
test (192.168.255.128)> PASV
test (192.168.255.128)> 227 Entering Passive Mode (192,168,255,128,4,166)
test (192.168.255.128)> STOR imagenNueva.jpg
test (192.168.255.128)> 150 Connection accepted
test (192.168.255.128)> 226 Transfer OK

Vuelve a poner el modo binario con el comando (TYPE I), el servidor acepta el modo al dar como respuesta "200 Type set to I". Vuelve a establecer el modo pasivo con el comando "PASV" esta vez vemos que el puerto es diferente, y esto se debe a que cada vez que nosotros pedimos establecer un canal secundario el servidor elegirá uno al azar de su lista de puertos que nosotros le hayamos asigando para este tipo de canales secundarios. Un buen administrador de redes, elegirá unos cuantos puertos para soportar el modo pasivo de su servidor FTP y los "mapeará en su router" (cosa que veremos en próximas entregas de curso hacker) para redireccionarlos a su servidor FTP. De este modo se asegurará que cuando alguien pida al servidor establecer el modo pasivo el servidor FTP escoga un puerto al cual el cliente sea capaz de llegar. Finalmente WinSCP utiliza el comando "STOR imagenNueva.jpg" que es similar a "PUT imagenNueva.jpg" y con ello sube la imagen al servidor haciendo uso del canal secundario de forma totalmente transparente para el usuario.

Problemas usuales subiendo o descargando archivos

Otros clientes FTP menos avanzados que WinSCP no son capaces de trabajar de forma correcta en el modo pasivo y modo activo, esto se traduce en que la conexión se quedará pillada y jamás podrán llegar a establecerse estos modos, es en estos casos cuando analizar lo que está haciendo nuestro cliente FTP nos puede ayudar a solventar el problema y corregir nosotros de forma manual los fallos. Para esto es fundamental conocer el funcionamiento de estos servidores y sus comandos básicos y avanzados. Pero también se puede dar el caso de que un mal administrador tenga mal configurado su servidor FTP de forma que ocurra este escenario:

Escenario problemático cliente conexión FTP

Describiendolo un poco, vemos que nostros estamos en una red de área local y tenemos 3 entidades, nuestro router que tiene 2 ips (la interna 192.168.1.1 y la pública 80.58.68.14), nuestro PC con IP 192.168.1.2 y nuestro smartphone que está conectado por wifi y el router le ha dado la IP 192.168.1.3. Por otro lado el servidor FTP se encuentra en una oficina en una red distinta a la nuestra, tiene un router con 2 ips, la pública y la privada igual que nosotros y da la casualidad de que el servidor FTP tiene en su red interna la IP 192.168.1.3. 
En este caso nosotros para conectarnos al servidor FTP lo hemos tenido que hacer conectándonos a su IP pública (81.25.98.21), en realidad nosotros nos hemos intentado conectar a su router, que es quien tiene asiganda la IP pública al puerto 21 (puerto estándar de los servidores FTP) y el router nos ha redireccionado la conexión a su host con dirección IP interna 192.168.1.3. Imaginad ahora que nosotros o WinSCP hace uso del comando PASV y el servidor FTP diera una respuesta tal que así:
227 Entering Passive Mode (192,168,1,3,4,139)
Si esto ocurriera nosotros lanzaríamos al petición de conexión para abrir un canal secundario a la IP 192.168.1.3 al puerto 1163. ¿Pero qué ocurre? Pues que lo que estamos haciendo es intentando crear un canal secundario con un host dentro de nuestra red local, en concreto con el host dentro de nuestra red local con IP 192.168.1.3 que resulta ser nuestro smartphone, que lógicamente rechazará dicha conexión y JAMÁS llegaríamos a establecer el canal secundario. Para más inri, podría darse el caso de que nuestro smartphone fuera de mala calidad y se quedara pillado al no saber cómo actuar ante una petición de este estilo y como consecuencia nos habríamos "cargado" nuestro smartphone hasta nuevo reinicio. Entendiendo lo que hemos visto hasta ahora podríamos rápidamente darnos cuetna del problema que estamos teniendo e intentar buscar una solución ya sea mediante PORT o contactando con el administrador de dicho servidor. 

La respuesta correcta que debería dar el servidor FTP es:
227 Entering Passive Mode (81,25,98,21,4,139)
La cual estaría indicando que tenemos que conectarnos a su IP pública para poder establecer el canal secundario. Este problema que hemos descrito anteriormente ha sido el causante de muchos quebraderos de cabeza de gente que no sabía porqué su servidor FTP conectaba pero no le dejaba descargar ni subir nigún tipo de archivos. Os invitamos a seguir indagando, a que instaléis vuestro servidor FTP en una máquina y os conectéis desde otra con WinSCP para ver cómo produciendo las secuencias de comandos, analizarlas e intentar reproducirlas desde la línea de comandos para tener un dominio completo desde la CMD.

Comentarios

Me cambio a WinSCP, antes utilizaba CuteFTP para estas tareas pero viendo como trabaja WinSCP y siendo gratuito me olvido de estar utilizando versiones triales de herramientas de pago.

Enhorabuena por el curso, me ha ayudado a comprender ciertas cosas que antes sabia pero vagamente.
tengo una duda y es la siguiente: pongamonos en el caso de que tengo varios ordenadores conectados al mismo router y en uno de esos ordenadores tengo el servidor FTP. Quiero conectarme a ese servidor desde otro ordenador en otro router, tendría que ponerle una Ip fija a ese ordenador o conectandome a la ip publica del router seria capaz de conectarme al servidor FTP y no a alguno de los otros ordenadores?

Tienes que hacer ambas cosas. En primer lugar poner IP fija al ordenador que tiene el servidor FTP instalado, y luego mapear el puerto 21 en el router al que está conectado el servidor FTP. Entonces desde el ordenador que está en el otro router te conectas a la IP pública del router del ordenador que tiene el servidor FTP al puerto 21. El router redireccionará la conexión al PC del servidor FTP ya que has mapeado el puerto para esto.Puedes ver un poco más sobre mapeos en la publicación http://cursohacker.es/direcciones-ips-nuestra-huella-en-la-red

Muchas gracias por responder y por la velocidad con que habéis respondido.

Hola oye si yo quiero instalar un programa en la computadora del servidor como le tengo que hacer?

Hola Gustavo.

Con un cliente FTP solo puedes subir archivos. Para poder ejecutarlos e instalarlos necesitarías tener acceso a una cuenta shell (por SSH por ejemplo) o Terminar Server (escritorio remoto).

Si se trata de un caso de pentesting a un servidor WEB al que se tiene acceso por FTP es posible colocar un archivo PHP encargado de ejecutar el programa que hemos subido y llamarlo desde el navegador. Todo esto se verá más en profundidad en próximas publicaciones.

No se puede establecer una conexión ya que el equipo de destino denegó expresamente dicha conexión.
Connection failed.

me sale este problema en el momento de seleccionar login 

Hola, yo trabajo en Linux y no he encontrado el winscp para este, quiero saber si el filezilla tambien me funciona, gracias

Si, puedes utilizar filezilla sin problema alguno.

Hola. Mirá, cada vez que pongo log in me pone 

Connecting to 192.168.0.101

Conected with 192.168.0.101. Waiting for welcome message...

Acces denied

 Sabes alguna solución? Se me hace imposible poder conectarme

Hola antes de nada darte las gracias por este fantástico curso, lo llevo siguiendo unos dias y la verdad es que me encanta y apasiona ir conociendo estas cosas y te doy milklon de gracias, voy siguiendo todos los pasos y haciendo pruebas con cada cosa que voy aprendiendo, pero estoy en la parte de winscp y no puedo conectarme desde ningun ordenador, meto mi ip en winscp con usuario y contraseña creado y no me da la opcion de conectarme, me sale un texto que dice:"Error WinSCP no se puede establecer una conexion ya que el equipo de destino denegó expresamente dicha conexion. Error de conexion"

que es lo que estoy haciendo mal?

incluso cambié el bloquepo de IP del FTP y lo deje abierto a toda slas IP,s y tampoco me deja

gracias de antemano

me pasa lo mismo si as encontrado la solucion porfabor dimela

Yo coloque en la IP 127.0.0.1 y asi me permitio el login. Fue la unica forma de que no me salieran mas errores

Si te ha sido de utilidad Compárteme