Alarma entre los internautas y usuarios ante la proliferación de programas de tipo Back Oriffice

Están surgiendo estos meses alarmas respecto a los programas del estilo de BO (Back Oriffice), con los cuales se puede tomar el control de nuestro PC desde otro remoto, via Internet (por ejemplo). Lo primero que hay que dejar constancia es que las alarmas están de moda: antes eran los virus, los caballos de troya, los gusanos, y ahora que parece que ya nos fiamos de los antivirus, que todo el mundo tiene su maquina (y un porcentaje alto de su CPU), dedicada a la caza de estas brujas, parece que ahora nos empeñamos en encontrar BOs en todas partes.

Haciendo una reflexión para los amantes de los virus, ¿por qué los tenemos activos los antivirus siempre? Un antivirus sólo debe activarse cuando hay peligro, es decir cuando vamos a ejecutar software ajeno. No nos pueden colar un virus por Internet, ni por mail, ni por las news. Únicamente si ejecutamos algún programa o editamos con word algun .DOC desde Internet. Por tanto, ¿para qué tenerlo activo? Se debe activar en ese momento y ya está. Y ademas, dentro de todos los antivirus que hay, se deben escoger los que no dejen -o se puedan deshabilitar- los vigilantes residentes y por supuesto que no te instalen ninguna VxD que se cargaría siempre.

Nos centramos de nuevo el tema de los BO. Para entender un poco su funcionamiento y como debemos "cazarlos", vamos a ver un poco como funciona el TCP/IP y como tenemos herramientas en windows para ver "algo" de su funcionamiento.

El protocolo TCP/IP

En TCP/IP, todo se basa en la filosofía cliente/servidor. Un host (no es nada mas que un ordenador cualquiera, un PC, o uno gigantesco), puede ofrecer servicios a la red. Este es un servidor. Y otro puede solicitar esos servicios, en ese caso llamado cliente. Lo habitual (en un PC) es ser siempre cliente, es decir solicitamos servicios de FTP, HTML, news,...

¿Como se solicitan los servicios o como hablan dos maquinas bajo TCP? Muy sencillo, se establece un socket, esto es, un canal de comunicacion. ¿Cómo? Pues un socket no es nada mas que una conexión entre una máquina y un puerto, con otra máquina y otro puerto. Es decir intervienen 2 maquinas y 2 puertos.

En el IP, se definen 65535 puertos y desde el 0 al 1023 estan reservados para los servicios estandar del TCP (html=80, ftp=21,...etc) y desde el 1024 en adelante están reservados para programas de usuario. Para abrir un socket (canal de comunicación), una máquina debe solicitar una dirección ajena y un puerto. Si en ese puerto en la otra maquina, hay un programa escuchando (LISTENING), este programa atenderá a nuestras peticiones.

Cuando abrimos el navegador y tecleamos una pagina, el funcionamiento sería el siguiente:

1) Nuestro PC para abrir el socket necesita conocer la direccion del destino (el puerto ya lo sabe, ya que por defecto en html es el 80). Esta direccion debe estar en formato xxx.xxx.xxx.xxx (4 numeros separados por puntos, que es en realidad la popular dirección IP.

2) Nuestro PC, investiga si conoce el ordenador destino, es decir investiga un nombre, por ejemplo www.microsoft.com. Si no lo conoce debe investigar.

3) Aunque para esta investigación intervienen varios pasos (fichero host, mascaras de subred, etc), vamos a simplificarlo. Nuestro PC se lo pregunta al DNS de nuestro servidor (recordad que ponemos DNS al definir una conexion telefonica, o bien nuestro proveedor nos lo da automaticamente al establecerlo).

4) DNS = Domain Name Solver. Es decir nos va a resolver por nombre de dominio su dirección. Por tanto nos devuelve su dirección IP.

5) Con esto el navegador ya puede abrir un socket desde nuestra dirección, y un puerto "cualquiera" (!!!) libre de nuestro PC y la dirección del destino y el puerto 80.

6) Es decir lo que hace en ese momento es pedirle a nuestro propio PC un puerto libre, imaginemos que le dá el 2122, y entonces establece un canal de comunicación entre ambas máquinas desde el puerto 2122 en el cual "escuhará" nuestro navegador para esa conexión y el 80 en el destino, que será el que nos pase la información (la pagina web).

Bien, esto es extensible para todos los servicios IP (FTP en el 32,..etc). Y para cualquier cosa que queramos hacer. Es conveniente fijarse que en el ejemplo anterior, en la otra máquina, no hay un navegador, sino que hay un programa, que lo que hace es escuchar "peticiones" en el puerto 80, cuando las recibe, analiza lo que le piden, busca la página y nos la envía. Este es un servidor de páginas web.

El Back Oriffice

