You are on page 1of 27

\\\\\\\\\\\\ CURSO orientacin HACKER ////////////// //////////// By DarKh|s.exe (n+1) \\\\\\\\\\\\\\ http://www.cursohacker.com informacion@cursohacker.

.com Disclamer: NO se asume ninguna responsabilidad debida al mal empleo de la informacin aqu contenida, puesto que este texto solamente tiene fines educativos y en ningn caso pretende incitar a nadie a cometer ningn delito ya sea informtico o de otra ndole.

Tneles SSH y algo ms

En este manual explicaremos como crear tneles seguros, utilizando SSH, lo que nos ser muy til en varias oportunidades. Veremos la creacin de tneles inversos seguros, lo que llamamos un tnel ssh pero de conexin inversa, y como es de costumbre, un caso prctico, en dnde mostraremos una conexin inversa segura para administracin remota veloz. En primer lugar que es un tnel? un tnel en informtica es encapsular un protocolo de red dentro de otro protocolo, de esta forma tendremos por ejemplo el protocolo ethernet encapsulado en PPP, el protocolo PPPoE que realiza esta encapsulacin se utiliza para proveer conexiones de banda ancha en servicios de cablemdem y xDSL. Otro caso de tnel o tunelizacin, es cuando tenemos un servicio/protocolo inseguro como por ejemplo ftp o SMB, si queremos utilizar estos servicios mediante un medio inseguro como lo es Internet o redes locales, tenemos dos opciones para asegurar esas conexiones, una es utilizar protocolos alternativos que ya cuenten con una capa de seguridad, por ejemplo sftp, pero en SMB (netbios) no contamos con ello, en ambos casos para asegurar la conexin y no tener que cambiar los protocolos y servidores es crear un tnel seguro, por ejemplo un tnel con la seguridad de ssh.

De esa forma tendremos protocolos inseguros viajando de forma encriptada por tneles seguros, es como si en vez de viajar en auto hasta cierto punto, llevramos el coche en tren (que sera el medio seguro) y as evitarnos atascos, y accidentes que son ms frecuentes en

carreteras que en vas de tren.

El encapsulamiento de los paquetes en este caso se da, colocando el paquete que se quiere transmitir dentro del campo datos y de forma encriptada en un nuevo paquete. Tambin un tnel nos permite evadir restricciones de firewalls, por ejemplo si en una red interna bloquean ciertos puertos, podemos evadir ese bloqueo utilizando tneles, ya deben estar pensando en como conectarse al MSN en su red utilizando est tcnica, y claro que se puede! En los ejemplos ms adelante veremos como tnelizar conexiones y podrn hacer eso y muchas otras cosas! Para quienes an no saben sobre SSH, les comento que, adems de un programa, es un protocolo. Ambos se utilizan para acceder a servicios y dispositivos remotos a travs de la red. Pudiendo as

tomar control remoto de dispositivos, bsicamente como si fuera el protocolo telnet pero la comunicacin en SSH es encriptada, utilizando claves asimtricas. Ahora ya saben sobre tneles y SSH, pero que es una conexin inversa? Cuando utilizamos internet diariamente, en general utilizamos conexiones directas, ya que quien establece la conexin es el cliente hacia el servidor. Por ejemplo al abrir una pgina web en nuestro navegador, nosotros (el cliente) establecemos la conexin directamente con el servidor, y el servidor responde. En caso de conexin inversa quien establece la conexin primaria es el servidor, el cual se conecta a nosotros. Recordemos, que en la conexin directa, si se realiza a travs de Internet, el servidor debe estar accesible en la red, as el cliente utilizando una direccin IP pblica o un nombre de dominio pueda acceder. El servidor puede estar conectado directamente a Internet y el mismo tener la direccin IP pblica, pero tambin, y como es muy comn, el servidor se encuentre en una red privada y se conecte a Internet a travs de uno o varios routers, entonces uno de estos dispositivos de ruteo (los routers) tendr la direccin IP pblica que sirve en Internet. Entonces en ese caso, al realizar la conexin a la direccin IP pblica nos estaremos contactando con el router y no con el servidor, para poder acceder al servidor habr que redireccionar puertos o bien crear una conexin inversa. Para dejarles claro, las conexiones inversas, se dan al revs, es decir, el servidor se conecta al cliente, y as se establece la conexin. Si tenemos el servidor en una red privada y el mismo sale a Internet mediante un router, tendremos dos opciones para acceder a el desde la red externa, una, la fcil, es redireccionar puertos en el router, la otra es crear un tnel inverso, en el cual acta un servidor SSH accesible desde Internet (desde dnde nos queremos conectar), y desde el servidor (al cual nos queremos conectar) se crea el tnel inverso. Es confuso pero ya lo veremos prctica y grficamente para su salud mental ;)

