Page 1

TROYANOS: Conceptos básicos Regla prima: Si tienes algún problema de conexión, comienza ensayando tus herramientas en 127.0.0.1 (IP Local) como DNS, de esa forma descartaras posibles problemas de configuración en la creación de tu server, puertos abiertos y demás variables. CONCEPTOS BASICOS Partes de un Troyano El troyano consta de: + Cliente: Es el programa que manda las ordenes a ejecutar + Servidor: Es el programa que tiene el infectado, este deja un puerto a la escucha + Editor: Este nos permite editar las características de nuestro server; puerto, ip, etc. + Otros: Estos pueden ser plugins tales como *.dll para incorporarle algunas funciones. ¿Qué hace un Troyano o Caballo de Troya? Las funciones que puede tener este son muy diversas, como ya he dicho anteriormente, todo depende del nivel de programación del programador, las intenciones de este (troyano profesional o troyano de lammers...) y un poco menos influyente, el lenguaje de programación y componentes empleados. Los Troyanos pueden tener funciones como; Keylogger(programa/aplicación que registra las teclas pulsadas),capturador de webcam(este capta imágenes de forma rápida, pareciendo así como si de un video se tratase. Esto depende de nuestra velocidad de conexión a Internet), ftp de archivos(nos permiten ver los archivos que contienen los distintos discos duros, pudiendo bajar y subir archivos), opciones en pantalla(tales como cambio de Escritorio, cambio de protector la pantalla, esconder iconos, etc.), información del PC(Esto nos permite conocer las características de un PC; tanto en el ámbito de hardware "periféricos", también su Sistema Operativo por ejemplo), Obtener Shell(Esto nos permite obtener la Shell del equipo remoto). También podemos encontrar otro tipo de cosas como abrir/cerrar bandeja de Cd, encender/apagar leds del teclado, etc. Estos son ejemplos simples de lo que normalmente tiene un Troyano, las funciones de este refleja la imaginación del programador. ¿Cuántos tipos de Troyanos hay según el modo de conexión? Podemos clasificarlos en 3 tipos: Conexión Directa, Conexión Inversa y Conexión vía web [+] Conexión Directa: Hablamos de conexión directa cuando nosotros (Cliente) nos conectamos al usuario infectado (Server). Es lo conexión más habitual de los troyanos antiguos o backdoors, lo que hace es que el server deja escuchando un puerto y el cliente se conecta a través de ese puerto. Conexión Cliente ------> Servidor ¿Cómo funcionan? Su funcionamiento es simple; nosotros al enviar el server dejamos un puerto abierto en la maquina infectada. Luego nosotros desde el cliente, debemos conectarnos a la ip del infectado por el puerto abierto por el server. ¿Cómo puedo saber el puerto del remoto? ¿Y la ip? El puerto hoy en día, en los nuevos Troyanos, es 100% editable. Gracias a esto podemos dejar nuestro Server más seguro y sigiloso pues no habrán conexiones salientes del remoto hacia nuestra maquina. Para saber la ip de nuestro infectado, existen muchísimos métodos de notificación:


