domingo, 26 de marzo de 2017

Guía básica de reconocimiento de Malware

El universo del malware es un universo en expansión tanto en cantidad cómo en sus cualidades. Gracias a internet, buenos investigadores, comunidades y desarrolladores, tenemos a disponibilidad mucha información, muchisimos datos y formas de obtener aún más datos y así, en conjunto con el conocimiento, podremos generar información accionable, el asset más importante.

Para no perderse en este universo que día a día aumenta su complejidad, aparecen nuevas técnicas, tools, vulnerabilidades, exploits, ideas y demás, debemos analizar cuál es la mejor manera de enfrentar un problema y llegar lo antes posible a los resultados que necesitamos.


Un camino posible es el siguiente:


  1. Obtener el panorama de la situación actual y especificar las metas del análisis y la prioridad de cada una de estas metas.
  2. Realizar un análisis preliminar para entender mejor la situacion de la amenaza, utilizando tanto herramientas de OSINT (Open Source Intelligence) como herramientas automatizadas para obtener un rápido assessment permitiendo una rápida mitigación. Con este paso también podemos facilitar el trabajo de preparación para un análisis más granular (por ejemplo despackeando y desofuscando o por lo menos detectando con qué fue packeado/ofuscado)
  3. Realizar un análisis en profundidad haciendo ingeniería inversa (reversing) de las partes del malware de interés. Esta elección debe estar influenciada por los pasos anteriores, enfocándose en ciertos aspectos de nuestro interés (funcionalidad, protocolos de comunicación, etc).
  4. Obtener los resultados utilizando el conocimiento de los pasos anteriores, comprender el funcionamiento y recolectar la evidencia, lo que ayudará a realizar una correcta toma de decisiones conociendo los daños/riesgos expuestos.

Este proceso es una guía, pero no es estrictamente una receta que no pueda ni deba cambiar.

Un buen malware analyst requiere conocer cuándo se debe utilizar cuál herramienta en pos de la efectividad, es decir, obtener resultados a menor tiempo y menor costo posible.

Al igual que en cualquier profesión con un Tool Set, no siempre necesitarás todas las herramientas y muchas pueden no ser efectivas para el trabajo requerido.  Hay situaciones en las que, si hemos definido correctamente nuestro objetivo, podríamos incluso ahorrarnos algunos pasos o tareas dentro del mismo, dependiendo de la cantidad y calidad de información que vayamos consiguiendo en cada uno de ellos. De la misma manera, las herramientas a utilizar en cada uno de los pasos intermedios variarán enormemente de acuerdo a los casos específicos en los que nos encontremos trabajando.

Luego de esta larga introducción, quiero darles a conocer tres webapps gratuitas que pueden servirnos para realizar un reconocimiento inicial del malware con el que estemos trabajando. Además, algunas de estas pueden ser utilizadas para conseguir muestras de malware con las cuales practicar nuestras skills ;)

Ya sea que tu cliente haya sido víctima de malware, hayan detectado actividad sospechosa en el sistema y tenés un conjunto de archivos del cual no sabes nada, descargaste una muestra de malware de internet o la conseguiste de tu honeypot, y suponiendo que tenemos nuestras metas claras en cuanto a los resultados que queremos obtener, siempre vamos a preguntarnos ¿Con què estoy trabajando? ¿Esto es nuevo o conocido? ¿Que tanto se conoce sobre esta muestra? ¿Por donde empiezo mi análisis?

Como siempre, internet es el lugar ideal donde comenzar.


Ok ok, tengo un sample. Donde lo subo? Que tengo que tener en cuenta a la hora de subirlo?

VirusTotal

Una de las tools más utilizadas en el mundo del malware analysis es VirusTotal.
VirusTotal es una webapp gratuita (aunque también existe su versión paga) donde uno puede subir un archivo, una URL o consultar un hash en busca de detecciones de amenazas de las principales empresas de antivirus y website scanners.
Una de los grandes puntos a favor que tiene VirusTotal es su API, con la cual podemos automatizar la subida de muestras, la obtención de resultados y combinarlo con cualquier otra tarea que necesitemos armando nuestros propios scripts. También nos permite enviar muestras por email y recibir allí los resultados en un formato XML o texto plano. Es una herramienta rápida que, en caso de consultar sobre un archivo, nos da información útil sobre su análisis estático y si es posible, un poco de info de su análisis dinámico

