Investigadores de ESET descubren Dolphin, un backdoor sofisticado que amplía el arsenal del grupo ScarCruft APT
Los investigadores de ESET analizaron una puerta trasera no reportada anteriormente utilizada por el grupo ScarCruft APT. La puerta trasera, a la que llamamos Dolphin, tiene una amplia gama de capacidades de espionaje, que incluyen el monitoreo de unidades y dispositivos portátiles y la filtración de archivos de interés, el registro de teclas y la captura de pantallas, y el robo de credenciales de los navegadores. Su funcionalidad está reservada para objetivos seleccionados, a los que se implementa la puerta trasera después del compromiso inicial utilizando malware menos avanzado. En línea con otras herramientas de ScarCruft, Dolphin abusa de los servicios de almacenamiento en la nube, específicamente Google Drive, para la comunicación de C&C.
Durante nuestra investigación, vimos un desarrollo continuo de la puerta trasera y los intentos de los autores de malware de evadir la detección. Una característica notable de las versiones anteriores de Dolphin que analizamos es la capacidad de modificar la configuración de las cuentas de Google y Gmail de las víctimas para reducir su seguridad, muy probablemente para mantener el acceso a las bandejas de entrada de correo electrónico de las víctimas.
En esta publicación de blog, proporcionamos un análisis técnico de la puerta trasera de Dolphin y explicamos su conexión con la actividad de ScarCruft documentada previamente. Presentaremos nuestros hallazgos sobre esta nueva incorporación al conjunto de herramientas de ScarCruft en la AVAR 2022 conferencia.
- Los investigadores de ESET analizaron Dolphin, una puerta trasera no reportada anteriormente utilizada por el grupo ScarCruft APT.
- Dolphin se implementa solo en objetivos seleccionados; busca en las unidades de los sistemas comprometidos archivos interesantes y los extrae a Google Drive.
- La puerta trasera se usó como la carga útil final de un ataque de varias etapas a principios de 2021, que involucró un ataque de abrevadero en un periódico en línea de Corea del Sur, un exploit de Internet Explorer y otra puerta trasera de ScarCruft, llamada BLUELIGHT.
- Desde el descubrimiento inicial de Dolphin en abril de 2021, los investigadores de ESET han observado múltiples versiones de la puerta trasera, en las que los actores de amenazas mejoraron las capacidades de la puerta trasera e intentaron evadir la detección.
- Una característica notable de las versiones anteriores de Dolphin que analizamos es la capacidad de modificar la configuración de las cuentas de Google y Gmail de las víctimas para reducir su seguridad.
Perfil de ScarCruft
ScarCruft, también conocido como APT37 o Reaper, es un grupo de espionaje que ha estado operando desde al menos 2012. Se enfoca principalmente en Corea del Sur, pero otros países asiáticos también han sido atacados. ScarCruft parece estar interesado principalmente en organizaciones gubernamentales y militares, y empresas de diversas industrias vinculadas a los intereses de Corea del Norte.
Resumen de delfines
En 2021, ScarCruft realizó un ataque de abrevadero en un periódico en línea de Corea del Sur centrado en Corea del Norte. El ataque constaba de múltiples componentes, incluido un exploit de Internet Explorer y un código de shell que conducía a una puerta trasera llamada BLUELIGHT, según lo informado por Volexidad y Kaspersky.
En esos informes, la puerta trasera BLUELIGHT se describió como la carga útil final del ataque. Sin embargo, al analizar el ataque, descubrimos a través de la telemetría de ESET una segunda puerta trasera más sofisticada, implementada en víctimas seleccionadas a través de BLUELIGHT. Llamamos a esta puerta trasera Dolphin en función de una ruta PDB que se encuentra en el ejecutable.
Mientras que la puerta trasera BLUELIGHT realiza un reconocimiento básico y una evaluación de la máquina comprometida después de la explotación, Dolphin es más sofisticado y se implementa manualmente solo contra víctimas seleccionadas. Ambas puertas traseras son capaces de extraer archivos de una ruta especificada en un comando, pero Dolphin también busca activamente en las unidades y extrae automáticamente los archivos con extensiones de interés para ScarCruft.
La Figura 1 proporciona una descripción general de los componentes del ataque que conducen a la ejecución de la puerta trasera de Dolphin.
Análisis de delfines
El análisis de los componentes de Dolphin y sus capacidades se proporciona en la siguiente sección.
El análisis se basa en la primera versión de la puerta trasera que encontramos, 1.9 (basada en una cadena que se encuentra en el código) con información adicional sobre los cambios en las versiones más recientes. Puede encontrar una descripción resumida de los cambios de versión en el Evolución de los delfines .
Instalador de delfines
Las siguientes secciones describen los componentes del instalador y del cargador responsables de la ejecución de la puerta trasera de Dolphin en el escenario de ataque analizado.
Vale la pena señalar que este instalador y el cargador implementado no son exclusivos de Dolphin, y anteriormente se usaron con otro malware ScarCruft.
El shellcode del instalador sigue estos objetivos principales:
- Descargar e implementar un intérprete de Python
- Generar y desplegar una cadena de carga con su carga útil
- Asegurar la persistencia de la cadena de carga
El instalador descarga un archivo CAB de OneDrive, que contiene un intérprete legítimo de Python 2.7. El CAB se desempaqueta para % APPDATA%, y dependiendo de la arquitectura, el intérprete termina en uno de los siguientes directorios:
- %datos de aplicación%Python27(32)
- %datos de aplicación%Python27(64)
El instalador genera dos rutas de archivos para los componentes de la cadena de carga, y , con el formato .
se selecciona aleatoriamente de
- % PROGRAMDATA%
- %PÚBLICO%
- %APPDATA%Microsoft
- %APPDATA%MicrosoftWindows
- % LOCALAPPDATA%
- %LOCALAPPDATA%Microsoft
- %LOCALAPPDATA%MicrosoftWindows
y se seleccionan aleatoriamente de los nombres de archivo existentes (sin extensión) en %windir%inf*.inf y %windir%system32*.dll.
Para generar el Paso 1 de Loader, utiliza una plantilla de secuencia de comandos que se llena con nombres generados aleatoriamente (variables, función). La plantilla con el ejemplo generado se muestra en la Figura 2.
A continuación, el script se escribe en .
El paso 2 (integrado en el instalador) que contiene el resto de la cadena de carga, incluida la carga útil, se cifra con una clave XOR de un byte derivada de la hora actual y se escribe en .
Para persistir el inicio de la cadena de carga, el instalador establece un valor de registro Ejecutar:
HKCUSoftwareMicrosoftWindowsCurrentVersionRun”%appdata%Python27({32|64})pythonw.exe” “” “”
El se selecciona aleatoriamente de los nombres de archivo existentes que coinciden %WINDIR%inf*.inf, descartando el inf extensión.
Para iniciar la cadena de carga después de la instalación, crea una tarea programada única.
cargador de delfines
El cargador de Dolphin consta de un script de Python y un código de shell.
El paso 1, el script de Python, lee un archivo específico, XOR descifra su contenido y ejecuta el shellcode resultante.
Paso 2, shellcode, crea un proceso de host (ejecutable CLI aleatorio de %WINDIR%System32*.exe), XOR descifra más shellcode que lleva dentro y lo inyecta en el proceso creado.
Paso 3, otro shellcode, XOR descifra un archivo PE incrustado, la puerta trasera de Dolphin, y lo carga y ejecuta usando un cargador PE personalizado.
puerta trasera delfín
Dolphin es una puerta trasera que recopila información y ejecuta comandos emitidos por sus operadores. La puerta trasera es un ejecutable normal de Windows, escrito en C++. Se comunica con el almacenamiento en la nube de Google Drive, que se utiliza como su servidor C&C.
Nombramos a la puerta trasera Dolphin en función de una ruta PDB que se encuentra en el ejecutable:
D:DesarrolloBACKDOORDolphinx64ReleaseDolphin.pdb
Persistencia
La puerta trasera verifica periódicamente y crea su propia persistencia asegurándose de que el Paso 1 del cargador se ejecute cada vez que se inicia el sistema, a través de un valor Ejecutar del registro, de la misma manera que en el instalador:
HKCUSoftwareMicrosoftWindowsCurrentVersionRun”%appdata%Python27({32|64})pythonw.exe” “” “”
Capacidades
Se recopila la siguiente información básica sobre la computadora y el backdoor:
- Configuración de puerta trasera actual
- Usuario
- nombre del equipo
- Dirección IP local y externa
- Lista de productos de seguridad instalados
- Tamaño y uso de RAM
- Resultado de la verificación del depurador y otras herramientas de inspección (como Wireshark)
- versión del sistema operativo
- Tiempo actual
- Versión de malware
Dolphin descarga comandos, emitidos por sus operadores, desde el almacenamiento de Google Drive y los ejecuta. Después de la ejecución, se carga la salida de los comandos. La mayoría de las capacidades de Dolphin se controlan a través de comandos.
Las capacidades más relevantes se describen a continuación.
Exfiltración de archivos
De forma predeterminada, Dolphin busca en todas las unidades no fijas (USB), crea listas de directorios y extrae archivos por extensión. Esta búsqueda se puede extender a unidades fijas (HDD), a través de comandos dedicados.
Las siguientes extensiones de archivo de interés, específicas para medios, documentos, correos electrónicos y certificados, se especifican en la configuración predeterminada:
jpg, doc, xls, ppt, hwp, url, csv, pdf, show, celular, eml, odt, rtf, nxl, amr, 3gp, m4a, txt, msg, key, der, cer, docx, xlsx, pptx, pfx, mp3
Además de esta búsqueda automática, se pueden filtrar archivos específicos.
En las versiones más nuevas, la búsqueda predeterminada se amplió a unidades fijas. Se mejoró el comando para obtener archivos específicos, almacenándolo en caché/almacenándolo en la configuración hasta que se complete.
Dispositivos portables
Entre las unidades regulares, Dolphin también busca dispositivos portátiles como teléfonos inteligentes, utilizando la API de dispositivos portátiles de Windows (WPD). Crea listas de directorios y extrae archivos. Esta funcionalidad parecía estar en desarrollo en la primera versión que encontramos, por varias razones:
- Confiar en una ruta codificada con un nombre de usuario que probablemente no exista en la computadora de la víctima
- Inicialización de variable faltante: se supone que algunas variables se inicializaron en cero o se desreferenciaron como punteros sin inicialización
- Filtrado de extensiones faltantes
El código se basa en gran medida en la API COM de dispositivos portátiles de Microsoft. muestra de código.
Además de la búsqueda automática, los operadores pueden especificar archivos individuales para extraerlos de dispositivos portátiles.
En las versiones más recientes, esta capacidad se completó y mejoró al agregar el filtrado de extensiones. Por razones desconocidas, se eliminó el comando para recuperar archivos específicos de dispositivos portátiles.
Registro de teclas y capturas de pantalla
Dolphin registra las pulsaciones de teclas para ventanas con títulos que contienen subcadenas especificadas en su configuración. Los valores predeterminados son cromo y explorar internet (sic). Esto se hace a través de la GetAsyncKeyState API, con las pulsaciones de teclas registradas junto con el nombre de la ventana y la hora actual. Las capturas de pantalla también se toman en un intervalo configurable; el valor predeterminado es una vez cada 30 segundos.
Las capturas de pantalla y el registro de teclas están habilitados de forma predeterminada y se pueden alternar mediante un comando.
código shell
Dolphin puede recibir shellcode para su ejecución. El shellcode se almacena en el registro, bajo una de las siguientes claves:
- HKCUSoftwareMicrosoftWindowsVersión actualTemasClásico
- HKCUSoftwareMicrosoftOneDriveActualización
- HKCUSoftwareMicrosoftWindowsVersión actualConfiguración de InternetHttpsSoftwareMicrosoftInternet ExplorerZone (dos subclaves como una, probablemente un error de codificación)
Se puede ejecutar localmente o en un proceso separado específico que se crea e inyecta.
En las versiones más nuevas, el shellcode se almacena en archivos en lugar del registro, y el shellcode almacenado se carga y ejecuta en el inicio de Dolphin, lo que no era el caso en la versión 1.9 (la versión original que analizamos).
Comandos de shell
Dolphin puede ejecutar comandos de shell; esto se hace a través de la papa API y se recupera su salida.
Robo de credenciales
Dolphin puede recuperar las credenciales de los navegadores en forma de contraseñas y cookies guardadas. Los siguientes navegadores son compatibles:
- Chrome
- Southern Implants
- Internet Explorer
En la versión 2.2, esta capacidad se eliminó, presumiblemente para evitar la detección. Posteriormente se restauró en la versión 3.0, pero en una forma diferente. Ahora se recibe dinámicamente desde C&C en forma de shellcode.
cuenta de google
Otro de los comandos de Dolphin modifica la configuración de la cuenta de Google actualmente conectada, lo que reduce su seguridad en relación con la configuración predeterminada. Roba la cookie existente de la cuenta iniciada del navegador y crea solicitudes que modifican la configuración.
En primer lugar, permite el acceso a Gmail a través del protocolo IMAP mediante el envío de una solicitud HTTP POST a:
- https://mail.google.com/mail/u/0/?ik=&at=&view=up&act=prefs
Luego, habilita el "acceso a aplicaciones menos seguro" al enviar una solicitud RPC no documentada a través de HTTP POST a:
- https://myaccount.google.com/_/AccountSettingsUi/data/batchexecute
Estas modificaciones se denominan "acceso de trueno" en la puerta trasera, y probablemente se trate de una referencia al cliente de correo electrónico Thunderbird. Acceder a las bandejas de entrada de sus víctimas con un cliente de terceros a través de IMAP probablemente ayude a los operadores de ScarCruft a mantener el acceso a los correos electrónicos de las víctimas después de robar las credenciales, lo que puede no ser suficiente por sí solos, debido a la detección de intentos de inicio de sesión sospechosos por parte de Google.
Esta característica se encontró en las versiones 1.9 y 2.0 del backdoor; no está presente en las versiones 2.2 o 3.0.
Puesta en escena de datos
Dolphin extrae datos al almacenamiento de Google Drive, almacenando los datos en archivos ZIP cifrados antes de cargarlos. La puerta trasera también mantiene una lista de archivos en forma de hash MD5, para evitar cargar el mismo archivo varias veces. Esta lista se puede restablecer a través de un comando dedicado.
Configuración
La puerta trasera contiene una configuración predeterminada inicial que persiste en la primera ejecución y se carga en las ejecuciones posteriores. Se almacena en el archivo %ProgramData%.inf, Donde se selecciona aleatoriamente de los nombres de archivo existentes que coinciden %windir%inf*.inf. El contenido se cifra mediante AES CBC con claves aleatorias de 16 bytes y IV, que se almacenan al principio del archivo. La configuración utiliza el formato JSON, con claves tipo hash. En la Figura 3 se muestra un ejemplo de una configuración descifrada.
La configuración se puede modificar mediante comandos. Contiene, entre otros, lo siguiente:
- Claves de cifrado
- Credenciales para el acceso a la API de Google Drive
- Títulos de ventana para registro de teclas
- Lista de extensiones de archivo para exfiltrar
Evolución de los delfines
Desde el descubrimiento inicial de Dolphin en abril de 2021, hemos observado múltiples versiones de la puerta trasera, en las que los actores de amenazas mejoraron las capacidades de la puerta trasera e intentaron evadir la detección. La Figura 4 resume las versiones vistas; A continuación se proporciona una descripción más detallada de los cambios de versión.
Noviembre 2021 – versión 2.0
La versión 2.0 introdujo los siguientes cambios a la versión encontrada en abril de 2021:
- Resolución dinámica de API sospechosas en lugar de importaciones estáticas (por ejemplo GetAsyncKeyState) adicional
- Capacidad de Shellcode terminada y mejorada
- Shellcode persistente almacenado en archivos en lugar de registro
- Shellcode persistente cargado y ejecutado en el inicio de Dolphin (anteriormente faltaba)
- Capacidad de exfiltración de archivos de dispositivos portátiles terminada y mejorada
- Exfiltración por extensiones añadidas
- Reconocimiento de memoria interna y tarjetas SD (desde ID de dispositivo) añadido
- Comando para obtener archivos de dispositivos portátiles efectivamente un NOP
- Detección de dispositivos/unidades y exfiltración de archivos mejorada
- Dolphin ahora crea incondicionalmente listas de directorios y extrae archivos por extensión cada 30 minutos para todas las unidades y dispositivos (unidades fijas, unidades extraíbles, dispositivos portátiles). Anteriormente, era solo para unidades extraíbles; las unidades fijas estaban deshabilitadas de forma predeterminada y el código utilizado para acceder a los dispositivos portátiles tenía errores y estaba roto.
Diciembre 2021 – versión 2.2
Los cambios introducidos en la versión 2.2 se centraron principalmente en la evasión de detección. Se eliminaron la capacidad de robo de credenciales y los comandos relacionados con ella (los comandos de robo de credenciales y cuenta de Google). La mayoría de las cadenas en esta versión están codificadas en base64.
Enero 2022 – versión 3.0
En la versión 3.0, el código se reorganizó y las clases se renombraron, y las capacidades permanecieron sin cambios. Las cadenas codificadas en base64 eran de nuevo texto sin formato en esta versión. Observamos los siguientes cambios adicionales:
- Comando para robar credenciales restauradas en una forma diferente; ahora ejecuta shellcode desde el C&C
- Comando para eliminar por completo los archivos de los dispositivos portátiles
- El comando para obtener archivos de las unidades ahora se almacena en caché/almacenado en la configuración hasta que finalice. Si se interrumpe (por ejemplo, por el apagado de la computadora), se realiza en la siguiente ejecución. Esto también es útil en el caso de unidades extraíbles que pueden no estar conectadas cuando se emite el comando.
- Comprobación de conexión a Internet añadida (https://www.microsoft.com); no se ejecuta ningún código malicioso si está fuera de línea
Las diferencias entre las versiones 2.2 y 3.0, especialmente la discrepancia en la codificación de cadenas, sugieren la posibilidad de que diferentes personas desarrollaran las versiones en paralelo.
Conclusión
Dolphin es otra adición al extenso arsenal de puertas traseras de ScarCruft que abusan de los servicios de almacenamiento en la nube. Después de implementarse en objetivos seleccionados, busca archivos interesantes en las unidades de los sistemas comprometidos y los extrae a Google Drive. Una capacidad inusual que se encuentra en versiones anteriores de la puerta trasera es la capacidad de modificar la configuración de las cuentas de Google y Gmail de las víctimas para reducir su seguridad, presumiblemente para mantener el acceso a la cuenta para los atacantes. Durante nuestro análisis de múltiples versiones de la puerta trasera Dolphin, vimos un desarrollo continuo e intentos de evadir la detección.
ESET Research también ofrece fuentes de datos e informes de inteligencia APT privados. Para cualquier consulta sobre este servicio, visite el Inteligencia de amenazas de ESET .
IoC
SHA-1 | Nombre del archivo | Nombre de detección de ESET | Descripción |
---|---|---|---|
F9F6C0184CEE9C1E4E15C2A73E56D7B927EA685B | N/A | Win64/Agente.MS | Puerta trasera Dolphin versión 1.9 (x64) |
5B70453AB58824A65ED0B6175C903AA022A87D6A | N/A | Win32/Spy.Agente.QET | Puerta trasera Dolphin versión 2.0 (x86) |
21CA0287EC5EAEE8FB2F5D0542E378267D6CA0A6 | N/A | Win64/Agente.MS | Puerta trasera Dolphin versión 2.0 (x64) |
D9A369E328EA4F1B8304B6E11B50275F798E9D6B | N/A | Win32/Agente.UYO | Puerta trasera Dolphin versión 3.0 (x86) |
2C6CC71B7E7E4B28C2C176B504BC5BDB687C4D41 | N/A | Win64/Agente.MS | Puerta trasera Dolphin versión 3.0 (x64) |
Técnicas MITRE ATT & CK
Esta tabla fue construida usando Versión 12 del marco MITRE ATT & CK.
Táctica | ID | Nombre | Descripción |
---|---|---|---|
Acceso inicial | T1189 | Compromiso de conducción | ScarCruft usa ataques de abrevadero para comprometer a las víctimas. |
Ejecución | T1059.006 | Intérprete de comandos y secuencias de comandos: Python | El cargador Dolphin usa un script de Python. |
T1059.007 | Intérprete de comandos y secuencias de comandos: JavaScript | ScarCruft usó JavaScript malicioso para un ataque de abrevadero. | |
T1203 | Explotación para la ejecución del cliente | ScarCruft explota CVE-2020-1380 para comprometer a las víctimas. | |
T1106 | API nativa | Dolphin utiliza las funciones de la API de Windows para ejecutar archivos e inyectar procesos. | |
Persistencia | T1053.005 | Tarea/Trabajo programado: Tarea programada | Dolphin usa una tarea programada temporal para comenzar después de la instalación. |
T1547.001 | Ejecución de inicio automático de inicio o inicio de sesión: claves de ejecución del registro/carpeta de inicio | Dolphin usa teclas Run para la persistencia de su cargador. | |
Evasión de defensa | T1055.002 | Inyección de proceso: Inyección ejecutable portátil | Dolphin puede inyectar en otros procesos. |
T1027 | Archivos o información ofuscados | Dolphin tiene componentes encriptados. | |
Acceso a credenciales | T1555.003 | Credenciales de almacenes de contraseñas: Credenciales de navegadores web | Dolphin puede obtener contraseñas guardadas de los navegadores. |
T1539 | Robar cookie de sesión web | Dolphin puede obtener cookies de los navegadores. | |
Descubrimiento de moléculas | T1010 | Descubrimiento de la ventana de la aplicación | Dolphin captura el título de la ventana activa. |
T1083 | Descubrimiento de archivos y directorios | Dolphin puede obtener listados de archivos y directorios. | |
T1518.001 | Descubrimiento de software: Descubrimiento de software de seguridad | Dolphin obtiene una lista del software de seguridad instalado. | |
T1082 | Descubrimiento de información del sistema | Dolphin obtiene diversa información del sistema, incluida la versión del sistema operativo, el nombre de la computadora y el tamaño de la memoria RAM. | |
T1016 | Descubrimiento de la configuración de la red del sistema | Dolphin obtiene la dirección IP local y externa del dispositivo. | |
T1016.001 | Descubrimiento de la configuración de la red del sistema: Descubrimiento de la conexión a Internet | Dolphin comprueba la conectividad a Internet. | |
T1033 | Descubrimiento de propietario/usuario del sistema | Dolphin obtiene el nombre de usuario de la víctima. | |
T1124 | Descubrimiento de la hora del sistema | Dolphin obtiene la hora actual de la víctima. | |
Colecciones | T1056.001 | Captura de entrada: registro de teclas | Dolphin puede registrar las pulsaciones de teclas. |
T1560.002 | Archivar datos recopilados: Archivar a través de la biblioteca | Utilizando la biblioteca de Zipper, Dolphin comprime y cifra los datos recopilados antes de la exfiltración. | |
T1119 | Colección automatizada | Dolphin recopila periódicamente archivos con determinadas extensiones de las unidades. | |
T1005 | Datos del sistema local | Dolphin puede recopilar archivos de unidades locales. | |
T1025 | Datos de medios extraíbles | Dolphin puede recopilar archivos de unidades extraíbles. | |
T1074.001 | Datos escalonados: estadificación de datos locales | Las etapas de delfines recolectaron datos en un directorio antes de la exfiltración. | |
T1113 | Captura de pantalla | Dolphin puede capturar capturas de pantalla. | |
Comando y control | T1071.001 | Protocolo de capa de aplicación: protocolos web | Dolphin usa HTTPS para comunicarse con Google Drive. |
T1102.002 | Servicio Web: Comunicación Bidireccional | Dolphin se comunica con Google Drive para descargar comandos y filtrar datos. | |
exfiltración | T1020 | Exfiltración automatizada | Dolphin extrae periódicamente los datos recopilados. |
T1567.002 | Exfiltración a través del servicio web: Exfiltración al almacenamiento en la nube | Dolphin extrae datos a Google Drive. |
- blockchain
- Coingenius
- carteras de criptomonedas
- intercambio crypto
- seguridad cibernética
- ciberdelincuentes
- La Ciberseguridad
- departamento de seguridad nacional
- billeteras digitales
- Investigación de ESET
- cortafuegos
- Kaspersky
- el malware
- Mcafee
- NexBLOC
- Platón
- platón ai
- Inteligencia de datos de Platón
- Juego de Platón
- PlatónDatos
- juego de platos
- VPN
- Vivimos la seguridad
- seguridad del sitio web
- zephyrnet