Troyanos

“La palabra troyano, proviene del caballo de Troya. Para los que no conozcan, el caballo de Troya era un enorme caballo de madera que fue construido por los griegos según cuenta la Odisea de Homero, para introducirse en la amurallada ciudad de Troya. El caballo era un obsequio para los troyanos con los cuales estaban en guerra, era una ofrenda de rendición.”

Lo que los troyanos no sabían era que caballo tenía en su interior soldados griegos. Una vez que el caballo estuvo dentro de Troya, los guerreros salieron y atacaron la ciudad. Así fue como lograron penetrar las enormes murallas de la antigua Troya y ganaron la guerra.

En el mundo informática, los troyanos cumplen una función muy similar. Nos permiten acceder a otros ordenadores sin levantar muchas sospechas.


Evolución de los Troyanos.

Antiguamente los troyanos eran de conexión directa, esto quiere decir que nosotros debíamos conectarnos con nuestro remoto. A continuación les mostrare un ejemplo con un troyano llamado Theef.

Underc0de - troyano theef

Como pueden ver en la imagen, tuve que colocar la ip y puerto de conexión del remoto. En este caso es 127.0.0.1 ya que lo estoy testeando en mi PC como local.

Lo malo que tenían estos troyanos es que solo se podía conectar de a un remoto por vez y también debíamos saber su IP.

Por suerte, en la actualidad hay troyanos de conexión inversa en donde podemos tener más de una conexión al mismo tiempo y no necesitamos saber su IP para conectarnos.

Uno de los troyanos más utilizados en la actualidad es el CyberGate, el cual contiene muchas funciones, nació en base al troyano SpyNet y es compatible con los sistemas operativos actuales excepto al Windows 10 porque es muy reciente y aún no sacan versión que se adapte a este.

Underc0de - troyano cybergate

Si observan la imagen -aparece una especie de grilla- en donde se irán listando los remotos cada vez que uno entre a internet y se conecte a nuestro troyano.

A diferencia del anterior, no tuvimos que poner ip del remoto ni nada de eso, ya que automáticamente al ser de conexión inversa, el remoto conecta a nosotros.Otro de los avances son las opciones que tienen cada uno.

Cuando hablamos de opciones, hacemos referencia a lo que podemos hacer con los troyanos. Antiguamente, se usaban para abrir y cerrar la puerta del CD-ROM, apagar la pantalla y otras tareas no muy útiles.

En la actualidad, los troyanos realizan varias funciones, como por ejemplo: capturar teclas pulsadas, permiten manipularle el teclado y el mouse a nuestro remoto, nos muestran passwords almacenadas en el ordenador, traen opciones de rootkit integradas ya que podemos ocultar el proceso u ocultarlo en otro, cambia la fecha de creación para no levantar sospechas, etc. También podemos manipular sus ficheros, eliminar, modificar, crear, atacar a otras PCs, editar el registro, programas instalados, entre otras funciones.


Partes de un Troyano.

Un troyano consta de dos partes fundamentales: un cliente y un servidor.

  • Cliente, es aquel que usaremos nosotros para conectarnos con nuestro remoto.
  • Servidor, es el que debemos enviar para infectar a nuestro remoto.

A continuación, les mostraré como se ve cada uno

Underc0de - partes de un troyano


Troyanos públicos y privados.

Podemos clasificar los troyanos en dos grandes grupos, en los cuales tenemos los públicos y los privados.

  • Cuando decimos troyanos públicos, hacemos referencia a troyanos liberados por los programadores, para que cualquier usuario pueda tener acceso a él y lo pueda utilizar libremente.
  • Los troyanos privados son troyanos que están en venta y deberá pagarse una suma de dinero al programador para poder tener acceso a él. Estos troyanos suelen venir con algún tipo de protección como por ejemplo Hardware ID, acceso con usuario y contraseña entre otro tipo de protecciones para que no puedan ser liberados. También suelen tener opciones adicionales hechas a medida. Además de las características señaladas, suelen ser indetectables y vienen con garantía.

A la larga siempre hay alguien que libera los troyanos privados, esto suele ocurrir porque sale una nueva versión y el programador decide liberarlo y vender la nueva versión, o también puede ser que algún usuario disconforme con el programador decide crackearlo y liberarlo para que todos tengan acceso a él.


Formas de infección

Existen muchas formas de infecciones que a lo largo de estas entregas iremos desarrollando con mayor profundidad. Por ahora, solo las nombraremos y detallaremos brevemente.

  • Infección por P2P: Se les dice P2P a los programas que utilizamos para descargar música, videos, programas, etc. Como lo son el Ares, Emule, Lime Wire, entre otros. La infección por P2P consiste en colocar un servidor de un troyano en la carpeta compartida para que otras personas lo descarguen y se infecten.
  • Infección por URL: Consiste en subir un server a un host, y por medio de un exploit hacer que se ejecute solo en el ordenador remoto cuando se visite ese link. Es difícil encontrar este exploit ya que es privado y solo se consigue pagando por él.
  • Infección por Facebook: Seguramente más de una vez hemos visto publicaciones un poco extrañas en facebook que llevan a webs que terminan infectándonos.
  • Infección a través de Exploit: Esta otra infección aprovecha fallas de los navegadores para infectar, es algo similar a la infección por URL.
  • Infección por Cadenas de Mail: son los que suelen venir adjuntos junto con cadenas que recibimos por mail.
  • Infección por Warez: Esto suele verse en foros en donde usuarios postean programas, y estos suelen venir unidos con algún troyano.
  • Infección por Autorun: Cada vez que conectamos o insertamos un medio extraíble, ya sea USB, CD-ROM, etc. sale una reproducción automática; esta reproducción automática es debido a un Autorun que ejecuta un programa y muestra un icono, lo que se hace es editar ese Autorun para que cuando se conecte un medio extraíble se ejecute automáticamente el server.