Algunas limitaciones y otros problemas:
  • Limitación de subida de archivos de 128 MB (version gratuita).
  • Limitación de consulta de muestras a razón de 1 cada 15 segundos (versión gratuita, requiere registración).
  • Limitación para uso comercial (obviamente).
  • Privacidad: Cuando uno sube una muestra, esta de acuerdo con los terminos y condiciones de su uso. Esto implica permitir que VT almacene tu muestra, recopile informaciòn y lo comparta con quien lo solicite, incluyendo las empresas de Antivirus. Claramente un cliente que ha sido víctima no querría que cierta información (que no sabemos si es o no conocida, o si contiene información sensible hasta haberla analizado) este en la red, o un hacker no querría estar alertando a las empresas de antivirus de su última creación (aunque no todos parecen estar alertados de esto y aun se ven casos de esto). Un workaround para obtener los beneficios de VT sin tener que compartir nuestras muestras es simplemente hasheando el archivo y buscándolo en su base de datos. Una buena herramienta para hacer esto es vt-notify, que envía un mail cuando una muestra es subida a VT. Otra alternativa es NoDistribute, herramienta similar a VT en cuanto al análisis de detección de AntiVirus, pero a diferencia de este, no comparte las muestras subidas. Si se requiere analizar muchos archivos, sera necesario registrarse y adquirir un plan a la medida de las necesidades.

  • No permite descargar las muestras (versión gratuita).
  • Cómo último motivo, para quienes tienen alguna preocupación sobre el monopolio de internet, cabe mencionar que desde el 2012, VirusTotal es una de las tantas subsidiaria de Google.

Malwr

Otra herramienta interesante para obtener información y realizar análisis automatizados con mayor granularidad es malwr.com. Este sitio, a diferencia de VT, es totalmente gratuito (no tiene versión paga).


Malwr permite a los usuarios subir archivos a los cuales sandboxeará y realizará un resumen de la información extraida. Está basado en la tecnología Cuckoo Sandbox. Algo muy interesante de esta herramienta es el hecho de que, si quien lo subió lo permite, es posible descargar las muestras para analizarlas nosotros mismos donde también es opcional realizar el sandbox de manera privada (requiere registración).

DISCLAIMER: Super ultra mega warning, don’t say I didn’t warn you: Ejecutar muestras de malware dentro de tu pc es malo. Muy MUY malo. No queres hacer eso. De verdad, creeme. Guardá la muestra en un lugar seguro, donde nadie la vea, donde nadie le haga click pensando que es una foto de la prima. Si bien estos sitios tienen cierto criterio para que no ocurran accidentes, la gente suele ser propensa a los mismos por mérito propio.

Esta herramienta nos provee información a modo de resumen tanto de su análisis estático (Secciones, Imports, Strings, AV Detections (usando VT; ojo) ) cómo dinámico (screenshots, comportamiento en el host y en la red), incluyendo signatures que ayudan a detectar comportamiento sospechoso del archivo en ejecución.


Una de las características interesantes de malwr es la graficación del comportamiento del malware, donde podemos ordenar por tiempo/evento en su eje x y api/categoría en su eje al flujo de cada uno de los procesos creados durante su ejecución, además de poder usar el zoom en los sectores que consideremos interesantes. Esto facilita a entender el flujo del malware.




La información más detallada de cada llamada al sistema, argumentos, su estado y otros datos los podemos encontrar en la tab de Behaviour Analysis, coloreado por categorización.

El resto de las posibilidades se las dejo descubrir a ustedes ;)

HybridAnalysis / Reverse.IT