Resumiendo, usaremos tneles seguros ssh para evadir bloqueos de firewall, as cmo para acceder a servicios desde Internet de forma segura, solamente con un servidor SSH.

Veamos un ejemplo La situacin es la siguiente; Tenemos la computadora del trabajo, la cual tiene un servidor SSH para control remoto, queremos acceder a la misma pero se encuentra "firewalled", es decir, inaccesible desde Internet directamente. Por varias razones no se pueden redirigir puertos en el gateway, y el firewall del mismo permite trfico entrante y saliente por cualquier puerto, es decir que no tiene bloqueos, es permisivo.

Por otro lado tenemos en casa un PC, desde la cual queremos conectarnos y establecer conexin con el servidor SSH del trabajo, como este no se encuentra accesible desde Internet la solucin es crear un tnel ssh inverso, veamos que hay que hacer: En Casa instalaremos un servidor SSH, el cual debe ser accedido desde Internet directamente, definiremos un usuario para que se pueda conectar, en este manual lo llamaremos usuario_casa. Desde el trabajo deberemos poder establecer conexin con el servidor SSH

de Casa utilizando un cliente SSH, pero no viceversa ya que la PCTrabajo no es accesible desde Internet. Acto seguido crearemos nuestra bendita solucin, que es el tnel ssh inverso: En sistemas tipo Unix (GNU / BSDs) teniendo un cliente ssh, en lnea de comandos la sintaxis sera del siguiente modo (los campos encerrados con smbolos de mayor y menor < > deben ser cambiados por sus correspondientes): root@trabajo:~# ssh -l <USUARIO> -R EL <PUERTO SERVIDOR A ABRIR -f EN -N

CASA>:localhost:<PUERTO DNDE ESCUCHA <DOMINIO O IP PUBLICA DE PC-CASA>

LOCAL>

Si no queda claro, el comando a ejecutar en el PC del trabajo como usuario root, exactamente sera: root@trabajo:~# ssh dominio_casa.org -l usuario_casa -R 22000:localhost:22 -f -N

Ese comando lo que hace es conectarse al servidor ssh de Casa, el cual puede accederse a travs del nombre de dominio "dominio_casa.org" (en caso de no tener nombre de dominio colocaramos la direccin IP, o utilizar servicios como no-ip), en ese PC se abrir el puerto 22000 que al conectarse ser redirigido al puerto 22 del "localhost" que en este caso (como ejecutamos el comando en PC-Trabajo) ser el propio sistema del trabajo. Luego de ejecutado se pedirn los datos de autenticacin para el usuario ingresado (usuario_casa). A continuacin en PC-Casa si realizamos la conexin con un cliente ssh al puerto local 22000 y gracias al tnel inverso, se realizar la redireccin y nos estaremos conectando con el PC del trabajo que era nuestro objetivo. Ejecutaremos en este caso un cliente ssh ya que queremos acceder al servidor ssh del trabajo, pero si fuera otro el servicio que tuviera la PC-Trabajo corriendo deberemos utilizar un cliente acorde al servicio. Entonces en PC-Casa para conectarnos al servidor SSH del trabajo quedara as el comando: usuario_casa@casa:~$ ssh -p 22000 usuario_trabajo@localhost El usuario_trabajo es el usuario con el cual queremos loguearnos en el PC del trabajo, y la conexin se hace al puerto 22000 del localhost,