Notificaciones Esto es un método que suelen traer Troyanos para mandarnos la ip de la maquina en la cual ha sido ejecutado el server. ¿Y cómo nos llega? Nos puede llegar por diversas formas, aunque no suelen ser muy eficaces. Puede llegarnos por email; este método cada día falla mas, ya que los servidores de correo lo toman como mensajes no deseados "spam" y lo suelen auto eliminar. Esa es la forma más conocida, aunque existen otras como por ejemplo por IRC, el cual nos conectamos a un canal y nos da por ahí la ip. A veces también ftp, etc. Los inconvenientes de la Conexión Directa Yo creo que ya nadie usa conexión directa, o solo muy pocos. Este tipo de conexión tiene muchos contras, como por ejemplo: 1º Tienes que saber la dirección ip de tu infectado. Si los notificadores te fallan, tienes que averiguártela de otro modo. 2º No puede traspasar routers, por lo tanto tampoco a una LAN (cibers). 3 º Puedes tener problemas al saltar el firewall (cortafuegos) del infectado. [+] Conexión Inversa Esta vez es al revés, el infectado (Server) se conecta al nosotros (Cliente) Los troyanos de conexión inversa son los que hacen que el servidor sea el que se conecte al cliente; las ventajas de éste son que traspasan muchos firewalls y pueden ser usados en redes situadas detrás de un router sin problemas. El motivo de por qué éste obtiene esas ventajas es que muchos firewalls no analizan los paquetes que salen de la computadora infectada (pero sí analizan los que entran) y se dice que traspasan redes porque no es necesario que se dirija la conexión hacia una computadora que se encuentre en la red. Conexión Servidor ------> Cliente Los mejores troyanos No hay mejor troyano, solo que les hay más completos y menos, pero lo más importante es k se adapten a las necesidades de uno. Las funciones más comunes son keylogger, screenshot, cam recorder, filemanager... Los más usados y “mejores” para mí de conexión inversa son el PoisonIvy2, el Bifrost y el Bandook1.3 [+] Conexión vía web Este tipo de troyanos no utiliza un cliente para recibir la conexión, sino que emplea un sitio web para recibir conexiones y enviar ordenes a las maquinas. Tenemos entonces como intermediario entre los remotos y el administrador de la red una interfaz web que facilita el manejo de las maquinas. Como ejemplo de este tipo de troyanos tenemos el Apofis. Son muy similares a los ircbots, solo que en vez de tener un canal IRC se tiene una web como plataforma. Conexión Servidor ------> Interfaz WEB <------- Administrador Red TIPOS DE IP Y CONEXION INVERSA Es habitual que un usuario que se conecta desde su hogar a Internet utilice una dirección IP que puede cambiar al reconectar; a esta forma de asignación de dirección IP se la denomina IP dinámica. Los sitios de Internet, servidores de correo, FTP, etc. que por su naturaleza necesitan estar permanentemente conectados generalmente tienen una dirección IP fija; a esta forma de asignación de dirección IP se la denomina IP estática. Si configuramos un server para que se conecte a una determinada IP, y esa no es estática sino dinámica, la conexión se perderá cuando esta cambie. Una solución para esta situación es el uso de DNS, una DNS es una dirección virtual que nos sirve para redirigir el trafico que conecte a ella a cualquier IP que deseemos, dándonos así


la posibilidad de usar una DNS para cubrir los cambios de una IP Dinámica. IP Dinámica <------> DNS <----- Server IP Estática <--------- Server PREGUNTAS FRECUENTES SOBRE TROYANOS ¿Es cierto que si en el equipo remoto existen dos servers del mismo troyano nunca conectara? ¿Por qué? Depende de cómo esté programado. En muchos troyanos verás la opción de establecer un Mutex, esto lo que hace es que solo haya un server ejecutándose en la maquina, no abriéndose los otros al detectar el Mutex. En otros troyanos que usan inyección y cosas raras es posible que una segunda ejecución de un server haga que el equipo explote. ¿Si uno mismo está infectado, bien sea haciendo pruebas o por alguien "externo", no nos funcionaran los troyanos? ¿Por qué? No por estar infectado te deja de funcionar los clientes de otros troyanos... Como todo en la vida podría suceder pero no es normal que suceda algo así. Pueden ocurrir excepciones como que el mutex o puerto coincidan y no se logre una conexión. ¿Por que al auto infectarnos ciertos servers solo conectan cuando activamos la casilla del "override" en el DUC? ¿Para qué "demonios" sirve esta casilla? El override sirve para actualizar los datos de tu cuenta NO-IP automáticamente, pero esto no quiere decir que sea una ley para que una prueba local funcione. Si se quiere hacer una prueba en local sin inconvenientes usa como DNS tú IP interna (127.0.0.1) y no habrá ningún problema de ese tipo. También nos ofrece unas pocas opciones. Override automatic connection detection nos permite seleccionar que adaptador de red es del cual tomara la conexión y la IP, Overrride automatic IP detection nos permite especificar la IP (dentro de las disponibles en nuestro sistema) que usará para la actualización, y el último de abajo nos permite especificar el tiempo mínimo de comprobación de IP. Por defecto está en media hora, y en principio no es aconsejable modificarlo, ya que poner menos tiempo puede saturar nuestro sistema con peticiones inútiles, y ponerlo en más tiempo puede suponer que un número importante de peticiones a alguno de nuestros servicios se quede sin respuesta ¿Se pueden tener instalados en el equipo remoto tantos servers de RATs diferentes como se quieran, siempre y cuando conecten por puertos diferentes y estén correctamente abiertos? En principio si, aunque puede dar problemas si por ejemplo 2 se inyectan en el internet Explorer y uno cierra el internet Explorer para inyectarse o cosas así... Igual con los mutex, si coinciden no podrás recibir la conexión de los repetidos, o si el puerto esta en uso por otra aplicación o restringido tampoco podrás. ¿Si un server conecta en mi equipo, es 100% viable que conecte en un equipo remoto sin antivirus? El que funcione en tu equipo no asegura que vaya a funcionar en un equipo remoto, aparte del antivirus está el cortafuegos, tu router o el suyo... ¿Por qué algunas veces al auto infectarme, la conexión muestra mi IP privada y otras la de 127.0.0.1? ¿Qué diferencia hay entre ambas y que relación tienen con la configuración del rat o del DUC? Depende de lo que pongas en el campo IP/DNS al crear el troyano. Si pones 127.0.0.1 o localhost no te extrañe que salga eso al conectarse al cliente. Si pones un DNS, por ejemplo de no-ip, agustino.no-ip.com pues ya depende de a que ip resuelva este dominio.


