Self Assessment

ANDROID MALWARE POSING AS INDIAN BANK APPS

Published On : 2025-07-25
Share :
ANDROID MALWARE POSING AS INDIAN BANK APPS

ANDROID MALWARE POSING AS INDIAN BANK APPS

EXECUTIVE SUMMARY

At CYFIRMA, we are committed to delivering timely intelligence on emerging cyber threats and adversarial tactics targeting individuals and organizations. This report presents an in-depth analysis of a malicious Android application designed to impersonate legitimate Indian banking apps to facilitate credential theft, surveillance, and unauthorized financial activity. The malware leverages advanced techniques such as silent installation, abuse of Android permissions, and remote command execution to evade detection and maintain persistence, using Firebase for command-and-control (C2) operations and phishing pages to mimic genuine banking interfaces and deceive users. By dissecting both static and dynamic behaviors, this report aims to raise awareness and strengthen defenses against mobile banking threats.

INTRODUCTION

The malware operates through a modular architecture involving a dropper and a main payload, using deceptive UI, silent installation mechanisms, and extensive abuse of Android permissions. The below analysis reveals the malware’s capabilities, including SMS interception, data exfiltration, debit card data harvesting, call forwarding abuse, and remote command execution. Firebase infrastructure is used for C2 operations, while stealth techniques such as hidden launcher activities help evade detection. The malware’s use of social engineering, permission exploitation, and persistent behaviors poses significant threats to mobile banking security. This report highlights key behaviors, permissions, and infection tactics, offering crucial insights for defenders and analysts tracking mobile threats.

STATIC ANALYSIS

Permissions of a Dropper

The malicious banking APK (Dropper) requests the following Android permissions, which enable key functions used for reconnaissance, persistence, and privilege escalation:

android.permission.ACCESS_NETWORK_STATE
This permission allows the application to monitor network connectivity and determine if a device is connected to Wi-Fi or mobile data. Malicious actors use this to ensure payload delivery or data exfiltration occurs only when a stable connection is available, minimizing detection risk.

android.permission.REQUEST_INSTALL_PACKAGES
This highly sensitive permission enables the app to prompt installation of additional APKs from unknown sources. In malicious campaigns, it is commonly abused to drop secondary payloads or malware components once initial access is gained, often without the user’s awareness.

android.permission.QUERY_ALL_PACKAGES
This permission grants visibility into all installed apps on the device. Threat actors exploit it to profile the device, identify security apps or banking apps, and tailor attacks accordingly (e.g., overlay attacks or credential harvesting on specific targets like banking apps).

Fig: Permissions of a Dropper

Silent Installation Mechanism Used by Android Banking Droppers to Deliver Payload
A Malicious Android dropper loads a hidden APK or base Payload (app-release.apk) from the app’s assets folder and writes it to external storage. It then uses FileProvider to generate a URI and prompts the user to install the secondary APK using an intent. The INSTALL_NOW flag triggers the entire process without further user interaction. This behavior is often seen in banking Trojans to deliver the main malware payload after initial infection – such tactics help malware bypass app store checks and deceive users into enabling unauthorized installations.

Fig: Silent Main APK Installer

Abuse of Permission Activity

The PermissionActivity is used to request the REQUEST_INSTALL_PACKAGES permission, allowing the malware to install further payloads. On devices running Android 8.0 (API 26) and above, if the permission isn’t already granted, the user is redirected to the “Manage Unknown App Sources” settings page for the app, tricking them into allowing installations from unknown sources. A delay is introduced using a handler to wait and then reattempt the process. Once permission is granted, the malware silently launches the MainActivity, passing an INSTALL_NOW flag to execute the main payload dropper routine, enabling the APK installation in the background.

Fig: Permission Request Flow

Permissions of a Main Payload:

The main APK requests the following Android permissions, which support key malicious activities such as data theft, persistence, and stealthy operation:

READ_SMS: Allows the app to read incoming SMS messages, which can be used to steal OTPs, 2FA codes, or other sensitive information.

SEND_SMS: Grants the ability to send SMS messages. This can be exploited to spread malware or take control of banking apps by verifying the device through outgoing OTP messages.

RECEIVE_SMS: Enables interception of incoming SMS messages. Used to monitor, steal, or silently suppress verification messages.

REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: Used to bypass battery-saving restrictions. Ensures persistent background activity without being killed by the system.