es decir, del propio PC hogareo (casa), ya que cuando creamos el tnel hicimos que se abra este puerto dedicado exclusivamente para la redireccin y tnel inverso.

Veamos el caso con grficos:

Cuando se establece conexin por primera vez con un host a travs de ssh, se pide una comprobacin de fingerprint (huella digital), como se puede ver en el establecimiento del tnel ssh desde PC-Trabajo, hay que aceptar para continuar. SSH dispone de diversos mtodos de autenticacin, no solamente con usuario y contrasea, sino que tambin se puede utilizando firmas digitales, es todo un mundo. Ya que saben lo que se necesita y como crear el tnel ssh, veremos un par de casos prcticos, el primero es sobre control remoto utilizando NX, y el otro es evadir bloqueos de firewall en una red. NX administracin remota Dentro de los sistemas de control remoto con soporte para interfaz grfica, el que ha reinado por aos es VNC (Virtual Network Computing) que utiliza el protocolo RFB, estos sistemas son inseguros y su comportamiento hace que sean lentos y su uso algo exasperante cuando intentamos controlar remotamente un sistema utilizando interfaz grfica, an as con un ancho de banda aceptable.

NX es muy superior, NX es equivalente a decir rapidez, porque realmente es un sistema muy veloz comparado con sus alternativas, adems de que de por s es mucho ms seguro ya que utiliza ssh y todo lo que ello conlleva. Es posible utilizar NX hasta con viejos modems y conexiones con ancho de banda nfimo para el da de hoy, con transmisiones de 56 Kbps, teniendo una usabilidad aceptable, que sera imposible con otras alternativas. NX comprime y cachea directamente el protocolo X11. Esto permite tener clientes livianos (tambin llamados clientes tontos) en una red, para ahorrar costos, entre otras utilidades. Los resultados de utilizar NX para control remoto son excelentes, tanto en calidad de imagen como en velocidad y seguridad, es por ello que vamos a explicar como usar NX y adems hacerlo para que funcione en una conexin inversa a travs de un tnel ssh, para que el servidor que se encuentra en una red privada pueda contactarse con un cliente en Internet. Instalaremos tanto el servidor como el cliente en sistema GNU/Linux, utilizando los productos gratuitos de NoMachine (http://www.nomachine.com/). Los servidores solamente se encuentran disponibles para sistemas GNU/Linux, sin embargo los clientes estn disponibles tanto para GNU/Linux, como para Windows, Solaris y Mac OS X. Adems NX proporciona soporte para sonido remoto, cosa que hemos probado y funciona de maravillas! Para comenzar, vamos a http://www.nomachine.com/download.php y nos descargamos el NX Free Edition for Linux, el cual es el servidor para GNU/Linux, NX de NoMachine es un software propietario, en caso de que quieran uno software libre pueden probar FreeNX (http://developer.berlios.de/projects/freenx/).

En la pgina de descargas de NX Free Edition for Linux (la que se muestra en la anterior imagen) deberemos seleccionar el paquete a descargar, segn nuestra distribucin y arquitectura de computador, como estamos utilizando un derivado de Debian en versin de 64 bits, seleccionamos el paquete "NX Free Edition for Linux DEB x86_64" Para otros sistemas, segn el caso, se utilizar un paquete RPM (Derivados de Red Hat, SuSe, Fedora), o bien el paquete genrico TAR.

Es necesario descargar los tres paquetes; client, node y server, despus cada uno de ellos se debe instalar en el sistema siguiendo un orden predefinido.

Luego de descargados los paquetes, instalaremos los mismos en el sistema, utilizando la lnea de comandos, entonces en una consola y estando en el directorio dnde estn los archivos, ejecutamos los siguientes:

usuario@mint:~$

sudo

dpkg

-i

nxclient_3.3.0-6_x86_64.deb

usuario@mint:~$ sudo dpkg -i nxnode_3.3.0-17_x86_64.deb usuario@mint:~$ sudo dpkg -i nxserver_3.3.0-22_x86_64.deb NX requiere de un servidor ssh, por tanto deberemos tener uno instalado, por ejemplo podemos instalarlo con el comando sudo aptitude install ssh o bien grficamente con su gestor de paquetes preferido. Al tener instalado los tres paquetes de NX descargados, tendremos el cliente y el servidor listo para funcionar, si acabamos de instalar todo y el servidor ssh, estar todo listo para conectarse, el cliente lo vamos a ejecutar en entorno grfico, ejecutando /usr/NX/bin/nxclient abriremos el asistente de conexin:

Le damos siguiente, para continuar.

En el segundo paso, deberemos definir un nombre para la sesin a configurar, en nuestro caso la llamaremos con un nombre poco original; "Prueba1". Luego en "Host" definiremos la direccin IP o nombre de host al cual conectarse, recordemos que si establecimos un tnel ssh inverso, nosotros tendremos el puerto abierto que nos redireccionar al servidor, por tanto en este ltimo caso haremos la conexin al localhost. En "Port" colocaremos el puerto dnde escuche el servidor ssh en el host definido. En la barra de abajo seleccionaremos el tipo de conexin, desde la de menor ancho de banda a la izquierda, a la de mayor ancho de banda a la derecha. En las conexiones ms lentas el cacheo es mayor. A continuacin se debe seleccionar el tipo de conexin, NX soporta conexiones para administracin remota no solo con el protocolo NX, sino que tambin soporta RDP (comnmente conocido por el escritorio remoto de Windows) y VNC, el tipo de conexin a realizar lo definimos en el primer men desplegable. Una opcin interesante y curiosa es la de "shadow" lo que permite esta opcin es controlar remotamente una sesin grfica ya existente en el servidor, es decir

si en el servidor alguien est conectado usando el entorno grfico podremos controlar su escritorio, y el otro podr ver todo lo que hacemos en vivo, es como si fuera una conexin espejo o bien una conexin "sombra", en dnde en ambos lados es la misma. En la prxima, en dnde por defecto est "KDE" definiremos el entorno de escritorio que utilizaremos, ya conocern sobre KDE y GNOME...

En el men desplegable, dnde por defecto est "Available area" se configura la resolucin o tamao de la pantalla que se mostrar al conectarse. La ltima opcin "Disable encryption of all traffic" no es nada recomendable habilitarla, ya que elimina la seguridad proveniente de el cifrado de las conexiones. Y eso es todo lo que se necesita para la configuracin de conexin en el cliente, ya por ltimo, nos da un resumen de la conexin que vamos a realizar. Las ltimas dos opciones son "Create shortcut on desktop" la cual crear un acceso directo para conectarse a esta sesin definida. S tildamos la opcin "Show the Advanced Configuration dialog" nos mostrar las configuraciones avanzadas.

Al terminar nos aparecer la ventana de conexin:

All definimos el nombre de usuario y contrasea para la sesin seleccionada, recordemos que la sesin contiene los datos de host, puerto, tipo de conexin, etc. Todas esas configuraciones que podemos acceder a travs del botn "Configure..." Como NX funciona a travs de SSH, podremos en el servidor definir una cuenta sin contrasea, o con contrasea trivial y que la autenticacin se realice de forma segura, utilizando las claves pblicas y privadas.

El cliente es igual en cualquiera de los sistemas operativos en los que est soportado, existe y est disponible para todos, la extensa y de muy buena calidad documentacin sobre NX de NoMachine, pueden ver opciones avanzadas de configuracin del servidor entre otras cosas en el siguiente enlace: http://www.nomachine.com/documents.php Podemos acceder a la configuracin de la conexin y otras

configuraciones avanzadas, a travs del botn "Configure..."

Como pueden observar podemos cambiar la configuracin de la sesin, el host, el puerto, el tipo de conexin y sistema operativo remoto. As como tambin definir la clave privada de la conexin ssh en el botn "Key...", por defecto vienen un par de claves, que si queremos ms seguridad es muy recomendable cambiarlas, o sea, generar nuevas claves pblica y privadas y distribuirlas de forma segura a quienes se vayan a conectar.

En la pestaa "Advanced" se puede configurar que la conexin se realice a travs de un proxy HTTP, tambin all se define la cantidad de espacio para el cache, como deben saber la memoria cache es una memoria de acceso rpido, en este caso all se almacenan los iconos y dems flujos del ambiente grfico. Esto permite la reutilizacin de la informacin transferida entre el cliente y el servidor. Adems, como comentaba, la informacin transferida es comprimida, lo que lo hace an ms rpido, todo est hecho para que sea un protocolo de administracin remota, realmente usable y seguro.

En la pestaa "Services" podemos habilitar el protocolo SMB (conocido como el Compartir archivos e impresoras en Windows) y el protocolo CUPS para impresin remota, si se habilita la opcin "Enable multimedia support" se podr escuchar el audio del equipo remoto, con muy buena calidad.

Evadiendo bloqueos de firewall en redes internas Est tcnica nos permitir navegar por sitios de Internet que se encuentren regulados en la red interna, por ejemplo si nos bloquean el acceso a servicios de correo electrnico en nuestro trabajo (gmail, hotmail, yahoo, alumnoz...). Tambin en ciertas escuelas o universidades se realizan bloqueos similares, que son fcilmente evadibles con la tcnica que pasaremos a explicar, la cual se basa en tneles ssh! Tambin, y como hemos comentado, esta tcnica nos permitir utilizar servicios que tenemos bloqueados, por ejemplo si en nuestra red solamente tenemos salida por el puerto 80 y con esto no poder acceder normalmente a servidores de correo, mensajera instantnea, redes p2p, u otros servicios, podremos, utilizando tneles ssh, tener conexiones seguras y utilizar cualquier servicio que queramos! O sea, que para evadir todos esos utilizaremos tneles ssh, veamos cmo: "poco tiles" bloqueos,

En primer lugar, en la red que tenemos restricciones, debemos determinar que tipo de bloqueo tenemos, es decir, saber si tenemos bloqueado puertos, por cuales puertos podemos acceder ?, ya que por esos puertos en los cuales tenemos va libre de acceso es dnde crearemos el tnel ssh.

La idea es que desde un pc dentro de la red con restricciones, crear un tnel ssh, el cual se conectar a un servidor ssh configurado por nosotros que tendr un proxy, por ejemplo para acceder a sitios restringidos utilizaremos un web proxy o un proxy SOCKS.

De

nuevo

usaremos la PC de casa, en la cual tendremos un servidor ssh configurado para que escuche en el puerto por el cual queremos acceder desde la red bloqueada, es decir si en la red con restricciones podemos pasar por el puerto 80, configuraremos el servidor ssh para que escuche en el puerto 80. Necesitaremos un cliente ssh para establecer el tnel en la PC del trabajo/escuela, el cual ser el sistema que est dentro de la red privada y est bloqueado por el firewall. En sistemas tipo Unix podremos utilizar el cliente ssh de lnea de comandos, en sistemas Windows utilizaremos putty. En el cliente web (navegador) del trabajo se deber configurar en la seccin proxys la direccin y puertos correspondientes, lo veremos paso a paso y con imgenes: El proceso es extremadamente sencillo, utilizaremos el cliente ssh de lnea de comandos en GNU/Linux, para establecer sesin con el servidor ssh remoto de la PC hogarea (en casa) y as abriremos un puerto local en la PC bloqueada (trabajo), en el cual todas las conexiones al mismo pasarn a travs del tnel ssh y sern redirigidos al sistema de casa el cual resolver que hacer (de forma muy mgica ;). La sintaxis del comando es la siguiente: ssh -D <puerto local> -p <puerto dnde escucha el servidor ssh remoto> <usuario>@<host> Entonces vamos a abrir el puerto 7331 local en el PC del trabajo, nuestro servidor ssh escucha en el puerto 80, ya que es el nico puerto por el cual podemos salir, gracias al firewall de nuestra red que nos bloquea todo menos ese bendito puerto ;)

