El siguiente post es una traducción del texto realizado por David Harley y Aleksandr Matrosov, especialistas de seguridad de ESET, y publicado en el blog de ESET en inglés donde se refieren a una nueva metodología utilizada por la botnet Zeus.
Durante una investigación de fraude, junto con el Grupo-IB, en un servicio de banca remota, nuestros colegas en Rusia analizaron una serie de muestras enviadas por por los expertos en informática forense del Grupo-IB. En la superficie, lo que estaban viendo era más o menos lo estándar: El troyano Zbot, que ha sido descrito muchas veces, pero decidieron investigar un poco más allá, y fueron recompensados al detectar algunas características bastante inusuales del código en cuestión. La botnet Zeus es dañina e interesante y altamente adaptable, con un interés malsano en diversas operaciones financieras llevadas a cabo desde una máquina infectada, como la banca en línea.
El agente Zbot comprueba continuamente las páginas Web visitadas de un sistema afectado, mediante la intercepción de las funciones API de Windows. Si una conexión SSL se hace a los recursos que contienen datos de interés, que realiza las siguientes acciones:
- Análisis de la consulta para la cadena de nombre de la plantilla usuario y contraseña = * = *.
- Análisis de cadena de consulta para la plantilla / bsi.dll /? T =
Si tienen éxito las plantillas inician un procedimiento para registrar las pulsaciones de teclado y los clics del ratón, así como los procedimientos para realizar capturas de pantalla (más información se escribe en un archivo separado y se envía al servidor malicioso). Sin embargo, comportamientos como éste han sido observado en otras versiones de Zeus. El descubrimiento verdaderamente interesante en este caso se asocia con la forma en la que estas muestras buscan dispositivos lógicos conectados a un ordenador infectado. Zbot busca un archivo que, por lo general, contiene las claves del cliente para el inicio de sesión autorizado, utilizados en la banca en línea y, si se encuentra el archivo, una copia será enviada al servidor, junto con unas cuantas cosas más que no se desearía que un criminal supiera sobre nosotros:
- Información sobre los dispositivos conectados y los datos de tarjeta inteligente
- Pulsaciones de teclas e información de los clic del ratón, grabados y transferidos al servidor en un archivo separado
- Las cookies
Descripción del módulo de soporte para tarjetas inteligentes de Zeus
La funcionalidad de Zeus se ha actualizado con un nuevo módulo que puede gestionar los flujos de información entre varios dispositivos de tarjetas inteligentes y varios dispositivos especiales de lectura. Debido al hecho de que la arquitectura del subsistema de soporte para tarjetas inteligentes en los sistemas operativos Windows tiene una estructura bastante complicada, implicando un sistema multinivel de los controladores, el módulo ha sido cuidadosamente elaborado y estructurado (img. 1).
Imagn. 1 - Soporte de tarjeta inteligente arquitectura de subsistema
Este módulo, que trabaja al nivel de la API de la SmartCard, se basa en la interacción con el Administrador de Recursos (Resource Manager). Este último puede manejar el control de acceso a dispositivos de lectura diversos y tarjetas inteligentes trabajando simultáneamente. De hecho, el seguimiento y gestión de tarjetas inteligentes conectadas podría llevarse a cabo de dos maneras:
- inspeccionar y registrar el estado actual del dispositivo de lectura;
- por medio del malhechor activamente manipulando el proceso.
Adquisición de información de sistema de las tarjetas inteligentes
Este módulo determina si un dispositivo de lectura especial está conectado o no. También inspecciona y registra los cambios completados, almacenando esa información en la estructura SCARD_READERSTATE. Esta estructura contiene el nombre del dispositivo, el estado actual del programa y del hardware, y los atributos de la tarjeta.
Esta estructura se almacena en la memoria del proceso en un desplazamiento aleatorio, y después se envía a través del canal de la red entre la computadora del atacante y la máquina infectada.
En su forma original posee el siguiente aspecto:
Control remoto del dispositivo de lectura
Basándose en la información recogida, el atacante es capaz de generar una secuencia de escape de las actividades de la tarjeta inteligente, que se envía a través del canal de la red como ya se ha descrito. Esta secuencia está destinada a ser almacenada y manipulada en la máquina infectada. Esto significa que hay un elemento de interpretación de las funciones de la biblioteca Winscard.dll: el malware convierte la secuencia de escape en una secuencia correspondiente de llamadas a la API.
- SCardGetStatusChangeA
- SCardStatusA
- SCardDisconnect
- SCardControl
- SCardEstablishContext
- SCardListReadersA
- SCardListReadersA
- SCardConnectA
- SCardBeginTransaction
- SCardEndTransaction
- SCardTransmit
- SCardGetAttrib
Esto se muestra esquemáticamente en la figura 2:
Figura 2: La funcionalidad del módulo de la tarjeta inteligente a nivel de la API
El código es su forma original se ve de la siguiente forma:
Utilizando la funcionalidades básicas de las API's de las tarjetas inteligentes, el atacante puede seleccionar el dispositivo de lectura adecuado y conectarse a una determinada tarjeta inteligente, puede leer y escribir datos en la tarjeta inteligente, y podrá utilizar algunas funciones especiales previstas por la tarjeta inteligente, por ejemplo, el procesamiento de una contraseña de entrada o la generación de una secuencia de caracteres al azar.
El resultado del proceso se guarda y se envía al malhechor con el fin de corregir la secuencia de escape. Esquemáticamente esta interacción podría ser como se ilustra en la siguiente figura.
Más información sera agregada a su debido momento.
David Harley
Aleksandr Matrosov