¿Cómo puedo saber si anda bien el server? La forma más segura para hacerlo es en un entorno virtual (VMWARE, VIRTUALPC) o en un entorno controlado o freezeado (DEEP FREEZE, SANDBOX), conectando a 127.0.0.1 como DNS y asegurándose que toda la configuración está correcta, tanto interna del server, como del cliente y sus necesidades para recibir la conexión (puertos, firewall, etc). Si todo está aparentemente bien configurado, puedes pensar en que una de estas cosas este fallando:

● ● ● ●

Algún dato mal escrito (Chequea que el DNS es realmente .org, y no .biz). No tienes abierto el DUC (Parece medio obvio pero hay que resaltarlo, fíjate que el DUC de no-ip tenga cargado el host correctamente, al tildarlo aparece una carita sonriente). Usas antivirus, cual?. Hay antivirus que aunque los cierres el kernel te puede estar jodiendo. Usas router y tienes el puerto que usa cerrado.

Ensayando troyanos en VMWARE Primero debes de configurar la salida de red de tu maquina virtual, Revisa las interfaces de red que crea la VM y como dijo alguien deberías tener el Duc corriendo en la VM.. Te digo que revises las interfaces de red porque a mí al menos... (Normalmente suelo usar el modo bridge en VMware) si hago un netstat me salen varias ip´s, por ejemplo: Proto Dirección local Dirección remota Estado TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:6346 0.0.0.0:0 LISTENING TCP 10.0.2.15:139 0.0.0.0:0 LISTENING TCP 127.0.0.1:1028 0.0.0.0:0 LISTENING TCP 127.0.0.1:30606 0.0.0.0:0 LISTENING Ahí se ve la loopback ip que es 127.0.0.1 se suele usar para hacer pruebas localmente y la ip 10.0.2.15...esto es en Virtual Box... En VMware en vez de 10.0.2.15 suelen ser del tipo 168.x.x.x debe haber algún conflicto en las IPs pues en tu server pones tu no-ip para que conecte al router (en caso de usar) y este debe redireccionar a la ip en la cual tienes el cliente escuchando...mira a ver como lo tienes... Si usas router y tienes el dhcp activado cada vez que reinicies el PC le asignará una ip diferente y si tu Duc lo tienes corriendo en la VM en el router igual tu ip ha cambiado dentro de la LAN y no conecta por eso... ¿Tengo router y no puedo conectarme? Bueno si tienes router y quieres usar conexión inversa lo que tienes que hacer es coger y abrir el puerto que use el troyano en cuestión y luego crearse un no-ip. Problemas con troyanos A la hora de usar un troyano de conexión inversa se nos dan muchas ventajas pero también tiene algún inconveniente. Si tienes una IP dinámica (que cambia) necesitas crearte un DNS con no-ip por ejemplo para k tu ip siempre esta actualizada. Si el Server no se conecta a ti puede ser pro varias cosas, la más común es k no tengas abiertos los puestos de tu router, tendrás k abrirlos, también puede ser k la victima tenga un firewall y no deje conectarse a Internet o simplemente k tu troyano sea detectado y su antivirus lo borre. Comprobar si un troyano es detectado Para comprobar si un troyano es detectado lo más fácil es usar nuestro antivirus, pero cada antivirus es distinto por lo tanto si la victima tiene un antivirus distinto a lo mejor se lo detecta. Hay varios scanners de varios antivirus a la vez:


