Análisis del Timeline de una evidencia con Plaso

Plaso, evolución de la herramienta conocida como log2timeline, es una herramienta desarrollada en Python que permite extraer la línea temporal de todos los eventos ocurridos en un sistema. Admite como como datos de entrada ficheros, discos virtuales, dispositivo de almacenamiento , algún punto de montaje o un volcado de imagen de disco. Como nota aclaratoria aunque la nueva herramienta pasa a denominarse plaso, para ejecutarla se hará a través de “log2timeline.py” lo cual puede llegar a causar confusión.

Plaso nos ofrece un conjunto de herramientas, que de forma resumida son:

  • log2timeline: extraer el time line de todos los eventos.
  • psort: procesamiento de los datos extraídos.
  • pinfo: muestra los datos del fichero de almacenamiento plaso.
  • image_export: exporta ficheros de una imagen.

Log2timeline se encarga de analizar los datos recibidos como parámetro de entrada generando un fichero de salida con formato “plaso”, el cual contendrá toda la información de los datos analizados. Dicho fichero de almacenamiento plaso contendrá información como:

  • Cuando se ejecutó la herramienta.
  • Metadatos de los ficheros analizados de los datos de entrada.
  • La información parseada.
  • Número de eventos extraídos de los datos de entrada.

Para las pruebas realizadas he optado por usar una imagen de prueba en formato EnCase (parte1 y parte2), accesible para cualquiera que quiera realizar las pruebas.

[Read more…]

Hooking de funciones VBScript con Frida

El trabajo de análisis requiere de una lucha continua contra código desconocido, ofuscado y cifrado. Recientemente me encontraba peleándome con un VBScript que, cómo no, se encontraba ofuscado (al menos dos capas de protección). Tras superar la primera protección y empezar con la segunda, comprobé que el método de descifrado en este punto no era trivial. Esto se sumaba a una aversión, por cuestiones meramente personales, por este lenguaje. Un análisis dinámico me podía dar la secuencia de comandos que finalmente se ejecutaban, pero perdía entonces visibilidad de todo cuanto había ocurrido por mitad. Y… ¿quién sabe? A lo mejor hay alguna técnica antianálisis por mitad que modifica el comportamiento del script para contactar contra otra infraestructura diferente. Siempre con el modo paranoico encendido.

Decidí que iba a atajar el asunto de raíz. Tanto el primer script como el segundo descifrado, después de desprotegerse, hacían uso de la función ‘Execute’ de VBScript para dar vida a su código antes protegido. Internamente, el proceso que ejecuta el script (‘wscript.exe’ en este caso), tendría que manejar el buffer descifrado y pasarlo a otra función que se encargue de ejecutarlo. Pero… ¿Dónde se encontraba susodicha función?

Con fines didácticos, en lugar de analizar la aplicación usando el modo rápido, voy a suponer que desconocemos la estructura del propio ‘wscript.exe’ y de las funciones de las librerías que carga. En primer lugar, ¿Qué hace el script y qué espero ver al analizar ‘wscript.exe’?

Ilustración 1: Script inicial cifrado

Ilustración 1: Script inicial cifrado

[Read more…]

¿Y si no podemos usar herramientas?

A muchos nos ha pasado que estando en el desarrollo de una auditoria, nos damos cuenta de que el cliente posee métodos de protección como Firewall, Waf, IDS, IPS, etc. O que por el contrario, su sistema es tan inestable que cualquier exceso de peticiones o escaneo activo le puede ocasionar una denegación de servicios, afectando la disponibilidad de su activo, y de paso ocasionándonos como auditores un problema mayor.

Personalmente,  además del uso de algunas herramientas como apoyo, me gusta hacer un análisis manual del sitio a auditar, pues viendo cómo se comporta ante peticiones bien formadas (esperadas) o peticiones mal formadas (inesperadas), es cómo se logra entender el funcionamiento del sitio web y cuáles fueron las posibles fallas que el desarrollador pudo tener al momento de codificarlo.

[Read more…]

Yara Rules Strings: estudio estadístico

Como todos los usuarios de Yara saben, las firmas de esta herramienta están basadas en “strings”; que son básicamente descripciones de familias de malware basadas en patrones. Es posible encontrarnos con firmas sencillas como por ejemplo:

rule LIGHTDART_APT1
{
    meta:
        author = "AlienVault Labs"
        info = "CommentCrew-threat-apt1"
        
    strings:
        $s1 = "ret.log" wide ascii
        $s2 = "Microsoft Internet Explorer 6.0" wide ascii
        $s3 = "szURL Fail" wide ascii
        $s4 = "szURL Successfully" wide ascii
        $s5 = "%s&sdate=%04ld-%02ld-%02ld" wide ascii

    condition:
        all of them
}

O firmas más complejas en las que se usan wild-cards, expresiones regulares, operadores especiales o cualquier otra de las funcionalidades que se pueden usar en Yara y que se pueden consultar en la documentación.
[Read more…]

Docker aplicado al Incident Handling

Docker ya lleva entre nosotros algún tiempo. En esta entrada se va a hablar de cómo es posible sacar partido de Docker y su uso en DFIR para un análisis rápido en los equipos de los analistas.

En primer lugar hay que conocer Docker. No hace falta sacarnos un máster, pero al menos conocer los conceptos básicos de la tecnología Docker. Voy a explicar muy brevemente los conceptos de imagen y contenedor, y cómo Docker trabaja con ellos.

  • Una imagen Docker es un sistema “congelado”, un sistema pausado o en estado de hibernación, el cual se encuentra en un modo de solo lectura.
  • Un contenedor no es más que una imagen en ejecución. Docker “le da al play” y añade una capa sobre la imagen en un modo de lectura-escritura.