Desde el PC-trabajo nos conectamos con el comando ssh -D 7331 -p 80 usuario_casa@dominio_casa.org

usuario_casa es un usuario de nuestra PC hogarea con el cual podemos establecer conexin ssh, luego dominio_casa.org simplemente es el nombre de dominio con el cual identificamos al PC de casa, obviamente ;), pero bien puede ir all la direccin IP del host remoto. Y como apreciamos luego de ejecutar netstat -nat en la PC-trabajo vemos que se abri el puerto 7331 escuchando localmente, ahora vamos a nuestro navegador que en este caso mostraremos la configuracin en Mozilla Firefox que es un muy buen navegador web

multiplataforma.

Vamos al men Editar > Preferencias (en la versin para Windows es en Herramientas > Opciones), en la ventana que aparezca vamos a la pestaa/opcin Avanzado:

All nos diri gi mo s a la pes ta a Re d y lue go en Co ne xin hacemos click en Configuracin, espero hayan llegado hasta la siguiente ventana:

Es en ella dnde se debe seleccionar la opcin Configuracin manual de proxy all definiremos en Servidor SOCKS; localhost y en puerto 7331 que es el puerto abierto en nuestra mquina local, igual que en la anterior imagen, obviamente si configuran otro puerto ser otro nmero. Ahora cuando usen el navegador se estarn conectando a travs del tnel ssh de forma segura y sin restricciones ! Felicitaciones ! ;) Una ltima nota para Firefox, es que las resoluciones de nombre se seguirn resolviendo localmente, es decir, con la configuracin que tenamos, pero si tenemos restricciones tambin en ese sentido, debemos hacer pasar la peticin de resolucin de nombre a travs del tnel y con socks, entonces accederemos desde el navegador a la direccin about:config y vamos hasta la clave network.proxy.socks_remote_dns la cual la asignaremos en true.

