VNC: software para controlar remotamente otra computadora (libre y gratuito)

Además de obtener contraseñas, una de las cosas que más se quieren cuando se empieza a tratar de “hackear” algo es controlar remotamente un equipo. Para eso existe toda una variedad de técnicas y alternativas. Aunque la dificultad mayor está en explotar vulnerabilidades en el software de la otra máquina y acompañar el asunto con técnicas de ingeniería social.

El software del que hablaremos hoy es uno diseñado específicamente para controlar remota y gráficamente un escritorio. El asunto es que tiene cierta dificultad para funcionar como software espía, aunque he visto que muchísimas “técnicas especializadas” de esas que instalan Window$ truchos y los cobran como originales, instalan este software con el argumento de tele-reparar una máquina pero al mismo tiempo espiar a sus clientes. Así que recomiendo siempre buscar gente con la que tengamos extrema confianza.

El Virtual Network Computing (VNC) es como te decía un software de “compartición” gráfica de escritorio, que utiliza el protocolo RFB (remote frame buffer) para controlar remotamente otra computadora. Lo que haces es transmitir los eventos del teclado y el mouse de una computadora hacia otra y replicarlos en el monitor de la segunda, de manera unidireccional sobre una red.

Entonces: VNC es un software (un programa) y RFB un protocolo (un conjunto de reglas para realizar una práctica determinada). Esto tenelo presente porque hay otras maneras de controlar un escritorio remoto y dependiendo el caso VNC puede ser la mejor o la peor forma de hacerlo.

VNC es software libre y multiplataforma. El código fue desarrollado según nos dice la Wikipedia por Olivetti & Oracle Research Lab en el Reino Unido (el eufemismo con que Inglaterra argumenta sus colonias y posturas imperialistas sosteniendo una monarquía). Existen muchas variables de VNC dependiendo de quién haya seguido desarrollando el código luego de las desarrolladoras originales, algunos incluyen características que no eran originales del software (como transferencia de archivos) pero la buena noticia es que la mayoría son compatibles entre sí.

604a4088dd0e5237501c470e7edffca5

Como te decía, existen muchas variantes. He probado varias, algunas privativas, pero me quedo por lejos con una libre: x11vnc pues además de ser más comprensible a la hora de configurarla, es estable y libre.

x11vnc es un software que te permite administrar e interactuar remotamente con otras máquinas. Cuenta con SSL y encriptación RSA incorporadas, soporte para contraseñas y cuentas UNIX, la posibilidad de escalar el video desde el lado del servidor, HTTPS (transferencia de comunicaciones de forma segura), mDNS (algo muy interesante que ayuda a utilizar varias direcciones de IP en una misma red que no cuenta con un servidor de nombres local) e incorpora además los servicios de transferencia de archivos vía TightVNC y UltraVNC.

Su uso se ha extendido además hacia máquinas que no cuentan con servidores de bitmaps (eso es lo que hace x11vnc) como webcams y sintocapturadoras de TV, GNU/Linux embebidos como Qtopia Core e incorporado nativamente en OS X.

Ahora vamos a instalarlo. Para esto necesitamos las dos “puntas” de este software: servidor y visor. El servidor será el que “envíe” las señales que el visor permitirnos recibir con el objetivo de poder interactuar con la otra computadora.

Instalar ambos es bastante sencillo, simplemente tenés que bajarlos desde la página oficial y seguir las instrucciones, en caso de que tengas dudas podés leer las preguntas frecuentes (en inglés).

Los pasos siguientes a la instalación serán abrir los puertos en el router, configurar tu cortafuegos para que nos permita interactuar y usarlo.

Lo primero que hacemos es configurar la computadora donde instalamos el servidor VNC para que tenga una IP estática y luego elegir el puerto en el que trabajaremos. El puerto por defecto es el 5900, aunque siempre es recomendable no usar los puertos por defecto pues es el primer lugar a escanear buscando un servicio VNC. Elegite alguno que te guste (puede ser el 5993, por ejemplo, aunque no lo usaría sólo porque lo puse en la nota) y abrilo en el router. Lo de “abrir” los puertos en realidad no es tal cosa.

El asunto es así: cuando una PC está detrás de un router, tiene una IP privada, el que tiene una IP pública es el router. El asunto es que vos podés, desde afuera de tu red, conectarte con tu dirección IP (que podés conocer, por ejemplo en esta página) pero en realidad ahí vas a estar conectada al router, no a tu PC. Ahora deberías pasar desde el router (que hace de portera) hasta tu máquina. El router sabe qué IP estás usando en esa máquina, pero imaginate si vas a permitir que máquinas externas hagan peticiones de control remoto directamente en tu router…

No, en ese caso, lo que hacemos es “fowardear” (adjuntar) los puertos para que sea el router el que resuelva, a partir de una configuración con ese objetivo, a qué máquina de la red interna envía las peticiones que reciba en ciertos puertos desde la red externa.

Es como cuando en una obra en construcción una obrera tira un ladrillo a otra y esa otra lo envía a otra obrera que lo espera en el techo. Si fuera un azulejo lo enviaría a la obrera que recibe azulejos, pero lo envía al techo porque ahí están esperando ladrillos.

Esta configuración varía en los routers, pero suele estar en las opciones de fowardeo de puertos (port fowarding) o NAT de tu red. Ahí ponés el puerto que querés que se reenvíe y la IP de la computadora que lo recibirá. Entonces, si la IP en tu red privada que usaste es (ponele: 192.168.0.43), el router enviará a esa máquina todas las peticiones que reciba en el puerto 5993 o el que hayas elegido.

Luego sólo resta abrir el visor VNC que hayas elegido e ingresar la IP de la máquina a la que te querés conectar señalando el puerto en el que hacerlo, en nuestro ejemplo sería 192.168.0.43::5993. Al hacerlo te va a pedir una contraseña, sí, ya sé que no te había dico nada de eso. El servidor también permite dos tipos de contraseña: una que permitirá sólo visión del escritorio y otra que permitirá ver e interactuar.

Una configuración adicional permite hacer que el servidor VNC acepte todas las peticiones que reciba siempre que le den la contraeña correcta, caso contrario, alguien en la máquina servidor deberá aceptar que te conectes.

Podríamos agregar a esto una configuración más para utilizar un dominio para entrar en tu propia computadora de forma remota, pero eso lo veremos otro día.

Dale una probadita a VNC, es un viaje de ida.

¡Happy Hacking!

image/svg+xmlTribuna Hacker existe gracias a

2 comments

  1. Muy bien explicado (los ejemplos están geniales y ayudan un montón. Nunca mejor resumido lo que es un protocolo!!!), lo voy a probar… Gracias por compartir. Espero el próximo capítulo.

Deja una respuesta

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