Análisis de malware

Comportamiento común del malware

septiembre 4, por Dan Virgillito

A medida que las amenazas de malware continúan creciendo tanto en sofisticación como en frecuencia, es cada vez más crítico que los profesionales de la seguridad de la información desarrollen técnicas efectivas de mitigación e ingeniería inversa. Un buen punto de partida es identificar y comprender los comportamientos clave comunes a las intrusiones de malware moderno. Esto también ayuda a garantizar que los ingenieros y los equipos de defensa de TI tengan el conocimiento necesario para analizar, bloquear y deshacer el malware.

¡Conviértete en un ingeniero inverso certificado!

Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender

Comenzando con los descargadores y las puertas traseras, este artículo desglosa una serie de comportamientos que indican la posible presencia de malware. Aprenda no sólo el «qué», sino también el «por qué» en la sección esencial sobre los objetivos del análisis de red y familiarícese con algunas técnicas de inversión para vectores de ataque comunes, como ladrones de credenciales, registradores de pulsaciones de teclas y más.

Entremos, ¿de acuerdo?

Comportamientos clave de varios tipos de malware

Descargadores y puertas traseras

Durante un ataque de malware, el actor de la amenaza suele utilizar una variedad de troyanos para infiltrarse en un sistema vulnerable. A la infiltración le sigue la creación de un descargador o puerta trasera que permite al atacante obtener acceso remoto al sistema objetivo.

Revertir estas aplicaciones requiere analizar cómo se ejecutan los descargadores y las puertas traseras en un entorno sandbox, así como comprender sus procesos, registros, actividades de red y sistemas de archivos. La ingeniería inversa también utilizará un depurador y un desensamblador, que podrían estar respaldados por un descompilador y una variedad de herramientas útiles.

Ladrones de credenciales

Los ladrones de credenciales son un tipo de malware que busca contraseñas guardadas en una máquina de destino y las transfiere de forma remota a un atacante (mediante HTTP, correo electrónico). Los autores de malware suelen utilizar software que espera a que los usuarios inicien sesión. Otras técnicas comunes implican el uso de programas que registran las pulsaciones de teclas y herramientas que descargan las credenciales almacenadas en Windows, como hashes de contraseñas, para descifrarlas sin conexión.

Inyección de proceso

Se trata de una técnica de ataque de malware que brinda a los adversarios la capacidad de implementar código malicioso que imita aplicaciones legítimas. La ejecución de código en el entorno de otra aplicación puede otorgar acceso a su memoria de proceso, recursos de red/sistema e incluso privilegios autorizados. El código normalmente se inserta en procesos comunes (svchost.exe, regsvr32.exe, etc.), lo que otorga al atacante un nivel mejorado de persistencia y sigilo.

Algunos módulos del kernel se pueden configurar para evitar algunas formas de inyecciones de procesos, según patrones de comportamiento que se identifican durante el análisis del ataque.

DLL e inyección directa

La inyección de DLL (biblioteca de vínculos dinámicos) es un tipo de inyección de proceso que requiere que el actor de la amenaza escriba la ruta a una DLL dentro del proceso de una aplicación y luego use un subproceso remoto para invocar la ejecución. Se pueden utilizar métodos de inyección de código como la API SetWindowsHookEx o tácticas de manipulación como CreateRemoteThread para inyecciones de DLL en Windows. Por el contrario, una inyección directa implica la colocación directa de shellcode en otro proceso.

El reemplazo de procesos (también conocido como vaciamiento de procesos) se produce cuando un código malicioso sustituirá un proceso ilícito por uno genuino, lo que ayudará a que el código se oculte entre procesos legítimos. Esto generalmente se hace extrayendo el código genuino de la memoria del proceso de destino usando una función del kernel como NtUnmapViewOfSection y luego asignando un nuevo bloque de memoria para alojar código ilícito.

Inyección de gancho

Los creadores de malware también pueden utilizar una inyección de gancho para cargar y ejecutar código malicioso dentro del entorno de otro programa, imitando la ejecución original y al mismo tiempo obteniendo acceso a los procesos de memoria. Además, la técnica también se puede utilizar para interceptar llamadas API que incluyen parámetros de entrada y salida.

Una vez que las API están enganchadas, el actor de la amenaza puede controlar la ruta de ejecución del programa relevante y señalarlo al proceso malicioso de su elección.

inyección APC

APC, o inyección de llamada a procedimiento asincrónico, describe la técnica de adjuntar código malicioso a las colas APC de un subproceso dentro de un proceso. Los APC infectados le indicarán al hilo que ejecute algún otro comando antes de iniciar su ruta de ejecución estándar.

Un ejemplo de esto es AtomBombing. AtomBombing implica la utilización de funciones APC en cola para invocar malware utilizado anteriormente para agregar cadenas de caracteres a la tabla global de átomos.

Persistencia del registro

Después de que un malware ocupa los procesos de un sistema, su objetivo es permanecer allí durante un largo período. Esto normalmente se hace modificando las claves de registro para recopilar detalles sobre el sistema, guardar información de configuración y lograr persistencia en la máquina infiltrada. Esto permite al adversario atacar una vez y el software malicioso seguirá funcionando incluso después de cerrar sesión, reiniciar y reiniciar.

