miércoles, 20 de julio de 2016

Threat Intelligence. Yara Rules webshell hashes export OTX and other

Estimados amigos de Inseguros !!!

Hoy por ser miércoles el día que es voy a escribir un pequeño artículo para apuntar una chuleta y agradecer el trabajo de la gente de Yara RUles.


En el github oficial del proyecto han publicado un fichero yara con la identificación de las webshells más conocidas y usadas por los ciber-malosos, auditores y demás perlas del panorama :-)

El archivo es lo podéis descargar aquí.

Para los que no sepáis que es Yara Rules, mejor leer este artículo de Root Against The Machine o mal informaros con mi descripción: Un motor de detección de malware, o ficheros... basados en expresiones regulares. Es decir lo que podría ser un "motor de antivirus" en el que nosotros creamos las firmas, por ejemplo, detectar ficheros ejecutables que contengan el string "banco". El ejemplo de la documentación:

rule ExampleRule
{
    strings:
        $my_text_string = "text here"
        $my_hex_string = { E2 34 A1 C8 23 FB }

    condition:
        $my_text_string or $my_hex_string
}

El ejemplo de una webshell del fichero que han publicado sería este:

rule lamashell_php {
meta:
description = "Semi-Auto-generated - file lamashell.php.txt"
author = "Neo23x0 Yara BRG + customization by Stefan -dfate- Molls"
hash = "de9abc2e38420cad729648e93dfc6687"
strings:
$s0 = "lama's'hell" fullword
$s1 = "if($_POST['king'] == \"\") {"
$s2 = "if (move_uploaded_file($_FILES['fila']['tmp_name'], $curdir.\"/\".$_FILES['f"
condition:
1 of them
}

Si pasas un proceso en un servidor que ejecute Yara con esta regla, nos mostraría el fichero en el caso de que tuviéramos esa shell instalada en el servidor. Imagino que se usará mas en Respuesta a Incidentes para detectar servidores comprometidos que para la parte defensiva que es la que me interesa a mi.
Recorrer el servidor, un webserver grande buscando este fichero cada 5 minutos puede consumirnos el sistema entero, y yo ya cuento con otro sistema de FIM (FIle Integrity Monitor) que me monitoriza "cosas". Pero me gustaría meter una regla en un sistema defensivo que me detecte la subida de estos ficheros, pongamos por ejemplo un mod_security.
Lo que pretendo es extraer simplemente el hash de la shell y volcarlo en un fichero para poder cargarlo en mis firmas. También lo voy a subir a la base de datos OTX de AlienVault por si le sirve a alguien, y por supuesto, lo voy a incorporar a mi sistema de Threat Intelligence que tenemos en Eset España.
Muy sencillo el comando, le pasamos el fichero de yara rules y le pasamos una salida, sencillo:
grep -n "hash = " /sitio/yara_shells.txt | awk -F  "=" '{print $2}' | tr -d '"' > /sitio/hashes.txt
Como he dicho, es solo un pequeño truco que quiero documentar y agradecer el trabajo desinteresado de la comunidad que escribe yara rules públicas y la gente de OTX.
Gracias por leerme.