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.
|