panda-security-PosCardStealer

El registro de miles de tarjetas de crédito y débito convierte a los Terminales de Punto de Venta en sistemas críticos, además de en un objetivo cada vez más deseable para los ciberdelincuentes por lo sencillo que supone atacar estos dispositivos de manera anónima desde internet y el lucro económico de vender en el “mercado negro” la información robada.

Desde PandaLabs, el laboratorio de Panda Security, investigan desde hace meses este tipo de robo en auge , como el ataque que afectó a cientos de restaurantes en Estados Unidos utilizando el malware llamado “PunkeyPOS”.  Ahora tenemos oportunidad de conocer más sobre este malware y como el laboratorio dio con “PunkeyPOS”.

Tras meses investigando una serie de ataques en TPVs (Terminales de Puntos de Venta) que afectan a otros cientos de bares, restaurantes y tiendas de EEUU, durante el análisis realizado desde PandaLabs de uno de los equipos atacados descubrieron que dicho equipo estaba atacado a su vez por otra banda utilizando el “PunkeyPOS”. En este artículo hablamos del ataque investigado estos meses y que está protagonizado por un malware de TPV llamado PosCardStealer.

PosCardStealer, un nuevo ataque PoS

El primer ataque que se ha podido analizar tuvo lugar el 30 de septiembre de 2015 y afectó a 30 TPVs.  El malware fue instalado utilizando PowerShell, la popular herramienta de Windows. Con dicha herramienta se ejecutaba un fichero (MD5: 0B4F921CF2537FCED9CAACA179F6DFF4), con siguiente fecha de creación interna de 2 días antes (28/09/2015 17:07:59) y compilado con Visual C++.

Este instalador se encarga de infectar el equipo con un malware diseñado específicamente para TPVs. Para hacer esto utiliza diferentes técnicas en función del software TPV instalado en el equipo. Concretamente, busca los procesos brain.exe (perteneciente a Dinerware) y scpwin.exe, e instala el malware de la siguiente forma en función de cuál de los 2 haya encontrado:

brain.exe: en este caso hace que sea el propio proceso del software de Dinerware el que cargue PosCardStealer. Para ello modifica un par de claves del registro de Windows.

POSCARDSTEALER 1

Los pasos que lleva a cabo son:

  1. Habilitar la carga de DLLs automática llamando a ENABLE_LOADAPPINIT_DLLS (0x004017A0) modificando la siguiente clave de registro:

SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows LoadAppInit_DLLs = 1

  1. Si se modifica con éxito la clave anterior, se instala PosCardStealer en:

C:\Windows\utils.dll

  1. A continuación, se llama a SET_APPINIT_DLLS (0x00401850) para añadir la ruta de esta nueva DLL al registro de forma que se cargue automáticamente:

SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows AppInit_DLLs = C:\Windows\utils.dll

  1. Finalmente, se ejecuta de nuevo el software de terminal POS (“brain.exe”); el cual cargará la DLL recién instalada.
  • exe: en este caso se utiliza una técnica conocida como “DLL hijacking”. Tras encontrar el scpwin.exe en el sistema atacado, copiará la dll “Cdrvhf32.dll” (legítima) del directorio de sistema de Windows a la carpeta donde se encuentra la misma aplicación. A continuación, parchea (modifica) la DLL copiada para que desde ella se cargue PosCardStealer (utils.dll).

En la siguiente captura de pantalla podemos ver el pseudo-código encargado de realizar esta tarea:

 

POSCARDSTEALER 2

A continuación se describen los pasos llevados a cabo por esta rutina:

  1. Se comprueba que en la carpeta del software de POS “spcwin.exe” no exista el fichero “utils.dll” o “ccutils.dll”;
  2. En el caso de no encontrar estas DLLs se “parcheará” la librería “%windir%\system32\Cdrvhf32.dll” y se copiará a la carpeta de “spcwin.exe”.
  3. Si se consigue “parchear” con éxito la librería “Cdrvhf32.dll”, se copiará además la DLL maliciosa “utils.dll” a la carpeta de “spcwin.exe”. La librería “Cdrvhf32.dll” parcheada poseerá la misma funcionalidad que la original, y además ejecutará un código “extra”: la carga de la librería maliciosa “utils.dll”
  4. Seguidamente, las fechas de creación/acceso/modificación de las librerías “cdrvhf32.dll” y “utils.dll” se actualizarán con la fecha “spcwin.exe”
  5. Para finalizar, se ejecutará el “export” _Setup@16 de la librería “utils.dll” desde la rutina REGISTER_DLL_RUNDLL_SETUP.

 

