¿Qué es un troyano?
Consiste un programa de acceso remoto o
programa de administración remota. Este tipo de programas, conocidos
también como RATs (Remote Administration Tool), se han desarrollado para el
control remoto de un PC o un sistema, valga la redundancia. Es
decir, permiten un manejo prácticamente total de un PC, que físicamente no se
encuentra al alcance de nuestras manos, por medio de una conexión directa desde
otro PC. El programa de acceso remoto deben estar instalado en ambos
PCs y su comunicación se produce generalmente vía internet o vía red.
Sin embargo un troyano tiene unas características propias que le confieren un carácter malicioso:
Se aprovecha frecuentemente de bugs y
backdoors de los sistemas informáticos, como el Back Orifice o el BackDoor.
Sólo una de las dos partes del programa (un troyano se
instala en ambos PCs) tiene capacidad de controlar (cliente del troyano)
mientras que la otra sirve de conexión con el PC controlado (servidor del
troyano).
El usuario del PC que actúa como servidor (el
PC controlado) no tiene conciencia o conocimiento de estar comunicado con
aquel otro PC. Ni tan siquiera es consciente de haber instalado el troyano en
su PC.
El servidor del troyano se oculta intentando
pasar desapercibido para actuar clandestinamente.
Para que un troyano se instale en un PC atacado necesita de
la actuación del usuario del PC en cuestión, ya que éste debe ejecutarlo
personalmente. La forma habitual es la de enviar el servidor del troyano al PC
que se quiere atacar, habitualmente por medio de un emilio o a través de un
intercambio de ficheros vía IRC, ICQ, FTP,... con la intención de que la víctima
lo ejecute. Normalmente se utilizan dos formas de engañar al usuario para que
ejecute el servidor del troyano en su PC.
La primera consiste en enviar el servidor
renombrado y con extensión doble, aprovechando la peculiaridad de los sistemas
Windows para ocultar las extensiones conocidas (opción por defecto). Es decir,
que si tenemos en el PC un fichero “foto.gif”, el usuario tan sólo verá “foto”.
Sin embargo, si el fichero se llamase “foto.gif.gif” (extensión doble) nosotros
veríamos “foto.gif”. En este caso la última de las dos es la extensión real del
archivo pasando la primera de ellas a formar parte del nombre en sí (archivo de
nombre “foto.gif” y extensión “.gif”).
Volviendo al tema en cuestión, el servidor del
troyano se envía al usuario al que se va a atacar como un archivo renombrado y
con extensión doble. Por ejemplo, si el servidor del troyano se llamase “servidor.exe”,
el atacante lo podría manipular fácilmente para que se llamase ”foto.gif.exe”,
en cuyo caso veríamos en nuestro PC tan sólo “foto.gif”. De esta forma, el
usuario atacado piensa que el archivo en cuestión es una foto, cuando en
realidad es un programa. Ahora solo hay que esperar a que el incauto abra la
foto y el troyano se instalará en su PC. Con este método lo que observa el
atacado es que le ha sido enviada una foto y que, cuando intenta visualizarla,
ésta no se ve. Lo cual es lógico porque el archivo no es en realidad una foto.
Este sistema suele venir acompañado de una técnica de ingeniería social que
suele diferir poco de este ejemplo resumido:
1.
Bien vía IRC o ICQ, bien vía emilio, se manda
el troyano camuflado como un archivo con doble extensión tipo foto.gif,
película.avi, sonido.wav, salvapantallas.scr,... etc, pudiendo enviarse, por
ejemplo, un archivo fotográfico con cualquier extensión conocida por windows,
tal que bmp, jpg, gif, ... Lo mismo sucede con los demás tipos de archivos
(sonidos wav, mid, mp3,... vídeos avi, mov, mpg,...). O simplemente se envía
un archivo tipo “fotos.zip.exe” resultando que a simple vista aparezca “fotos.zip”.
El que ha recibido el archivo lo ejecuta y
observa que el fichero en cuestión no funciona, por lo que pide explicaciones
a la persona que se lo ha mandado.
La persona que lo ha enviado se disculpa
alegando un error en el envío, en la transmisión, que se ha corrompido el
archivo, que se ha comprimido mal,... y lo vuelve a enviar. Esta vez, la foto,
película, sonido, salvapantallas,... en cuestión sí que funciona (el atacante
envía esta vez el fichero real) por lo que el “pequeño” problema en la
ejecución del primer archivo recibido queda en el olvido del atacado.
La segunda forma de enviar el troyano es más
limpia que la primera, ya que el atacado no nota nada raro. Este sistema
consiste en adherir el troyano a un fichero real (hay programillas que hacen
esto) de forma que se fundan dos ficheros en uno sólo, pero resultando los dos
100% operativos. El fichero resultante se llamará igual que el archivo que no es
el troyano (sería de tontos hacerlo al revés). De esta forma cuando el atacado
ejecuta el archivo en realidad ejecuta los dos a la vez, pero como el archivo
que sirve de “portador” del troyano es completamente funcional, el atacado no
nota nada.
Veamos un ejemplo práctico de este sistema. El
atacante posee un archivo “sonido.wav” de 200KB y a él le une el “servidor.exe”
del troyano de 100KB. El resultante es un archivo “sonido.wav” de unos 300KB,
que en realidad está formado por los otros dos ficheros anteriores. Partiendo
del hecho que el archivo “sonido.wav” original es efectivamente un sonido,
cuando el atacado ejecute el “archivo.wav” de 300KB, portador de un troyano, se
oirá el sonido en cuestión, pero además se instalará el troyano (hecho este del
que el atacado no es consciente).
Una “subvariante” de este sistema es la de
adherir un troyano a una pequeña aplicación ya existente y completamente
funcional, que sea habitualmente muy solicitada por los internautas. En este
caso, la aplicación original puede perder sus propiedades resultando que a la
vista del atacado el programa no funcione. Este es el caso que se ha dado con
una herramienta de Micro Trend (desarrolladores del antivirus PC-cillin)
especializada en la eliminación del virus Nimda y que fue utilizada por algún
desaprensivo para crear una versión gemela que en realidad contenía un troyano.
Por este motivo, Enlaces de Seguridad se une a la recomendación de las más
importantes casas expertas en seguridad de adquirir el software vía internet
desde páginas oficiales o, en su defecto, de sitios de reconocido prestigio.
Apurando mucho, incluso de personas de confianza, si bien esto no garantiza que
la fuente inicial del software haya sido una fuente fiable.
Otro método de envío de un troyano, mucho menos
utilizado, consiste en hackear un PC y, por medio de recursos compartidos, meter
el troyano en el PC atacado, esperando o bien que en un momento dado dicho
archivo sea ejecutado por el usuario infectado o bien instalarlo directamente.
En el primer caso (activación por parte del infectado) queda a la imaginación
del atacante la forma, nombre del archivo y colocación en una u otra carpeta del
PC atacado para asegurarse la ejecución del troyano por parte del infectado.
Usualmente se prodece a sustituir un fichero ejecutable del PC atacado por el
troyano renombrado como aquél, esperando que tarde o temprano el usuario ejecute
ese fichero. En este caso, se notaría que esa aplicación (ahora troyano) que
tantas veces hemos ejecutado, misteriosamente ha dejado de funcionar. Aunque es
posible que la sustitución se haya realizado reemplazando el archivo original
por otro similar pero con el troyano adherido y, por lo tanto, por un archivo
también funcional. Esta técnica requiere de bastantes conocimientos informáticos
por parte del atacante, del conocimiento de la IP del PC atacado por parte del
agresor, del nivel de privilegios que logre alcanzar y de una serie de
características en la configuración de dicho PC que la hacen bastante complicada
de llevar a cabo si no se es un experto, por lo que es un sistema relativamente
poco utilizado, si nos basamos en las estadísticas.
Para producirse al comunicación del cliente de
un troyano con su servidor, el primero necesita conocer la IP del PC en cual
está instalado el servidor o el UIN del ICQ de la víctima. Esto es lógico ya que
toda comunicación vía red o internet entre ordenadores se lleva a cabo a través
de las correspondientes Ips de las máquinas, ya que la IP es el carnet de
identidad de los ordenadores. Si la víctima es buscada a través del ICQ, pues un
tanto de lo mismo, pero entonces se puede actuar bien a través de la IP o bien a
través del UIN. Si el PC infectado tiene una IP estática, es decir, que siempre
es la misma (como las de las conexiones ADSL o por cable) el atacante no tendrá
ningún problema en ponerse en comunicación con el PC infectado, pues siempre se
encontrará en la misma dirección IP.
Si el PC infectado tiene en cambio una IP
dinámica (que cambia con cada conexión, como en las conexiones por modem) el
atacante deberá saber el valor que toma esa IP con cada conexión a internet o a
una red que efectúe el PC infectado. De ello se encarga el propio servidor del
troyano instalado en el sistema infectado. Cada vez que el PC infectado se
conecte a la red, el troyano comunicará a la persona que nos ha infectado la IP
de ese PC para esa conexión. Esta notificación la puede llevar a cabo enviando
un emilio a una dirección de correo prefijada por el atacante, a través de un
canal IRC también predefinido, a una IP,... Lo mismo ocurre con el UIN del ICQ.
Si el troyano no ha sido “personalizado”, esto
es, que la persona que lo ha distribuido no ha puesto contraseña al troyano para
su uso en exclusividad, el troyano queda a merced de cualquiera que tenga
instalado en su PC el cliente de ese mismo troyano. Esta es otra forma de
comunicación del servidor del troyano con su cliente, si bien en este caso es el
cliente el que busca al servidor y no al revés como ocurría en el caso anterior.
Una muestra de esto son los continuos ataques que sufrimos los internautas y que
el firewall identifica como intentos de comunicación de tal o cual troyano.
Estos ataques se deben a que alguien está escaneando la red en busca de
servidores de ese troyano, a que está buscando PCs infectados esperando que
alguno de ellos responda a su llamada.
Pues sí que se puede o, por lo menos, se pueden
dar una serie de circunstancias que nos hagan sospechar la presencia de un
troyano o de algún tipo de virus.
Un hecho que delata la presencia de un troyano
o virus es la presencia en un archivo de una extensión doble. Desconfía, por no
decir rechaza, todo archivo con esta característica. Pero para detectar las
extensiones dobles de los archivos deberemos retocar un poco nuestro explorador
de Windows.
·
En sistemas Win95/98, abrir el explorador de
windows (que no el Internet explorer) y pulsar en “VER=>OPCIONES DE
CARPETAS=>VER” y ya allí desactivar la opción de “ocultar las extensiones para
los tipos de archivo conocidos”.
Para los sistemas WinMe, pulsar también
dentro del explorador de windows, “HERRAMIENTAS=>OPCIONES DE CARPETAS=>VER” y
desactivar “ocultar las extensiones para los tipos de archivo conocidos”.
Para los sistemas WinNT/2000,
“EXPLORADOR=>VER=>OPCIONES=> opción “mostrar todos los archivos”.
Se aplica en todos los casos
y se acepta.
De esta forma siempre veremos las extensiones
de todos los archivos.
Otra característica que puede delatar la
presencia de un troyano es la de encontrarnos, por ejemplo, con un fichero
“foto.jpg” de 700KB. Verdaderamente sería una foto gigantesca. Este hecho podría
significar que esa foto tiene “pegado” un troyano. Pero los canallas que usan
este sistema no suelen ser tan tontos y con este sistema de “adherir” el troyano
a otro archivo suelen utilizar un tipo de ficheros que no creen suspicacias en
el atacado, como por ejemplo archivos EXE, ZIP, AVI, PPS,... de los cuales es
sabido que su tamaño puede ser muy considerable.
Pero la mejor opción para detectar un troyano
es la de escanear todos los archivos que recibimos por internet con un antivirus
o con cualquier otro programa específico para troyanos (es decir, un
antitroyanos). Se podrían también configurar los distintos gestores de descarga
de archivos para que apliquen un antivirus a todos los archivos que se bajen de
internet por medio del propio gestor. Tampoco se haría ascos a tener un
antivirus y/o antitroyanos monitorizando continuamente nuestro sistema. Los
antitroyanos, además, suelen tener capacidades propias de firewall por lo que
son capaces de detectar también posibles intentos de conexión por parte de un
cliente troyano con nuestro PC vía internet, o la comunicación de un servidor de
troyano instalado ya en nuestro PC con su respectivo cliente en caso de estar ya
infectados por él.
¿Por qué usar un antitroyanos como complemento
de un antivirus? Pues porque un troyano no tiene como finalidad la de
reproducirse, ya que ésta es una cualidad de los virus. Por eso los escaneos
heurísticos de los antivirus no suelen detectar la presencia de un troyano, si
bien en los antivirus actuales se han incorporado los troyanos a sus bases de
datos y los suelen detectar, aunque con algunos problemas, si son fielmente
actualizados. De todas formas es bien conocida la capacidad “antitroyana” del
antivirus AVP. Teóricamente, con este antivirus el apoyo de un programa
antitroyanos no se hace necesaria. No obstante, un antitroyanos tiene como
función específica la caza y captura de los troyanos, por lo que generalmente
están más preparados que los antivirus en este menester. De todas formas y como
todo en seguridad informática, la presencia de un antitroyanos no garantiza una
total protección del sistema ya que los malhechores siempre están un paso por
delante de los sistemas de seguridad.
Pues también se puede. La instalación de un troyano en
nuestro PC suele venir acompañada de varias características más o menos comunes
a todos los troyanos. Dado que la infección de nuestro PC por parte de un
troyano es en realidad una instalación de una aplicación, nuestro sistema
contará a partir de entonces con elementos nuevos dentro de nuestro disco duro,
e incluso de la memoria.
La instalación de un troyano en un PC viene
acompañada de la creación de nuevas librerías DLL, de archivos ejecutables, de
nuevas entradas en el registro de windows y de nuevas líneas de comando en
archivos tipo win.ini, system.ini,... Generalmente la instalación por defecto de
un troyano conlleva la creación de los archivos DLL y EXE en las carpetas “c:\”,
“c:\windows” y/o “c:\windows\system” (aunque ocasionalmente también se puede
producir la creación de carpetas, además de archivos).
Las entradas de registro modificadas por
prácticamente todos los troyanos son:
en todos los windows (win9x/Me/NT/2000):
“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run” y/o “Run-“
en los windows 9x/Me
“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices” y/o “RunServices-“
y en los WinNT/2000
“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Remote Administration Service”
Las líneas de comando dentro del win.ini que se modifican en
todos los troyanos se encuentran, dependiendo del tipo de windows, en los
apartados “run=” y/o “load=” de los campos [boot] o [windows]
y las modificaciones dentro del fichero
system.ini se realizan en el apartado “shell=” del campo shell.[boot] o del
campo [boot], dependiendo también de la versión de windows que se tenga
instalada.
Si bien
la creación de
más elementos en otras entradas de registro y en otros archivos de sistema
también es llevada a cabo,
las que se han enumerado son las más comunes a todos los troyanos, ya que son
lugares desde donde windows actúa directamente a la hora de ejecutar
automáticamente los programas, tanto al inicializar el sistema como, una vez
arrancado el sistema, apoyarse en los elementos aquí ubicados para un correcto
funcionamiento de las distintas aplicaciones y permitir la comunicación remota
entre distintos ordenadores. Estos son factores fundamentales para el buen
funcionamiento de un troyano: inicialización automática del troyano, acceso a
todo el sistema y capacidad de comunicación remota.
Se podría entonces, cada vez que se ejecuta un archivo que en teoría no debiera añadir nuevos elementos en nuestro PC (fotos, películas, vídeos, diapositivas,...), ordenar los ficheros y carpetas de “c:\”, “c:\windows” y “c:\windows\system” por orden de fecha de creación o modificación para ver si se acaba de crear algún fichero. Y algo parecido haríamos con las entradas de registro y el win.ini:
Se miraría en los campos antes mencionados del registro de windows (resumiendo los campos, en RUN, RunService y en Remote Administration Service) si hay algo que se acabe de añadir y/o modificar (usando la aplicación “regedit” del propio windows).
En el win.ini se miraría la última fecha de modificación para ver si acaba de ser manipulado, aparte de comprobar que nada ha sido añadido a las líneas “Run=” y “Load=”.
Y en el system.ini se haría un tanto de los mismo con la línea "shell=".
Si estas acciones denotan
que alguna aplicación con acceso al inicio de windows y al acceso remoto de
nuestro PC acaba de ser instalada en nuestro PC cuando no debería haberlo hecho,
probablemente estemos hablando de un troyano.
La cosa se complica cuando el troyano ha venido adherido a
una aplicación (fichero EXE, COM,...) ya que la alteración de los elementos
mencionados al instalar una aplicación es frecuente en muchos casos y
posiblemente no sabremos diferenciar si los cambios los ha producido la
aplicación real o el troyano (en caso de existir este último, claro está).
Aunque teniendo en cuenta que la añadidura de
los elementos ya mencionados en los campos descritos tiene como finalidades
principales la de inicializar el troyano cada vez que se arranque el sistema,
acceso total al mismo y establecimiento de una comunicación a través de la red
con su correspondiente cliente, si la aplicación portadora del troyano no
debiera actuar sobre el inicio de windows y/o sobre el control de acceso remoto
y tras instalarla se comprueba que sí lo hace, tendríamos motivos para empezar a
preocuparnos. Pero este aspecto se escapa del conocimiento informático de la
mayoría de los usuarios, por lo que adentrarnos en este terreno solo crearía más
confusión.
Una forma algo menos complicada de llevar a cabo estas comprobaciones consistiría en la utilización de un monitor de sistema que localice más fácilmente los nuevos archivos creados, un monitor de registro que informe de los cambios acontecidos en el registro de windows y la utilización también de un monitor de red que informe de las conexiones activas a través de internet. Estos monitores de red (e incluso de registro) pueden formar parte de algún antitroyanos tipo loockdown millenium, DSF3, jammer, ... o también formar parte de un firewall.
Aunque también se podría usar el comando
netstat (estado de la red) del propio windows. Para ello abriríamos una ventana
DOS en nuestro PC y teclearíamos “netstat –an”, mostrándose las conexiones de
nuestro PC que se están llevando a cabo en ese preciso momento y nos fijaríamos
en si hay alguna que resulte sospechosa. Nos aparecerán cuatro campos con la
siguiente información:
·
Protocolo: TCP o UDP
Dirección local: IP seguida de dos puntos (“:”) y número de puerto.
Dirección remota: una dirección IP y un puerto (si se da el caso).
Estado: estado en que se encuentra esa conexión (listening, established, ...).
Un ejemplo gráfico sería éste:
Si por ejemplo se observase una conexión UDP desde una dirección local a través del puerto 31337, se podría tratar del BackOrifice.