De cómo tu “tronqui” compartió su vida por Twonky

Aunque es probable que no sea una sorpresa para nadie, es bien sabido que muchas unidades de almacenamiento en red NAS tienen la posibilidad de compartir (de forma automática por UpnP) contenido multimedia a través de Internet. Esto es genial si te encuentras en casa de tu novia o novio y quieres enseñarle las fotos de las vacaciones o hacer noche de manta y peli con la última película que has comprado en formato digital. O por qué no, para compartir recursos por motivos laborales.

Pero, ¿qué pasa si no se configura correctamente el NAS? Pues…

Echándole un ojo a Shodan, sin necesidad de disponer de cuenta siquiera, es posible encontrar tronquis (Twonky) por todo el globo. [Read more…]

Memorias USB: riesgos, protección y acceso a los datos

Memorias USB y sus riesgos

La facilidad de uso de memorias USB y discos externos ha provocado que estos dispositivos se conviertan en los preferidos de usuarios de tecnologías para respaldar y compartir información; y esto es tan cierto que ya en el año 2014 el INE, en uno de sus informes, indicaba que el 58% de usuarios de tecnología usaba memorias USB, DVDs y otros dispositivos semejantes para compartir información.

Pero con el creciente uso de dispositivos que ha existido, han surgido varios problemas que afectan directamente a la seguridad de la información personal y de las organizaciones, mencionemos algunos de ellos: [Read more…]

‘Reversing’ de protocolos de red de malware con ‘angr’

Uno de los objetivos que en el análisis de un binario malicioso suele ser más difícil de obtener es el del descubrimiento de todas las funcionalidades que posee. Si además estas funcionalidades sólo se ejecutan a discreción de los atacantes a través de su centro de control, la cosa se complica. Por diversas razones, muchas veces no podemos llevar a cabo un análisis dinámico completo, como por ejemplo por la caída de la infraestructura del malware o el aislamiento de la muestra para evitar el contacto con el C&C. En estos casos suele ser más lento el análisis de la interacción entre el servidor del atacante y la muestra, ya que hay que crear un servidor ficticio o estar continuamente parcheando/engañando a la muestra para llevarla por todos los distintos caminos que queremos investigar. Dependiendo del tamaño y complejidad del código analizado o del objetivo del análisis, esta tarea puede variar su dificultad y extensión en el tiempo.

Voy a proponer un ejemplo de estudio de las funcionalidades de un RAT ficticio que pueden ser ejecutadas según las órdenes que reciba desde su panel de C&C. Nuestro objetivo sería crear un servidor que simule ser el del atacante. Para ello hemos de comprender el protocolo de comunicación entre el servidor y la muestra instalada en el dispositivo de la víctima.

En lugar de analizar todo el funcionamiento interno de la muestra utilizando las típicas herramientas de desensamblado y depuración, voy a delegar la responsabilidad de parte del análisis en una nueva herramienta que llevaba tiempo queriendo probar: ‘angr’. ‘angr’ es un entorno de trabajo para el análisis de binarios que hace uso tanto de análisis estático como dinámico simbólico del código. Este herramienta puede ser utilizada con distintos fines que se enumeran en su sitio web en el que además se muestran infinidad de ejemplos. Para esta entrada nos vamos a centrar en la ejecución simbólica, que puede definirse como el análisis de un programa para determinar qué condiciones de entrada han de darse para ejecutar diferentes partes de su código.
[Read more…]

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…]