Este informe tratará sobre la funcionalidad del malware Kalim Backdoor.
Tabla de Contenidos:
- ¿Qué es una Backdoor?
- Análisis Técnico.
- Resumen.
- Tácticas y Técnicas (MITRE ATT&CK).
- IOCs.
- Regla Yara.
¿Qué significa Backdoor?
Una backdoor es un método oculto para acceder a un sistema que elude la autenticación normal y los controles de seguridad.
Análisis Técnico:
Análisis Estático Básico:
Primero, súbelo a VirusTotal para un análisis inicial. Los resultados indican que el archivo es un DLL de 64 bits, identificado dentro de la familia de malware Kalim. Además, varias detecciones sugieren una posible asociación con el grupo de amenazas MuddyWater.
El malware también establece comunicación de red con el dominio moodleuni[.]com.
Suelta algunos archivos:
Ahora ábrelo en Die (Detect it easy):
La muestra importa una gran cantidad de APIs de Windows, lo que indica que no está empaquetada. En total, importa funciones de seis DLLs: KERNEL32.dll, USER32.dll, ADVAPI32.dll, SHELL32.dll, ole32.dll y WININET.dll.
Aunque se importan múltiples APIs de cada DLL, varias funciones son particularmente notables debido a su papel en el comportamiento del malware.
Específicamente, la muestra importa APIs relacionadas con redes de WININET.dll para establecer comunicación con el servidor de comando y control (C2). También aprovecha funciones relacionadas con COM de ole32.dll para crear e interactuar con objetos del Modelo de Objetos Componentes (COM). Adicionalmente, el malware utiliza SHGetFolderPathW de SHELL32.dll para recuperar rutas de directorios del sistema identificadas por valores CSIDL.
Análisis Estático Avanzado:
En DllMain, la única acción realizada es la creación de un nuevo hilo. Dentro de este hilo, se ejecutan dos funciones: sub_1800063A0 y StartAddress.
Analizando la función sub_1800063A0, descubrí que consta de dos etapas distintas. En la primera etapa, el malware suelta una copia de sí mismo en el directorio AppData\Roaming. Lo hace creando un nuevo subdirectorio llamado Updates, seguido de la creación de un archivo ejecutable llamado update.exe. La carga binaria escrita en este archivo se obtiene directamente de los datos incrustados ubicados en unk_18002AA10. Como resultado, el archivo final se escribe en la siguiente ruta: “C:\Users<Usuario>\AppData\Roaming\Update\update.exe”.
En la segunda etapa, el malware inicializa un objeto del Modelo de Objetos Componentes (COM) usando RCLSID: {00021401-0000-0000-C000-000000000046}, que corresponde al Objeto de Enlace Shell (CLSID_ShellLink)y RIID : {000214F9-0000-0000-C000-000000000046}, que se asigna a la interfaz IShellLinkW. Al observar la tabla completa de interfaces COM de Shell implementada por shell32.dll, se pueden identificar con precisión los métodos invocados. El malware llama a cuatro métodos COM clave: SetPath, SetDescription, Save y Release. Usando estas funciones, crea un acceso directo malicioso de inicio llamado MicrosoftUpdateSerice.lnk dentro del directorio de Inicio de Windows, estableciendo así persistencia en el sistema infectado.
Analizando la Función StartAddress
El malware implementa su lógica de comunicación de red a través de tres funciones distintas y genera dos hilos separados. Un hilo es responsable de generar y gestionar un shell de comandos, mientras que el segundo hilo maneja la carga de datos recopilados después de que el malware completa su ejecución.
Las tres funciones gestionan colectivamente la comunicación entre el host infectado y el servidor de comando y control (C2) y están organizadas en tres capas lógicas.
La primera capa es responsable de recopilar información de huellas digitales del host del sistema comprometido. La segunda capa procesa estos datos realizando cifrado y manipulación adicional para prepararlos para la transmisión. La tercera capa establece comunicación de red con el dominio C2 moodleuni[.]com y transmite los datos procesados.
Las dos primeras funciones relacionadas con la red son específicamente responsables de la autenticación y la construcción de solicitudes HTTP POST, permitiendo la transmisión de datos autenticada al servidor remoto.
La tercera función es responsable de recibir comandos del servidor C2. Basándose en la respuesta del servidor, el malware determina su próxima acción: ya sea generar un shell de comandos oculto o cargar los datos recopilados según el comando recibido del C2.
Analizando los dos hilos para comprender completamente lo que hacen.
En el primer hilo, el malware crea un objeto de trabajo junto con otros dos pipes y luego establece una cierta propiedad a estos.
Luego crea un CMD con algunas propiedades:
El valor 1 en el cuarto argumento significa que el CMD puede heredar de los manejadores de pipe.
El valor 0x1000200u en el quinto argumento significa que el CMD tiene lo siguiente:
CREATE_NO_WINDOW = 0x0000000u
CREATE_NEW_PROCESS_GROUP = 0x0000200u
CREATE_UNICODE_ENVIRONMENT = 0x0000400u
Y alguna información de inicio: {tamaño de la estructura = 104 bytes, hStdError = hWritePipe, hStdOutput = hWritePipe, hStdInput = hReadPipe2, dwFlags |= 0x100u = STARTF_USESTDHANDLES}. El primer pipe es responsable de leer la salida del shell y el segundo es responsable de escribir en el shell.
Y un puntero a PROCESS_INFORMATION
Y después de crear el shell, lo asigna al objeto de trabajo y lo pone en estado pendiente esperando comandos del C2.
El shell verifica comandos de control enviados a través de memoria compartida:
Pending: Ejecución normal.
Terminate: Matar el shell y limpiar. Shell completamente destruido y reiniciado.
Ctrlc: Forzar la eliminación de cualquier hijo restante.