Módulo 2
Análisis básico de archivos
Última actualización en: 5 Septiembre 2024
Editar esta página en GitHubMódulo 2
Última actualización en: 5 Septiembre 2024
Editar esta página en GitHubUna vez que tenga una pieza de malware en su máquina virtual de análisis, el siguiente paso es averiguar qué hay en ella. Una pieza de malware puede usar varios archivos; en este caso, usaría las técnicas de esta sección para cada archivo. Hay algunas formas diferentes de hacerse una idea del tipo de archivo con el que está tratando. Tenga en cuenta que algunos programas maliciosos son complicados al respecto, ya que ocultan contenido malicioso en archivos inocuos o crean archivos que son varios tipos válidos a la vez (un ejemplo clásico es el GIFAR, que es un archivo que es a la vez una imagen válida y también un applet Java válido). Debido a esto, al evaluar los archivos de malware, debemos realizar un análisis más profundo de los tipos y contenidos de los archivos. Más allá de las extensiones de archivo básicas, examinaremos los headers y las firmas de los archivos, así como el contenido de las strings.
Después de completar este subtema, el profesional debe ser capaz de realizar lo siguiente:
Para muchos sistemas operativos, las extensiones de archivo son muy importantes para la forma en que el sistema trata el archivo. Los nombres de archivo (y, por lo tanto, las extensiones) no son en realidad parte del archivo, sino parte de los metadatos del archivo en el sistema de archivos. Como tales, se cambian fácilmente y en realidad no revelan nada crítico sobre el contenido del archivo. Dicho esto, son un buen primer paso en el análisis. Hay un conjunto prácticamente ilimitado de extensiones de archivo (son solo letras al final de un nombre de archivo) y no hay un registro obligatorio. No puede haber una lista exhaustiva de extensiones, y muchas extensiones tienen múltiples significados posibles. Dicho esto, aquí hay algunas listas:
Muchos formatos de archivo tienen estructuras de datos distintivas que son exclusivas de su formato de archivo. Por lo general, esto se encuentra al comienzo del archivo, pero a veces aparece en otros lugares. Por ejemplo, los archivos GIF comienzan con la string “GIF89a” (o, menos comúnmente, “GIF87a”), mientras que los ejecutables de Windows (formato PE) comienzan con “MZ”. Estos headers son críticos, ya que la mayoría (si no todos) los softwares que utilizan un archivo no procesarán el archivo sin las firmas correctas. Por ejemplo, si intenta ejecutar un archivo que termina en “.exe” en Windows, pero el archivo no contiene un header de archivo PE adecuado, Windows no ejecutará el archivo.
En muchos casos, es posible determinar más sobre un formato de archivo observando el contenido adicional del archivo. Por ejemplo, tanto los archivos ZIP normales como los archivos Java (JAR) están en formato ZIP. Si cambias el nombre de un archivo .jar a .zip, las herramientas ZIP estándar lo extraerán perfectamente. Sin embargo, todos los archivos JAR tendrán strings (como “MANIFEST.MF”) que no todos los archivos ZIP tendrán.
En algunos casos, los archivos ni siquiera tendrán el mismo formato básico, pero será difícil distinguirlos. Por ejemplo, tanto el código de bytes de Java como los binarios Mach-O comienzan con la secuencia de bytes 0xCAFEBABE. Este es el código que utiliza el comando file para diferenciarlos: como puede ver, requiere muchas heurísticas.
Dado que la cantidad de tipos de archivos es inmensa, tiene sentido usar una herramienta con una base de datos de tipos de archivos. El más común de estos es el comando “file” en linux. Dado que es de código abierto, puedes ver cómo se llegó a una decisión particular sobre un archivo en particular. Una herramienta similar es TrID. Si bien no es de código abierto, es posible que pueda obtener mejores resultados en ciertos archivos,
Otra herramienta útil para el análisis de archivos es el comando “strings”. Esta utilidad de Unix imprimirá todas las strings ASCII en un archivo, lo que puede ser increíblemente útil para detectar patrones como las URL. Si bien esto no funcionará bien con datos cifrados, comprimidos o codificados, puede ser útil.
Por último, un editor hexadecimal mostrará archivos binarios en un formato legible por humanos. Por lo general, mostrarán una representación hexadecimal y ascii de los datos del archivo, lo que puede ser útil para detectar patrones. Hay muchos editores hexadecimales, Wikipedia tiene una comparación de algunos y REMnux viene con un editor hexadecimal llamado wxHexEditor.
Para obtener una guía más avanzada sobre cómo capturar y hacer análisis preliminares en una aplicación de Android, recomendamos consultar esta excelente guía de la suite de herramientas PiRogue.
Aquí hay un artículo rápido sobre ingeniería inversa estática de formatos de archivo. Léelo y asegúrate de haberlo entendido. Si es posible, discuta este artículo con un mentor u otra persona con un profundo conocimiento de la ingeniería inversa de formatos de archivo.
Completa los ejercicios Introductorios de Malware (gratuitos) en TryHackMe.
Abra la máquina virtual REMNux que configuró en los ejercicios de práctica del subtema anterior.
Realice las siguientes tareas:
Muestre el trabajo anterior a un mentor o compañero que confirmará que ha realizado correctamente los ejercicios.
Extensiones de nombre de archivo comunes en Windows
GratisUna guía creada por Microsoft que describe algunas de las extensiones de archivo más comunes en el sistema operativo Windows
Lista de nombres extensiones de archivo | Wikipedia
GratisUna lista más larga y completa de extensiones de archivo utilizadas por varias piezas de software
TrID
GratisUn programa de Windows y Linux que puede averiguar los tipos de archivo de varios archivos en función de sus firmas binarias
Extensiones de archivo y definiciones de tipo de archivo
GratisLa lista de extensiones de archivo conocidas de TrID, que ahora cuenta con más de 16.000
Archivo
GratisUn programa de línea de comandos para sistemas tipo Unix, que identifica archivos por tipo
Comparación de editores hexadecimales
GratisUna lista y comparación de editores hexadecimales, o programas que le permiten editar directamente archivos binarios
wxHexEditor
GratisLa página web oficial del editor hexadecimal suministrado con cada instalación de REMnux
Formatos de archivo de ingeniería inversa
GratisUna guía completa para los formatos de archivo de ingeniería inversa. Asegúrate de entenderlo antes de pasar a otras secciones de esta ruta de aprendizaje
Guía para principiantes: cómo manejar una aplicación móvil potencialmente maliciosa
GratisUna introducción al manejo de una aplicación Android sospechosa y todos los pasos iniciales de recopilación y análisis de datos que podríamos tomar
¡Felicidades por terminar Módulo 2!
Marque la casilla para confirmar su finalización y continúe al siguiente módulo.
Marca el módulo actual como completado y guarda el progreso para el usuario.
Has completado todos los módulos en este camino de aprendizaje.