Taller de Malwares #1 [Troyanos]
Un poco de historia
La palabra troyano, viene de la historia 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. El caballo era un obsequio para los troyanos con los cuales estaban en guerra. Era un 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 soldados salieron y atacaron la ciudad. Así fue como lograron penetrar las enormes murallas troyanas y ganaron la guerra.
En el mundo informática, los troyanos cumplen una función muy similar. Nos permiten acceder a otros sin levantar muchas sospechas.
Evolución de los troyanos
Antiguamente los troyanos eran de directa, esto quiere decir que nosotros debíamos conectarnos con nuestro remoto. A continuación les mostrare un ejemplo con un troyano llamado Theef
Como pueden ver en la , tuve que colocar la y puerto de conexión del remoto. En este caso es 127.0.0.1 ya que lo estoy testeando en mi 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 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.
A continuación les mostrare una captura de un troyano muy conocido llamado Bifrost.
Como pueden ver en la imagen, aparece una especie de grilla, en donde se irán listando los remotos cada vez que uno entre a 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 y otras tareas no muy útiles. En la actualidad los troyanos realizan varias funciones, como por ejemplo capturar teclas pulsadas, permiten manipularle el y el a nuestro remoto, nos muestran passwords almacenadas en el , 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… entre otras opciones que iremos viendo a lo largo de estas entregas.
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 mostrare como se ve cada uno.
En este caso es el Bifrost versión 1.2d, el cliente de este troyano edita al servidor que viene afuera.
Existen troyanos que son server builder, esto quiere decir que el stub del servidor está adentro del cliente. Como por ejemplo el troyano Spy-Net.
Como vemos en la imagen, solo está el cliente, ya que el mismo cliente se encarga de configurar y crear el servidor. En otras palabras podemos decir que el servidor está adentro del cliente.
Muy rara vez, algunos troyanos suelen venir con un Edit Server que es el que edita los datos de conexión del servidor.
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 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 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. A demás de esto suelen ser indetectables y vienen con garantía.
A la larga siempre hay alguien que libera los troyanos privados, esto suele ocurrir por que 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 claridad. 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, , 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 script hacer que se ejecute solo en el ordenador remoto cuando se visite ese link.
Infección por MSN: La infección por o también conocida como propagación por MSN, consiste en una infección en cadena, ya que se infecta a un contacto, este infecta a los suyos, a su vez esos a los suyos formando una cadena de infección.
Infección por IRC: La infección por IRC suele ser igual a la de MSN ya que infecta a la gente de diferentes .
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 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.
Probablemente todos los que usan MSN, mas de una vez habrán visto algún contacto que envía “fotos” o direcciones web un poco inusuales… siempre que encontremos esto, es porque estamos frente a una propagación por MSN.
También es probable que hayamos entrado a una web y el antivirus nos haya dado una alerta, en este caso es porque estamos frente a una infección por URL… Y así encontraremos miles de ejemplos de formas de infección.
Camuflaje
En la actualidad 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.
Cuando hablábamos de métodos de infección, es obvio que en todos los casos el servidor va con un camuflaje, ya que de lo contrario nadie lo abriría.
Indetectabilidad
A lo largo de estas entregas, iré 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.
A lo largo de 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.
Por ahora lo que nos interesa sabes son las formas de Indetectabilidad que existen.
Como dijimos en la primera entrega, el Stub es el corazón de nuestro ejecutable. Es el que contiene toda la información que necesitamos que posea nuestro servidor, para que conecte con nosotros.
En todos los métodos de Indetectabilidad, se aplican a ese Stub…
No nombrare todos los métodos, pero si los más importantes:
Por Código Fuente: Consiste en editar el código fuente de algún malware para dejarlo indetectable
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 que es lo que se desea hacer, ya que hay troyanos simples, y otros más completos que esta sobre entendido que contienen más opciones, pero tienen la desventajas 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 que son 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
Delphi
Otro ejemplo con el IndSocket RAT
Visual Basic
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, ya que no son compatibles al 100% con Windows Vista, Seven y ocho. En cambio el Spy-Net que está hecho en Delphi si 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 si sea compatible como lo es el Spy-Net, IndSocket RAT, SS-RAT, Entre otros que a demá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.
Más adelante iremos analizando cada troyano (los más usados) con las opciones que trae cada uno con sus ventajas y desventajas.
EOF Data
Troyanos como el Bifrost, Turkojan, Biohazard, entre otros poseen algo llamado EOF Data (End Of File Data).
Para saber que es, lo mostrare en una imagen:
Como podemos ver, 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.
Quiere decir que en el final del código posee 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.
¿Cómo configuro un troyano?
Una vez que tengamos seleccionado el troyano, lo que sigue es configurarlo para poder infectar a alguien.
En esta primera parte solamente nos basaremos en la autoinfección, mas adelante iremos viendo como indetectar nuestros servers, como ocultarlos y demás…
Usare el troyano Spy-Net 2.6 para esta entrega.
Una vez descargado, lo ejecutamos y veremos el siguiente cartel:
Le damos a Yes si queremos que muestre información de nuestro equipo, sino en NO.
Demos click en START. Seguido a esto, pasaremos el troyano en español.
Una vez en español, pasaremos a configurar el cliente
En mi caso dejare los 3 que vienen por defecto, aunque solamente utilizare uno solo que será el 81.
También colocaremos una Contraseña de conexión.
Damos en Guardar y el cliente quedara finalizado.
Ahora pasaremos al Server.
Vamos a Archivo, NuevoDamos en el botón NUEVO y colocamos un usuario. Este usuario será el que contendrá nuestra configuración.
Como esta vez solo veremos lo que es la autoinfección, dejaremos la IP local que es 127.0.0.1
En identificación ira el nombre para diferenciar al remoto de los demás infectados.
Y la contraseña será la misma que pusimos cuando configuramos el cliente.
Vamos a la siguiente pestaña (Instalación)
Bajo mi punto de vista, es la parte más importante…
Aquí configuraremos la ubicación en donde se instalara el server en el ordenador remoto.
Seleccionamos un directorio de instalación, yo coloque el de Windows ya que dudo de que algún usuario revise ese lugar.
Luego en la parte de arranque, será la parte del registro en la cual estará nuestro server. Esto es para que el troyano inicie junto con el sistema operativo.
Coloque SoundRealtek para confundirlo con el sonido.
Luego colocamos un nombre al directorio y uno al fichero, recuerden siempre ser lo menos obvio posibles. De esto depende gran parte del camuflaje.
Modificamos el mutex, y colocamos persistencia en el server.
Nos aseguramos de que este activado el Keylogger. Si desean pueden hacer que envíe los logs por FTP.
Como punto final, creamos el server. Revisen las opciones marcadas, cada uno las coloca a gusto.
Guardamos la configuración nuestra
Y finalmente ejecutaremos el server para ver si conecta
Si damos click secundario al remoto, podremos ver las opciones disponibles