Análisis de malware

¿Qué es la ofuscación de malware?

febrero 6, por Dan Virgillito

Introducción

El malware ha sido una amenaza para empresas e individuos desde la década de 1970, cuando se descubrió por primera vez el virus Creeper. Desde entonces, el mundo se ha enfrentado a amenazas de cientos de miles de variantes de malware, todas con la intención de pasar desapercibidas y causar el mayor daño posible.

¿Cómo se oculta el malware de las soluciones modernas de detección de amenazas? Bueno, los actores de amenazas suelen utilizar una variedad de métodos para ocultar código malicioso y modificar el contenido del programa objetivo para frustrar la detección y el análisis.

Uno de los métodos más utilizados es la ofuscación.

La ofuscación de malware es un proceso que dificulta la comprensión de los datos textuales y binarios. Ayuda a los adversarios a ocultar palabras críticas (conocidas como cadenas) que utiliza un programa porque revelan patrones de comportamiento del malware. Ejemplos de estas cadenas serían claves de registro y URL infectadas.

Los adversarios suelen utilizar técnicas de cifrado/codificación para ocultar los datos de los programas de seguridad. A veces van un paso más allá y utilizan herramientas especiales llamadas «empaquetadores» para ofuscar todo el programa, lo que dificulta mucho más la ingeniería inversa y el análisis.

¿Cuáles son algunas técnicas populares de ofuscación de malware?

Los creadores de malware utilizan habitualmente la ofuscación para complicar la detección de su código. A continuación se muestra un desglose de las técnicas que utilizan habitualmente para mantenerse alejados de las defensas de seguridad.

XOR

Este popular método de ofuscación oculta datos para que no puedan analizarse. Lo hace intercambiando el contenido de dos variables dentro del código, como por ejemplo:

Otro método consiste en asignar valores basura, que compondrán valores que simplemente se sobrescribirán más adelante. Por ejemplo, INC EBX se puede sobrescribir como MOV EBX, 59F67CD5h.

Los adversarios también pueden realizar comparaciones y luego ignorar las banderas que se establecen. Por ejemplo, pueden comparar EAX ESP, ejecutar varias instrucciones y finalmente probar EBX, EAX.

Otras técnicas incluyen agregar un valor y luego modificarlo con XOR. Por ejemplo, hacer XOR con todos 1 no es igual a NOT:

Que será igual que MOV EBX, 0A609832Ah.

Cada una de estas técnicas hace que el malware sea difícil de leer a menos que un ingeniero inverso capacitado aplique valores XOR 0x55 al código.

Integración de código

Visto por primera vez en el malware Zmist/Win95 (conocido como Zmist), la integración de código indica a un código malicioso que se una al código del programa de destino. Para aplicar la técnica, el malware primero descompila el programa en elementos manejables, se agrega entre ellos y luego vuelve a ensamblar el código inyectado en una nueva variante.

Base64

Otra técnica de ofuscación conocida utilizada por los adversarios es Base64. Es básicamente una técnica de codificación que involucra 64 caracteres, siendo el carácter de relleno el signo = (igual). Los caracteres az, AZ, + y /, y 0-9 también están presentes en el alfabeto.

La codificación funciona tomando 3 caracteres y uniéndolos entre sí para crear una cadena de 24 bits que luego se divide en 4 fragmentos de 6 bits, que luego se traducen a uno de los caracteres de Base64. La técnica es trivial de decodificar si se puede reconocer.

Inserción de código muerto

La inserción de código muerto es una táctica rudimentaria que inserta código ineficaz en un programa para modificar su apariencia. Sin embargo, no alerta sobre el comportamiento del programa. Para combatir la inserción, las soluciones antivirus basadas en firmas deben borrar las instrucciones antes de realizar el análisis.

ROT13

Otra técnica popular de ofuscación de malware es ROT13. Aprovecha la simple sustitución de letras para entregar una salida ofuscada, donde ROT actúa como una instrucción ASM que dice «rotar». Por lo tanto, ROT13 es otro nombre para «rotar 13».

Por lo tanto, los adversarios necesitarían rotar una letra trece para codificarla, lo que significa que tendrían que contar las siguientes 13 letras del alfabeto hasta llegar a «n». ROT13 aprovecha una simple sustitución de letras para mezclar el texto. También se puede configurar para rotar una cantidad distintiva de caracteres, como ROT15.

empacadores

En muchos casos, todo el programa se ofusca para evitar que todos detecten el código de malware hasta que se inserta en la memoria. Esto se hace con la ayuda de un software que comprime un ejecutable para reducir su tamaño. Luego empaqueta el ejecutable comprimido dentro del código necesario para descomprimirse en tiempo de ejecución. El proceso de descompresión garantiza que el archivo ejecutivo no se parezca en nada a su estado original.

Aunque existen beneficios legítimos del uso de empaquetadores, como reducir el tamaño de los ejecutables o dificultar que los piratas realicen ingeniería inversa, el malware a menudo aprovecha los ejecutables empaquetados para intentar esconderse de las defensas de seguridad. Los creadores de malware también pueden desarrollar empaquetadores personalizados que anulen los scripts de descompresión y obliguen a los ingenieros inversos a descomprimir el programa para ver qué está haciendo.

Conclusión

Mientras el malware prospere, también lo hará la ofuscación. Los adversarios saben que es una técnica altamente confiable sobre la cual los usuarios cotidianos poco pueden hacer. Dicho esto, es fundamental que las organizaciones tomen medidas proactivas para la detección y el análisis oportunos. Uno de los primeros pasos hacia mejores defensas es familiarizarse con las últimas técnicas que están aprovechando los actores de amenazas.

Fuentes

  1. Técnicas de ofuscación de malware: una breve encuesta , ResearchGate
  2. Técnicas de evasión y ocultación de malware, hasta luego y gracias por todo el pescado
  3. Lo último de Mimecast Research Labs incluye una técnica de malware nunca antes observada. , Mimecast