Cuando el contenedor se detiene o se borra, Docker automáticamente elimina la capa de lectura-escritura dejando la imagen en su estado original. Esto permite reutilizar un sistema base en varios entornos, o partir siempre del mismo sistema base.
[Read more…]

Rastreando XSS con Sleepy Puppy

Cross Site Scripting (XSS) es una vulnerabilidad que permite ejecutar código JavaScript en el navegador de la víctima sin su consentimiento. Por ejemplo, un XSS permite a un atacante, entre muchas posibilidades, mostrar el clásico mensaje mediante un pop-up, redirigir el navegador de la víctima a un sitio de terceros o robar las cookies de su sesión.

La herramienta que ocupa esta entrada es Sleepy Puppy y fue lanzada por Netflix en 2015 (sí, la Netflix que todos conocemos). Ésta permite, principalmente, mediante la inyección de determinados payloads en JavaScript, seguir la traza de las vulnerabilidades XSS obteniendo información de las víctimas del ataque. La información obtenida de éstas abarca desde cookies, hasta su user-agent, el código del DOM o una captura del sitio afectado (entre muchas más posibilidades). [Read more…]

Qué es un TDS (Traffic Director System)

La idea para escribir este post surgió a raíz de haber  investigado múltiples casos de infecciones en equipos a causa de los omnipresentes Exploit Kits (EK). Una visita a un sitio web que aparentemente no debía comportar ningún riesgo, acababa con el usuario llamando al servicio de seguridad porque no podía abrir sus ficheros y comentando que le aparecía una imagen en la pantalla pidiéndole dinero por recuperar sus datos. Y en otros casos ni tan siquiera eso, porque se había infectado con un RAT o un troyano bancario y no era consciente de ello.

Existen métodos de redirección simples que se implementan directamente en el servidor web; son opciones que permiten gestionar las visitas a dicho sitio web y adaptar su comportamiento a las preferencias o características de los visitantes.

[Read more…]

Mercure – Facilitando la pesca

El phishing, aunque es uno de los vectores de ataque de los más antiguos, sigue siendo uno de los preferidos y más utilizados hoy en día por los ciberdelincuentes, ya que en la mayoría de los casos ataca directamente al eslabón más débil: el ser humano.

Por suerte, los mecanismos de defensa han avanzado lo suficiente como para ponerlo bastante difícil. Un claro ejemplo son los avanzados filtros antispam que incorporan hoy en día la mayoría de los clientes de correo electrónico. Pero como sabemos, la seguridad total no existe, por lo que los criminales siempre encuentran un medio para que el phishing sea todavía una técnica de ataque eficaz.

En esta entrada vamos a analizar la herramienta Mercure,  utilizada para llevar a cabo ataques de este tipo de una manera sencilla, y que en nuestro caso puede servirnos para poner a prueba el grado de concienciación de los usuarios de nuestra organización (con las autorizaciones correspondientes). Una de sus mayores bondades es que es Open Source y se encuentra escrita en Python, por lo que las modificaciones resultan bastante sencillas de realizar. Podemos descargarla desde su GitHub. Tenemos dos maneras de instalar Mercure, utilizando el típico git clone o desplegando el docker que nos facilita su creador. Cualquiera que elijamos se encuentra perfectamente detallada en su README.

[Read more…]

Recuperación de ficheros borrados con Scalpel

Recientemente, me encontraba terminando un script en bash, realizando pruebas para comprobar que estaba funcionando correctamente cuando, tras realizar unas modificaciones al script y volver a lanzarlo, comenzó a ejecutarse un borrado recursivo de los ficheros de la máquina, el temido ‘rm -rf‘. La típica ‘noobada‘ que esperas que nunca te ocurra sucedió.

Afortunadamente, el script se estaba ejecutando en una máquina virtual de pruebas como usuario no privilegiado, por tanto la máquina seguía estando operativa. Gracias a estas medidas de precaución pude comprobar el alcance de la broma y ver que todo el directorio /home del usuario se había borrado. Dicho directorio contenía el script que estaba escribiendo de modo que, se podría decir, que el script se había fagocitado a sí mismo, llevándose con él unas cuantas horas de trabajo.

[Read more…]

MOSH, mas allá del SSH

A día de hoy, no creo que sea necesario mencionar qué es el protocolo SSH (Secure Socket Shell) ya que sería realmente complicado vivir actualmente sin él. Por ello, se considera SSH a nivel global como la “mega” herramienta indispensable para cualquier labor de administración. Entre las ventajas de su uso podemos encontrar: acceso seguro a máquinas remotas, acceso a servicios en otras máquinas mediante la creación de túneles directos o reversos, creación de proxy socks, creación de canales seguros para la encapsulación de trafico de aplicaciones no seguras… etc.

Entre las inumerables ventajas de este protocolo, existe un punto que en ocasiones puede ser un gran inconveniente, el rendimiento de la conexión.

Para intentar dar solución a éste problema y añadir mejoras, surgió Mosh (mobile shell), aplicación que aporta diversas ventajas sobre la conexión SSH tradicional. Fue presentada en el USENIX Annual Technical Conference 2012 por Keith Winstein & Hari Balakrishnan, M.I.T. Computer Science and Artificial Intelligence Laboratory.

[Read more…]