viernes, 24 de mayo de 2019

Reglas Yara y la lucha contra...

Quiero cambiar un poco la forma de los artículos. Voy a experimentar. Quiero traer la democracia al blog, quiero comprobar si los artículos os sirven de algo para aprender algo nuevo, aunque sea algo muy pequeño. Por esto mismo, he creado un cuestionario que deberéis de rellenar antes de seguir leyendo este artículo. Cuando lo terminéis, volved al artículo y cuando terminéis de leer este artículo, volved al cuestionario para hacer la segunda parte. Si hacéis esto, al final tendréis una votación de cuál queréis que sea el próximo "artículo gordo", es decir, cuál queréis que sea el próximo proyecto que irá con un post de varias partes lo más posible.

Quiero que esto sea más participativo además de comprobar si los artículos están sirviendo de algo, no es una manera de evaluaros a vosotros, sino a mí. Por esta razón, podéis dejar de leer este artículo e ir al cuestionario. Nos volvemos a leer al terminar el primer cuestionario.


Las reglas Yara nos van a ser muy útiles para detectar malware y/o Phishings, pero ¿Qué son las reglas Yara?

Yara es un software open source que, mediante la elaboración de documentos que servirán a modo de regla, el software buscará las variables que contienen palabras o números, y en función de las condiciones que establezcamos, podremos detectar malware conocido o webs de Phishings. Vamos con un ejemplo.

rule Manual
{
    strings:
        $ = "<title>duhvujjkvhdfj8sjcjh</title>" nocase

    condition:
        all of them
}

Esta sería una regla Yara de ejemplo. Imaginemos el siguiente caso:

Encontramos un caso como el de WannaCry que infectaba equipos hasta que daba con un dominio determinado. Además de eso, como archivo de configuración, utiliza otra web en la que solamente hay una cadena de caracteres. Esta cadena es, como os podéis imaginar, la clave para cifrar los documentos del equipo de la víctima.

La forma de abordar el ataque podría ser, o bien registrar un dominio con el nombre que busca el malware o bien atacar a la web de configuración. Yo, personalmente, prefiero la segunda, puesto que, imaginemos que en lugar de buscar un dominio, mete en un array varios dominios y que va buscando de forma random; la forma más rápida y directa de terminar con el malware es atacando la web de configuración.

Pero un DDos puede tardar bastante tiempo, y si tenemos otros trabajos que hacer o, simplemente queremos que se nos avise cuando el dominio se caiga o si sigue activo ¿Qué hacemos? Pues aplicar una regla Yara.

La regla Yara anterior lo que nos dirá es que, si encuentra esa cadena en la web que le pasaremos, entonces es que ese dominio está activo. Vale, esto es útil ¿pero y para cuando el dominio ya no esté activo?

Pues o bien no reportará nada, o bien tendremos que crear otra regla Yara que se adecúe mejor a nuestra situación.

rule Manual
{
    strings:
        $a = "<title>duhvujjkvhdfj8sjcjh</title>" nocase

    condition:
        not $a
}

Esta regla lo que hace es buscar la cadena que le introducimos y, la condición es que no la encuentre, en este caso implicaría que el dominio ha caído, pues no encuentra esa cadena en la web que le pasamos. Sigamos con unos ejemplos más prácticos si os parece.



Tenemos el siguiente archivo .yar (archivo que contiene las reglas Yara). Aquí lo que le decimos es que "si encuentras una cadena que sea meterpreter, con independencia de mayúsculas (esto es lo que nos dice el nocase), muestra que está activo."

Pero ¿Esto por qué? Porque para nuestro caso específico, tenemos un pdf que, al analizarlo, hemos encontrado lo siguiente:


Aquí hay algo importante a tener en cuenta. Nosotros ya sabemos que ese archivo es malware ¿Cómo? os preguntaréis. 

Pues bien porque lo pasemos a VirusTotal y veamos que nos marca que es malware la gran mayoría de antimalware y lo analizamos y vemos que lo extraño es ese campo "artist" o bien porque, tenga una reverse_tcp shell y sepamos, tras varios análisis, que la mayoría de reverse_tcp shell contienen un campo característico que los identifica.

¿Os dais cuenta de algo? Exacto, tenemos que saber previamente que es malware o, en su defecto, saber las cadenas características de la gran mayoría de shells, payloads, malware,etc. Es decir, tendríamos que ser una especie de Antivirus.

Esto lo que hace que Yara funcione muy bien, en casos específicos y no en casos generales. Si sabemos que es malware, no le introduciríamos solamente el campo "artist" a lo mejor, sino que le introduciriamos todo el campo artist y no sólo su valor. Cuanto más concretos seamos, mejores resultados tendremos.

Pues bien, ahora le pasamos a Yara, tanto el archivo con las reglas, como el archivo a analizar, en este caso es un pdf. Con la instrucción yara -s -m -g -w [regla].yar [archivo||łeb a analizar]. Esto sería lo que veríamos si detecta la cadena que le introducimos en nuestra regla.


Nos devuelve efectivamente que existe dicha cadena, ergo es malware (en caso de que la cadena correspondiese con un malware clásico). Pero vamos a ver ahora qué ocurriría si introducimos otra cadena cualquiera en el archivo de reglas Yara.



Si cambiamos la cadena y lo volvemos a lanzar, veríamos lo siguiente:


No detecta nada, algo obvio puesto que no encuentra la cadena en el archivo. Vamos ahora con qué ocurriría si le decimos que si no encuentra la cadena anterior, eso es que el malware o phishing ya no está activo.

Este sería, por tanto, nuestro archivo de reglas ¿Qué mostraría?


No lo encuentra, pero es eso mismo lo que nos indica que el malware no está activo o bien que no es un malware (o que no lo es con esa cadena, también puede ser).

Si vais más allá, podréis estar viendo que esto lo podemos automatizar, creando nuestro propio antivirus personal, sin depender de terceros. Obviamente dependerá de que seamos nosotros los que nos actualicemos y estemos pendientes de las últimas noticias para actualizar nuestro repositorio de reglas y así no perdernos nada.

Este es, en esencia, el funcionamiento de las casas de antivirus, por lo que ahora podemos valorar el gran trabajo que hacen y el por qué, a veces, nos pueden dar falsos positivos o falsos negativos.

Ahora podéis volver a la encuesta 2 si habéis hecho la primera. Contestad y dejad cuál queréis que sea el próximo artículo largo. Debo avisar que no será el artículo de mañana, a lo mejor es el del próximo mes o próximas 2 semanas como muy pronto.

¿Hackeamos el Mundo?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...