Entendido un poco lo anterior, vayamos a nuestro caso. Imaginemos que en una máquina, quiero hacer una determinada cosa. Pues bien, hago un programa servidor que escuche algún puerto de los libres (para no incordiar a la máquina) y dejo este programa residente.

Desde otra máquina, intento conectar con ésta y con ese puerto. Si me responde, puedo pedir la identificación del programa que me está respondiendo (podría no ser el mio). Y si lo es, le puedo mandar ejecutar cosas que yo haya programado en esa máquina. Sólo las que haya programado explícitamente en el servidor, en el programa que escucha.

La idea es genial... puedo ejecutar acciones en la otra máquina. Además esto es el pan nuestro de cada día, ya que cuando me conecto a un servidor FTP, le "ordeno" que me pase un fichero, y el servidor ftp, lo único que tiene programado, es, primero ver quien soy a ver si estoy autorizado y segundo "darme" ese fichero.

Pero evidentemente, si el programa que está en el otro lado, es mío, puedo haberlo hecho para que por ejemplo, pegue un format al disco duro o permita borrar un fichero, o incluso reiniciar la maquina.

Pues esto precisamente es lo que han hecho los programadores de los BO. Es decir unos servidores capaces de ejecutar unos cuantos (bastantes) instrucciones que ellos han programado. Y que además, evidentemente, se dedica a escuchar en un puerto del PC.

Pero ese programa, debe estar ejecutándose en nuestra maquina y que ademas no nos demos cuenta. Para ello, de alguna manera, nos tienen que "convencer" para ejecutarlo por primera vez (o algún "amigo", un fichero "adjunto" al mail, una charla por IRQ, etc). Se suele hacer via programas adjuntos a mail, convenciendonos de que lo ejecutemos, que es algo genial, etc... Y ahora una vez que nos han convencido, ese programa se "esconde", cambia de nombre, lo que se le haya ocurrido a quien lo ha hecho, y en el registro se graba en las claves RUN o RUNSERVICES es decir en las que se ejecutan al iniciarse el PC, para ejecutarse siempre.

Algunos de esos programas, además, cada vez que estemos en Internet, intentan anunciarse de alguna manera a alguna direccion IP cada x minutos.

Primer Punto de Control

W98, con "MsConfig" nos muestra TODO lo que se ejecuta en el inicio. Lo que tenemos es que tener CONTROLADO siempre lo que se jecuta allí. La gente que hace los BO suele tener mala idea, y los camufla o bien con un nombre a blancos, por ejemplo " .exe" o con un nombre que parece una rutina del sistema "msdll.exe" o "windll.dll".

Pero aquí está lo importante: lo veremos SIEMPRE con el programa "msconfig". Por tanto debemos controlar siempre lo que tenemos allí. Cuando instalamos w98, lo apuntamos y cada vez que instalemos algo lo controlamos. Si aparece algo "desconocido" inmediatamente preguntar. O alguno de nosotros lo sabemos o ya investigaremos.

Ya sabemos como se "mete" en nuestro PC. Y ¿qué hace?, pues lo que haya pensado al programarlo la persona "padre" del programa, pero normalmente es capaz de hacer cosas en nuestro PC que en ningún caso nos gustaría.

Segundo Punto de Control

El programa "tiene" que estar escuchando (LINSTENING) en un puerto del TCP/IP, desde que iniciamos el ordenador. Existe un programa de windows llamado netstat. Lo podemos ejecutar con el parametro "-a". Para ello abrimos una ventana MsDOS y tecleamos: netstat -a

Lo normal, es que nada mas inciar nuestro PC (cada PC es un caso, pero estoy suponiendo el mas normalito. PC domestico, sin tarjeta de red, unicamente con modem y sin tener instalado ningun servidor, como PWS, por ejemplo). En este caso, nada mas arrancar nos tiene que dar una lista VACIA. Si es así, ya no hay peligro. (Por ahora, ya que solo por haber publicado esta información, cualquier programador de un BO, puede, sabiendo que vamos a intentar controlarlo de esta manera, modificar sus programas para que mientras no exista una comunicacion telefonica, no intenten "adueñarse" de un puerto).

Bien en cualquier caso, lo que tenemos que hacer, es justo nada mas iniciar la primera conversacion telefonica (y si ICQ arrancado -quien lo tuviese-) mirar con el comando anterior. Apuntar lo que vemos, preguntar si hay dudas a los expertos por mail o en las news, y controlar de vez en cuando (una vez a la semana) que seguimos viendo lo mismo.

Y ahora la mala fé: alguien con un programa cliente del BO (ya que conoce su puerto de instalacion), se dedica o bien a rastrear direcciones IP hasta que pilla uno, o bien si el BO se ha anunciado a algun sitio, pues entrar ya directamente a nuestro PC. Y ¿que puede hacer?, pues todo lo que le permita hacer el programa servidor.