Mobile App Security

Identity Takeovers on Android: How Attackers Are Undermining UPI SIM Verification and What It Will Take to Stop Them

UPI processed more than 18 billion transactions in March 2025, reinforcing its position as the world's largest real-time payments network by transaction volume. At that scale, the mobile number remains one of the most important identity anchors in the UPI ecosystem and one of the most actively targeted in fraud.

By · · 5 Min

Identity Takeovers on Android: How Attackers Are Undermining UPI SIM Verification and What It Will Take to Stop Them

What to expect from this article?

Let’s get started!

Evolution of Android Identity Takeovers

Mobile identity fraud has not disappeared, it has adapted. Each improvement in app hardening, attestation, and fraud controls has forced attackers to shift tactics rather than abandon the target. To understand the current threat landscape, it helps to look at that progression from low-effort social engineering to device-level runtime abuse.

1. OTP Hijacking Through Social Engineering Over Call

The highest-volume mobile identity fraud vector still requires no malware, no reverse engineering, and no root access. It requires a phone call.

This attack remains effective because OTP-based verification has a structural weakness: the secret must be revealed to the user in order to be used, which means it can also be socially engineered away.

App hardening does not fix that core property. If the user shares the code, the attacker can often satisfy the verification flow without needing to compromise the device at all.

2. App Tampering and Integrity Bypass Attempts

For more advanced attacks, the next layer of resistance is app and device integrity. Modern fintech apps often rely on controls such as code signing, anti-tampering checks, root detection, and Google Play Integrity to determine whether the app is running in a trusted environment. Those controls are useful, but they are not invulnerable.

The important point is not that every modified APK can reliably pass Google Play Integrity. It cannot. Rather, the risk is that on sufficiently compromised devices or in implementations where attestation is weakly enforced attackers may be able to bypass, neutralize, or reduce the practical value of integrity checks.

A passing integrity verdict is therefore a strong signal, but not a guarantee. It should be validated server-side and treated as one layer in a broader trust model rather than the only line of defense.

3. LSPosed and Runtime Hooking

LSPosed is a modern Xposed-style runtime hooking framework commonly used on rooted Android devices, often in combination with Magisk or Zygisk-based modification. In legitimate settings, it is used for customization, debugging, and research. In adversarial settings, it can be used to intercept or modify application behavior at runtime without altering the target APK in an obvious way.

That matters because many security assumptions in mobile apps are still based on what the app can observe locally. If a hooking framework can alter method execution, suppress signals, inspect data in memory, or manipulate app-side callbacks, the app may continue operating while its view of the runtime has already been distorted.

For identity verification flows, that can include:

This does not mean LSPosed can silently compromise any stock Android phone. In practice, it usually requires a rooted or deeply modified device. But in fraud investigations, emulator farms, mule devices, and high-risk user segments, that prerequisite is realistic enough to matter.

How UPI SIM Verification Works and Where Trust Can Break

UPI registration and device-binding flows have long used SMS-based verification as a stronger alternative to manual OTP entry. The idea is simple: instead of asking the user to read and type a code, the app initiates a background SMS from the registered mobile number, and the bank or PSP uses that event as evidence that the SIM is present on the device.

This model is meaningfully stronger than user-entered OTP in several scenarios. There is no code to read aloud, no field to fill manually, and less room for basic social engineering. But it still depends on the trustworthiness of the device and the app-visible signals that surround SMS transmission.

1. The Outgoing SMS Verification Flow

At a high level, an app initiating SIM verification may use Android's SMS APIs to send a message to a bank or PSP-controlled endpoint. The backend then evaluates the message origin and associated registration context.

On the device side, the app may also track sent and delivery state using developer-defined PendingIntent callbacks or similar mechanisms exposed through Android's SMS APIs.

Those app-side acknowledgements are useful for UX and flow control, but they are still local signals. On a compromised runtime, they can potentially be observed, delayed, or manipulated.

The backend's receipt of an SMS from the correct number remains the stronger proof. But once the device itself is under adversarial control, the overall verification flow becomes less trustworthy because the attacker may gain visibility into the registration sequence, suppress user awareness, or combine that access with broader account-takeover techniques.

