Medidas Antiforenses por modificación de hash (Parte I)

Esta entrada la dividiré en dos entradas del blog.

Hace un par de semanas en el grupo de informática forense, alguien compartió este link:

https://blog.segu-info.com.ar/2018/05/cambiar-el-hash-md5-de-un-archivo.html?utm_source=dlvr.it&utm_medium=twitter

y otro miembro contestó que no le veía el sentido a modificar un fichero añadiendo un NULL, a lo que un tercero replicó que para evitar una detección por hash. En una peli se verá igual de bien y un programa se ejecutará igual de bien. Este chico no lo pudo decir más claro.

Bueno pues nada, el programita y lo que hace ahí queda, no lo comento. Sin embargo,vamos a realizar una prueba de concepto de ello, espero os guste:

  1. Mostraremos como añadir el carácter NULL y ver como evoluciona en el hash, pero con SHA256.
  2. Nos crearemos una blacklist con los hashes de muestras de bichos.
  3. Nos crearemos un rudimentario detector de bichos vía hash.

 

Herramientas

 

Modificando los ficheros

No voy a entrar en mundos tenebrosos de en donde sería mejor colocar el carácter NULL u otra cadena que no interfiera en la ejecución de un código malicioso o programa, para no ser detectado por hash. Me limito solamente a añadir una serie de caracteres como veréis al final del fichero, pero que sin embargo son suficientes para cambiar el hash y fastidiar un simple script que tengamos hecho o porque no de pago que simplemente se dedique a rebuscar los hashes y lanzarlos contra una blacklist. Si la herramienta solo hace eso mal asunto.

Resulta evidente que hay mecanismos mucho más complejos de detección de cadenas, heurísticas, algoritmos dotados de IA, sandbox, antivirus, antimalwares, antipulgas, antipiojos… vamos lo que seáis capaces de conocer con el fin de detectar las amenazas.

Nuestra prueba de concepto es de pueblo, vamos como el pan, tan de campo como lo es San Isidro Labrador, leches tan casera como los flanes de la abuela.

Tenemos varias formas de añadir caracteres NULL a parte del programa nombrado arriba.

Vemos dos muy sencillas y sus resultados los veremos con el HxD. A los ficheros modificados les añadiremos el sufijo _mod, con los que denotaremos que han sido modificados.

 

Con HxD

Copiamos el carácter 00 de cualquier celda y la pegamos insertando al final del fichero.

Medidas Antiforenses Comunix
Fichero adb.exe original copiando el carácter NULL 00

 Fichero adb.exe original copiando el carácter NULL 00

Fichero adb_mod.exe con el carácter NULL 00 al final

 

Como podéis imaginar suponemos que el fichero adb.exe es un bicho, no es cierto, pero suponemos que tiene código malicioso. Pero para la prueba de concepto lo que queremos es confirmar que la modificación no influye en el funcionamiento.

Con la consola de comandos

En Windows seria:

