Recientemente Josehp Rodriguez, experto consultor en seguridad, hizo público que logró hackear algunos cajeros automáticos únicamente utilizando su celular y una app que él mismo desarrolló. Revela que logró obtener acceso a los datos almacenados en el cajero, bloquear o inhabilitar operaciones e incluso retirar dinero del mismo cajero automático.
Es por ello que nos dimos a la tarea de estudiar, analizar y compartir el funcionamiento a detalle de este tipo de ataque, a fin de prevenir y concientizar a los bancos de este tipo de ataques.
¿Qué utilizó para realizar el hackeo?
Como bien se mencionó anteriormente, únicamente necesitó de un dispositivo móvil y de una aplicación desarrollada por el mismo. Sin embargo, esto no fue lo único, ya que el dispositivo móvil tenía la tecnología NFC.
NFC significa Near Field Communication, o Comunicación de Campo Cercano en español, la cual es utilizada para transmitir datos de forma inalámbrica a una distancia muy corta que generalmente es utilizada para realizar pagos, transferencias de archivos o conectarte a una red inalámbrica. Al ser una tecnología tan versátil, no es imposible imaginarse que puede ser utilizada para muchas más aplicaciones.
En este caso, fue utilizada para enviar los datos de la app maliciosa hacia el cajero automático de forma inalámbrica, ya que como sabemos, el cajero automático se encuentra conectado a la red interna del banco, por lo tanto, y por cuestiones de operatividad, también se necesita de los adaptadores inalámbricos para cualquier fallo físico que pueda presentar, entonces, nombraremos a estos adaptadores como el vector de ataque principal del hacker, ya que es en donde se establece un canal de comunicación entre ambas partes.
¿Cuál es el contenido de la app utilizada?
Ahora bien, no únicamente se necesita de un canal de comunicación, si no se tiene acceso a la información o no se pueden enviar los datos correctos, no se podrá obtener nada más que una conexión vacía.
Es aquí donde entra la app desarrollada por el experto, y de la que se explica paso a paso el ataque y el funcionamiento de la app:
1.- Como primer paso, se necesita obtener el control del cajero automático, o bien, por lo menos poder ejecutar código dentro del mismo, es decir, nuestra app. Para ello se utiliza el teléfono móvil con NFC, con el que se envían miles y miles de paquetes hacia el cajero automático.
2.- El ATM en su procesador central tiene una memoria que utiliza una estructura de datos llamada “cola” para almacenar todas las peticiones o paquetes de información que recibe y así poder atenderlas en el orden correcto. Sin embargo, dicha memoria no es infinita, por lo que llega un punto en el que la memoria que guarda las peticiones se desborda y el cajero pierde funcionalidad, debido a que una parte central se encuentra inoperativa.
3.- Una vez que se hubo desbordado la memoria, nos deja el camino libre para ejecutar nuestro código malicioso, ya que hemos corrompido el funcionamiento normal y ahora nos permite ejecutar el código aprovechándose del estado de la máquina, ya que seguramente está tratando de ejecutar un código de emergencia para restablecer la memoria.
4.- Al tratar de ejecutar dicho código de emergencia tenemos dos opciones: o bien ejecutamos nuestra app junto con el código de emergencia, o en nuestra propia app restablecemos la memoria y después ejecutamos el código malicioso.
5.- Una vez que el código puede ser ejecutado, necesitamos obtener los privilegios necesarios para realizar las operaciones que queramos. Para ello buscamos una elevación de privilegios en el propio ATM.
6.- Generalmente los sistemas operativos de los cajeros automáticos son Windows o similares como UNIX, Linux y algunos basados en los anteriores. Por lo que no es muy diferente de tratar de escalar privilegios en una máquina personal. Es por ello que pueden presentar vulnerabilidades ya conocidas debido a que es un software ya viejo o que no es actualizado correctamente.
7.- Finalmente, ya con los permisos necesarios, podemos extraer información o realizar operaciones como transferencias electrónicas o retiro de efectivo.
Como se puede entender, es bastante “sencillo” vulnerar un ATM, ya que como se reitera, son máquinas con software obsoleto o que no es actualizado constantemente, además de que no se cuentan con las suficientes medidas necesarias para prevenir y actuar de forma correcta ante este tipo de ataques que van dirigidos directamente hacia la memoria u otros periféricos.