READ_PHONE_STATE: Provides access to phone details like network, call status, call forwarding, execute USSD code, make a call, and IMEI. It can aid in device fingerprinting and user tracking.

READ_PHONE_NUMBERS: Allows access to the phone’s own number(s). used for identifying the user or linking device data.

POST_NOTIFICATIONS: Enables capturing notifications. May be used for phishing, fake alerts, capturing OTP, or persistent presence

RECEIVE_BOOT_COMPLETED: Triggers app restart after device boot. Ensures the malware runs automatically upon reboot for persistence.

Fig: Permissions of the main payload

Main Payload

The main payload deliberately hides itself from the user’s app list by setting its activity category to INFO instead of the usual LAUNCHER, which means the app runs silently in the background without showing any icon, making it invisible to the user. This technique is commonly used by malware to stay hidden and avoid detection while remaining active.

Fig: Hidden App

Modular Class Functions Enabling Credential Theft and Persistence in Malicious APK

Separate classes are implemented within the malware to carry out specific malicious tasks. For example, the Account class is responsible for harvesting sensitive user credentials, while the Debit class focuses on collecting debit card information. Additionally, the AutostartHelper class is designed to ensure persistence by enabling the malware to automatically restart upon device boot, maintaining its persistence on the user’s device.

Fig: Modular Class Functions

Data Theft

The main payload’s phishing page mimics a legitimate banking app by validating user inputs. It first checks that the entered phone number is at least 10 digits long, displaying an error message if the requirement is not met. Next, it verifies that the MPIN (mobile PIN) contains at least 4 digits, alerting the user if it falls short. Overall, it enforces basic input validation similar to a genuine banking application to appear authentic and capture user data effectively.

Fig: User Input Validation

Debit card stealer

This malicious Android app is designed to steal debit card information. It checks if the CVV is exactly 3 digits, the card number is 19 characters long, and the ATM PIN is 4 digits. If any condition fails, it shows a warning message using a toast and stops further execution.

Fig: Debit Card Input Validation

Data Exfiltration

The malicious APK saves a local key-value pair (“check” = “false”) and retrieves a locally stored user ID (“id”). It then creates a Firebase Realtime Database reference pointing to the path user/<userID>, which is used to store or fetch user-specific data.

Fig: Debit card Data Exfiltration

Offline Data Capture and store the values
This method saves a key-value pair (str and str2) into the app’s local storage using SharedPreferences. It ensures the data is stored persistently and applied immediately.

Fig: Local Data Storage Check

FCM-Based Command and Control

These are Firebase configuration keys embedded in an Android app, including the sender ID, API keys, app ID, crash reporting key, and storage bucket, used to connect the app to Firebase services like messaging, analytics, and cloud storage.

Fig: Command and Control

Remote SMS Data Exfiltration

a) Collecting SMS data in real time

The SMS-stealing technique used by the malicious APK involves monitoring incoming SMS messages by processing each received Protocol Data Unit (PDU). It captures critical metadata such as the sender’s number, message content, and timestamp. The application then leverages Android’s SubscriptionManager to identify the active SIM slot and the associated phone number. This information is subsequently passed to a background thread for further handling, typically used to exfiltrate the intercepted SMS data to a remote server or attacker-controlled infrastructure.

Fig: SMS Data Stealing

b) Sending Data to Remote Server

The sendMessage function asynchronously sends SMS message details to a Firebase Realtime Database. It collects data such as the message content, sender, timestamp, message type, sender’s phone number, and receiver, then stores this information in the cloud database, allowing threat actors to remotely collect and monitor intercepted SMS messages.

Fig: Remote SMS Data Exfiltration

Gathering SIM Information

Permission and Subscription Check:
The code checks if the app has the READ_PHONE_STATE permission. If granted, it retrieves a list of active SIM subscriptions using SubscriptionManager.

SIM Data Extraction:
For each active SIM slot, it extracts key data:

  • SIM Slot index
  • Carrier name (SIM network)
  • Phone number

These details are stored in a LinkedHashMap.

Call Forwarding

