Analizando nuestra red (IV)

Hace ya tiempo hablamos en este blog del uso de Netflow para analizar nuestra red y la posibilidad de detectar patrones de tráficos sospechosos.

Dado que para analizar tráfico, una de las formas habituales es disponer de un port mirror configurado en la electrónica de red enviando el tráfico interesante hacia nuestro NIDS, y no siempre existe la posibilidad de recibir tráfico Netflow directamente de los dispositivos, si no necesitamos el payload de la comunicaciones, por ejemplo para sacar información estadística o buscar anomalías, podemos usar herramientas para enviar el tráfico recibido como flujo Netflow y proceder a analizarlos. Para este post, usaremos Softflowd para realizar dicho envío.

[Disclaimer: existen otras herramientas, seguramente más actualizadas o con mayores funcionalidades, pero he decidido usar esta por sencillez.]

Una vez instalada la herramienta a través de nuestro gestor de paquetes favorito, indicamos en el fichero /etc/default/softflowd la interfaz a través de la cual voy a recibir el tráfico y el destino donde enviamos el flujo Netflow:

[Read more…]

Seguridad en Windows Server 2019

A finales del pasado mes de diciembre, Microsoft publicó un documento titulado What’s new in Windows Server 2019 sobre las nuevas características y funcionalidades renovadas que aportará esta nueva versión de Windows Server. Esta entrada, como no podría ser de otra manera, se centrará en aquellas funcionalidades relacionadas con las mejoras en seguridad que aporta Windows Defender ATP y que ya se habían visto en Windows 10 a través de Windows Defender Exploit Guard, EMET (Enhanced Mitigation Experience Toolkit) que dejó de tener soporte el pasado 31 de julio de 2018, así como WDAC (Windows Defender Application Control).

Conforme se estaba desarrollando la entrada, se fue ahondando en la investigación y esto llevó a un documento mucho más completo sobre ATP, en concreto Windows Defender Advanced Threat Protection. Este post pretende ser un breve resumen ordenado de todo aquello que recogen los múltiples enlaces del documento anteriormente citado.
[Read more…]

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