# Fake mParivahan : Malware Analysis Report
# 422 Users are affected by it till now ( I was able to get the attackers admin panel )
**Classification:** Critical : Android SMS / UPI spyware RAT
**Method:** Static reverse engineering of dropper + payload; no-root payload extraction; StringFog decryption; read-only Firebase C2 IOC enumeration
# 1. Executive summary
Marketed as **âM Parivahanâ** is a **two-stage Android malware** operation:
1. **Dropper** (`com.ioaheishsbsb.ljgcdfhm`) : NP Managerâpacked installer with a fake VPN / WebView UI that decrypts and sideloads an embedded APK (`output.apk`).
2. **Payload** (`com.veaheishsbsb.kekskks`) : Sketchware-style SMS/call spyware with **Firebase Realtime Database** command-and-control and **Telegram** first-run alerts.
The payload steals SMS and device telemetry, can forward SMS and calls, and can send SMS from the victimâs SIM (commonly abused for UPI / OTP fraud). At the time of analysis the Firebase panel was r**everse engineered too** and contained **422** client device IDs.
# 2. Sample identification
|Field|Stage 1 (Dropper)|Stage 2 (Payload)|
|:-|:-|:-|
|Package|`com.ioaheishsbsb.ljgcdfhm`|`com.veaheishsbsb.kekskks`|
|Related / alias|`com.mr_fox.bhai`|Label: âM Parivahanâ|
|Application class|NP Manager shell|`np.protect.assets.ShellApplication`|
|Protection|NP Manager (`libnp_protect_res.so`, xhook)|NP Manager + StringFog XOR|
|UI|Fake VPN + `file:///android_asset/main_ui.html`|Permission / settings-style UX|
|Embedded artifact|Logical asset `output.apk` (encrypted on disk)|â|
|SDK|â|minSdk 21, targetSdk 28, compileSdk 33|
|Build leftover|â|Synthetic names: `dApp-binance-Trading-Signals`|
**Related package queried by dropper:** [`com.avejfhdhd.android`](http://com.avejfhdhd.android)
# 3. Infection chain
Victim sideloads fake âmParivahanâ APK
â
âź
Dropper (NP Manager) decrypts embedded payload
â
âź
Writes temp_info.apk / temp_install.apk â installs com.veaheishsbsb.kekskks
â
âź
Payload requests SMS / phone permissions
â
âź
MyService enrolls device on Firebase + dumps ~50 SMS
â
âź
Telegram alert to operator bot/chat
â
âź
Listens on clients/<deviceId>/webhookEvent for remote commands
**Extraction note:** Static decrypt of the packed dropper blob failed due to native crypto. Payload was recovered without device root by patching the unpack path to `getExternalFilesDir` and pulling
`/sdcard/Android/data/com.ioaheishsbsb.ljgcdfhm/files/temp_info.apk`.
# 4. Capabilities
|Capability|Severity|Detail|
|:-|:-|:-|
|SMS theft|Critical|Intercepts inbound/outbound SMS; uploads to `messages/<deviceId>`|
|SMS forward|Critical|Relays SMS to operator number (`SmsForwardTo`)|
|Remote SMS send|Critical|Sends SMS from chosen SIM (`sendSms` webhook)|
|Call forwarding|High|USSD `**21*<number>#` / `##21#`|
|Device fingerprinting|High|Model, Android version, root, storage, CPU, carrier, public IP, SIMs, battery, MSISDN|
|Telegram notify|High|First-run HTML report to admin bot/chat|
|Persistence|High|Foreground service, boot/alarm receivers, restart in `onDestroy`|
|Keylogger flag|Medium|`KeyLogger` webhook present; appears stubbed/partial|
# 5. Remote command surface
**Listener path:** `clients/<androidId>/webhookEvent/`
|Command key|Fields|Action|
|:-|:-|:-|
|`callForward`|`from`, `to`, `isActive`|Activate/deactivate call forward via USSD|
|`smsForward`|`from`, `to`, `isActive`|Toggle SMS forward preference|
|`sendSms`|`from`, `to`, `message`, `isSended`|Send SMS from victim SIM|
|`checkLiveness`|`text=ping`|Reply `pong` under webhook|
|`KeyLogger`|`isActive`|Preference flag (partial implementation)|
Presence uses `clients/<id>/status` with Firebase `.info/connected` \+ `onDisconnect`.
# 6. C2 infrastructure & IOCs
# 6.1 Firebase
|Item|Value|
|:-|:-|
|RTDB URL|`REMOVED I HAVE IT, IF ANY OFFICAL IS READING IT, PLEASE REACH OUT ASAP`|
|API key|`REMOVED I HAVE IT, IF ANY OFFICAL IS READING IT, PLEASE REACH OUT ASAP`|
|App ID|`REMOVED I HAVE IT, IF ANY OFFICAL IS READING IT, PLEASE REACH OUT ASAP`|
|Storage|`REMOVED I HAVE IT, IF ANY OFFICAL IS READING IT, PLEASE REACH OUT ASAP`|
|Top-level nodes|`clients`, `messages`, `devices`, `deviceMessages`|
|Clients observed|**422** (2026-08-04, shallow enumeration)|
|Rules posture|Open / world-readable (IOC check succeeded without auth)|
# 6.2 Firebase path map
|Path|Purpose|
|:-|:-|
|`clients/<androidId>`|Device profile enrollment|
|`clients/<androidId>/status`|Online/offline|
|`clients/<androidId>/webhookEvent/*`|Command inbox|
|`messages/<androidId>/<timestamp>`|Stolen SMS|
|`.info/connected`|Connectivity watch|
# 6.3 Telegram
|Item|Value|
|:-|:-|
|Endpoint|`https://api.telegram.org/bot<token>/sendMessage`|
|Bot token|`REMOVED I HAVE IT, IF ANY OFFICAL IS READING IT, PLEASE REACH OUT ASAP`|
|Admin chat ID|`REMOVED I HAVE IT, IF ANY OFFICAL IS READING IT, PLEASE REACH OUT ASAP`|
|Config source|Raw resource `Loda` (obfuscated APK path `ŰŚ/ŰĽŰ`)|
{
"chatIDs": ["REMOVED I HAVE IT, IF ANY OFFICAL IS READING IT, PLEASE REACH OUT ASAP"],
"tokens": ["REMOVED I HAVE IT, IF ANY OFFICAL IS READING IT, PLEASE REACH OUT ASAP"],
"workSuccess": 1
}
Only **one** admin chat/token pair is embedded in the sample.
# 7. Attacker / mule phone numbers
**Not hardcoded in the APK.** Numbers are pushed via Firebase webhooks at runtime.
From live `clients/*/webhookEvent` (`smsForward` / `sendSms` `to` fields), 2026-08-04:
|Number|Hits|Observed role|
|:-|:-|:-|
|**8789**\*\*\*\*\*|**6**|**Primary SMS forward target (strongest IOC)**|
|9279\*\*\*\*\*\*\*\*\*|2|SMS forward + sendSms|
|8340\*\*\*\*\*\*\*\*\*|2|SMS forward|
|9522\*\*\*\*\*\*\*\*\*|2|sendSms|
|9279\*\*\*\*\*\*\*\*\*|1|sendSms (same line as 927\*\*\*\*\*\*\*\*\* with country code)|
|8712\*\*\*\*\*\*\*\*\*|1 each|sendSms / UPI-style collect|
|9211\*\*\*\*\*\*\*\*\*|1 each|sendSms / UPI-style collect|
|8291\*\*\*\*\*\*\*\*\*|1|sendSms / UPI-style collect|
|Others (one-offs)|1|Mixed sendSms destinations|
**Primary SMS-intercept candidate:** `8789`\*\*\*\*\*\*\*\*\*
UPI collect destinations may be money-mule wallets rather than the panel operatorâs personal line.
# 8. Persistence & stealth
# Components (payload)
* Activities: `MainActivity`, `PermissionRequestActivity`, `DebugActivity`
* Service: `MyService` (foreground; `FOREGROUND_SERVICE_MEDIA_PLAYBACK`)
* Receivers: `SmsReceiver`, `BootReceiver`, `AlarmReceiver`, `MultiEventReceiver`, `BatteryLevelReceiver`
* Persistent notification text: **âSystem Settings is RunningâŚâ**
# Obfuscation / hardening
* NP Manager resource and path mangling
* StringFog (Base64 + XOR with key `UTF-8`)
* Dropper encrypted asset (non-standard ZIP compression)
* `usesCleartextTraffic="true"`, `allowBackup="true"`
# 9. Dangerous permissions (payload)
* `INTERNET`, `ACCESS_NETWORK_STATE`, `ACCESS_WIFI_STATE`, `CHANGE_*`
* `READ_SMS`, `RECEIVE_SMS`, `SEND_SMS`, `DELETE_SMS`, `BROADCAST_SMS`
* `CALL_PHONE`, `READ_PHONE_STATE`, `READ_PHONE_NUMBERS`
* `RECEIVE_BOOT_COMPLETED`, `WAKE_LOCK`
* `FOREGROUND_SERVICE`, `FOREGROUND_SERVICE_MEDIA_PLAYBACK`
* `REQUEST_IGNORE_BATTERY_OPTIMIZATIONS`, `POST_NOTIFICATIONS`
# 10. Key payload classes
|Class|Role|
|:-|:-|
|`MyService`|Core RAT: enroll, listen, process commands|
|`SmsReceiver`|SMS intercept / forward / Firebase write|
|`TelegramBotUtils`|HTTP Telegram `sendMessage`|
|`AdminInfo`|Load bot token â chat ID map|
|`callForwardingUtility`|USSD call forward|
|`SmsHelper` / `SMSRetriever`|Send SMS / dump inbox|
|`DeviceInfoUtil` / `SimInfoUtil`|Fingerprint + public IP|
|`SharedPrefManager`|`isFirst`, `isSmsForward`, `SmsForwardTo`, flags|
|`BootReceiver` / `AlarmReceiver`|Keep-alive|
# 11. MITRE ATT&CK (Mobile) mapping
|ID|Technique|Evidence|
|:-|:-|:-|
|T1660|Phishing / fake app|mParivahan brand abuse|
|T1406|Obfuscated files or information|NP Manager + StringFog|
|T1624|Event triggered execution|`BOOT_COMPLETED`, `SMS_RECEIVED`|
|T1517|Access notifications / SMS|SMS permissions + receivers|
|T1437|Application layer protocol|Firebase + Telegram HTTPS|
|T1636|Protected user data|SMS, MSISDN, SIM info|
|T1428|Exploit via SMS / USSD|`sendSms`, `**21*`|
|T1409|Stored application data|SharedPreferences C2 flags|
|T1625|Hijack execution flow / packer|`ShellApplication` dropper|