¿Alguna vez has escuchado qué son los Magic Numbers o números mágicos en informática? Seguramente si ya tienes rodaje en este campo al menos te sonarán.
¿Qué son los Magic Numbers?
Los magic numbers son unos números alfanuméricos que de manera codificada identifican el tipo o formato de un archivo, suelen estar ubicados al principio del archivo. Estas secuencias de Bytes se utilizan para que los programas informáticos puedan reconocer el tipo de archivo sin depender únicamente de su extensión de archivo o su contenido interno. Son muy importantes en sistemas operativos y aplicaciones que necesitan determinar cómo procesar un archivo.
Un ejemplo de uso, en sistemas Unix y Linux, los números mágicos son comunes en los archivos ejecutables. Un archivo ejecutable puede comenzar con una secuencia específica de bytes que indica si es un archivo binario ELF (Executable and Linkable Format) o un script de shell. Esto permite que el sistema operativo ejecute el programa adecuado según su formato sin depender de la extensión del archivo.
Magic Numbers, en el análisis forense
Aquí los magic numbers son extremadamente importantes y se utilizan para identificar y analizar archivos en dispositivos digitales en busca de pruebas y evidencia en investigaciones criminales.
Aquí os explico algunas formas en las que se utilizan los números mágicos en el análisis forense:
Identificar archivos
Se puede utilizar para identificar los tipos de los archivos. Con esto podemos averiguar qué aplicaciones o programas se utilizaron para crear, abrir o manipular estos archivos específicos. Por ejemplo, un analista forense puede usar los números mágicos para identificar si un archivo es un documento de texto, una imagen, un archivo de vídeo u otro tipo de archivo.
Como ejemplo, para identificar as imágenes PNG tienen estos números mágicos al inicio del archivo: 89 50 4E 47 0D 0A 1A 0A
Obviamente, para poder identificar estos números necesitamos de herramientas que nos pueda desglosar el archivo en este formato para poder investigarlo.
Verificar integridad de archivos
También los números mágicos se pueden utilizar para verificar la integridad de los archivos. Si un archivo se corrompe o se modifica de manera no autorizada, los números mágicos pueden utilizarse para identificar si el encabezado del archivo sigue siendo coherente con el tipo de archivo que debería ser, en caso de haber discrepancia puede indicar que se ha intentado alterar los datos o bien se han corrompido.
Dando un ejemplo de esto, es que en un archivo al revisar el hexadecimal hay magic numbers de un .png y también de un .zip. Aunque el archivo se identifique como un .png, hay también un .zip integrado, por lo que se podrían separar para recuperar el .zip que había oculto.
Recuperación de datos
Pueden ser útiles para ayudar a identificar fragmentos de archivos que pueden estar incompletos o dañados. Esto puede ser útil para intentar reconstruir archivos dañados o eliminar de manera segura archivos que deben ser eliminados.
Análisis de malware
Un perito forense o analista forense también puede utilizar los magic numbers para identificar archivos maliciosos o potencialmente peligrosos para los dispositivos. Al detectar ciertos patrones de bytes asociados con malware conocido, se pueden identificar y tomar medidas.
Herramientas
En las distribuciones Linux como Kali, que está enfocada a ciberseguridad, tiene herramientas con las que podemos manipular o visualizar los archivos.
La herramienta xxd (se utiliza en línea de comandosnos permite ver un archivo a hexadecimal y poder ver los magic numbers, entre otras cosas, de un archivo.
Para el caso de edición en Linux, hexedit, que su nombre viene de un juego de palabras entre edición y hexadecimal en inglés.
Con este podemos editar el formato hexadecimal de un archivo por lo que ya podríamos tocar los magic numbers sin problema.
En el caso de Windows hay un montón de editores hexadecimales, la mayoría muy anticuados, pero personalmente voy a destacar uno bastante más moderno, ImHex, ya que tiene una interfaz muy atractiva y es bastante más fácil de usar que la mayoría de editores que hay en Linux o los que están ya estandarizados en Windows.
CASO PRÁCTICO
Vamos a utilizar ImHex para alterar los Magic Numbers de un archivo.
Abriremos un archivo png para comprobar sus Magic Numbers.También tendremos una lista preparada para saber qué magic number corresponde con qué archivo.
Podemos utilizar esterecurso
Al abrir una imagen, si miramos los primeros 8 bytes de un archivo y lo comparamos con su código en la lista.
Observamos que sí coincide con el de un png.
Ahora vamos a alterar adrede el archivo, para que no puedan leerlo nuestros programas.
Le he puesto un Magic Number de txt.
Pero si intentamos abrir nuestro archivo con Paint ya nos dará un error, debido a que no puede interpretarlo aunque el contenido esté intacto.
Pero Fotografías de Windows sí, porque comprueba la extensión del archivo, por lo que todavía no hemos conseguido ocultar el archivo totalmente.
Además, si le damos otra vuelta de tuerca, si ponemos la extensión png algunos programas pueden interpretarlo, pero si lo ponemos en txt. Ya pierde sentido completamente y los programas muy difícilmente podrán recuperar la información original del archivo.
Los Magic Numbers son muy importantes para el trabajo de un analista forense informático, ya hemos visto como se pueden trabajar con ellos a un nivel básico.
Os dejo aquí mi perfil donde podéis ver otros artículos míos.