En otros navegadores web, la configuracin es muy similar, no tendrn problemas. Como decamos, este mismo procedimiento se puede hacer con otros servicios, como el de msn que ser muy til para quienes quieran utilizarlo en lugares dnde est restringido. Actualmente funciona, pero como Micro$oft cambia a menudo el protocolo puede que no funcione. Luego de tener el tnel ssh creado, lo que hay que hacer en el cliente de msn que utilicen es configurar el servidor SOCKS para el localhost y el puerto que hayan abierto para la redireccin. En el cliente aMSN vamos a el men Cuenta > Preferencias >

Conexin y all lo configuramos como pueden apreciar:

En Windows Live Messenger 2009, el camino es el siguiente:

Vamos a Opciones > Conexin > Configuraciones avanzadas, y all configuramos SOCKS, como ya saben ;)

Podremos conectar varios clientes al mismo tiempo para que usen el tnel ssh, por ejemplo podemos tener amule, firefox, aMSN todos usando el tnel al mismo tiempo pasando por el mismo puerto y traspasando los bloqueos que nos quisieron imponer en la red ! Todos los procedimientos explicados en este manual, se pueden realizar en sistemas operativos tipo Unix (GNU, BSDs), as como en versiones de Windows superiores a 95, utilizando programas como copssh o tectia (servidores ssh) y putty (cliente ssh que crea tneles ssh de manera verstil). Para esta ltima prctica, en putty, deberemos ir a la seccin Connection > SSH > Tunnels, all en Source port se coloca el puerto a abrir localmente y se activa la opcin Dynamic, luego se hace click en el botn Add y creamos la conexin con los datos de host y puerto en la seccin Session y listo:

En caso de tener problemas de conexin, con los tneles, deben comprobar en el archivo de configuracin del servidor SSH, que estn las siguientes lneas: AllowTcpForwarding yes GatewayPorts yes TCPKeepAlive yes

En general estn por defecto, pero si no les llega a funcionar, comprueben eso. Ahora s, ms libertades ;) Que lo disfruten, hagan uso y abuso ! 0d1n

FIN DEL MANUAL Tneles SSH y algo ms Autor: 0d1n Fecha ltima revisin: 15/06/2008 Elaborada con material ofrecido por autores Annimos y elaboracin propia. El presente material se promueve con fines completamente educativos, por lo que el Autor no se responsabiliza de malos usos o de usos de terceros. Esta prohibida la reproduccin parcial o total del material aqu contenido sin expresa autorizacin de cursohacker.com.

You might also like