Esta variante de PosCardStealer (MD5: 81060E53D233711507F60C446418AFC6) está compilada en Visual C++ y tiene la siguiente fecha interna: 27/09/2015 12:26:09. Todo esto -más algunas otras evidencias en poder del laboratoiro- apunta a que los ejemplares de malware aquí analizados fueron creados específicamente para atacar a estas víctimas.

Una característica común en todos los equipos atacados es que tenían instalado el software de LogMeIn. Este software es muy popular y es utilizado habitualmente para acceder de forma remota a equipos. En el caso de TPVs puede ser utilizado, por ejemplo, por la misma empresa que provee de los TPVs a restaurantes para poder realizar labores de actualización, mantenimiento, etc.

LogMein: ataques de forma remota

Aunque el uso de LogMeIn podría ser anecdótico, en este caso descubrimos que era algo relevante: apenas mes y medio después del ataque que descrito, se lanzó un ataque a gran escala a través de LogMeIn. En este caso, a los 30 TPVs infectados el 30 de septiembre, se sumaron cientos de nuevos TPVs. Todos ellos en Estados Unidos y en su mayor parte pertenecientes a bares y restaurantes de todo tipo.

En este nuevo ataque se utilizó el malware Multigrain, analizado anteriormente. El ataque comenzó el día 13 de noviembre a las 22:09 (GMT) y necesitó únicamente 10 minutos para infectar a todas sus víctimas. Este era el proceso utilizado para llevar a cabo la infección:

–          Conectarse a través de LogMeIn con el objetivo.

–          Utilizar LogMeIn para descargar un ejecutable (wme.exe, MD5: A0973ADAF99975C1EB12CC1E333D302F, una variante de Multigrain).

–          Ejecutar un script mediante LogMeIn. Este script llama al cmd.exe, que a su vez ejecuta el wme.exe.

Sólo 14 horas más tarde, lanzaron un ataque aislado contra una de las máquinas. Este ataque instalaba una nueva versión de Multigrain (MD5: A3B944454729EA13AD847D01FFAC556A). Tras media hora –suponemos que para verificar que todo funcionaba correctamente- replicaron el ataque contra todas las víctimas, que de nuevo se realizó de forma automatizada, por lo que tras 10 minutos todas las máquinas estaban infectadas con esta nueva versión del malware.

Durante meses estos equipos estuvieron comprometidos por este ataque. Cuando los responsables de los TPVs se dieron cuenta del ataque y limpiaron los TPVs, los atacantes volvieron a la carga utilizando de nuevo LogMeIn para ello, instalando una nueva variante de Multigrain (MD5: 4C722EA25EC857E1A7E73DE5886F9299).

Debemos tener en cuenta que el ataque mediante LogMeIn no es debido a un problema de seguridad de dicho software, sino a que los atacantes, al tener comprometidos previamente los equipos, tenían las credenciales necesarias para poder hacerse pasar por los usuarios legítimos. Aconsejamos a los usuarios de LogMeIn a seguir las indicaciones que tienen publicadas en este documento.

Consejos para evitar ciberataques

Finalmente, recordar que no hay que bajar la guardia. Este tipo de ataque permite robar información de miles de tarjetas de crédito y débito de forma sencilla. Los TPVs son sistemas críticos y como tales deben ser protegidos.  En caso de que sea imprescindible utilizar sistemas de acceso remoto éstos deben tener activadas todas las medidas de seguridad disponibles (doble factor de autenticación, restricción de direcciones IP que pueden conectarse, etc.). Además, se debe tener un control de todos los programas que se ejecuten en dichos terminales.

Recordar que la prevención y el conocimiento del entorno es poder y la mejor manera de obtenerlo es contar con una solución de ciberseguridad avanzada. En el caso de contar con Adaptive Defense, activando el modo “Lock” nos aseguramos de que ningún proceso desconocido pueda ser ejecutado, manteniendo a salvo vuestra información y la de vuestros clientes.