martes, septiembre 22, 2015

Cocinar una RAT {o Ransomware} para Windows (1 de 2)

Existen muchas maneras de comprometer un sistema operativo Windows, pero quizás la más sencilla sigue siendo mediante ingeniería social. Ejecutar un archivo en tu equipo no deja de poner en peligro tu sistema si no tienes la suficiente confianza en la fuente. Eso es lo que han aprovechado en el pasado, y siguen aprovechando a día de hoy, las campañas de Ransomware y los ataques que se utilizan para meter las famosas RAT (Remote Administration Tools) en auditorías de seguridad.

Figura 1: Cocinar una RAT {o Ransomware} para Windows

Mediante esta pequeña Prueba de Concepto (PoC) veremos una manera rápida y muy sencilla de comprometer un sistema corriendo con Microsoft Windows 7 para que los que están empezando en este mundo de la seguridad entiendan algunos conceptos básicos del funcionamiento de Windows y de Metasploit. Básicamente usaremos un archivo .exe para adjuntarle una shellcode de meterpreter y posteriormente haremos una escalada de privilegios para asegurar la persistencia de nuestra backdoor y tener acceso permanente. Las herramientas usadas en el proceso serán Shellter y Metasploit en Kali Linux.

Proceso de Construcción del Binario Malicioso

Lo primero que vamos a hacer será configurar el servidor donde recibiremos la shell de meterpreter. Si elegimos recibirla en una distribución Kali Linux nos ahorraremos todo el proceso de instalación del framework de Metasploit pero tendremos que configurar un servicio de NO-IP para re-dirigir el tráfico a la dirección IP dinámica que tengamos en cada momento.

En mi caso he preferido usar un VPS que tengo para trastear bastante económico y realmente recomiendo esta opción, ya que estará disponible 24H y lo podemos aprovechar para otras cosas. Yo os recomiendo RamNode por su bajo precio. Recordad que Metasploit necesita al menos 1GB de RAM para funcionar sin problemas.

Una vez conectado por SSH e instalado el framework de Metasploit, configuramos el handler con el puerto por el que escucharemos la conexión, ExitSessionOn en false para que no cierre la escucha una vez recibida y AutoRunScript 'migrate -f' para que migre automáticamente a otro proceso. Finalmente lo dejamos ejecutando

Figura 2: Arranque de Metasploit en un Kali Linux montado en el VPS esperando una shell

Pasemos a configurar los ejecutables. Yo he usado la herramienta para escanear dispositivos en red WnetWatcher de Nirsoft para adjuntarle la shellcode. Aquí el atacante usaría un ejecutable que se supone que la víctima ejecutaría sin sospechar. Haremos dos versiones finales del troyano, una ejecutará la herramienta de Nirsoft con la shellcode para no parecer sospechoso y la otra simplemente lanzará la ejecución de la shellcode. Este último será el que cree la persistencia en el sistema operativo comprometido.

Ejecutamos Shellter con Wine y nos va a pedir los siguientes parámetros y ya tendremos nuestro ejecutable modificado y listo:
Operation Mode → Auto
PE target → Ruta del ejecutable original
Enable Stealth Mode → Y (Ejecutará WnetWatcher además de la Shellcode)
Use a listed Payload or Custom → L
Select a payload by index → 1
Figura 3: Configuración de Shellter. Paso 1
Figura 4: Configuración de Shellter. Paso 2
Figura 5: Configuración de Shellter. Paso 3
Figura 6: Configuración de Shellter. Paso 4

Ahora toca crear el segundo que solo ejecutará la shellcode, ya que será el que se inicie con el sistema. Lo único que cambia con el anterior es la opción stealth, donde pondremos N, quedando de la siguiente manera:
Operation Mode → Auto
PE target → Ruta del ejecutable original
Enable Stealth Mode → N (Solo ejecutará la Shellcode)
Use a listed Payload or Custom → L
Select a payload by index → 1
Figura 7: Creación del segundo binario con Shellter

Verificación de los binarios con el Antimalware de la víctima

