Coqui: Malware bancario con propósito educativo

Coqui es un malware diseñado para activarse cuando un usuario visita un sitio web bancario. El malware comparará el título de la ventana con un conjunto de valores hardcodeados. Ese conjunto de valores se puede ampliar simplemente agregándolos a la variable banktitles:


Si un título de la ventana coincide, se inicia el keylogger, pero si no coincide, el malware simplemente seguirá ejecutándose a la espera.

Una vez que se inicia el keylogger, el malware guardará un archivo llamado db.txt en el directorio %TMP%.

El dropper asociado con este malware es simple: verifica todas las ventanas en ejecución para ver si tienen las palabras "Process" o "Administrador de tareas de Windows", ya que normalmente indican que el archivo se está analizando (por ejemplo, Process Hacker, Process Monitor , etc.), si alguna ventana tiene esto en su título, no continuará ejecutándose.
NOTA: Esta lista hardcodeada de procesos que se comprueba antes de continuar con la ejecución se puede ampliar cambiando la variable xprocesses:


Si no ve ninguno de estos procesos, verifica si la víctima ya está infectada buscando en el directorio %TMP% una lista de archivos.
- Si la víctima ya está infectada, el dropper enviará las pulsaciones de teclas recopiladas a un servidor remoto que se especifica en el segundo parámetro de la función Pigeon a través de peticiones GET.
- Si la víctima no está infectada, se copia a sí mismo en el directorio %TMP% con el nombre 01.exe y crea una tarea programada para ejecutarse cada 12 días a las 12:00 del mediodía. Finalmente, descarga el keylogger y lo renombra a ursakta.exe.

Antes de usar

Cambiar la dirección IP del servidor (segundo parámetro para la función Pigeon) así como la URL del archivo keylogger principal (primer parámetro para la función Pigeon). La función pigeon se llama en main:


Compilación

Cross-compile de Linux a Windows usando mingw:

64 bits (para el dropper): x86_64-w64-mingw32-gcc input.c -o output.exe -lurlmon -lwininet

32 bits (para el dropper): i686-w64-mingw32-gcc input.c -o output.exe -lurlmon -lwininet

64 bits (para keylogger): x86_64-w64-mingw32-gcc input.c -o output.exe

32 bits (para keylogger): i686-w64-mingw32-gcc input.c -o output.exe

ProcKill

Una vez que se inicia el monitor de ventanas (ProcKill), intenta eliminar el keylogger (usando el sistema (taskkill /F /T /IM keylogger.exe)) si no detecta que la ventana principal (la ventana en la que el usuario está trabajando actualmente ) está relacionada con algo de banca.

NOTA: Compara una lista hardcodeada de títulos relacionados con bancos con la ventana de trabajo actual, esta lista hardcodeada se puede ampliar simplemente agregando títulos de ventana:


La ventana de trabajo actual anterior es el símbolo del sistema, por lo que intenta eliminar el keylogger (en este caso, llamado svart.exe).


Ahora, la ventana actual de arriba es el sitio bancario de Wells Fargo, por lo que el keylogger se inicia y ProcKill verifica para asegurarse de que se esté ejecutando antes de volver a iniciarlo. Si ya se está ejecutando, imprime "[!] svart is already running!".


Si el usuario cambia su ventana de trabajo actual y el keylogger se está ejecutando, podemos ver el mensaje "SUCCESS", que indica que el keylogger fue eliminado debido a que el usuario cambió de ventana.


Y si se detecta una ventana como Process Hacker, el keylogger se abre y se sobrescribe, antes:


Después:


En lo que respecta al keylogger, es bastante básico, la forma en que extrae los datos registrados es enviando una solicitud GET a una dirección IP específica. Esa dirección IP debe tener un servidor Apache ejecutándose y registrando solicitudes GET. El archivo dropper.c es responsable de la exfiltración de datos y se programa para ejecutarse cada 12 días para exfiltrar los datos.

TODO

Agregar una función que compruebe constantemente los procesos relacionadas con creación de imágenes del sistema (como FTK) y, si lo encuentra, eliminar todos los procesos en ejecución relacionados con el malware y borrarlos.

DISCLAIMER

Este proyecto se realizó con fines de investigación. Todo lo que se haga con este código es responsabilidad de cada uno. El autor @1d8 y por supuesto tampoco nosotros somos responsables.

Proyecto: https://github.com/1d8/Coqui

Comentarios

  1. Vicente, cualquier dia nos propones hackear un banco con propósito educativo

    ResponderEliminar
    Respuestas
    1. Jajaja de hecho los propios bancos pagan ejercicios de red team. Siempre que sea de forma autorizada adelante. Lo que no vale es esconder las tácticas y técnicas porque los ciberdelincuentes seguirán utilizándolas, así que atacar para saber defenderse ;)

      Eliminar
  2. Hola Vicente, seria posible que explicaras un poco mas en detalle el proceso de ejecución. Es decir, hay que compilar todos los .c por separado y ejecutarlos posteriormente. Por lo que he visto en el código son independiente unos de otros¿verdad?.

    Gracias de antemano

    ResponderEliminar

Publicar un comentario