Online: Son antivirus en páginas Web como VirusTotal, no enviéis nunca vuestros troyanos a analizar ya k mandan muestras a las compañías antivirus y si no es detectado lo será en pocos días Offline: Hay herramientas llamadas Multi AV (Varios AV a la vez) como la de Thor (KISM) k hace lo mismo solo k no manda muestras a ningún antivirus. Pasos comunes para todos los troyanos 1: primero se crea el server Eso es correcto...lo tienes que crear con las opciones correctas, pero según leí en otros post tuyos, ya lo hiciste así que...bien 2: se usa un crypter de los muchos que los users publican aquí y se crypta el programa Esto también es correcto, el crypter lo que hace, es en forma automática hacer indetectable a determinados AV, el server, modificando ciertas partes del mismo...sobre el funcionamiento hay bastante información... 3: la parte del Stub no la entiendo '¿Tengo que crear mi propio Stub o agarro el que sea de los muchos que hay aquí? o que vienen con los crypters? El Stub viene a ser el corazón del crypter...de hecho lo que generalmente detectan los AV, es el Stub, con modificarlo, se logra su indetectabilidad temporal... Pero el tema no es sencillo, lo mejor sería que domines el uso de los crypter, para más adelante adentrarte en la modificación de ellos 4: después uso un binder para juntarlo con una foto Exacto, acá unís el server con una foto, o un programa cualquiera...las razones son obvias 5: le hago un escaneo para los virus Se supone que si vas a hacer todo lo de arriba...el server tiene que ser indetectable...por lo menos para el Antivirus del amigo que lo va a recibir... 6: finalmente lo pruebo en mi PC y si me conecta listo lo puedo mandar y seguro tengo varias conexiones "bueno seguro nada" pero si intentara y...eso sería lo más prudencial... SOBRE VOLVER INDETECTABLE UN TROYANO Por desgracia las compañías antivirus no son tontas y actualizan sus bases de datos a diario con los nuevos virus y troyanos k aparecen, por eso no nos servirá de nada usar un troyano si es detectado porque si la victima tiene un antivirus será eliminado. Para hacerlo indetectable hay varias maneras: ● Cambiar offsets detectados con editor hex. ● Cambiar el código fuente detectado en ASM ● Usar encriptadores y compresores (no es lo mismo) ● Empleando métodos como XOR, RIT, MEEPA ¿Para qué sirve la inyección en un proceso? La inyección del server en un proceso sirve para que evitar que el firewall filtre (prohíba) las conexiones salientes. Como el explorer.exe y el msnmsgr.exe son programas 'confiables' que utilizan conexiones salientes a menudo, los firewalls los dejan actuar por defecto. Pero no tiene que ver con el timing de la conexión o su indetectabilidad, es más, podría ser detectada por la defensa proactiva de algún antivirus si no se le usa adecuadamente. Los procesos más usuales para ser inyectados son iexplore.exe (navegador) y svhost.exe. Cada que el proceso inyectado se inicie, también se iniciara el malware inyectado, pero de igual forma si el proceso es finalizado o tiene un error, el malware también finalizara. En la inyección a otros procesos, el server se ejecuta UNA VEZ al inicio del sistema operativo, busca el proceso víctima y se inyecta ahí. A partir de ese momento, las secciones del proceso victima están compartidas con las del server.