HybridAnalysis, al igual que malwr es un servicio web de sandbox creado por la empresa Payload Security, y lleva su nombre por el uso de ambos análisis: estático y dinámico. Su uso es gratuito y permite sandboxear muestras de hasta 180 MB. A diferencia de malwr, las muestras correran en un entorno de VxStream Sandbox v6.20 (pago). Soporta tanto archivos PDF, Office y PE cómo APKs. También tienen API pero esta limitada a la descarga de muestras (No podemos hacer subidas automáticas), pero nos permite realizar búsquedas de reportes de muestras que matcheen cierto criterio que nosotros indiquemos. Además nos permite descargar las muestras de malware compartidas por la comunidad (requiere registración).
ra.jpg



Reverse.it es muy similar a hybridanalysis, con la diferencia que permite también subir urls.
Vale aclarar que crear una cuenta en una pagina equivale a registrarse en la otra.


Reverse.jpg
Ambos sitios permiten una selección personalizada de los settings que elegimos correr (aunque siempre limitada en su versión gratuita).Untitled.jpg

Además de la limitación en el tamaño de las muestras, al usar este servicio se le otorgan los derechos a Payload Security de usar, modificar, reproducir, distribuir (y un largo etcétera) tanto la muestra cómo el reporte obtenido de la misma.

Seguramente a esta altura se estarán preguntando:
“Existiendo estas herramientas tan automágicas, cómo es que aún siguen analizando malware de manera manual?”
Con un poco de práctica se darán cuenta que muchas veces las cosas no son tan simples como parece. Si bien existen muchas herramientas para automatizar estos procesos, no siempre son efectivos y mucho menos nos dan el panorama completo. Muchas piezas de malware tienen técnicas de detección avanzadas, o requerirán de ciertos programas o DLLs presentes en el sistema para poder correr. Aquí es donde el análisis manual se convierte en algo crucial, para así solventar las diferencias y poder ejecutar correctamente el malware y, si tenemos algo de suerte, lograr desmembrarlo.
Por otro lado, muchas veces faltan piezas de información. En internet lo que siempre vamos a encontrar es una especie de resumen de la amenaza. Si la situación lo requiere, tendremos que indagar más por nuestra cuenta para poder desentrañar aun más nuestro malware.

Por ejemplo, supongamos que nos encontrásemos ante la presencia de un sample del cual no sabemos nada. Comenzamos a indagar con estas herramientas, y podemos concluir por su comportamiento que es un ransomware. Haciendo un análisis más profundo del mismo podrías incluso encontrar el código de desencripción sin poner un solo fragmento de bitcoin, simplemente mirando su codigo (si hay un decompilador) o reverseando la muestra.

También la tecnología de sandbox es muy limitada en su práctica y requiere cierta personalización de parte del usuario para obtener información útil acerca de la amenaza en muchos casos, por ejemplo, si tengo un .pdf que corre un pedazo de JavaScript para explotar util.print del CVE-2008-2992 necesito una versión de adobe flash player que sea vulnerable (adobe v3 a v8.1.2), de otra manera no seré capaz de ejecutar este tipo de amenazas.

Al mismo tiempo, al realizar este tipo de personalizaciones se debe pensar bien en lo que se está haciendo. Si el objetivo es realizar análisis en una gran cantidad de muestras dentro de un esquema automatizado (por ejemplo usando Cuckoo Sandbox), quizás personalizar puede llegar a ser contraproducente si no se hace correctamente (Si tu objetivo es que corra la mayor cantidad de muestras, se deberá buscar aquellos software con versiones vulnerables con más exploits activamente en uso) , y nunca se lograrían ejecutar la totalidad de las muestras. Debemos tener en cuenta que si queremos conocer el comportamiento real, se vuelve cada vez más importante simular un entorno real.

Bueno, estos fueron los trucos para el GTA I de playstation one y espero que les sean de utilidad (?). Recomiendo que busquen alguna muestra (incluso en los mismos sitios) y exploren todas las opciones que cada una de ellas provee para identificar familias, comportamientos, obtener indicadores y relacionar información sin la necesidad de descargar ningún programa.

Autor: Ruth Esmeralda Barbacil
Tw: @33root

No hay comentarios.:

Publicar un comentario