Usando SvchostEXE para la persistencia de malware

Svchost.exe es un proceso de host básico para programas que funcionan desde archivos DLL, y los sistemas con sistema operativo Windows tienen varias instancias de svchost.exe activas a la vez. El uso de svchost.exe para la persistencia del malware permite que el código de la amenaza se mezcle con la lista de procesos y el registro mejor que el servicio habitual. En su configuración, el proceso anfitrión también puede eliminar el programa con nombre aleatorio y crear uno nuevo.

Binarios del sistema troyanizados

El malware también puede ganar persistencia al troyanizar los archivos binarios del sistema. Aquí es donde el malware parchea los bytes de amenaza de un binario del sistema para alentar al sistema a ejecutar el malware la próxima vez que se cargue o active el binario comprometido.

Los actores de amenazas normalmente buscarán un binario del sistema que se utiliza habitualmente para los programas cotidianos de Windows, como las DLL. Normalmente, el binario se modifica parcheando la función de entrada para que dirija a código malicioso.

Secuestro de orden de carga de DLL

Los sistemas Windows suelen buscar las DLL requeridas por el ejecutable en un orden determinado. Cuando el ejecutable no busca una DLL a través de rutas codificadas, entonces se puede colocar un código malicioso en el orden de búsqueda de la DLL y cargarlo en el ejecutable.

Los creadores de malware también pueden modificar la capacidad de carga de DLL de un programa sustituyendo un DLL actual o modificando un directorio, unión o archivo de manifiesto para hacer que el programa se ejecute en otro DLL, lo que le permite mantener privilegios o crecimiento de persistencia.

Análisis del comportamiento de la red de malware

Cuando se trata de analizar el comportamiento del malware, analizar e interpretar su actividad en la red puede ayudar a complementar el código dinámico y el análisis estático contemporáneo. Debido a que puede resultar difícil para el software malicioso modificar significativamente su comportamiento de red y aun así lograr sus objetivos, el análisis del comportamiento de la red de malware puede brindar una oportunidad para identificar malware en los hosts afectados. El proceso requiere extraer características de los registros de la red y luego crear patrones que ayuden a identificar intrusiones de malware.

Todos estos conocimientos se pueden utilizar para crear contramedidas eficaces contra ataques maliciosos.

Conceptos básicos de redes para ingenieros inversos

En pocas palabras, la ingeniería inversa de la red es el arte de extraer protocolos de nivel de red/aplicación utilizados por una aplicación o un servidor cliente. Esta sección cubre los fundamentos de cómo funcionan las redes y cómo utilizar diversas técnicas y herramientas para mitigar un ataque de malware basado en la red. Idealmente, un ingeniero inverso debería esforzarse por desarrollar una comprensión de:

Protocolos

Los protocolos son un conjunto de reglas que una red debe seguir. Las reglas se componen de formatos y procedimientos que describen la comunicación entre los dispositivos en una red.

Esencialmente, la mayoría de las redes tienen tres tipos de protocolos: seguridad, como SSH (Secure Shell), administración, como SMTP (Protocolo simple de transferencia de correo) y comunicación, como Ethernet. Varios sistemas operativos avanzados contienen servicios de software integrados que están diseñados para ejecutar algunos de estos protocolos de red.

PDU (Unidad de datos de protocolo)

Los datos transmitidos a través de cada capa del Conjunto de Protocolos de Internet se conocen como Unidad de Datos de Protocolo. La PDU de cada capa contiene los datos de carga útil que se están enrutando.

Las PDU generalmente anteponen un «escuchado» que contiene información necesaria para que los datos se enruten, como los nodos de destino y las direcciones del dispositivo receptor. También se puede añadir un pie de página a los datos que se transmiten con los valores necesarios para garantizar el enrutamiento correcto.

paquete de red

Se trata de una unidad de datos que se transmite entre un destino y un origen a través de una red de conmutación de paquetes como la World Wide Web. Los paquetes varían en función y estructura, según los protocolos que los ejecutan.

Por ejemplo, una red Ethernet utiliza paquetes de 1,5 KBS y los enruta a través de tramas Ethernet. En una red VoIP, se utiliza un protocolo IP para transmitir datos a través de redes IP/TCP.

Estructura del paquete

La estructura de un paquete de red se compone de tres partes diferentes: el encabezado, la carga útil y el final. El encabezado se compone de las instrucciones sobre los datos alojados en el paquete, la carga útil son los datos reales que lleva el paquete en un momento determinado y el final es el par de bits que informan al dispositivo de destino que ha llegado al destino. final del paquete.

Conclusión

Eso es todo. Obtendrá una comprensión exitosa de los comportamientos clave que exhibiría un malware. Tenga en cuenta que un malware puede exhibir otros comportamientos como el secuestro de objetos COM y MBR, pero las tácticas mencionadas anteriormente son algunas de las estrategias más utilizadas por el malware para ganar persistencia.

Fuentes