Our analysis of a recent version of a previously reported info-stealing Android malware, delivered through an ongoing SMS campaign, demonstrates the continuous evolution of mobile threats. Masquerading as a banking rewards app, this new version has additional remote access trojan (RAT) capabilities, is more obfuscated, and is currently being used to target customers of Indian banks. The SMS campaign sends out messages containing a link that points to the info-stealing Android malware. The malware’s RAT capabilities allow the attacker to intercept important device notifications such as incoming messages, an apparent effort to catch two-factor authentication (2FA) messages often used by banking and financial institutions. The malware’s ability to steal all SMS messages is also concerning since the data stolen can be used to further steal users’ sensitive info like 2FA messages for email accounts and other personally identifiable information (PII).
Figure 1. Typical SMS campaign attack flow
Our investigation of this new Android malware version started from our receipt of an SMS message containing a malicious link that led us to the download of a fake banking rewards app. The fake app, detected as TrojanSpy:AndroidOS/Banker.O, used a different bank name and logo compared to a similar malware reported in 2021. Moreover, we found that this fake app’s command and control (C2) server is related to 75 other malicious APKs based on open-source intelligence. Some of the malicious APKs also use the same Indian bank’s logo as the fake app that we investigated, which could indicate that the actors are continuously generating new versions to keep the campaign going.
This blog details our analysis of the recent version’s capabilities. We strongly advise users never to click on unknown links received in SMS messages, emails, or messaging apps. We also recommend seeking your bank’s support or advice on digital options for your bank. Further, ensure that your banking apps are downloaded from official app stores to avoid installing malware.
Observed activity
What the user sees
We have seen other campaigns targeting Indian banks’ customers based on the following app names:
Axisbank_rewards.apk
Icici_points.apk
Icici_rewards.apk
SBI_rewards.apk
Our investigation focused on icici_rewards.apk (package name: com.example.test_app), which presents itself as ICICI Rewards. The SMS campaign sends out messages containing a malicious link that leads to installing a malicious APK on a target’s mobile device. To lure users into accessing the link, the SMS claims that the user is being notified to claim a reward from a known Indian bank.
Figure 2. The text message with a malicious link sent to users
Upon user interaction, it displays a splash screen with the bank logo and proceeds to ask the user to enable specific permissions for the app.
Figures 3 and 4. App installed on the Android device. The app asks users to enable permissions on text messaging and contacts, to name a few
The fake app asks for credit card information upon being granted all permissions. This should raise users’ suspicions on the app’s motive as apps typically ask for sensitive information only through user-driven transactions like paying for purchases.
The app displays another fake screen with further instructions to add to its legitimacy once users supply the information needed.
Figures 5 and 6. A fake page where the app asks users to provide information, and the resulting message once data is added
What happens in the background
Analyzing the XML file AndroidManifest further identifies the entry points of the malware along with the permissions requested. It also defines services that can run in the background without user interaction. The app uses the following permissions:
READ_PHONE_STATE
ACCESS_NETWORK_STATE
READ_SMS
RECEIVE_SMS
READ_CALL_LOG
FOREGROUND_SERVICE
MODIFY_AUDIO_SETTINGS
READ_CONTACTS
RECEIVE_BOOT_COMPLETED
WAKE_LOCK
The malware uses MainActivity, AutoStartService, and RestartBroadCastReceiverAndroid functions to carry out most of its routines. These three functions interact to ensure all the malware’s routines are up and running and allow the app to remain persistent on the mobile device.
MainActivity
MainActivity, also called the launcher activity, is defined under com.example.test_app.MainActivity. It is launched first after installation to display the fake app’s ICICI splash screen. This launcher activity then calls OnCreate() method to check the device’s internet connectivity and record the timestamp of the malware’s installation, and Permission_Activity to launch permission requests. Once the permissions are granted,Permission_Activity further calls AutoStartService and login_kotak.
Figure 7. Actions under MainActivity
The class login_kotak is responsible for stealing the user’s card information. It shows the fake credit card input page (Figure 5) and temporarily stores the information in the device while waiting for commands from the attacker.
Figure 8. login_kotak class steals card information and other personally identifiable information (PII)
AutoStartService
AutoStartService, themain handler of the malware, functions based on the commands it receives. The handler provides the malware with the following capabilities:
Enforcing its RAT commands
This malware’s new version adds several RAT capabilities that expands its information stealing. It enables the malware to add call log uploading, SMS message and calls interception, and card blocking checks.
Figure 9. Code comparison of 2021 (left) and 2022 (right) samples
These commands are described below.
Command Name
Description
all_sms_received
Flags to enable/disable SMS upload
all_call_received
Flags to enable/disable call log upload
silent
Put the mobile device on silent
block
Checks if the user’s card is blocked
sms_filter
Filters SMS based on strings (defaults to “ICICI”)
online
Checks if the user has an active internet connection
force_online
Uploads received SMS messages to the C2 server
is_online
Checks if the device is connected to the C2 server
force_calls
Uploads call logs to the C2 server
The silent command, which the malware uses to keep the remote attacker’s SMS sending activities undetected, stands out from the list of commands. Many banking apps require two-factor authentication (2FA), often sent through SMS messages. This malware enabling an infected device’s silent mode allows attackers to catch 2FA messages undetected, further facilitating information theft.
Figure 10. This code is responsible for turning the mobile device’s silent mode on
Encryption and decryption of SMS messages
In addition to encrypting all data it sends to the attacker, the malware also encrypts the SMS commands it receives from the attacker. The malware decrypts the commands through its decryption and decoding modules. The malware uses a combination of Base64 encoding/decoding and AES encryption/decryption methods.
Figure 11. The malware’s encoding and decoding modules, as seen in its code
Stealing SMS messages
The malware steals all SMS messages from the mobile device’s inbox. It collects all received, sent, read, and even unread messages. Collecting all SMS messages might allow attackers to use the data to expand their stealing range, especially if any messages contain other sensitive information such as SMS-based 2FA for email accounts, one’s personal identification like the Aadhar card commonly used in India, or other financial-related information.
Figure 12. Code used to steal all SMS messages
Uploading all call logs
The malware also uploads call logs stored on the mobile device. This data may be used for the attacker’s surveillance purposes.
Figure 13. The malware code for stealing call logs
Communicating with its C2
This malware uses the open-source library socket.io to communicate with its C2 server.
Figure 14. Code showing the malware’s C2 server connection
RestartBroadCastReceiver
The malware also uses the Android component RestartBroadcastReceiver, which functions based on the type of events received by the mobile device. This receiver launches a job scheduler named JobService, which eventually calls AutoStartService in the background. The receiver reacts when the device is restarted, if the device is connected to or disconnected from charging, when the device’s battery status changes, and changes in the device’s Wi-Fi state.RestartBroadcastReceiver ensures that the main command handler AutoStartService is always up and running.
Figure 15. How the Receiver starts AutoStartService
Mitigating the fake app’s unwanted extras
This malware’s continuing evolution highlights the need to protect mobile devices. Its wider SMS stealing capabilities might allow attackers to the stolen data to further steal from a user’s other banking apps. Its ability to intercept one-time passwords (OTPs) sent over SMS thwarts the protections provided by banks’ two-factor authentication mechanisms, which users and institutions rely on to keep their transactions safe. Its use of various banking and financial organizations’ logos could also attract more targets in the future.
App installation on Android is relatively easy due to the operating system’s open nature. However, this openness is often abused by attackers for their gain. Apart from exercising utmost care when clicking on links in messages and installing apps, we recommend that users follow these steps to protect their devices from fake apps and malware:
Download and install applications only from official app stores.
Android device users can keep the Unknown sources option disabled to stop app installation from unknown sources.
Microsoft researchers found multiple vulnerabilities in OpenVPN that could lead to an attack chain allowing remote code execution and local privilege escalation. This attack chain could enable attackers to gain full control over targeted endpoints, potentially resulting in data breaches, system compromise, and unauthorized access to sensitive information.
Microsoft discovered a vulnerability pattern in multiple popular Android applications that could enable a malicious application to overwrite files in the vulnerable application’s internal data storage directory, which could lead to arbitrary code execution and token theft, among other impacts. We have shared our findings with Google’s Android Application Security Research team, as well as the developers of apps found vulnerable to this issue. We anticipate that the vulnerability pattern could be found in other applications. We’re sharing this research more broadly so developers and publishers can check their apps for similar issues, fix as appropriate, and prevent them from being introduced into new apps or releases.
Microsoft, in collaboration with OpenAI, is publishing research on emerging threats in the age of AI, focusing on identified activity associated with known threat actors Forest Blizzard, Emerald Sleet, Crimson Sandstorm, and others. The observed activity includes prompt-injections, attempted misuse of large language models (LLM), and fraud.
Microsoft has observed ongoing activity from mobile banking trojan campaigns targeting users in India with social media messages and malicious applications designed to impersonate legitimate organizations and steal users’ information for financial fraud scams.