echo `0 >> fichero_a_modificar

En Linux seria:

echo -n -e ‘\x00’ >> fichero_a_modificar

Medidas Antiforenses Comunix

Fichero adb_echo_mod.exe modificado desde la linea de comandos con echo

 

Y ahora mostramos las 3 ejecuciones y son idénticas:

Medidas Antiforenses Comunix
Y como no!!!, vamos a ver que ha ocurrido con los hashes, para ello supongo que tendréis vuestros calculadores de hashes o sumas de verificación chachipirulis. Por mi parte os comparto el script python del modulo 5 de un proyecto personal llamado EXERE, el cual nos permite generar recursivamente los hashes sha256 de todos los ficheros de una carpeta que le pasamos como parámetro. Ese proyecto lo podréis seguir en breve en www.eltallerdelosandroides.com, básicamente serán una suite de herramientas de botón gordo para análisis forense para smartphones. Vaya kk de proyecto de análisis forense si no tuviese un hasheador rápido y potente. Su ejecución:

python hasheador.py -d carpeta_a_hashear

Medidas Antiforenses Comunix

A continuación el fichero de salida con los hashes en el que podemos comprobar como nuestros ficheros tienen hashes distintos. Aunque los tres ficheros se llamasen igual la modificación esta claro que afectaría al hash. Es decir, dos ficheros con contenido idéntico pero con distinto nombre tendrían hash idéntico y dos ficheros con contenido distinto e igual nombre tienen hashes distintos.

 

Medidas Antiforenses Comunix
Con lo cual un simple carácter aunque sea NULL, 0x00h, cambia completamente el hash del fichero y en principio, sin modificar su semántica si lo añadimos al final del fichero, o como mencionamos mas arriba en algún lugar estratégico si fuera necesario.

Creando nuestra blacklist

Imaginemos ahora que vamos a crearnos un detector de bichos basado en hashes. Esos bichos pueden ser troyanos, virus, programas maliciosos, malware,…. . Además imaginemos e invito a la reflexión, que estamos en una comunidad en la que la peña se involucra y nos mandan o cuelgan en un site los hashes de un programa o código malicioso, o directamente el fichero o fragmento y que nuestro site analiza y nos hashea. Ese hash lo agregamos a un fichero o base de datos, es decir, una blacklist con los hashes para que podamos lanzar un fichero o lote de ficheros en el que podría haber bichos mediante un script. Dicho script hashea los ficheros y los comprueba con la blacklist. A que os suena esto???? yo lo dejo caer.

Hagamos un inciso y pensemos, para este ejercicio solamente vamos a tener una blacklist con apenas 3 muestras, es decir, una blacklist diminuta, con comprobar el hash de cada fichero del lote y tirarlo contra la blacklist de forma lineal y verificamos rápidamente si es o no un bicho.

La realidad no es tan sencilla, hay más de 6 millones de malware según leí hace poco, con sus mutaciones, permutaciones, variantes, mods A-B-C y porque no con diversos finales con caracteres NULL para modificar su propio hash original y eludir la identificación por hash.

Con lo cual esa cantidad de hashes es intratable con una estrategia lineal como la que vamos a poner a funcionar. No voy a plantear soluciones para ello aquí, pero si podríamos introducir una estrategia de árbol con su búsqueda, en el que en cada nivel haya un carácter hexadecimal con sus 16 caracteres posibles y así 64 niveles (64 bytes del hash), que no tienen porque ser completos. En la construcción del árbol puede haber niveles incompletos y así sucesivamente hasta cubrir todo el dominio de esos 6 millones de hashes. Linealmente ocuparían 367Mb. Pero en un árbol ocupan bastante menos y ademas la búsqueda es infinitamente más eficiente, no voy a comentar ordenes logarítmicos, conceptos que se ven en algoritmia en ingeniera informática, donde algo que parece intratable se puede computar con estructuras avanzadas y algo de ingenio.

Aprovecho un saludo a todos los PREDATORS de la UNED, para que podáis seguirme en esta jerga, los PREDATORS son los alumnos de la asignatura PREDA código 71902019, PRogramación y Estructuras de Datos Avanzadas.

Bien, perdón pon venirme arriba. Continuemos. Ahhhh si !!!!!! nuestro blacklist, sencillo, lanzamos el hasheador.py contra nuestra carpeta de muestras. Da igual si las tenemos clasificadas en subcarpetas o como queramos ya que nuestro hasheador.py era recursivo, es decir, recorre en profundidad todas y cada una de las subcarpetas en busca de ficheros. El caso es tener el hash de todos los ficheros en la blacklist.

Para ello cortamos y copiamos a otra ubicación los ficheros modificados y dejamos solamente las muestras originales.

Recordemos que los ficheros modificados podrían estar entre los ficheros de una extracción de algún dispositivo y son los que después vamos a lanzar contra la blacklist.

A continuación lanzamos el hasheador.py y el fichero de hashes le cambiamos el nombre por el de blacklist.txt y ya la tenemos. Solo nos interesan los hashes de los bichos.

Medidas Antiforenses Comunix

Muestra de creacion de la blacklist con solo 3 elementos

Creando nuestro detector de bichos

Voy a dejar el desenlace de este artículo para la segunda parte, como hace Antonio ;). En el os anticipo que vamos a realizar un script para comparar los hashes y vamos a usar una estrategia, que no tiene que porque ser la más adecuada, para detectar el antiforense propuesto y tener en consideración un par de factores para intentar mejorar su efectividad a costa de su eficiencia, no se puede tener todo.

Si te gustó búscame en Telegram como @nomed1, próximamente también

en www.eltallerdelosandroides.com, hasta la próxima.

Buenaventura Salcedo | @nomed1

0 respuestas sobre "Medidas Antiforenses por modificación de hash (Parte I)"

Deja un mensaje



Tú escuela de Hacking Ético.
Avda. de Las Américas 3, 4º A
29002, Málaga, Málaga,
(+34) 951 043 792 - info@comunixgroup.com

Suscríbete a nuestro Boletin

  Suscribirse ahora
Copyright © 2018 - Todos los derechos reservados.

X