Los analistas de ciberseguridad de Linux pasan innumerables horas analizando el malware para comprender su funcionalidad, orígenes e impacto.
Aquí hay seis comandos de Linux que me ayudan con este proceso y que creo que todo profesional en este campo debería tener en su caja de herramientas.
Tabla de Contenidos
1. cuerda
El comando strings es un salvavidas en las etapas iniciales del análisis de malware. Me ayuda a extraer cadenas imprimibles de archivos binarios y, a menudo, proporciona pistas valiosas sobre la funcionalidad del malware.
Por ejemplo, encuentro que los nombres de dominio, las direcciones IP, los mensajes de error o los nombres de funciones me ayudan a comprender mejor el propósito del malware.
En la captura de pantalla anterior, puede ver el resultado del comando de cadenas aplicado al archivo binario del constructor BetaBot. Revela información sobre el programa, incluido el número de versión y el crédito del desarrollador.
2. Documentos
El comando de archivo es mi comando de referencia para determinar cualquier tipo de archivo. Es una herramienta simple pero efectiva que puede identificar ejecutables, scripts, archivos e incluso ciertos tipos de archivos. Este comando me ayudó a obtener una comprensión básica del archivo en el que estaba trabajando, lo cual es un primer paso crucial en el análisis de malware.
¿Se pregunta con qué tipo de archivo está trabajando? Las herramientas de archivos son útiles al comienzo de un análisis. Después de eso, los analistas pueden decidir los próximos pasos.
Por ejemplo, el comando de archivo aquí muestra que el archivo en cuestión es un programa ejecutable diseñado para ejecutarse en un sistema Microsoft Windows. Los detalles técnicos indican que es un ejecutable con formato PE32, un formato común para programas de Windows, y la etiqueta (GUI) indica que tiene una interfaz gráfica de usuario para la interacción del usuario.
Curiosamente, aunque es un ejecutable de Windows, información adicional indica que también es un componente Mono/.Net. Mono es un marco que permite ejecutar aplicaciones .NET (generalmente diseñadas para Windows) en otros sistemas operativos.
Verá, este comando parece simple, pero es muy útil.
3.xxd
El comando xxd es una herramienta versátil que utilizo para crear volcados hexadecimales de archivos o realizar operaciones inversas.
Los volcados hexadecimales son cruciales cuando necesito examinar los bytes sin procesar de un archivo (como cuando busco un patrón o firma específicos). También es una herramienta útil para inspeccionar el contenido de archivos binarios directamente en la terminal.
Aquí puedes ver el byte mágico «MZ» que es la firma de los archivos ejecutables en los sistemas operativos Windows.
4. Volcado de objetos
El comando objdump es una herramienta poderosa que utilizo para mostrar información sobre uno o más archivos objeto. Puede desmontar archivos ejecutables, proporcionando una vista de bajo nivel del código que ejecuta el malware.
Esto es particularmente útil cuando se trata de malware ofuscado o cifrado, así como de malware diseñado para Linux. Ayuda a comprender cómo funciona y aprende el programa.
Por ejemplo, en la captura de pantalla podemos ver e inspeccionar el binario compilado.
Aquí uso objdump para desmontar la función denominada «principal» en el archivo de destino. La salida muestra las instrucciones de ensamblaje y sus correspondientes direcciones de memoria y códigos de máquina.
Estas instrucciones están relacionadas con la configuración del entorno de funciones en la pila, la asignación de espacio para variables locales y su inicialización. La instrucción de salto final redirige el flujo del programa a otra parte de la función.
5.Nano
El comando nm es lo que uso para enumerar símbolos en un archivo de destino. Es útil para identificar funciones y variables utilizadas en un programa, lo que puede darme pistas valiosas sobre la funcionalidad del malware. Este comando me ayudó a comprender la estructura del malware y sus capacidades potenciales.
El comando nm aquí muestra información sobre los símbolos (funciones y variables) en el archivo llamado «a.out». Muestra la dirección de memoria en la memoria del programa donde reside el símbolo, el código del programa que indica su tipo (función, variable de datos, etc.) y finalmente el nombre del símbolo.
Por ejemplo, una línea muestra una función llamada _init en la dirección 0x40, que puede ser una función interna utilizada para la inicialización del programa. La tabla de símbolos mostrada por nm es una herramienta valiosa para los programadores. Les permite comprender la estructura de un programa, identificar partes específicas basándose en nombres simbólicos y direcciones de memoria, y ayudar en tareas de depuración o ingeniería inversa.
6. Base de datos
El depurador GNU (gdb) me permite ejecutar programas en un entorno controlado, establecer puntos de interrupción, examinar la memoria y más. Esta herramienta es fundamental para mi análisis en profundidad del malware y me ayuda a comprender su funcionamiento interno.
En la captura de pantalla, puede ver cómo usar GDB para aprender ingeniería inversa. Muestro el desmontaje de la función main() de un programa simple «Hola, mundo», le establezco un punto de interrupción y luego ejecuto el programa. Después de eso, verifico el valor del indicador de instrucción (EIP).
Análisis de amenazas de red Linux en ANY.RUN
ANY.RUN es un entorno limitado basado en la nube que le permite detectar amenazas rápidamente. Proporciona entornos de máquinas virtuales Windows y Linux donde puede detonar y analizar archivos y URL maliciosos de forma segura. La interactividad es la piedra angular de ANY.RUN, ya que le permite controlar el proceso de análisis interactuando con el sistema, incluido el inicio de programas, la apertura de archivos y la descarga de archivos de Internet.
Algunas de las funciones principales de ANY.RUN incluyen:
- Detecte rápidamente amenazas en 40 segundos.
- Información detallada sobre actividad maliciosa de la red, cambios de inicio de sesión, procesos y más.
- Informes detallados que incluyen configuraciones de malware, indicadores de compromiso (IOC) y TTP.
Regístrese para obtener una cuenta ANY.RUN gratuita Inténtalo tú mismo.
Información del autor
Vlad Ananin es redactor técnico en ANY.RUN interesado en el análisis de malware. Tiene 5 años de experiencia escribiendo sobre ciberseguridad y tecnología para que sea más fácil de entender para los no expertos.