martes, 2 de octubre de 2007

[Sobre Troyanos][autor:laura_mx]

Debido a las últimas alarmas que están sucediendo con respecto a programas del estilo de BO (Back Oriffice) con los cuales pueden tomar el control de nuestro PC desde otro remoto, via Internet (por ejemplo), voy a escribir un poquito sobre estos temas.
Bien, lo de las alarmas que estan surgiendo, pues nada, ahora está 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 máquina (y un porcentaje alto de su CPU), dedicada a la caza de estas brujas, pues nada, nos tenemos que inventar algo nuevo...., pues a ello, los BO.
(Un inciso, para los amantes de los antivirus: ¿por qué los tenemos activos siempre?. -masoquistas: gastar CPU- 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 además, 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. Y luego nos quejamos de que nuestro PC no anda, que va lento......) <----- INCISO IMPORTANTE
Bien, centrando el tema: los BO. Para entender un poco su funcionamiento y cómo debemos "cazarlos", vamos a ver un poco cómo funciona el TCP/IP y cómo tenemos herramientas en Windows para ver "algo" de su funcionamiento.
En TCP/IP, todo se basa en la filosofía cliente/servidor. Un "host" (no es nada más 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 (cliente). Lo "normal" (en un PC) es ser siempre cliente, es decir, solicitamos servicios de FTP, HTML, news...
¿Cómo se solicitan los servicios o cómo hablan dos máquinas bajo TCP?. Muy sencillo, se establece un "socket" -un canal de comunicación- ¿Y cómo? pues un socket no es nada más que una conexión entre una máquina y un puerto con otra máquina y otro puerto. Es decir intervienen 2 máquinas y 2 puertos.
En el IP, se definen 65535 puertos y desde el 0 al 1023 estan reservados para los servicios estandard 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 es ese puerto en la otra máquina, hay un programa escuchando (LISTENING), este programa atenderá a nuestras peticiones.
Cuando abrimos el navegador y tecleamos una página, el funcionamiento sería el siguiente:
1) Nuestro PC para abrir el socket necesita conocer la dirección del destino (el puerto ya lo sabe, ya que por defecto en HTML es el 80). Esta dirección debe estar en formato xxx.xxx.xxx.xxx (4 números separados por puntos -dirección IP-)
2) Nuestro PC, investiga si conoce la PC 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, máscaras de subred, etc), vamos a simplificarlo. Nuestro PC se lo pregunta al DNS de nuestro servidor (recordar que ponemos DNS al definir una conexión telefónica, o bien nuestro proveedor nos lo da automáticamente 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 da el 2122, y entonces establece un canal de comunicación entre ambas máquinas desde el puerto 2122 en el cual "escuchará" nuestro navegador para esa conexión y el 80 en el destino, que será el que nos pase la información (la página web).
Bien, esto es extensible para todos los servicios IP (FTP en el 32,..etc). Y para cualquier cosa que queramos hacer.
Fijaos 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.
---------------------
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 esta y con ese puerto. Si me responde, puedo pedir la identificación del programa que me está respondiendo (podría no ser el mío). 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. Ademas esto es el pan nuestro de cada día, cuando me conecto a un servidor FTP, le "ordeno" que me pase un archivo, y el servidor FTP, lo único que tiene programado, es, primero ver quién soy a ver si estoy autorizado y segundo "darme" ese archivo.
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 archivo, o ... reiniciar la maquina...
Pues esto precisamente es lo que han hecho los programadores de los BO. Es decir unos servidores capaces de ejecutar unas cuantas (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 máquina y que además no nos demos cuenta. Para ello, de alguna manera, nos tienen que "convencer" para ejecutarlo por primera vez (o algún "amigo", un archivo "adjunto" a mail, una charla por msn, IRQ.....). Se suele hacer, vía programas adjuntos a mail, convenciéndonos 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 dirección 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 ejecuta 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 lo importante: lo veremos SIEMPRE con el "msconfig". Por tanto debemos controlar siempre lo que tenemos allí. Cuando instalamos W98, WinXP, 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 cómo 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 no nos gustaría. Al final os envío la documentación que viene con uno de los programas BO (cuyo "padre" pertenece al "Culto de la Vacas Muertas".... curioso nombre...) y que lo anuncian, como manejo en "remoto" de otro PC (curiosa propaganda...)
-----------------------------------
SEGUNDO PUNTO DE CONTROL: El programa "tiene" que estar escuchando (LINSTENING) en un puerto del TCP/IP, desde que iniciamos el PC.
Existe un programa de windows el "Netstat". Lo podemos ejecutar con el parametro "-a". Para ello abrimos una ventana MsDOS y tecleamos:
netstat -a
Lo normal, es que nada más iniciar nuestro PC (cada PC es un caso, pero estoy suponiendo el más normalito: PC doméstico, sin tarjeta de red, únicamente con módem y sin tener instalado ningun servidor, como PWS, por ejemplo).
En este caso, nada más arrancar nos tiene que dar una lista VACÍA.
Si es así, ya no hay peligro. (Por ahora, ya que sólo 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 comunicación telefónica, no intenten "adueñarse" de un puerto).
Bien en cualquier caso, lo que tenemos que hacer, es justo nada más iniciar la primera conversación telefónica (y sin ICQ arrancado -quien lo tuviese-) mirar con el comando anterior. Apuntar lo que vemos, preguntar si hay dudas, y controlar de vez en cuando (una vez a la semana) que seguimos viendo lo mismo.
------------------------
Y ahora la mala fe: alguien con un programa cliente del BO (ya que conoce su puerto de instalación), se dedica o bien a rastrear direcciones IP hasta que toma una, o bien si el BO se ha anunciado a algún sitio, pues entrar ya directamente a nuestro PC. Y ¿qué puede hacer?, pues todo lo que le permita hacer el programa servidor.
*************************
Y ahora como una nota de humor y algo anecdótico. Todo lo que les he hablado, ¿no les estaba sonando a ciertos programas de mensajería?. Algunos, son exactamente igual, y además es muy "goloso" para nosotros por el servicio que nos da, pero imaginemos, solo imaginemos, que el programador que lo hizo, le "puso" alguna cosilla más.... y que cuando quiera, utilizando esas funcionalidades ocultas, puede hacer lo que quiera con nuestro PC....
LO ANTERIOR ES BROMA !!!!!. Son elucubraciones únicamente, que nadie se lo tome en serio.........Pero podría ser verdad..., no en este caso, pero sí con otras utilidades y "golosinas" que nos regalan por ahí.
**************************
CONCLUSION: A vigilar......!!!! Y los errores de seguridad no son por los sistemas operativos, sino por lo que instalamos sobre ellos consciente o incoscientemente.

No hay comentarios: