Análisis de malware

YARA: forma sencilla y eficaz de analizar malware

13 de marzo de por Ninja de seguridad

En este artículo, conoceremos la herramienta YARA, que ofrece una forma muy sencilla y muy eficaz de identificar y clasificar malware. Todos sabemos que la ingeniería inversa es el método más recomendado para realizar una autopsia completa de archivos maliciosos, pero es muy costosa. La ingeniería inversa implica el análisis de archivos maliciosos en profundidad, lo que implica tiempo y costo. Se considera una buena práctica observar el comportamiento del malware, agruparlo en una firma y luego identificar los archivos infectados relacionados. Para reducir los costos de RE e identificar familias de malware basadas en firmas, podemos utilizar una herramienta de código abierto conocida como YARA.

YARA

YARA es una herramienta popular que proporciona un lenguaje robusto, que es compatible con expresiones regulares basadas en Perl, y se utiliza para examinar los archivos/directorios sospechosos y hacer coincidir cadenas como se define en las reglas de YARA con el archivo.

Sintaxis de las reglas YARA

En su forma más básica, la siguiente es la sintaxis de un conjunto de reglas YARA:

regla Nombre de regla

{

cuerdas :

$test_string1= ”Prueba”

$test_string2= {E1 D2 C3 B4}

Condiciones :

$test_string1 o $test_string2

}

# RuleName es el identificador de la regla. Los identificadores deben seguir las mismas convenciones léxicas del lenguaje de programación C, pueden contener cualquier carácter alfanumérico y el carácter de subrayado, pero el primer carácter no puede ser un dígito. Los identificadores de reglas distinguen entre mayúsculas y minúsculas y no pueden exceder los 128 caracteres.

Como puede ver, el cuerpo principal de las reglas de YARA contiene dos secciones:

Instrumentos de cuerda

Esta sección contiene las cadenas/patrón/firma que necesitamos comparar con un archivo. La sección de cuerdas es opcional y puede omitirse si es necesario. En YARA existen 3 tipos de cadenas nombradas de la siguiente manera:

Comodín: esto está representado por un ‘?’ e indica que algunos bytes del patrón son desconocidos y deberían coincidir con cualquier cosa. Por ejemplo:$hex_example = {B1 B2? ? B8}

Saltos: En circunstancias en las que conocemos los valores del patrón pero su longitud varía, podemos utilizar el salto. Por ejemplo:$jump_example= {F1 F2 [2-3] 24}; esto indica que cualquier secuencia arbitraria de 2 bytes a 3 bytes puede ocupar la secuencia.

Casos de uso

YARA tiene muchos casos de uso. La siguiente sección destacará algunos de los más importantes y famosos.

YARA con reglas ClamAv

YARA se puede integrar con la base de datos de reglas ClamAv. Realice los siguientes pasos para integrar las reglas de ClamAv con YARA:

YARA también se puede integrar con PEiD para comprobar qué empaquetador se utilizó para compilar el ejecutable malicioso/sospechoso. Para integrar el PEiD con YARA, realice los siguientes pasos:

https://code.google.com/p/malwarecookbook/source/browse/trunk/3/4/peid_to_yara.py

A partir de la versión 3.0, YARA puede analizar archivos ejecutables portátiles (PE). Por ejemplo, la siguiente regla analizará el archivo PE y buscará la sección de importación de PE junto con la cadena:

Importar “PE”

Regla PE_Parse_Check

{

Instrumentos de cuerda:

$ string_pe=”abc” sin caso

Condición:

pe.imports (“Kernel32.dll”, “CreateProcess”) y

pe.imports (“wininet.dll”, “httpsendrequest”) y

$ cadena_pe

}

Esta regla, PE_Parse_Check, buscará la cadena “abc” y la comparará con declaraciones de importación PE buscando una “creación de proceso” y una “solicitud de envío http”.

YARA con WMI

Las versiones anteriores de YARA tenían la capacidad de hacer coincidir solo un proceso en el que teníamos que proporcionar el ID del proceso, lo que significa que solo se puede verificar un proceso a la vez. Para superar esta limitación, YARA ha introducido soporte para WMI con la ayuda del cual se pueden escanear todos los procesos en ejecución de una sola vez. Por ejemplo:

importar sistema operativo

sistema de importación

importar wmi

importar yara

proceso=wmi.WMI() # Esto se utiliza para cargar todos los atributos de WMI en una variable conocida como proceso

test_pid = os.getpid() # esto se usa para obtener el PID .

reglas = yara.compile(filepath=”File_Path”) # Esto se usa para compilar reglas YAR en Java con la ubicación de las reglas proporcionada en File_Path

para proceso en proceso.Win32_Process(): # bucle For para iterar sobre todo el proceso en ejecución

Process_id = proceso.ProcessId

nombre_proceso = proceso.Nombre

ruta_proceso = proceso.RutaExecutable

si id_proceso! = test_pid:

intentar:

rule_match = reglas.match(pid=process_id) # esto es para verificar si las reglas coinciden desde file_path y los procesos en ejecución.

excepto:

print(‘Error de coincidencia para PID: %d’ % Process_id)

continuar

si regla_coincidencia:

print(“%s coincidió con %s [PID:%s]” % (rule_match, proceso_ruta, proceso_id))

demás:

print(“No hay coincidencias para %s [PID:%s]” % (nombre_proceso, id_proceso))

Esto se puede modificar fácilmente para detectar también la detección de ID de proceso no autorizado.

Limitaciones de YARA

Al leer esto, la mayoría de ustedes habrá sentido que, considerando lo sofisticado que se ha vuelto el malware hoy en día, la detección de YARA se puede eludir fácilmente ya que YARA solo compara patrones/cadenas/firmas cuando está disponible un método más efectivo para detectar malware, es decir, análisis de comportamiento. . Estoy totalmente de acuerdo en que YARA tiene esta limitación, pero con todas las demás funciones, el soporte publicitario YARA es una herramienta necesaria para analizar archivos maliciosos.

Conclusión

En este artículo, hemos aprendido sobre YARA, su estructura y casos de uso famosos como YARA con WMI, PE, PEiD y ClamAV, así como algunas limitaciones.