Creando mi sandbox

Creando mi sandbox

¿A cuántos de nosotros nos interesa aprender analizar malware? en especial ese malware que de repente llega al correo, el que nos encontramos navegando en Internet o descargando cosas. Bien, pues la idea de este post es saber qué tipo de herramientas podemos usar para el análisis de malware, así como también en donde podemos encontrar estas tools. El propósito de este post no es enseñar a crear una máquina virtual.

Como ya sabrán, existen diferentes tipos de software de virtualización o mejor conocidos como hipervisores, de los cuales los más famosos son Virtual Box y VMWare. Bien, en mi caso me agrada usar más Virtual Box por 2 cosas en especial:

  1. Es fácil para su manejo
  2. No necesito pagar por usarlo

A diferencia de Vmware Work Station, la cual si requiere una licencia para su uso. Cualquiera de los hipervisores que se quiera usar son buenos para nuestro propósito.

Cabe aclarar que no soy un experto en el tema de reversing y mucho menos soy experto en el tema de análisis de Malware, simplemente soy un aficionado en el tema y me gusta saber cómo trabajan las cosas, en especial el código malicioso, esto no lo hago con la intención de dañar a nadie, únicamente quiero ayudar a internet a ser un espacio mejor si es que algún día puedo.

Cuando estoy analizando un malware, utilizo diferentes sistemas operativos, como lo es Windows y GNU/Linux.

¿Por qué?

En el caso de GNU/Linux lo utilizo por diferentes motivos:

  1. La mayoría de Malware está hecho para Windows
  2. Por Internet se han publicado algunas fallas de seguridad con el software para descomprimir (WinRAR), por tal motivo uso el que viene por defecto en GNU/Linux
  3. Lo utilizo como primera base para descargar el Malware, ya sea por el navegador web o con la ayuda de herramientas como wget, curl, etc. En dado caso que no se tenga las herramientas por default, basta con correr el comando de instalación de acuerdo a su sistema, ejemplo, en los sistemas basados en Debian usamos “apt-get install”

En el caso de Windows, es fácil, en este sistema corro el malware.

Antes de empezar, un mensaje que quizá a muchos ya los tiene hartos, pero no está de más:

No me hago responsable por lo que les pueda llegar a pasar a sus sistemas operativos de base, por favor usen máquinas virtuales o en todo caso si tienen un equipo que ya no utilice nadie de la familia o ustedes, ese puede ser un buen equipo para las pruebas que correrán.

¿Qué se necesita para poder iniciar en el análisis de Malware?

Necesitamos un par de herramientas que nos van ayudar hacer un análisis correcto y “seguro”, a continuación, la lista para descargarlas:

  • Systeiternals suite, es un conjunto de herramientas desarrolladas por Mark Russinovich, tiene múltiples propósitos, les recomiendo bajar toda la suite, de este conjunto nos interesan en particular:
  1. Tcpview (Sirve para ver qué proceso se está comunicado a que dirección, ya sea interna o externa)
  2. Procexp (Es algo parecido al administrador de tareas de Windows, pero ésta herramienta puede mostrar procesos que el task manager no muestra)
  3. Procmon (Sirve para ver qué operación está realizando los procesos sobre que directorio y también puede captura los eventos, se podría decir que nos sirve para ir haciendo el “rastreo”)
  • Regshot, esta herramienta nos permitirá tomar un snapshot de los registros antes y después de correo el malware
  • Md5sum, esta herramienta nos permitirá generar un hash MD5 a nuestro Malware, en la buenas prácticas de análisis de Malware, es importante sacar un hash a lo que vamos analizar
  • ApateDNS, es una herramienta que nos permitirá spoofear un servidor DNS y de esta forma saber a qué dominios o IPs se está comunicando el Malware
  • Wireshark, esta herramienta es un sniffer de red, por lo que nos permitirá monitorear el tráfico de red.
  • IDA pro, como en todo post sobre análisis de Malware, no puede faltar IDA pro, una herramienta que nos permite hacer reversing, esta herramienta no es de uso gratuito, sin embargo bastara con buscar en internet. 😉

Las herramientas mencionadas anteriormente no siempre son utilizadas, sin embargo, es importante contar con ellas en la maquina donde vayamos a realizar el análisis de Malware. Por último, les comparto un par de post que son de mi autoría, donde muestro un par de análisis dinámico del Malware y por supuesto utilizando las herramientas mencionadas.