Ya tenemos el servidor y los ejecutables configurados. Para no confundirnos con los ejecutables, el que ejecuta el programa WnetWatcher lo llamaremos WNetWatcher_cracked.exe y el que solo ejecuta la shellcode se quedará como WnetWatcher.exe.

Figura 8: Binarios creados con las Shells dentro

Analicemos los ejecutables con el mismo antivirus que tiene la víctima instalada. En este caso usa una versión de Avira para comprobar si van a ser detectados o no. Conocer los antivirus que se instalan en un equipo es parte de la información que se debe tener, y esto se puede sacar de muchas formas, como por ejemplo usando DNS Cache Snooping buscando los dominios de actualización de las bases de firmas de cada antivirus.

Figura 8: Verificación con Avira del primer binario. No detectado.

Figura 9: Verificación del segundo binario con Avira. No detectado.

Hasta aquí se ha visto que es bastante sencillo generar dos ficheros maliciosos que tengan shells para controlar un sistema informático. Por supuesto, quedan muchas derivadas hasta terminar esta prueba de concepto y en un entorno fortificado habría que salvar todavía muchas medidas de seguridad - si la empresa ha hecho los deberes -.

Habrá que conseguir llevar este fichero hasta la bandeja de entrada de la víctima, consiguiente para eso pasar las políticas de seguridad del correo electrónico de la compañía, las tecnologías antispam/antivirus que tengan en el servidor de correo, conseguir que el usuario caiga en un engaño de spear phishing (o spam masivo con trucos como los de correos o paquetes), y luego que el equipo no tenga una fortificación extra en Windows con un firewall que evite las conexiones externas.Ya veremos más mañana en la segunda parte.

Un saludo!

Autor: Juan Felipe Díaz (@JuanFelipeDV)
SecForYou.com

20 comentarios:

  1. Gracias Juan!
    Saludos!

    ResponderEliminar
  2. Deberias poner al final de la página un link a la tool shellter:

    https://www.shellterproject.com/

    ResponderEliminar
  3. Mañana en la segunda parte detallo las fuentes y herramientas.
    Me alegro que les haya gustado.
    Un abrazo Pablo, tu tienes gran culpa de esto :D.

    Juan Felipe Díaz

    ResponderEliminar
  4. Muy bien explicado todo, muchas gracias!

    ResponderEliminar
  5. Ejecutaste el archivo con el avira u otro AV en marcha? ;)

    ResponderEliminar
  6. Yo tengo una pregunta,
    Por que no reconoce el AV el archivo como malicioso? Es simplemente porque el avira es un antivirus "de carton"? O en el proceso se hacen tareas de camuflaje del "virus"?
    Gracias!

    ResponderEliminar
  7. Buenos días Chema, saludos desde México, ¿es posible comprar el libro de fortificación de Windows aquí? ¿Está disponible como compra electrónica? Gracias por tomarte el tiempo de leer y responder esto.

    ResponderEliminar
  8. Muchas gracias Anónimo.
    Jonathan si que lo hice. Te animo a que sigas la guía y nos des feedback.
    Javi, usé Avira porque para mi es uno de los más tediosos en estos temas. Simplemente eso. En una auditoría haría una máquina virtual con el antivirus del cliente por supuesto para probar antes. El proceso de ocultación se realiza con Shellter como podrás ver.
    Mañana Chema pondrá la segunda parte pero si siguen con dudas no duden en agregarme a twitter y hablamos sin problemas.
    Un saludo y gracias por el feedback.

    ResponderEliminar
  9. Te noto un tanto maligno chema ^^ pero gracias por el aporte

    ResponderEliminar
  10. @Cristian, cómpralo en ehack.mx

    ResponderEliminar
  11. Muy bueno tu articulo Juan, gracias por compartir el conocimiento.
    Gracias!!

    ResponderEliminar
  12. Sirve para archivos Apk o solo los programas exe

    ResponderEliminar
  13. Éste artículo solo trata archivos .exe.
    Compartir el conocimiento es la base de internet. Gracias a que otros lo han hecho, sé lo que sé.

    Buen día a todos!

    Juan Felipe Díaz

    ResponderEliminar
    Respuestas
    1. Gracias por la información, excelente articulo juan, desde chile un abrazo..

      Eliminar