Inicio Análisis y reporte del chrome stealer - ChromeUpdater.exe
Entrada
Cancelar

Análisis y reporte del chrome stealer - ChromeUpdater.exe

Analizar los propios malwares personalizados es vital para saber detectarlos posteriormente. Por ello, he creado un malware stealer de credenciales en Golang.

Toda la infraestructura está creada y ejecutada de forma local, por lo que no sale fuera de la red.

OffensiveGolang es uno de los uno de los repositorios que me ha facilitado la programación como el desarrollo del exfiltrado de datos, para crearlo. Muy recomendable.

https://github.com/MrTuxx/OffensiveGolang/tree/main


Para ofuscar el malware he utilizado esta herramienta que es la cual luego un simple comando strings no puede encontrar mucho y el análisis es más complicado y duradero.
Con garble utilicé también una semilla de aleatoriedad de ofuscación.

https://github.com/burrowers/garble


Para la recolección de todos estos archivos exfiltrados, los recibí en un Kali Linux donde tenía levantado un Flask app.

El malware no es detectado por el antivirus windows defender ya que es desconocido y no puede basarse en los signatures y la detección estática es bypasseada.

Defender

A continuación, voy a escribir un informe donde podemos ver el funcionamiento del malware:


Resumen ejecutivo

ChromeUpdater es un stealer en busca de exfiltrar artefactos de Google Chrome como por ejemplo: contraseñas y cookies. El malware encripta los archivos en AES y los exfiltra a una IP privada.

El malware está programado en Golang para Windows.

Los primeros indicadores son:

  • Al iniciarlo solo se muestra en la barra de tareas
  • Esta aplicación solo dura milisegundos y se cierra
  • Cuando se cierra, se borra así mismo

Resumen técnico de alto nivel

Lo primero que hace el stealer es una busqueda de los siguientes archivos del path de ‘/AppData/Local/Google/Chrome/User Data’:

  • Cookies
  • History
  • Web Data
  • Bookmarks
  • Login Data
  • Local State

Después de leer los archivos, los encripta con una clave “01234567890abcdef” AES.

Hace una conexión con httx://10.10.10.6:8080/endpoint y envia los archivos a través de un método POST en forma de JSON (clave valor) y una vez finalizado, procede a borrarse a si mismo con un cmd.exe /C del.

Composición de malware

1
2
3
4
5
chromeUpdater.exe
SHA256 Hash:
FF6AFE9A7FF8D8C451CCBD3C5A0F473025D36074173A027B39FEECE45E78DA63
MD5 Hash:
0194AF976819E40CC63AD795D1F5CACE

Análisis estático

Este malware no ofrece ningún tipo de “Time Date Stamp” en PEView

PEView

En las propiedades del ejecutable no encontramos alguna descripción ni versión ni nombre ni tampoco alguna firma digital.

Propiedades

Como vemos ahora y veremos después, el lenguaje es Golang y está escrito para Windows.

Lenguaje

Llevando el archivo a PEStudio, confirmamos que no hay ningún compiler-stamp ni firma, ni otro tipo de información

PEStudio

Algunas de las API a las que llama son para tratar hilos y es por eso que parecen del tipo Process Injection pero no hay más con “flag” interesantes

API

Extrayendo los strings a un documento vemos que está escrito en Golang por la terminación “.go” en muchos de los strings que hay y podemos ver el comportamiento en base a ello como syscall_windows.go, que hará llamadas al sistema que permiten a las aplicaciones interactuar con funciones de bajo nivel.

Strings

Pasando el archivo de strings por malapi.py podemos ver que utiliza API para enumerar el directorio.

Enumerar

Vemos que utiliza API para utilizar Internet, por lo que enviará o recibirá algo.

Internet

También utiliza API helper para crear o abrir un archivo.

Archivos

Extrayendo las cadenas a través del comando “strings” no dejó más que los imports que hemos visto y que está escrito en golang.


Utilizando floss podemos extraer los strings ofuscados de una forma más avanzada. Debido a la ofuscación, el proceso tarda un rato.

Floss

Nos devuelve que hay 160.000 strings estáticas y de las tight strings que son descodificadas en la pila, obtenemos que es probable que acceda a los Bookmarks de Google Chrome y al archivo Local State donde reside la llave de encriptado.

TightStrings

Strings

1
2
3
4
5
6
7
8
C:/Users/
/AppData/Local/Google/Chrome/User Data/Default/BookmarksjW
/AppData/Local/Google/Chrome/User Data/Local State
http://10.10.10.6:8080/endpointO[
0123456789abcdef*Af

crypto/cipher: input not full blocks
crypto/aes: invalid key size

También parece que accederá a un endpoint llamado endpoint y esa cadena en hexadecimal encriptará los archivos.

Análisis dinámico

Teniendo en mente que accede a archivos y son de Chrome, podemos filtrar por ReadFile.

Al ejecutar el programa vemos que ha accedido a todos esos archivos de Chrome

ReadFile

Posterior a ello, vemos que hubo una conexión al puerto 8080 de la 10.10.10.6 y envíos de información notables.

Conexion

Al analizarlo en Wireshark vemos que hubo un POST a /endpoint de menos de 1 MB y en formato JSON

Wireshark

Utiliza un UserAgent genérico con un authorization custom con el nombre de W4tson y un Issued Time de Sat 15 July 2023 08:30:32 UTC

UserAgent

Cyberchef

Tratando de decodificar la primera clave del JSON, vemos que no funciona.

Cyberchef

Asumimos que se utilizó el cifrado AES encontrado en los strings para cifrar este contenido, por lo que utilizando el string encontrado “0123456789abcdef” podemos descifrar que el texto encriptado era “w4tsonCookies” y el valor clave es el contenido del archivo.

AesDecrypt


En Sysmon se observa que no hay ningún tipo de información del archivo a la hora de su ejecución.

Sysmon1

El ParentImage de este cmd.exe / c del es el mismo chromeUpdater de eliminándose a sí mismo después de ejecutarse.

ParentImage

El event id 26 registra la eliminación del ejecutable.

Captura

Vemos que registró la IP y el puerto de destino al que se conectó.

Captura

Detección

Por defecto, Windows no registra el acceso a archivos/carpetas (objetos), habilitamos la auditoría de objetos y supervisamos el archivo Local State.

Después de su ejecución, podemos ver que el proceso chromeUpdater accedió al archivo.

Captura

Mitigación

Con todos estos archivos exfiltrados, el atacante puede acceder a todas las contraseñas del navegador excepto si tienes guardadas tus contraseñas en un gestor de contraseñas como KeePass.

También podrías utilizar Firefox y guardar tus contraseñas ahí, ya que te ofrece ponerle una master password.

Esta entrada está licenciada bajo CC BY 4.0 por el autor.