2. The Structural Weakness

The core issue is not that capturing a local sent or delivered callback automatically defeats UPI SIM verification on its own. In many implementations, it does not.

The issue is that SMS-based verification still exposes meaningful control points to the device runtime:

In other words, SIM-based verification is still stronger than manual OTP for many use cases but its security depends on a runtime that is assumed to be substantially honest. On a rooted, hooked, or trojanized device, that assumption becomes fragile.

The Layered Attack on UPI Identity

The real-world danger does not come from one technique in isolation. It comes from chaining them together.

Stage 1: User Manipulation or Device Compromise

The attack may begin with a support scam, a phishing link, a sideloaded APK, a remote assistance pretext, or a user already operating a rooted device. The goal is to gain either trust, access, or control over the runtime environment.

Stage 2: Integrity Evasion and Runtime Persistence

Once the attacker has a sufficiently compromised device, they may use root cloaking, app tampering, or hooking frameworks to weaken the app's ability to detect that compromise. In weaker implementations, integrity checks are performed once at launch and not revisited meaningfully during the session.

Stage 3: Verification Flow Abuse

At this stage, the attacker can target the specific verification mechanism in use:

The most important takeaway is that compromised-device fraud is rarely a single-control failure. It is usually a chain in which each bypass weakens the next layer.

Why One-Time Integrity Checks Are No Longer Enough

Many fintech apps still treat device integrity as a gate: evaluate the environment, decide whether it looks clean, and then allow the session to continue. That model was more defensible when compromise was easier to detect and less adaptive.

Today, attackers use cloaking, delayed activation, method hooking, and runtime tampering specifically to survive that first inspection. Even when the compromise is present before app launch, the app may fail to recognize it if it relies only on static indicators or startup-time checks.

The lesson is straightforward: trust cannot be established once and assumed forever. It has to be re-evaluated throughout the session.

Why Detection Alone Does Not Solve the Problem

Continuous runtime checks are an important part of the defense, but they do not change the underlying verification primitive. They can help identify rooted devices, hooking frameworks, cloaking behavior, and tampered sessions. What they cannot do, by themselves, is eliminate the trust dependency on SMS-based signals that still originate on or pass through the device runtime.

That distinction matters. As long as mobile number verification depends on app-visible SMS behavior, a sufficiently compromised device retains a path to observe, interfere with, or abuse part of the flow.

In other words, stronger detection can reduce attacker success rates, but it does not remove the verification surface they are targeting. To do that, the verification model itself has to change.

Silent Mobile Verification: Beyond the SMS Layer

Every attack stage in the chain described above depends on one common prerequisite: the SMS layer must be accessible. OTP theft requires reading an inbound message. SIM Binding interception requires observing the outgoing SMS and its delivery callbacks. Both are possible because SMS, by design, routes through the Android operating system where hooking frameworks operate.

Silent Mobile Verification (SMV) removes that prerequisite by removing SMS from the verification process entirely.

SMV authenticates mobile number possession by initiating a cryptographic session between the device's SIM and the mobile network operator — directly over the cellular data connection, in the background, without any application-layer SMS involvement.

No message is sent. No code is displayed. There is no payload for an LSPosed module to intercept, no delivery callback observable at the OS level, and no user action that social engineering can target.

How SMV Compares to Existing Verification Methods

Verification Method: OTP via SMS

Verification Method: UPI SIM Binding

Verification Method: Silent Mobile Verification (SMV)

The verification loop that SMV closes is architecturally distinct from the outgoing SMS design that SIM Binding uses. Rather than relying on OS-level callbacks that run in the same environment as an attacker's hooking framework, SMV uses the carrier network itself as the verification authority. Authentication occurs at the network layer, not the application or operating system layer, placing it outside the reach of device-level attack tools.

For UPI and banking applications, this represents a meaningful architectural advancement over current SIM Binding implementations:

The transition from OTP to SIM Binding addressed the human-in-the-loop vulnerability of code-based verification. The transition from SMS-based SIM Binding to SMV addresses the runtime vulnerability that LSPosed-based attacks exploit — by moving the verification primitive to a layer that device-level tools cannot reach.