This malicious app processes push notifications received via Firebase Cloud Messaging (FCM): when a new message arrives, it extracts data fields such as the title, message, number, and carrier, and based on the value of the message content, it constructs a USSD code using the phone number (activate call forwarding using **21*number#) or a fallback payload using encoded hash symbols (##21#). It attempts to silently forward incoming calls to an attacker-controlled number without user consent.

Fig: Call forwarding abuse logic

Remote calling

This malware also enables unauthorized remote calling, potentially abusing Android telephony services to initiate call forwarding or execute USSD codes. This tactic is often used by banking malware or spyware to silently redirect calls or enable surveillance.

Fig: Remote Call Abuse

DYNAMIC ANALYSIS

The dropper executes by displaying a fake update popup designed to trick the user into clicking.

The dropper prompts the user to enable the ‘Install Unknown Apps’ permission, which allows the main payload to bypass standard security checks and gain installation privileges on the device.

Main Payload Execution

The main payload requests SMS permissions to Read and Send Messages

Main Payloads Phishing Page Mimicking Legitimate Banking App

While Firebase is widely used for legitimate app development, its free-tier access and anonymous setup make it a popular choice for misuse. In this case, the attacker leverages the Firebase as a C2 server to collect sensitive user information. During our investigation, access to the Firebase instance was denied, as it was secured and not publicly accessible. However, the screenshot below confirms that the C2 server remains active and requires authentication for access, indicating it is still operational and potentially in use for malicious purposes.

Fig: Active C2 with authentication

EXTERNAL THREAT LANDSCAPE MANAGEMENT

An APK sample impersonating a legitimate Indian banking application was observed on April 3, 2025, highlighting ongoing trends in mobile-based credential theft and financial fraud.

In many cases, cybercriminals developing malicious banking apps employ deceptive techniques to increase the success of their campaigns. This includes using icons, app names, and user interfaces that closely mimic legitimate banking applications to deceive users into trusting and installing the app. Once installed, these apps often prompt high-risk permissions, thereby capturing credentials and one-time passwords (OTPs) to bypass 2-FA authentication.

Top Delivery Methods for Malicious Banking Apps on Android
Threat actors use a variety of vectors to deliver banking trojans to Android devices, which commonly rely on social engineering, technical deception, and exploitation of platform features or vulnerabilities.

Social Engineering & Phishing

Method Description
Smishing (SMS phishing) Fake SMS messages containing links to malicious APKs (e.g., “Your bank account is locked. Click here to verify.”).
Email Phishing Phishing emails masquerading as bank communications, embedding malicious APK links or QR codes.
Messaging Apps (e.g., WhatsApp) Malicious links or APKs spread through impersonated contacts or automated bots.
Fake Support Calls (Vishing) Victims are convinced over the phone to install “security” or “support” apps that are malicious.

Fake Websites & SEO Poisoning

Method Description
Fake Bank Websites Cloned websites impersonating legitimate banks, offering fake apps for download.
SEO Poisoning Malicious APKs promoted via search engine manipulation through fake blogs or forums.
Fake App Store Pages Third-party stores that mimic Google Play, distributing trojanized banking apps.

Malvertising

Method Description
In-App Ads Ads embedded in legitimate apps that redirect users to malicious banking APKs.
Adware Push Notifications Fake alerts urging users to update or install a banking app via deceptive APK links.

Trojan Droppers and Loaders

Method Description
Benign-looking Utility Apps Apps like “QR scanners” or “battery savers” that secretly download and install banking malware.
Stage 1 Droppers Lightweight APKs that fetch and install the full banking trojan from remote servers.
Fake System or Play Protect Updates Apps pretending to be Android system updates or security tools to trick users into installing them.

QR Codes and NFC (Near Field Communication) Attacks

Method Description
QR Codes in Posters/Emails Scanning malicious QR codes redirects to fake banking app downloads.
NFC-Based Payloads Malicious NFC tags placed in public locations (e.g., ATMs) trigger downloads on tap.

Physical Access / Preloading

Method Description
Preloaded Malware (Supply Chain) Some low-cost or counterfeit devices come with pre-installed banking malware.
USB Sideloading Malicious apps manually installed via USB when the attacker has physical access to the device.

Exploitation of System Vulnerabilities

Method Description
Abuse of Accessibility Services Users are tricked into granting permissions that allow silent installs, overlays, and monitoring.
Exploiting Android Vulnerabilities Attackers leverage known vulnerabilities (e.g.: CVE‑2025‑27363) to bypass security controls or execute code remotely.

CONCLUSION

The banking malware exhibits a modular, evasive, and persistent architecture, specifically targeting Android users through social engineering and technical exploitation. It leverages permissions like ‘Install from Unknown Sources’ for silent payload delivery and employs Firebase Cloud Messaging (FCM) for covert remote C2 communication. These capabilities enhance its stealth and operational impact, highlighting the urgent need for user vigilance and robust, layered security measures within financial ecosystems to counter advanced mobile threats.

This type of malware may also leverage fake websites, malvertising, Trojanized utility apps, QR/NFC vectors, and exploit Android system vulnerabilities, demonstrating the skill and versatility of attackers in delivering and executing malicious payloads.

IOCs

Indicator Type Remarks
ee8e4415eb568a88c3db36098b7ae8019f4efe565eb8abd2e7ebba1b9fb1347d Sha256 Base Payload or Dropper
131d6ee4484ff3a38425e4bc5d6bd361dfb818fe2f460bf64c2e9ac956cfb13d Sha256 Main Payload

MITRE ATTACK FRAMEWORK

Tactic Technique ID Technique
Initial Access T1476 Deliver Malicious App via Other Means
Execution T1204.002 User Execution: Malicious File
Persistence T1409 Install Insecure or Malicious App
Persistence T1547.001 Boot or Logon Autostart Execution: Registry Run Keys
Persistence T1406 Broadcast Receivers
Credential Access T1414 Input Capture
Credential Access T1421 Capture SMS Messages
Collection T1402 Broadcast Receivers
Collection T1409 Access Stored Application Data
Discovery T1421 System Network Connections Discovery
Discovery T1424 Process Discovery
Discovery T1426 System Information Discovery
Command and Control T1437 Application Layer Protocol
Command and Control T1573 Encrypted Channel
Defense Evasion T1407 Download, Install, or Load Code from Remote Sources
Defense Evasion T1445 Hide Application Icon from App Launcher
Impact T1496 Resource Hijacking
Exfiltration T1430 Exfiltration Over Alternative Protocol

YARA RULES

rule Malicious_Bank_APK
{
meta:
description = “Detects malicious Banking Application masquerading as a legit BANK”
author = “CYFIRMA_Research”
threat_type = “Banking malware”
date = “2025-07-23”
sha256_1 = “ee8e4415eb568a88c3db36098b7ae8019f4efe565eb8abd2e7ebba1b9fb1347d”
sha256_2 = “131d6ee4484ff3a38425e4bc5d6bd361dfb818fe2f460bf64c2e9ac956cfb13d”

strings:
$hash1 = “ee8e4415eb568a88c3db36098b7ae8019f4efe565eb8abd2e7ebba1b9fb1347d”
$hash2 = “131d6ee4484ff3a38425e4bc5d6bd361dfb818fe2f460bf64c2e9ac956cfb13d”
$res1 = “activity_finalscreen.xml”
$res2 = “activity_debit.xml”
$res3 = “activity_customer.xml”
$res4 = “activity_account.xml”

condition:
(any of ($hash*) and any of ($res*)) and
filesize == 7074816
}

RECOMMENDATIONS

Strategic Recommendations

  • Enforce Regulatory Compliance for Financial App Ecosystems: Financial institutions should be mandated to comply with stricter mobile application security standards (e.g., RBI’s Digital Payment Security Controls), requiring regular security audits and proactive threat modeling of mobile banking apps.
  • Launch Nation-Scale Public Awareness and Education Campaigns: Launch government- and industry-backed cyber hygiene campaigns targeting mobile users to raise awareness about malicious APKs, QR code risks, and the dangers of sideloading apps from unofficial sources.

Tactical Recommendations

  • Implement Threat Intelligence-Driven Filtering on Telco & ISP Layers: Internet service providers and telecom operators should integrate real-time threat intelligence feeds to block access to known malicious APK hosting domains, Firebase C2 endpoints, and fake banking websites.
  • Monitor and Takedown Malicious Infrastructure Leveraging Legitimate Platforms: Cybersecurity teams must actively hunt and report abuse of cloud platforms like Firebase, GitHub, or third-party APK stores used for malicious payload hosting, initiating takedown requests in collaboration with platform providers.

Operational Recommendations

  • Deploy Mobile Endpoint Detection and Response (EDR) with Behavioral Analytics: Organizations should deploy MTD/EDR solutions on employee and customer-facing devices that can detect behaviors like overlay attacks, silent APK installs, and SMS interception in real time.
  • Restrict Installation of APKs from Unknown Sources on Mobile Devices: Individuals should configure mobile device policies to block installations from unknown sources by default. Mobile Device Management (MDM) tools can enforce this restriction enterprise-wide, while users should manually disable “Install Unknown Apps” on personal devices to prevent sideloading of malicious apps.