LOTS: una herramienta gratuita de extracción y análisis de strings | WeLiveSecurity

LOTS: una herramienta gratuita de extracción y análisis de strings

Presentamos The Lord Of The Strings, una herramienta de código abierto desarrollada en ESET Latinoamérica para extraer los strings relevantes de una muestra maliciosa, detectando y eliminando automáticamente los strings basura.

Presentamos The Lord Of The Strings, una herramienta de código abierto desarrollada en ESET Latinoamérica para extraer los strings relevantes de una muestra maliciosa, detectando y eliminando automáticamente los strings basura.

The Lord Of The Strings (LOTS) es una herramienta para Linux gratuita y de código abierto desarrollada en ESET Latinoamérica, la cual se encuentra disponible para su descarga en GitHub, que tiene como objetivo facilitar el análisis de strings extraídos de una muestra maliciosa al eliminar automáticamente los strings basura, acelerando así los tiempos y permitiéndole al analista enfocar toda su atención en los strings que realmente son importantes.

¿Para qué sirve el análisis de strings?

Los analistas de malware suelen realizar análisis de dos tipos sobre las muestras de malware:

  • Análisis estático: Aquellos que se realizan sobre la muestra sin necesidad de ejecutarla. Por ejemplo: desensamblar el código de un ejecutable, analizar los recursos que contiene, que bibliotecas utiliza, etc.
  • Análisis dinámico: Aquellos que implican ejecutar la muestra maliciosa. Por ejemplo: analizar el tráfico de red, monitorear las llamadas al sistema, monitorear los archivos modificados, utilizar un debugger, etc.

Uno de los análisis estáticos más básicos que suele realizarse sobre malware compilado es el análisis de strings. Este consiste en extraer, sin ejecutar la muestra, todos los strings del archivo para luego ser revisados uno a uno por el analista.

El tipo de información que puede ser obtenida mediante este método varía según la muestra, el tipo de malware del que se trate y las protecciones anti-análisis que posea. Sin embargo, generalmente suele ser muy útil y puede servir como una primera aproximación a partir de la cual definir los siguientes pasos del análisis.

A continuación, se enumeran algunas de las múltiples cosas interesantes que se pueden encontrar al analizar los strings:

Bibliotecas utilizadasNombres de archivos escritos en el sistema
Funciones de la API del SO utilizadasComandos ejecutados en el sistema
Blancos a los que apunta la amenazaDirecciones del registro modificadas
Direcciones IP a las que se conectaMensajes que muestra al usuario
Sitios web a los que se conectaTecnologías que utiliza
Direcciones de bitcoin a las cuales transferir rescatesProtecciones anti-análisis que utiliza
Rutas en las cuales copia o escribe archivosDatos del compilador

¿Qué herramientas para el análisis de strings hay disponibles actualmente?

Existen muchas herramientas para obtener dichas strings, siendo las más famosas: Strings de Sysinternals para Windows y strings para Linux. El proceso realizado por estas herramientas consiste en recorrer el archivo binario y extraer todas las secuencias de bytes que sean similares a un string; es decir, aquellas que terminan en 0x00 en el caso de strings ASCII o en 0x0000 en el caso de strings unicode.

Ejemplo de string contenido en un archivo, donde puede observarse que su representación hexadecimal termina en 0x00

Como es de suponer, este tipo de herramientas presenta una gran cantidad de falsos positivos, ya que cualquier secuencia de bytes con estructura similar a un string será considerada un string válido. Mas aún, la cantidad de strings extraídos generalmente aumenta proporcionalmente al tamaño del archivo, con lo cual a partir de una muestra de tan solo algunos megabytes pueden obtenerse cientos de miles de falsos positivos.

Output de ejecutar Strings de SysInternals sobre una muestra maliciosa, donde pueden observarse strings relevantes para el análisis y strings irrelevantes (basura)

¿Cuál es la diferencia con LOTS?

Los strings falso positivo o strings basura son claramente identificables para el analista. Sin embargo, al necesitar ser analizados individualmente, la cantidad comienza a representar una complicación y un retraso en el proceso de análisis. Aquí es donde entra en juego LOTS, cuyo objetivo es descartar automáticamente los strings basura para que el analista pueda enfocar sus esfuerzos únicamente en los strings reales y útiles.

Dada la variabilidad de los strings que pueden encontrarse en una muestra de malware, conteniendo en muchos casos nombres, abreviaturas, números, símbolos, palabras inventadas, longitud y características variables, etc., se optó por utilizar un algoritmo de inteligencia artificial basado en que puedan ser fácilmente extraídos de cada string. De esta manera, se pretende lograr que el algoritmo emplee un criterio similar al que utilizaría un analista para poder discernir si un string es real o es un falso positivo.

Las pruebas realizadas sobre varios sets de datos revelaron una precisión de clasificación de aproximadamente el 97%, tratándose así de una herramienta rápida, precisa y práctica para facilitar el proceso de análisis.

A continuación, puede observarse una comparación entre el resultado de la herramienta strings de Linux y el resultado de LOTS para la misma muestra maliciosa:

Con LOTS:

 

Con la herramienta strings de Linux:

 

Se puede notar claramente que el resultado obtenido al utilizar LOTS es mucho más pequeño que el de strings, lo cual se debe, justamente, a la eliminación de los strings basura.

Esperamos que esta herramienta sea de utilidad para toda la comunidad de analistas de malware, permitiendo reducir los esfuerzos empleados en estas tareas, acelerar los tiempos de análisis y automatizar procesos.

Newsletter

Discusión