Explois y 0-day | Oday Today

Explois y 0-day | Oday Today

Para los exploits, existen innumerables paginas, sitios donde poder conseguir exploits actuales, que nos puedan ayudar en nuestras pruebas de penetración, sin embargo una de los sitios que destaca es 0dayToday un sitio que aparte de compartir con nosotros, nuevos exploist, también pone a la venta los famosos 0day las vulnerabilidades aun sin parchar y que son muy buenas. Sin embargo algunos usuarios, aseguran que los 0day que vende este sitio no son buenos o no son lo que promete.

Link  (https://0day.today/)

SpyAppClient

SpyAppClient

Esta aplicación es un agente que se instala en el teléfono Android que queremos monitorear. Una vez instalada, y después de hacer clic en el botón “ocultarme”, el agente estará trabajando en segundo plano y no será visible para el propietario del teléfono. El agente seguirá trabajando incluso después de reiniciar el teléfono.


Link: https://github.com/ghazikr/SpyAppClient?fbclid=IwAR3PVa1B4Ty_3hu0BH3ykX3lHWkyLGc71W_zWzny0jdNfwJ7O-ETzK1jkAg

TORAT

TORAT

Una herramienta de administración remota multiplataforma está escrita en Go usando Tor como su mecanismo de transporte actualmente compatible con clientes Windows, Linux, MacOS.

Características actuales
ToRAT_client se comunica a través de TCP (con TLS) a través de Tor con el servidor ToRat (servicio oculto)
El anonimato de cliente y servidor.
encriptado de fin a fin
Shell inverso multiplataforma (Windows, Linux, Mac OS)
Windows:
Bypasses de control de cuentas de usuarios múltiples (escalada de privilegios)
Métodos de persistencia múltiple (usuario, administrador)
Linux:
Métodos de persistencia múltiple (usuario, administrador)
transporte opcional sin Tor, por ejemplo, use Tor2Web, un nombre de host DNS o IP pública / local
binario más pequeño
El anonimato de cliente y servidor.
Tor incrustado
ID persistente única para cada cliente
dar a un cliente un alias
todas las descargas del cliente se guardan en ./$ID/$nombre de archivo
Servidor Shell
Soporta múltiples conexiones
Banner de bienvenida
Salida de color
Ficha-Compleción de:
Comandos
Archivos / Directorios en el directorio de trabajo del servidor.
Mando Información
seleccionar Seleccione cliente para interactuar con
lista listar todos los clientes conectados
alias Seleccione cliente para dar un alias
discos compactos cambiar el directorio de trabajo del servidor
salida salir del servidor
Shell después de la selección de un cliente
Ficha-Compleción de:
Comandos
Archivos / Directorios en el directorio de trabajo del cliente.
Mando Información
discos compactos Cambiar el directorio de trabajo del cliente.
Listar el contenido del directorio de trabajo del cliente.
Desgarrar borrar archivos / directorios irrecuperables
Remover igual que shred + elimina los archivos triturados
Pantalla tomar una captura de pantalla del cliente
Gato ver archivos de texto desde el cliente incluyendo .docx, .rtf, .odt
Alias dar al cliente un alias personalizado
Abajo descargar un archivo desde el cliente
Arriba subir un archivo al cliente
Escapar escapar de un comando y ejecutarlo en un shell nativo en el cliente
reconectarse decirle al cliente que vuelva a conectarse
salida sesión actual de fondo y un retorno a la shell principal
más El comando se ejecutará en un shell nativo en el cliente.

https://github.com/lu4p/ToRat/wiki/Setup

Evadir AV

Evadir AV

Todos sabemos qué es un antivirus, cuales son sus funciones y qué forma tienen de proteger nuestros equipos. Lo que explicaré en este y otros tres artículos es el funcionamiento interno de los mismos para que sepamos cómo funciona un antivirus, de que forma detectan las amenazas y por qué no son útiles frente ataques dirigidos. Además pondré casos prácticos con ejemplos de cómo burlarlos.

En esta parte comentaremos como funciona la detección de malware mediante firmas, la forma mas utilizada desde el nacimiento de los antivirus.

¿Cómo se diferencia un virus de un archivo que no lo es?

Como todos sabemos algo que diferencia unos antivirus de otros es la cantidad de firmas que contiene, es decir la cantidad de virus que tiene catalogados en su base de datos y es capaz de identificar. Pero ¿Qué son las firmas?

Como todos sabemos un archivo está formado por una cantidad de bytes los cuales en conjunto dicen qué hacer al sistema operativo, por tanto cada programa tiene una secuencia de bytes distinta al resto, no hay dos programas distintos que usen la misma secuencia de bytes.

Sabiendo todo esto es lógico pensar que si tenemos una base de datos donde figure una copia de los bytes de los diferentes virus luego podríamos comparar cada archivo con ella y determinar si es un virus en caso de que exista en la base de datos. Pero esto no es del todo así ya que una base de datos que contenga integramente todos los bytes de los miles y miles de virus que hay sería totalmente inviable por su tamaño.


Parte del código del virus Walker.

Lo que se hace en realidad es tomar fragmentos del código en lugar de todo el mismo y almacenarlo en la base de datos.

Cuando el programa antivirus empiece a analizar ficheros buscara en cada fichero coincidencias en su código con los almacenados en la base de datos si encuentra una coincidencia lo catalogará como una amenaza y cuanto mas coincidencias mas indudable para el será que es un virus.

El análisis mediante firmas a priori parece muy fiable pero si lo pensamos concienzudamente nos damos cuenta de lo frágil que es, pensemos que si logramos detectar  cuales son las partes (en adelante firmas)  modificarlos y que este continue funcionando el antivirus será incapaz de detectarlo.

Caso práctico: Burlando un antivirus con el virus Walker.

El virus Walker es uno de los virus de antaño mas conocidos que existen, originario de Estambul y creado en el año 1992, los efectos de este virus son graciosos y es que muestra un hombrecillo caminando por la pantalla cada cierto tiempo. Como todos podéis suponer este es un virus que deberían tener mas que trillado todos los antivirus.

Para el ejemplo que voy a poner voy a usar en todo momento el antivirus Microsoft Security Essentials, como veis detecta sin problemas la amenaza y es capaz de desinfectarla.

Paso uno: Averiguar qué partes del código está tomando el antivirus como firmas

Como hemos dicho antes el antivirus compara partes del código con su base de datos para decidir que es un virus o que no lo es, por tanto tenemos que detectar dichas partes, para ello dividiremos el virus en partes y las examinaremos con el antivirus para ver con cual (o cuales de ellas salta). En mi ejemplo usaré el programa HJSplit que permite definir el tamaño de cada parte.

En nuestro caso, puesto que el virus es pequeño (solo 6Kb) vamos a dividirlo en dos partes de 3Kb. Una vez dividido pasamos el antivirus a cada parte y obtenemos los resultados:

Como vemos en la imagen el antivirus está detectando la primera parte del archivo por lo cual el resto del código podemos dejarlo como está ya que no es detectado por nuestro antivirus, si quisieramos afinar mas dónde está la firma podriamos dividir la primera parte en otras y volver a analizarlas hasta tener un fragmento mínimo. Pero puesto que nuestro ejemplo es muy pequeño y la parte detectada es de solo 3Kb lo dejaremos así.

Paso 2: Modificando el código para hacer a Walker indetectable.

Esta es quizás la parte mas compleja de todo el ejemplo y puede variar dependiendo de muchos factores, en las próximas partes comentaremos otros modos de edición.

Lo primero es abrir la parte que detecta el antivirus con un editor hexadecimal, esto nos mostrará sus bytes en código hexadecimal y podremos identificar de una manera mas o menos sencilla las partes editables. Nosotros usaremos HxD pero podéis utilizar cualquier otro.

Una vez abierto lo mas fácil es ojear un poco el código en su parte derecha para buscar cadenas de texto

Lo que vamos a hacer es editar estas cadenas de texto que como vemos son dedicaciones, etc, por otro, en nuestro caso serán puntos dejandolo así, debemos buscar bien y cambiar la mayor parte posible del código, en nuestro caso tendremos otra cadena de texto similar un poco mas abajo la cual también sustituiremos con puntos.

Una vez hecho los cambios analizaremos de nuevo la parte para ver si ya no lo detecta, en caso deque lo detectase deberiamos seguir cambiando código.

Paso 3: Volver a montar los ficheros y probarlo.

Es una parte lógica, volver a montar los ficheros mediante el mismo programa que hemos usado para partirlos. Como vemos, tras analizarlo no se debería encontrar ninguna amenaza

Y a pesar de que nuestro antivirus ya no lo ve peligroso, veamos que ocurre si lo ejecuta una máquina.

Hace un tiempo vimos las diferentes formas en las que un antivirus detectan las amenazas, centrándonos en el análisis de firmas y vimos una forma básica de burlarlo. En esta entrada (2.1) y en la siguiente (2.2) nos centraremos en los análisis heurísticos que tratan de identificar el malware a través de su comportamiento. Por ejemplo, si un ejecutable se copia a los diferentes pendrives  y se conecta a un servidor , es muy probable que un antivirus lo detecte como una amenaza.

Generalmente los antivirus corren los ficheros en un sandbox donde analizan su comportamiento. Una vez sabemos básicamente como funcionan estos análisis vamos a ver cuatro ejemplos de cómo burlar este tipo de análisis, que van desde saturar el proceso dedicado al análisis a detectar si estamos siendo analizados por un antivirus para realizar unas acciones u otras. En nuestro ejemplo usaré un Keylogger programado para la ocasión y el antivirus AVG el cual tiene protección heurística y como podemos ver es identificado como una amenaza.

Excediendo el tiempo límite de análisis.

Este es el ejemplo mas básico de los que vamos a ver, se basa en la limitación de los antivirus a la hora de analizar un fichero y es que por razones de optimización no es capaz de mantener un análisis constante hacia un fichero pasado un tiempo sin actividad sospechosa lo toma como fiable, este método aunque puede sonar sencillo es tenido en cuenta por muchos antivirus que suprimen las “pausas” que tenga el proceso, así que lo correcto es que el malware realice acciones legítimas durante el tiempo que dura dicho análisis a fin de ser considerado un software no malicioso. Un ejemplo de esto es el siguiente código:

Para vurlarlo en este primer ejemplo lo que haremos es iniciar la función keylogger() pasado un determinado tiempo, sin realizar llamadas a Thread.sleep o demás formas “deducibles”, para ello iniciamos en un hilo a parte una funcion encargada de ver si ha pasado dicho tiempo

1234567double inicio; //Guarda el milisegundo en el que se inicia el programaprivate void Form1_Load(object sender, EventArgs e){inicio = new TimeSpan(DateTime.Now.Ticks).TotalMilliseconds;hilo_key = new Thread(startKeylogger);hilo_key.Start();}

Como podéis ver lo primero que hacemos es comprobar el momento en el que se ha iniciado la aplicación y guardarlo en la variable global inicio, a continuación llamamos al proceso startKeylogger la cual se encargará de ver si ha pasado el tiempo indicado como vemos a continuación

12345678910111213141516171819//Inicia el keylogger cuando hayan pasado 5 minutosprivate void startKeylogger(){ while (1==1){if (new TimeSpan(DateTime.Now.Ticks).TotalMilliseconds > inicio + 300000) //Si han pasado 5 minutos{while (1==1) //Bucle sin sentido, lo explicaremos mas abajo.{keylogger(); //Inicia el keylogger}}else{System.Threading.Thread.Sleep(1000); //Si no han pasado cinco minutos espera un segundo hasta volver a realizar la comprobación}}}

Si bien puede parecer algo enrevesada esta función lo único que hace es comprobar si el tiempo actual es inicio (el momento en el que arrancó el software) mas 30000 segundos, lo correspondiente a cinco minutos, en caso de que no sea así vuelve a ejecutarse la comprobación hasta que dicha condición se cumpla.

Además es importante jugar con diferentes formas de hacer este tipo de cosas aunque por que cuanto mas compliquemos el camino mas efectivo será contra un análisis heurísticos pesar de que no sea “lógico” en términos de programación, ya que a mas acciones “no perjudiciales” detecte el motor antivirus menos motivos hay para sospechar. De ahí podemos ver el segundo bucle infinito que es simplemente algo absurdo y que a razón de eficiencia podríamos suprimir dejando solo keylogger();

Si os fijáis hemos puesto algunos Sleeps, los cuales no son pensando en el análisis heurístico, ya que probablemente sean omitidos, si no que son pensados para reducir el consumo de recursos en el equipo ya que realizar las comprobaciones de forma infinita y sin control daría como resultado un alto uso de CPU.

En este caso, esta modificación es suficiente para que AVG no detecte mi software como malicioso, pero en cualquier caso en la próxima entrega explicaremos otros medios mas sofisticados a la par que efectivos para detectar si estamos siendo analizados.