Ploutus-D, un malware para cajeros automáticos Gabriela nicolao Bienvenidos y muchas gracias por asistir a esta charla denominada “Ploutus-d, un malware para cajeros automaticos”. Seguramente muchos de uds habran visto montones de noticias de ransomware como el ataque de wannacry del año pasado, también este año se habla mucho de criptominers que es la amenaza de la cual mas se habla este año que Ruth va a exponer en unas horas, pero de malware que ataca cajeros automaticos no se habla tanto, y es un tema bastante interesante ya que a diferencia de otras amenazas cibernéticas, esta ataca directamente a un dispositivo del cual se puede obtener dinero físico. Asi que la idea de la charla es introducirlos a una amenaza particular que se llama Ploutus-D y que se entienda un poco de que manera funciona. Me presento..
WhoamI Ingeniera y docente de la UTN. Especialista de la Facultad del Ejercito. Trabajo en el área de seguridad hace 5 años, en Deloitte. Entre otras tareas, realizo análisis de piezas de Malware (software malicioso). @rove4ever Soy Gabriela Nicolao, como ahí dice doy clases en la utn desde 2011 y parte de mi trabajo se basa en investigar diferentes tipos de amenazas cibernéticas y entender como funcionan. Antes de adentrarnos en lo que es Ploutus, me gustaría contarles de que maneras se puede vulnerar un cajero automatico. Los cajeros automaticos son básicamente computadoras que corren Windows, muchas de ellas aun corren XP, y tienen una caja fuerte o bóveda en la cual se guarda el dinero.
Formas de obtener dinero de un cajero Robando el cajero. Skimming (dispositivos físicos instalados en el cajero). Secuestrando a la víctima. Jackspotting (o “logical attacks”) Ploutus-D. Reverse ATM attack. Accediendo a la red del cajero a través del a red del banco. Robando el cajero (arrancándolo de la pared). Skimming: Bastante común, hace poco anduvo circulando un video. Tambien ponen teclados sobre los teclados. Secuestrando a la victima: Le paso a mi vieja Jackspotting: Que viene de jackspot que seria llevarse el premio grande, el pozo acumulado, y esta vinculado al uso de piezas de malware que permitan obtener dinero fácilmente. Reverse ATM attack: Fue un truco usado por gente de Rusia en el cual lograron robar 4M de cajeros y lo que hicieron fue tener unas “mulas” que son personas que trabajan para ellos las cuales crearon cuentas, depositaron plata y la sacaron inmediatamente con la finalidad de tener el recibo en el que constara el monto sacado y el numero que identifica la transacción. Esa información se la pasaban a otras personas que la usaban junto a unas terminales de PoS que habían sido previamente comprometidas en EEUU y republica checa para hacerle creer al banco que la operación de retirar dinero que había sido efectuada en Rusia, había sido cancelada en otro pais, no había sido concretada y valiéndose de la falta de controles entre el banco, VISA y Mastercard, lograban que le devuelvan la plata a la cuenta. Accediendo a la red del cajero: Este caso se refiere mas bien a un trabajo interno aunque por que no, puede pasar que alguien externo acceda, y consiste en hacerle creer a la maquina que se esta comunicando con un centro de procesamiento legitimo cuando en realidad pongo uno propio entonces las verificaciones que haga las va a hacer contra mi centro de procesamiento. Tambien se puede usar para instalar la pieza de malware, porque de otra manera el criminal tendría que tener acceso físico al cajero y abrirlo para instalar el malware, como vamos a ver a continuacion Como funciona un ATM https://omicrono.elespanol.com/2016/05/como-funciona-un-cajero-automatico/ Jackspotting: Combinacion entre elementos lógicos y físicos Jackspotting: https://www.wired.com/2014/11/nashville/ https://krebsonsecurity.com/2018/01/first-jackpotting-attacks-hit-u-s-atms/ Reverse ATM hack https://thehackernews.com/2015/11/atm-hacker.html Tipos de ataque https://www.kaspersky.com/blog/4-ways-to-hack-atm/13126/
Formas de obtener dinero de un cajero Bueno aca les muestro un video de un ataque muy avanzado que sucedió a un cajero en el cual primero se ve a la persona tratando de localizar un punto de entrada al cajero para poner lo que se conoce como payload o carga útil, que es lo que le va a permitir obtener el dinero del cajero, luego de mucha lucha logra encontrar el punto justo, y procede a poner el payload en la maquina para obtener el dinero y luego trata de correr el payload pero en realidad el que corre es el y bueno luego de un tiempo de que deja corriendo el payload, consigue su objetivo.
Historia de Ploutus Descubierto en Mexico en 2013. Variantes: Septiembre 2013: Backdoor.Ploutus Octubre 2013: Backdoor.Ploutus.B Octubre 2016: Ploutus.C Noviembre 2016: Ploutus-D Ploutus es un malware de cajeros automaticos descubierto en mexico en 2013, salieron un monton de noticias al respecto ya que causo y sigue causando mucho daño a las entidades bancarias y desde entonces le hicieron modificaciones que se conocen como variantes para ir perfeccionándolo y que siga siendo efectivo al correr los años. Como funciona? A grandes rasgos, Ploutus se instala a través en el cajero, el cajero se tiene que reiniciar para que sea efectivo el ataque. El ataque tiene una duración limitada de 24 horas luego de que es activado usando un id que solo sirve para ese periodo de tiempo. El malware conoce una serie de comandos o combinación de teclas que si alguien las ingresa el malware va a saber que acción tomar, por ejemplo, extraer dinero, el cual es el principal objetivo. La variante que voy a detallar a continuación es la ultima que se conoce, Ploutus d. y esta analisis surgio a través de un cliente de mi empresa en la cual de repente termino el dia y haciendo el arqueo se dio cuenta que los números no cerraban y durante la investigación se encontró esta amenaza corriendo el sistema. Backdoor.Ploutus Generates a random number and assigns it to the compromised ATM based on the current date at the time of infection Sets a timer to dispense money (the malware will only dispense money in the first 24 hours after it is activated) Dispenses money from the cassette with the most available bills https://www.symantec.com/connect/blogs/criminals-hit-atm-jackpot https://www.symantec.com/security-center/writeup/2013-101123-2819-99 Backdoor.Ploutus.B Incorporo idioma ingles. The binary name of the English version is “Ploutos.exe” instead of “PloutusService.exe” and has been changed from a standalone program to a modular architecture. Agrega NCRDRVP service que instala el servicio, hookea keyboard, load dispatcher dll, recibe comandos del keypad de atm y se lo manda al dispatcher. In recent cases, a mobile phone was physically installed inside the ATM’s housing. https://www.symantec.com/connect/blogs/backdoorploutus-reloaded-ploutus-leaves-mexico https://www.symantec.com/connect/blogs/criminales-ganan-la-loteria-mediante-cajeros-automáticos Ploutus.C http://www.virusradar.com/en/MSIL_Ploutus.C/description Ploutus.C appeared; this version controlled a specific software framework that managed ATMs regardless of the vendor. Ploutus-D https://www.fireeye.com/blog/threat-research/2017/01/new_ploutus_variant.html https://www.zingbox.com/blog/ploutus-d-malware-turns-atms-into-iot-devices/ Noticias: https://www.trendmicro.com/vinfo/us/security/news/cybercrime-and-digital-threats/diebold-nixdorf-ncr-corp-send-out-warnings-atm-jackpotting-attacks-us-Banks https://documents.trendmicro.com/assets/white_papers/wp-cashing-in-on-atm-malware.pdf
Ficha de Ploutus-d Propagación: CDs de booteo o dispositivo en puerto USB. Objetivos: Cajeros Diebold. Características: Recibe comandos por teclado o SMS. Desarrollado en .NET. Modular Muestras utilizadas en el análisis: 7fd109532f1e49cf074be541df38e0ce190497847fdb5588 767ca35b9620a6c2 (Diebold.exe, el launcher) E75e13d3b7a581014edcc2a397eaffbf91c3e5094d4afd81 632d9ad872f935f4 (AgilisConfigurationUtility.exe, el core) La forma de propagacion de la amenaza es a traves de un cd de booteo o conectando un dispositivo usb como un pendrive y luego como les comente rebooteando la maquina para que sea efectivo. En la victim se pudo ver en los logs que el Sistema habia sido rebooteado. Esta amenaza en particular esta variante ataca cajeros de la marca Diebold y como caracteristicas puede manejarse a traves de commandos de teclado o mensaje de texto, esta desarrollado en .net, el cual no es un dato menor ya que el codigo escrito en este lenguaje si no esta ofuscado es decir si alguien no dificulto su lectura, se puede ver casi tal cual el criminal lo codifico. Y es modular o sea que utiliza mas de un archive para realizer la infeccion, en este caso voy a describer dos que son los que contienen la funcionalidad de ploutus. Las muestras analizadas se expresan a traves de hashes, los hashes son funciones de una via que le das algo lo procesa y te genera una string alfanumerico de una longitude especifica que te permite identificar eso que pusiste es decir si corro la function 20 veces sobre el mismo archive y no sufrio ninguna modificacion las 20 veces me va a dar el mismo valor alfanumerico. It comes with a Launcher that attempts to identify and kill security monitoring processes to avoid detection. Ploutus es un malware que ataca cajeros automáticos (ATMs) descubierto en 2013 en Mexico. Este malware se propaga mediante la utilización de CDs de booteo introducidos en el lector del cajero automático, por lo cual generalmente es necesario tener acceso físico a los cajeros automáticos en backoffice. Los criminales interactúan con el cajero comprometido a través del malware, el cual utiliza la interfaz gráfica del cajero y les permite retirar dinero de los contenedores (cassettes o casetes). La familia de malware Ploutus está diseñada para recibir comandos, ya sea a través de un teclado o de un mensaje SMS. En el caso del mensaje SMS, un criminal deja conectado un teléfono celular en el cajero automático esperando comandos. En el caso del teclado, la lógica de Ploutus impide que cualquier persona tenga acceso a su uso. Solo aquellas personas que posean un identificador especial conocidas como “las mulas” están habilitadas para operar. El criminal que tiene acceso al backoffice instala Ploutus en el cajero y la mula que tiene el identificador especial accede a Ploutus y retira el dinero. El identificador puede estar basado en la fecha y la hora del momento de la infección. Una vez activado, solamente se puede retirar dinero durante las primeras 24 horas. También se puede pedir una reactivación del identificador. En noviembre de 2016, una variante de Ploutus fue subida al repositorio de VirusTotal y fue bautizada con el nombre de Ploutus-D por los analistas de seguridad, debido a que esta variante tiene como objetivo los cajeros de la marca Diebold. El análisis de este informe se basa en una muestra de Ploutus-D que afecto cajeros automáticos de nuestro cliente.
Desofuscando Ploutus-d Ofuscador: .NET Reactor (http://www.eziriz.com/dotnet_reactor.htm) Se aplico un programa desofuscador (de4dot), obteniendo los siguientes archivos: 53f223fbbeaf18fe70e0686aef7b9b6c10b7b0 03779ddfab9ffa0f50688adfae (Diebold.exe) 628c9d4906ff88a6ec61bf388086fed6dcf703 e4fef03b2c66267eb0f82250ff (AgilisConfigurationUtility.exe) Versiones anteriores de Ploutus usaban el ofuscador Confuser, pero estas muestras están ofuscadas con la herramienta .NET Reactor. https://www.symantec.com/connect/blogs/criminals-hit-atm-jackpot http://www.eziriz.com/
Launcher - Diebold.exe El launcher es el programa que va activar el core o nucleo de Ploutus que es el que tiene la principal función de extraer dinero. El archivo se llama Diebold.exe tiene las siguientes características The Launcher can receive different arguments in the command line to either install as a service, run Ploutus-D, or uninstall from the machine. Configuración de Diebold El funcionamiento de Diebold empieza con la función Main, la cual contiene detalles sobre su configuración. Sirve para instalar el servicio. What is InstallUtil EXE? If you're developing a Windows Service by using the .NET Framework, you can quickly install your service application by using a command-line utility calledInstallUtil.exe. If you're a developer who wants to release a Windows Service that users can install and uninstall you should use InstallShield.
Launcher - Diebold.exe Configuración Empieza con la función main como la mayoría de los programas y se pueden ver detalles de su configuración. Aca abajo hay unas líneas que dicen installutil.exe start Dieboldp… bueno, esta línea sirve para instalar un servicio, en este caso uno llamado doeboldp. Para que sirve un servicio? Configuración de Diebold El funcionamiento de Diebold empieza con la función Main, la cual contiene detalles sobre su configuración. Sirve para instalar el servicio. What is InstallUtil EXE? If you're developing a Windows Service by using the .NET Framework, you can quickly install your service application by using a command-line utility calledInstallUtil.exe. If you're a developer who wants to release a Windows Service that users can install and uninstall you should use InstallShield.
Launcher - Diebold.exe Servicio: DIEBOLDP Un servicio es un programa que se ejecuta en Segundo plano y corre como system y se puede configurar para que que comience cuando se inicia el Sistema operative. En este caso el launcher corre como un servicio llamado DIEBOLDP. Once the code is deobfuscated, it is easy to understand the internal workings. Before the Launcher execution starts, it will perform an integrity check on itself to make sure it has not been altered. The Launcher can receive different arguments in the command line to either install as a service, run Ploutus-D, or uninstall from the machine. Los servicios son programas que se ejecutan en segundo plano y se pueden configurar para que comiencen cuando se inicia el sistema operativo. En este caso, el archivo Diebold corre un servicio llamado DIEBOLDP Corre como system Viejo nombre de servicio NCRDRVPS
Launcher - Diebold.exe Mutex: DIEBOLDPL, Ploutos Tambien crea unos mutex de nombre DIEBOLDPL y Ploutos. Los mutex son objetos de sincronización que generalmente son usados por las piezas de malware para evitar reinfectar el mismo sistema. En este caso, Diebold verifica si existe el mutex DIEBOLDPL y si no existe, lo crea. También crea el mutex Ploutos. Otras variantes: Ploutos DIEBOLDPL KaligniteAPP
Launcher - Diebold.exe Persistencia HKLM\SYSTEM\CurrentControlSet\Services Tambien tiene mecanismo de persistencia. Los mecanismos de persistencia ayudan al malware o la amenaza a ejecutarse nuevamente en caso de que alguien apague la maquina y piensa que con eso se termino el problema. Si la volves a prender, se vuelve a activar el malware. En este caso para ganar persistencia modifica una llave de registro de Windows. los registros es una base de datos jerárquica que almacena los ajustes de configuración y opciones del sistema operativo Los malware modifican los registros de Windows para ganar persistencia en el sistema. Diebold registra el servicio DIEBOLDP en el registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services.
Launcher - Diebold.exe Persistencia HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon También modifica otro registro de Windows que es el siguiente y que también le va a permitir a la amenaza correr al inicio. el proceso Userninit que se encuentra en el registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon, el cual se encarga de iniciar las secuencias de comandos de inicio de sesión de usuarios (user logon scripts). Esto permite que Ploutus se ejecute automáticamente al iniciar el sistema a través del cmd.exe (Windows Command Prompt).
Launcher - Diebold.exe Comandos interpretados por el Launcher El launcher también interpreta comandos, en las capturas se puede ver que por ejemplo si el criminal ejecuta F8F2F2 va a ejecutar el método 3 y para saber que hace cada comando … Diebold usa una función para interceptar las instrucciones que vienen por teclado. Figura 14: Función CallNextHookEx usada por Diebold Espera ciertas combinaciones de teclas que sean ingresadas para realizar acciones predeterminadas:
Launcher - Diebold.exe Comandos interpretados por el Launcher Combinacion de teclas Posible significado F8F1F1 Muestra el mensaje TEST OK en los dos monitores del cajero F8F2F2 Inicializa AgilisShellStart.exe que se encuentra en C:\Program Files\Diebold\Agilis Startup\ F8F3F3 Ejecuta y cierra XFSConsole.exe con usuario Manage_ATM contraseña maracaibo F8F1F2F3F4 Ejecuta y cierra AgilisConfigurationUtility.exe (Ploutus core) con usuario Manage_ATM contraseña maracaibo F8F4F5 Cierra el proceso AgilisConfigurationUtility.exe (Ploutus) y lo vuelve a ejecutar con el parámetro “P” F8F4F4 Rebootea el sistema operativo (cmd.exe “/C wmic os where primary='true' reboot”) Aca tenemos el cuadro que indica las acciones que realiza XFSConsole.exe -> es Ploutus también Diebold usa una función para interceptar las instrucciones que vienen por teclado. Figura 14: Función CallNextHookEx usada por Diebold Espera ciertas combinaciones de teclas que sean ingresadas para realizar acciones predeterminadas:
Launcher - Diebold.exe Control remoto También tiene la capacidad de cerrar el proceso NHOSTSVC.exe (NetOp Helper Service for Windows NT) El proceso y archivo NHOSTSVC.EXE está asociado al programa NetOp Remote Control, que permite controlar el escritorio del sistema en forma remota. Y borra el archivo de log NetOp.LOG No es de Windows, es el log para guardar quien se logieo, averiguar Cerrar el proceso NHOSTSVC.exe y eliminar el archivo NetOp.LOG, el cual permite controlar remotamente los computadores. Iniciar y terminar el proceso Main.exe, usando el usuario administrador Manage_ATM y la contraseña maracaibo
Launcher - Diebold.exe Creación de archivos de Log Diebold crea dos archivos de logueo llamados Log.txt y Log2.txt que contienen las acciones realizadas por Ploutus.
Launcher - Diebold.exe Intenta correr como usuario Privilegiado Archivo Journal: edclocal.dat Usuario privilegiado Diebold intenta acceder con usuario privilegiado para realizar acciones en el sistema. El jornal permite tener consistencia de datos en un sistema de archivos Archivo Journal journaling is a capability which ensures consistency of data in the file system, despite any power outages or system crash that may occur. Diebold lee el archivo edclocal.dat que se encuentra en C:\Diebold\EDC\edclocal.dat (Electronic Data Capture Journal), busca unas cadenas específicas, y guarda información en el log Log de las transferencias de cajeros automáticos, para el arqueo
Core – AgilisConfigurationUtility.exe El nucleo del programa que tiene la principal función de extraer dinero. El archivo se llama agilisconfigurationutility.exe y tiene las siguientes características Configuración de Diebold El funcionamiento de Diebold empieza con la función Main, la cual contiene detalles sobre su configuración. Sirve para instalar el servicio. What is InstallUtil EXE? If you're developing a Windows Service by using the .NET Framework, you can quickly install your service application by using a command-line utility calledInstallUtil.exe. If you're a developer who wants to release a Windows Service that users can install and uninstall you should use InstallShield.
core - AgilisConfigurationUtility.exe Archivos de log: Log.txt y Log2.txt Para poder ingresar a la interfaz que permite interactuar con el core de Ploutus, es necesario ingresar una combinación especifica de letras“F” y un código de 8 dígitos valido. Como había mencionado anteriormente, se utilizan los archivos de log log.txt y log2.txt para grabar las acciones realizadas por el malware. Agilis contiene el mismo código que Diebold para escribir archivos de log. En el archivo de Log, se registran las acciones que realiza Agilis.
core - AgilisConfigurationUtility.exe Archivos de log: Log.txt y Log2.txt En el archivo de Log.txt se observa que Agilis obtiene dinero de los casetes 6, 5 y 3. El casete 4 arroja un error.
core - AgilisConfigurationUtility.exe Verificación de tiempo Agilis es efectivo durante un periodo determinado, por lo cual verifica que su ejecución se dé dentro de ese periodo. Como se observa en la captura utiliza el valor 86400 para calcular el periodo. Este valor representa la cantidad máxima de segundos en los cuales permanece activado, que pasado a horas da como resultado 24 hs. 86400/60 me da los minutos, si lo dividimos por 60 otra vez, da las horas y el numero que da es 24
core - AgilisConfigurationUtility.exe Errores Gramaticales Agilis contiene errores gramaticales. En la siguiente imagen se puede observar la palabra ALREADY escrita como ALEADY. También se observan las palabras Dispense y Dispenser escritas como Dispence y Dispencer respectivamente. La palabra casete (en español) o cassette (en inglés) se escribe en ocasiones como cassete.
core - AgilisConfigurationUtility.exe Archivo P.bin En el archivo Log.txt se puede observar que Agilis escribe el archivo P.bin, el cual contiene la MAC Address del sistema que es 00-27-0E-3A-B7-4C y la cadena PLOUTUS-MADE-IN-LATIN-AMERICA-XD.
core - AgilisConfigurationUtility.exe Comandos interpretados por Ploutus-D Tecla Significado F1 Genera ID del cajero automático F2 Activa ID del cajero automático F3 Provee el dinero F4 Desactiva la ventana de Ploutus F5 Tecla de control arriba F6 Tecla de control abajo F7 Tecla de control siguiente F8 Muestra en la pantalla del cajero la ventana de interacción de Ploutus para recibir comandos. También se puede usar como tecla de control atrás. Agilis espera ciertas combinaciones de teclas que sean ingresadas para realizar acciones ya predeterminadas, las cuales difieren de las encontradas en Diebold:
Conclusiones Los criminales deben tener acceso físico o a la red del cajero para infectarlo y vaciarlo. Los criminales son cada vez mas creativos a la hora de obtener dinero. Los criminales posiblemente serían personas de habla hispana: Se encontraron cadenas de palabras escritas en español. Se encontró la cadena “PLOUTUS-MADE-IN-LATIN-AMERICA-XD”. Se encontraron malas implementaciones de ciertas palabras de idioma inglés. La mayoría de las muestras de Ploutus-D que fueron subidas a VirusTotal, inclusive las usadas en este análisis, fueron subidas desde países latinos. Si bien se abrió la superficie de ataque, en un principio los países atacados eran latinos. Los cajeros son altamente vulnerables (al día de hoy muchos siguen usando Windows XP). Con esto quiero decir que los ataques no van a terminar de ocurrir.