Nueva amenaza BlackStink: Campaña de malware Man-in-the-Browser dirigida a México
Visión general
El siguiente informe describe los TTPs e IoCs de una nueva campaña de malware a la cual SCILabs denominó BlackStink. Esta campaña está dirigida a México y fue identificada durante la primera semana de noviembre. El método de distribución es por medio de correos de phishing con el pretexto de supuestas facturas generadas y tiene como objetivo realizar ataques Man-in-the-Browser, haciendo uso del panel para administración de navegadores por nube Chrome Browser Cloud Management para instalar extensiones maliciosas, en específico, suplantando la extensión legítima de Documentos de Google.
El principal objetivo de este malware es robar información de los usuarios de diferentes instituciones financieras, haciendo uso de las extensiones maliciosas instaladas remotamente en el navegador de Chrome.
SCILabs realizó un análisis minucioso para determinar si existe alguna relación entre este malware y otras familias ya conocidas, que comparten TTPs como el uso de aplicaciones HTA y extensiones maliciosas de Google Chrome para realizar ataques Man-in-the-Browser, los malware analizados y comparados fueron BlackDog, Magnant, ViperSoftX y VenomSoftX; sin embargo, no se encontró ninguna relación directa con estas amenazas, por lo que debido a sus características fue nombrado BlackStink.
Finalmente, es importante mencionar que los artefactos identificados durante la cadena de infección de esta campaña, no se encuentran en la plataforma de VirusTotal.
¿Cómo podría afectar a una organización?
El objetivo principal de esta campaña es realizar un ataque Man-in-the-Browser para robar información bancaria de la víctima. Además, los atacantes podrían instalar extensiones adicionales con capacidades observadas en otras campañas, por ejemplo, monetizar el tráfico de los usuarios mediante redirecciones a dominios externos, redirigir a sitios de phishing o adware, entre otras. Si un ataque de este malware tiene éxito, podría causar pérdidas económicas y de reputación en la organización debido a que los ciberdelincuentes podrían hacer un mal uso de la información obtenida, filtrándola o vendiéndola en foros clandestinos o en el mercado negro.
Análisis
Contexto de amenaza
Durante la primera semana de noviembre, 3 correos electrónicos fueron recuperados de nuestro ciber-ecosistema, los cuales indican que se adjunta un archivo CFDI y una clave para el documento.
Figura 1 – Correo electrónico de phishing
El archivo adjunto se trata de un PDF que busca persuadir al usuario para que descargue un archivo adicional mostrando el mensaje “El archivo ha sido protegido con contraseña y no puede ser mostrado. Vea el archivo en su PC.”, al hacer clic en “Descargar Documento” este redirige a la URL hxxps[://]websylvania[.]com/cfdi/?e4e1fec0a9259fd2a07f4c6bc5577087e4e1fec0a9259fd2a07f4c6bc5577087e4e1fec0a9259fd2a07f4c6bc5577087, donde se inicia la descarga de un archivo de tipo RAR.
Figura 2 – PDF adjunto en el correo electrónico
El archivo descargado está protegido con contraseña, por lo que al momento de descomprimirlo se debe proporcionar la clave mencionada en el correo y en el archivo PDF, la cual puede variar dependiendo el correo electrónico. En el contenido del archivo comprimido se encuentra un acceso directo que tiene como objetivo ejecutar un script de PowerShell para iniciar la cadena de infección del malware.
Figura 3 – Propiedades del acceso directo
El acceso directo contiene un script de PowerShell con el siguiente código:
Esta línea de código se encarga de iniciar una instancia de PowerShell para ejecutar un archivo remoto desde la URL hxxps[://]websylvania[.]com/hydra/user[.]hta, abusando de la utilidad de Windows mshta.exe, la cual está diseñada para la ejecución de aplicaciones tipo HTA.
Este bloque de código obtiene la ruta donde fue extraído el acceso directo, una vez la ejecución ha finalizado, elimina este archivo del dispositivo comprometido.
El archivo HTA que se ejecuta durante la cadena de infección, contiene un script de Visual Basic ofuscado, el cual se encarga de ejecutar comandos adicionales de PowerShell.
Figura 4 – Bloque de código VBS ofuscado en el archivo user.hta
Figura 5 – Comandos de PowerShell ofuscados
En los comandos de PowerShell embebidos en el código, se encuentran cadenas ofuscadas en base64 que al ser decodificadas se obtienen comandos de PowerShell. En general, el script se encarga de realizar las siguientes acciones:
- Valida que el archivo sat.com.mx de tipo HTML exista en la ruta %APPDATA%, en caso de que el archivo exista usa el módulo Invoke-Item, el cual permite abrir un archivo con la aplicación asociada a ese tipo de archivo y termina la ejecución si este no existe:
- Descarga el código encontrado en la página web del SAT y lo guarda en un archivo llamado www.sat.com.mx.
- Valida que el archivo user.ps1 exista en la ruta %APPDATA%, si no existe, descarga el archivo desde la URL hxxps[://]websylvania[.]com/hydra/user[.]ps1.
- Ejecuta comandos de PowerShell para hacer bypass de la utilidad UAC (User Account Control), la cual evita que incluso una cuenta de administrador pueda ejecutar cambios en el sistema operativo, como por ejemplo crear un nuevo servicio o cambiar alguna llave de registro. Para poder realizar este bypass crea un archivo llamado CMSTP.inf en la ruta %TEMP% con la configuración y comandos necesarios para ejecutar el script user.ps1 con privilegios de administrador.
- Finalmente inicia una instancia de PowerShell para ejecutar el archivo user.ps1 usando la configuración previamente definida en CMSTP.inf.
Figura 6 – Script de PowerShell desofuscado
El archivo user.ps1 realiza las siguientes acciones:
- Descarga el módulo de SQLite para PowerShell.
- Confirma la existencia del historial del navegador de Chrome, si no existe termina la ejecución.
- Genera un archivo llamado Histo.db el cual contiene toda la información encontrada en el historial de Chrome.
- Valida la existencia de las siguientes URL en el historial:
- santander.com.mx
- sbi.com.mx/invernet2000
- santander.com.mx
- bbvanetcash
- scotiabank.com.mx
- bbvanet.com.mx
- Si alguna de estas URL es encontrada en el historial, realiza una petición usando Invoke-Request a la URL hxxps[://]websylvania[.]com/hydra/it[.]php, pasando como parámetros el ID de Get-UICulture y GET-WinSystemLocale, validando la configuración local de idioma en la maquina infectada y guarda la respuesta en un archivo check.txt en %APPDATA%.
- Si la configuración corresponde al idioma español, la respuesta recibida es ejecutada usando iex, el cual es un alias para Invoke-Expression. El objetivo del código recibido es agregar la llave de registro CloudManagementEnrollmentToken en la ruta HKLM:\SOFTWARE\Policies\Google\Chrome\. Es importante mencionar que, si la ruta de registro anterior no existe en el equipo, la ejecución del malware falla.
- Finalmente elimina la mayoría de los archivos descargados y generados durante su ejecución.
Figura 7 – Bloque de código del archivo user.ps1
Si la llave de registro fue creada con éxito, el navegador Chrome de la víctima es agregado a un panel de administración por nube de Google, el cual le permite al administrador del panel definir políticas de uso en los navegadores registrados, así como la instalación de extensiones desde la Chrome Web Store o una URL externa donde este almacenada esta aplicación.
Los operadores de este malware instalan dos extensiones en el navegador del equipo comprometido, las cuales suplantan la aplicación de Documentos de Google. Ambas extensiones no pueden ser eliminadas o deshabilitadas por el usuario, en la página de detalles de estas aplicaciones se puede observar que la fuente es externa a la Chrome Web Store y los permisos “Leer y cambiar todos tus datos en todos los sitios web”.
Figura 8 – Extensiones de Chrome maliciosas
Figura 9 – Detalles de extensión maliciosa de Chrome
Al realizar un análisis estático de las extensiones se encontraron las siguientes URLs:
- hxxps[://]update[.]pixelcdnjs[.]com/extension/manifiest[.]xml – URL definida como UPDATE_URL en el manifest de las extensiones.
- hxxps[://]apesta[.]miculon[.]com/static/js/collect/pixel – URL encontrada en el archivo background.js de la extensión con ID bjpnnpifeliggnmlemieofjlgfgcpchb, el archivo ya no se encuentra disponible por lo que se desconoce su utilidad.
- hxxps[://]pixel[.]gemsrail[.]com/static/js/collect/pixel – URL encontrada en el archivo background.js de la extensión con ID lbnjibnkojiiiikeagbpmldlbblanopo, el archivo ya no se encuentra disponible por lo que se desconoce su utilidad.
Al analizar estos dominios encontramos características observadas en campañas de malware, por ejemplo, los 3 dominios han sido registrados recientemente y sus certificados han sido proporcionados por Let’s Encrypt, la cual es una organización que proporciona certificados gratuitos, por lo que es común ver certificados emitidos por esta organización en páginas web usadas por los ciberdelincuentes para distribuir malware.
Figura 10 – Dominios encontrados en los archivos JS de las extensiones maliciosas
Figura 11 – Información del dominio gemsrail[.]com
Figura 12 – Certificados del dominio gemsrail[.]com
Al visitar a un sitio web bancario encontrado en la lista de validación del malware y proporcionar los datos para iniciar sesión, se crea un objeto llamado “Check”, el cual contiene información ingresada por el usuario. Adicionalmente se puede observar un objeto JavaScript llamado “Result” de tipo Promise, el cual no ha sido resuelto y tiene un estado de pendiente, esto puede deberse a alguna validación que no obtuvo una respuesta válida para el malware.
Al momento de la redacción de este informe no se ha observado comportamiento malicioso adicional de estas extensiones debido a que posiblemente la infraestructura del atacante no se encuentre disponible, por lo cual no podemos determinar con certeza todas las capacidades del malware, sin embargo, con base a nuestra experiencia y la investigación realizada, SCILabs plantea la hipótesis de que una vez la victima ingrese credenciales de acceso en algún sitio web bancario, estas serán recopiladas y compartidas con el C2 de los ciberdelincuentes.
Figura 13 – Objeto de JavaScript de tipo Check en el que se puede observar el número de tarjeta ingresado
Figura 14 – Objeto de JavaScript de tipo Result con el estado pendiente
Flujo de Ataque
Figura 15 – Flujo de ataque
Resumen técnico
- La campaña es distribuida por medio de correos de phishing con el pretexto de facturas, el correo contiene un PDF adjunto el cual redirige a la descarga de un archivo ZIP protegido con contraseña.
- El archivo ZIP contiene un acceso directo que tiene como objetivo ejecutar comandos de PowerShell para ejecutar una aplicación HTA desde la URL hxxps[://]websylvania[.]com/hydra/user[.]hta usando la utilidad mshta.exe.
- La aplicación HTA contiene un bloque de código Visual Basic ofuscado, el cual está encargado de ejecutar comandos de PowerShell embebidos en el script.
- Los comandos de PowerShell embebidos contienen cadenas ofuscadas en base64 que al ser decodificadas se obtiene un script de PowerShell, el cual realiza las siguientes acciones:
- Valida la existencia del archivo www.sat.com.mx en la ruta %APPDATA%, si existe, lo ejecuta usando el módulo Invoke-Item y termina con la ejecución del script.
- Si no existe, descarga el código encontrado en la página web del SAT y lo guarda en el archivo www.sat.com.mx, valida la existencia del archivo user.ps1 en la ruta %APPDATA%, si no existe, lo descarga desde la URL hxxps[://]websylvania[.]com/hydra/user[.]ps1.
- Ejecuta una serie de comandos para hacer bypass de la utilidad UAC (User Account Control) y guarda la configuración en el archivo CMSTP.inf en la ruta %TEMP%.
- Finalmente, inicia una instancia de PowerShell para ejecutar el archivo user.ps1 usando la configuración previamente definida en CMSTP.inf, el cual contiene la configuración y comandos necesarios para ejecutar el script con privilegios de administrador.
- El archivo user.ps1 realiza las siguientes acciones al ser ejecutado:
- Descarga el módulo de SQLite para PowerShell.
- Confirma la existencia del historial del navegador Chrome, si no existe termina la ejecución.
- Genera una pequeña base de datos en un archivo llamado Histo.db el cual contiene toda la información encontrada en el historial de Chrome.
- Valida la existencia de las siguientes URL en el historial:
- santander.com.mx
- sbi.com.mx/invernet2000
- santander.com.mx
- bbvanetcash
- scotiabank.com.mx
- bbvanet.com.mx
- Si alguna de estas URL es encontrada, realiza una petición usando Invoke-Request a la URL hxxps[://]websylvania[.]com/hydra/it[.]php pasando como parámetros un par de validaciones de la configuración local del sistema, la respuesta es almacenada en el archivo check.txt en %APPDATA%
- Si la configuración corresponde al idioma español, la respuesta es ejecutada con Invoke-Expression. El objetivo del código recibido es agregar la llave de registro CloudManagementEnrollmentToken en la ruta HKLM:\SOFTWARE\Policies\Google\Chrome\
- Finalmente elimina la mayoría de los archivos descargados y generados durante su ejecución.
- Si la llave fue creada con éxito, el navegador Chrome de la víctima es agregado a un panel de administración por nube de Google. Después de un tiempo, dos extensiones maliciosas son instaladas de forma remota, las cuales suplantan la aplicación de Documentos de Google.
- Una vez la victima visita algún sitio web bancario de interés para el malware, se crean dos objetos, el primero llamado “Check”, con información ingresada por el usuario y el segundo llamado “Result”, el cual es un objeto de tipo Promise el cual queda a la espera de alguna validación o acción especifica.
- Finalmente, si la victima ingresa sus credenciales de acceso en un sitio web bancario, estas son recopiladas y compartidas con el C2 de los ciberdelincuentes.
Comparación entre la campaña de BlackStink y otras campañas conocidas
Para poder determinar si esta amenaza se trata de una nueva campaña, el equipo de SCILabs investigó en fuentes públicas sobre diferentes campañas que podrían sugerir una relación entre la anterior y esta campaña, encontrando similitudes en algunas de ellas, como:
- BlackDog: Sitios web que suplantan a la Secretaría de Administración Tributaria (SAT), uso de aplicaciones HTA para iniciar la cadena de infección. Esta amenaza tiene como objetivo la instalación de una extensión maliciosa de Chrome para robar credenciales bancarias, se dirige especialmente a México.
- Magnant: Uso de archivos EXE o ISO para su instalación. Esta amenaza tiene como objetivo la instalación de un backdoor mediante una extensión maliciosa de Chrome para robar credenciales bancarias, se dirige especialmente a Norteamérica y Australia.
- VirusSoftX: La ejecución es a través de código JavaScript altamente ofuscado. La amenaza crea persistencia creando una copia del código malicioso en la ruta %APPDATA%, el objetivo principal de esta campaña es robar/reemplazar crytpo wallets, en versiones recientes del malware este usa extensiones de Chrome para inyectar código malicioso.
- VenomSoftX: Se distribuye a través de archivos maliciosos de Torrent, comúnmente en archivos de software crackeado. Instala una extensión de Chrome maliciosa que suplanta la aplicación de Documentos de Google, su principal objetivo es robar información de Criptomonedas en sitios populares de intercambio.
Tras esta investigación, el equipo de SCILabs determinó que, a pesar de las similitudes, ninguna de las campañas analizadas utilizaba las mismas TTPs durante su cadena de infección, por lo que, con base en sus características particulares, SCILabs nombró a este malware como BlackStink.
TTP observados, alineados con el marco ATT&CK de MITRE
Tabla 1 – TTP observados, alineados con el marco ATT&CK de MITRE
Conclusión
Durante la investigación de esta amenaza, SCILabs noto que la principal característica que lo diferencia de otras campañas que usan extensiones maliciosas de Chrome para realizar ataques Man-in-the-Browser, es el uso del panel de administración por nube de Chrome Browser Cloud Management, herramienta que les permite tener completo control sobre el navegador registrado. La instalación de forma remota de extensiones de Google Chrome, las cuales no pueden ser deshabilitadas o desinstaladas por la víctima afectada, esto es uno de los aspectos que hacen de esta amenaza especialmente peligrosa, ya que los operadores de este malware podrían instalar extensiones adicionales, con capacidades observadas en otros malware que usan extensiones de Chrome en su cadena de infección, por ejemplo, el keylogging o agregar el dispositivo infectado a una Botnet, como es el caso de Cloud9.
Además, este ataque podría ser muy efectivo porque la mayoría de los usuarios de cualquier tipo de organización, no suelen tener el control del navegador Chrome y sus extensiones instaladas. Debido a esto y a la efectividad de las técnicas utilizadas por esta amenaza, SCILabs asegura con un nivel de confianza alto, que seguiremos viendo campañas similares durante el resto del año, así como la evolución de sus TTPs y actualización de su infraestructura.
Por último, SCILabs recomienda tomar las siguientes medidas:
- Revisar las llaves de registro en búsqueda de un token de configuración de nombre CloudManagementEnrollmentToken no autorizado o sospechoso en la ruta HKLM:\SOFTWARE\Policies\Google\Chrome\ para descartar posibles infecciones de esta amenaza.
- Realizar una caza de amenazas en busca de complementos o extensiones maliciosas en los navegadores de su empresa, que suplanten extensiones legitimas como la aplicación de Documentos de Google.
- Tener una política estricta respecto al uso e instalación de complementos o extensiones, especialmente en Google Chrome.
- Busque archivos sospechosos con nombres como sat.com.mx, user.ps1 o check.txt en %APPDATA% para descartar posibles infecciones de esta amenaza.
- Busque archivos de configuración y base de datos de SQLite sospechosos, con nombres como inf o Histo.db en %TEMP% para descartar posibles infecciones de esta amenaza.
- Realizar campañas de concientización sobre el buen uso de las herramientas de acceso a Internet y la difusión de las técnicas de ingeniería social utilizadas por los ciberdelincuentes para distribuir malware.
- Añadir los indicadores de compromiso reflejados en esta investigación a sus soluciones de seguridad.
IOC
Hashes MD5
1B11BA3ECEEE4E9F4579A45DA95F11AD
1719A49709FD453A1B2934E3E4EAFC26
26DD848E6E7EAEE8971FCCD4E6C9B332
2F483280491A0FCF27194322F22FAF7B
6E40E3CEAA3B8FDBD1ECF93F930FE4CA
842D09A2BF09D43F75D8AB498D1C3DB4
B11354D793B996A038D548BC6B0E4D4A
8F1546582A0CF7A3B08881D6C3C18EC0
7423E4B568EBB415FF916D5CB99AC9C0
DD18F251324C25C7D712DC0FE0424C6E
F5738B01C9110A68DA58A00C558B2528
71F2513CA9AB2631B5F9B4B571AA3E13
E8737AFBABDCA29481E4AF8071389602
31F65612BB67F7A11E1D77094DC38A26
ID de las Extensiones
BJPNNPIFELIGGNMLEMIEOFJLGFGCPCHB
LBNJIBNKOJIIIIKEAGBPMLDLBBLANOPO
Nombres de archivo
ENVIO_CFDI_28449.PDF
CFDI_956623.RAR
CFDI_SAT.GOB.MX
15747.HTA
USER.HTA
74B6.PS1
USER.PS1
CMSTP.INF
CHECK.TXT
BACKGROUND.JS
BACKGROUND.JS.LICENSE.TXT
INDEX.JS.LICENSE.TXT
INDEX.HTML
INDEX.JS
MANIFEST.JSON
Dominios
WEBSYLVANIA[.]COM
UPDATE[.]PIXELCDNJS[.]COM
APESTA[.]MICULON[.]COM
PIXEL[.]GEMSRAIL[.]COM
URLs del malware
HXXPS[://]KH7JV[.]STORE/?KJN4HG8JBSLHORPICHKJNUEQBWNOCARXMGPJORBUXZKB1JTZMC0HLRWBYAEGGFKJN4HG8JBSLHORPICHKJNUEQBWNOCARXMGPJORBUXZKB1JTZMC0HLRWBYAEGGF
HXXPS[://]WEBSYLVANIA[.]COM/CFDI/?E4E1FEC0A9259FD2A07F4C6BC5577087E4E1FEC0A9259FD2A07F4C6BC5577087E4E1FEC0A9259FD2A07F4C6BC5577087
HXXPS[://]WEBSYLVANIA[.]COM/HYDRA/USER[.]HTA
HXXPS[://]WEBSYLVANIA[.]COM/HYDRA/USER[.]PS1
HXXPS[://]WEBSYLVANIA[.]COM/HYDRA/IT[.]PHP
HXXPS[://]UPDATE[.]PIXELCDNJS[.]COM/EXTENSION/MANIFIEST[.]XML
HXXPS[://]APESTA[.]MICULON[.]COM/STATIC/JS/COLLECT/PIXEL
HXXPS[://]PIXEL[.]GEMSRAIL[.]COM/STATIC/JS/COLLECT/PIXEL