Cuantas instancias tenemos del server? una. Si cierro el proceso víctima, procedimiento en el que el núcleo de Windows cierra los threads, mata el proceso y LIBERA LA IMAGEN DEL PROCESO EN MEMORIA (compuesta por las secciones compartidas con el server) ¿se cierra el server? claro. ¿Y cuántas instancias teníamos? Una. Entonces? chau server. Cambiar offsets detectados con editor hex. Es una de las técnicas más antiguas de todas consistes en ir buscando los offsets detectados y cuando encontramos el que caza el antivirus cambiamos su número por un número más alto y generalmente conseguimos hacerlo indetectable, pero muchas veces se jode la aplicación. Cambiar el código fuente detectado en ASM A mi es la técnica k más me gusta, es como la anterior solo k en vez de sumar un numero abres el programa con un debugger como ollydbg y te diriges al offset detectado y cambias el código fuente en ASM, así consigues k sea indetectable y no estropeas el ejecutable. Si abres un programa con un editor hexadecimal solo ves numeritos, pero si usas un debugger esos números se traducen a código en ASM. Y por ejemplo si el offset detectado es "74" ("je" en ASM, significa si es igual salta) y si cambias el 74 por "75" (“jne” en ASM, significa salta si no es igual) Por lo tanto lo k tas haciendo es invertir un salto, aparentemente se queda indetectable ya k es lo contrario, pero si por ejemplo tienes este código tan simple: Si cam ESTA apagada entonces enciéndela Si cambias ese 74 por 75 quedaría así: Si cam NO ESTA apagada entonces enciéndela Por eso al cambiar usando el editor hex algunas funciones quedan inutilizadas o incluso te puedes cargar el programa. Si lo modificas el código fuente en ASM como por ejemplo poniendo un salto a la función o algo k haga lo mismo de manera diferente pues te queda indetectable y funcional. EXTENSIONES DE UN TROYANO Los troyanos siempre tienen tener la extensión “exe” para que sean ejecutados como una aplicación. Hablando claro, no se puede mandar un troyano como si fuera una foto (con extensión jpg.), la explicación es muy sencilla. Windows ejecuta cada extensión con un programa predeterminado, y si tiene extensión jpg. lo abrirá con el visor de imágenes, por lo tanto el troyano no se ejecuta. También es sabido que hay varios trucos para engañar a la victima haciendo creer que es una foto. Por ejemplo: Doble extensión Consiste simplemente en renombrar un archivo de troyano.exe a troyano.jpg.exe Así Windows ocultara la extensión exe y el usuario vera k tiene extensión de foto. Cambiar el icono Con herramientas como el ResHacker puedes cambiar los iconos de una aplicación y poner por ejemplo el icono k usa Windows para las fotos y así lo abrirá creyendo k es una foto... Contaminar el registro En el registro está guardado con que programa se abre cada extensión. Pues el truco esta en cambiar el programa k abre los archivos jpg. Por ejemplo para k los abra como programas y después de haber hecho ese cambio cualquier archivo jpg. que le mandemos lo abrirá como una aplicación. Ejemplo: http://cyruxnet.org/extensiones.htm Extensiones engañosas Se pueden usar extensiones poco comunes como .scr (screensaver), o si se quiere hospedar un troyano en una web se podría usar la extensión .com (ejemplo. http://sitioweb.com/server.com)


ENVIO DE TROYANOS Lo más frecuente para enviar un troyano suele ser enviarlo por email o por mensajería instantánea, pero estos bloquean los ejecutables y avisan de que son archivos peligrosos para el equipo. Para evitar eso se pueden hacer 2 cosas: ● Comprimir archivos: Si el archivo exe lo comprimes en Zip por ejemplo te dejaran enviarlo por todos los lados y la victima lo podrá abrir ya que viene por defecto con Windows. ● Tres puntitos: En Hotmail si después del exe pones 3 puntitos no te dice nada del archivo y te lo ejecuta normal. Por ejemplo “troy.exe” => “troy.exe...” ● Hospedar .exe: Se puede recurrir a un freehost, o montar un host en local para dicho fin. Cambiar el .exe por .com ayudaría en esto Por ejemplo. "troy.exe" => "youtube.com" DNS GRATUITAS PARA CONEXION INVERSA Existen muchos sitios que nos permiten crear una dirección DNS para redirigir el tráfico a nuestra IP, los más usados son NO-IP y dyndns, pero además de esos existen muchos otros más: http://www.ipupdater.com/signup.php http://www.mtgsy.net/new_user.php?action=add http://www.mydynip.org/metadot/ http://myip.org/signup/index.htm?loc=signupPickDomain https://ssl.myserver.org/registerbeta/Free.asp http://www.nerdie.net/index.php?site=register http://www.opendns.be/Content/newuser.asp http://www.prout.be/dns/?p=user_new http://www.selfhost.com/register.asp http://www.sitelutions.com/signup http://www.yi.org/new.pl http://www.dyns.cx/signup https://www.2mydns.com/signup.asp http://www.dhis.org/register.html http://www.ddo.jp http://www.editdns.com https://www.xname.org http://www.dynddns.us http://www.minidns.net http://www.dyn.ee

