Kaspersky Lab researchers have found a detailed malware which targets automated teller machines (ATM). The new malware is capable of draining all the available cash stored in the ATMs.
The malicious threat is called ATMii and it was first noticed about six months ago. The malware includes an injector module (exe.exe) and the module to be injected (dll.dll), and hackers need direct access to a target ATM (either over the network or physically) to install it.
While analyzing the ATMii malware, the experts found that the injector, an unprotected command line application, was written in Visual C with a fake compilation timestamp of four years ago. The threat includes support for a Windows version more recent than Windows XP, which is the platform of the most ATMs.
The injector targets the proprietary ATM software process called atmapp.exe to inject the second module into it. Nevertheless, it turns out that the injector is rather poorly written as it’s dependent on a number of parameters and catches an exception if no parameter is given.
The supported parameters feature /load, which attempts to inject dll.dll into atmapp.exe, /cmd, which creates or updates the C:\ATM\c.ini file (which is used by the injected DLL to read commands), and /unload, which attempts to unload injected library from atmapp.exe process, while restoring its state.
Via the available commands, the malware can scan for the CASH_UNIT XFS service, can dispense a desired amount of cash (where the “amount” and “currency” are used as parameters), retrieve information about ATM cash cassettes and write it to the log file, and remove the C:\ATM\c.ini file.
The injected module tries to find the ATM’s CASH_UNIT service id, as it cannot function without this service. Once it finds it, the module stores the result and starts passing all further calls to a function in charge of reading, parsing, and executing the commands from the C:\ATM\c.ini file.
“ATMii is yet another example of how criminals can use legitimate proprietary libraries and a small piece of code to dispense money from an ATM. Some appropriate countermeasures against such attacks are default-deny policies and device control. The first measure prevents criminals from running their own code on the ATM’s internal PC, while the second measure will prevent them from connecting new devices, such as USB sticks,” Kaspersky Lab states.