Es probable que en algún momento hayamos entrado a una web y el antivirus nos haya dado una alerta, en este caso es porque estamos frente a una posible infección por URL… Y así encontraremos miles de ejemplos de formas de infección.


Camuflaje.

Al día de hoy, la mayoría de los troyanos traen opciones para ocultar los servidores en ordenadores remotos.

Tenemos, por ejemplo, los rootkits que suelen venir con el troyano, cuya función es ocultar el servidor en algún proceso, o hacer este proceso invisible para que nuestro remoto se dé cuenta.

También tenemos la opción muy usada de cambiar el icono y reemplazarlo por alguno de una imagen, programa, documento, etc. con el fin de que nuestro objetivo piense que es un archivo inofensivo.

Otros, también suelen unirlo con algún joiner entonces al abrir una imagen, archivo, documento o con lo que haya sido unido, este ejecute a su vez el servidor que viene adentro. Podremos ver, todas estas opciones, en el troyano CyberGate que veremos más adelante.


Indetectabilidad.

A lo largo de estas entregas, se irán mostrando distintos métodos de indetectabilidad. Por ahora solo lo veremos muy por encima para que vean de qué se trata.

Seguramente pensaran, “Yo tengo antivirus, y no me voy a infectar…” Los que dicen o piensan eso, es porque seguramente no han leído nada al respecto.

En estas revistas iremos viendo distintas formas de pasar las protecciones y a su vez iremos analizando de qué formas podemos protegernos para evitar que nos infecten a nosotros.

No nombraré todos los métodos de indetectabilidad, pero si los más importantes:

  • Por Código Fuente: Consiste en editar el código fuente de algún malware para dejarlo indetectable, ya sea añadiendo código basura, modificando strings, entre otros mecanismos.
  • Edición Hexadecimal: Se edita el Stub modificando offsets detectados por los antivirus para que estos lo dejen de detectar.
  • Utilizando un Crypter: Al pasarle un crypter al servidor, este encripta la información del Stub del servidor y lo deja indetectable siempre y cuando el crypter sea FUD.
  • Ediciones de saltos: Usualmente se utiliza un debugger como por ejemplo el Olly, editando saltos, PUSH, etc.

Existen otros, pero no quiero complicarlos tanto con esto, es por eso que pararemos aquí; y más adelante, iremos desarrollando y explicando con tranquilidad los métodos que hay.


Cómo selecciono un Troyano.

La mejor forma de seleccionar un troyano, es sabiendo qué es lo que se desea hacer, ya que hay troyanos simples y otros más completos, que se sobreentiende que contienen más opciones, pero tienen la desventaja de no ser muy estables.

Para saber si los troyanos son estables o no, es necesario saber en qué lenguaje fue programado.

Como ya sabrán los lenguajes más potentes son los de más bajo nivel (Binario, ASM), luego siguen los de medio nivel (C/C++) y finalmente, los de alto nivel que son el resto (VB, Java, Delphi, siendo los más usados, entre otros).

Les enseñare rápidamente como identificar en que lenguaje están programados los troyanos.

Con un editor hexadecimal, abrimos el ejecutable y buscamos alguna línea del código que nos diga algo referido al lenguaje con el cual fue programado.

Por ejemplo, el Spy-Net

Underc0de - troyano spynet

Otro ejemplo, con el IndSocket RAT

Underc0de - troyano indsocket rat

De esta manera podremos ir viendo con que lenguaje fue hecho y que estabilidad posee.Estabilidad quiere decir que la conexión no se caiga, o sea que no se nos desconecte cuando la PC remota se reinicie, que no se bloquee el proceso, etc.

Los troyanos más estables son el Bifrost y Poison Ivy, ya que sus servidores están hechos en ASM, pero ya no son muy usados porque no son compatibles al 100% con Windows Vista, 7, 8, 10. En cambio el Spy-Net que está hecho en Delphi, sí lo es.Sigamos con más características…Necesitamos saber qué Sistema Operativo es el que tiene nuestro objetivo.

En caso de que sea Windows XP, se puede usar el Bifrost, o Poison Ivy que son los más estables. Pero en caso de que sea Windows 7 o Vista, deberemos optar por otro que sí sea compatible como lo es el Spy-Net, DarkComet, CyberGate, entre otros; y que además tienen muchas más opciones que no trae ni el Bifrost y Poison Ivy, pero con menos estabilidad.

También podemos elegir el Troyano dependiendo de lo que queramos hacer, y dependiendo de las opciones que traiga.


EOF Data.

Troyanos como el Bifrost, Turkojan, Biohazard, entre otros poseen algo llamado EOF Data (End Of File Data).

Para saber que es, lo mostraré en una imagen:

Underc0de - troyano Eof

Como podemos observar, es el final del código mostrado con un editor hexadecimal y, claramente, podemos ver la NO-IP w300.no-ip.org que es a la DNS que conecta este servidor.

En definitiva, al final del código, éste nos brinda la información de la conexión.

A la hora de utilizar este tipo de troyanos deberemos usar Crypters con soporte EOF para dejarlos indetectables. Esto se debe a que el crypter copia esa información del final, y la vuelve a dejar igual en el servidor final -de forma intacta y sin romperlo- para que vuelva a conectar.