http://www.ddns.nu/register.php https://members.dhs.org/signup http://www.dnip.net/register.cgi http://domain-dns.com/ https://www.dtdns.com/ http://dns.blueline.be/ http://dyndns.dk/ny.php http://www.dyndsl.com/ http://dynserv.com/ http://www.dynu.com/basic.asp?type=signup http://www.dynup.net/signup/signup.php3 http://www.eurodns.com/register.php http://www.everydns.net http://fdns.net/ http://freedns.afraid.org/signup http://hn.org/signup/vanity.shtml http://www.zonedit.com http://www.serverthuis.nl http://www.dnsexit.com

COMPATIBILIDAD CON WINDOWS VISTA Problemas con Auto inicios Windows Vista posee un estricto control sobre el registro de Windows, por lo que cualquier intento de crear un auto inicio en LOCAL_MACHINE será fallido ya que se necesitan privilegios de administrador para lo mismo. Los auto inicios recomendados para este sistema son los añadidos en CURRENT_USER o los llamados 'ActiveX' (Active Setup) que no comprometen el sistema de seguridad en el registro y pueden pasar desapercibidos más fácilmente. Malware actual vs Windows Vista En estas lecturas se hace un experimento para ver si el viejo malware es compatible con Windows Vista, se explica el cómo y el porqué este sistema se la lleva bien o no con este tipo de programas


Saltándose el UAC El UAC pregunta antes de ejecutar cualquier aplicación que no esté firmada digitalmente. Una firma digital es un manifiest, que bien lo puedes editar o añadir a un ejecutable si tienes reshack/restuner. Por ej:

Puedes añadir un certificado a la aplicación para bypassear ese control, bastaría añadirle al programa que quieres que no sea detenido por el UAC ese certificado con restuner o reshack para pasarse ese control. Este de ejemplo te serviría: Código: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Test1" type="win32"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker"/> </requestedPrivileges> </security> </trustInfo> </assembly> La magia del manifest se hace más precisamente en la línea <requestedExecutionLevel level="asInvoker"/>, en donde se le dice a VISTA que la aplicación se ejecutara con los privilegios del usuario actual (saltándose así la ventanita de confirmación de ¿desea ejecutar...?). Puedes comprobarlo modificando alguna aplicación y añadiéndole el certificado, cambiara el icono que lleva, y sus permisos de ejecución.


Casi todas las aplicaciones integradas en Windows traen este tipo de Manifest en su interior, para ver manifest de otras aplicaciones con el fin de suplantarlas puedes hacerlo desde msdos, por ej con calc.exe:

Si quisieras saber si una aplicación en particular tiene restricciones en el UAC, lo podrías hacer por remote Shell. De esta forma sabiendo cual necesita de un administrador para ejecutarse, la podrías editar y reemplazarla para poderla lanzar sin la autorización del usuario.

En el ejemplo, notepad no necesita permisos, REGEDIT los necesita, pero si se le otorgan puede tener más privilegios en ejecución, y por ultimo FirewallSettings.exe es un ejemplo de una aplicación que se podría editar para poder ser ejecutada sin permisos de administrador. El Restuner tiene la ventaja pues trae un asistente para añadir Manifest a las aplicaciones, mientras que con ResHacker tienes que guardar el Recurso del Manifest y luego agregarlo


Modificando Manifest de una aplicación con “RESHACKER”


Modificando Manifest de una aplicación con “RESTUNER”

Troyanos