When your IPTV app terminates your savings
Taking over the device
Having the credentials and other sensitive data stolen with overlays and keylogging, Massiv further provides the operator with remote access to the infected device. The FuncVNC class implements a remote visual monitoring and interaction capability built on top of Android’s AccessibilityService. Its functionality establishes a control channel that allows a remote operator to both observe and manipulate the device’s user interface in near real time.
All communication is performed over a WebSocket channel, which acts as the command-and-control (C2) transport for both inbound commands and outbound UI data.
Following the modern trend, Massiv supports 2 modes of operation during a remote control session: screen streaming and UI-tree mode. Screen streaming mode relies on MediaProjection API, effectively sharing the screen content with the remote operator.

However, some applications implement protection against screen capture. To bypass it, Massiv uses so-called UI-tree mode – it traverses AccessibilityWindowInfo roots and recursively processes AccessibilityNodeInfo objects to build a JSON representation of:
-
Visible text and content descriptions
-
Class names of UI elements
-
Screen coordinates (bounds)
-
Interaction flags (clickable, editable, focused, enabled)
Only nodes deemed “important” (visible and interactive or text-bearing) are exported, reducing noise and focusing on actionable interface elements. This produces a structured interface model rather than raw screenshots. That allows the operator to:
-
Identify specific buttons, input fields, or prompts
-
Understand layout positions
-
Automate interactions based on element attributes.
Massiv implements a set of supported actions that can be performed by the remote operator. The remote control commands supported are listed in the Appendix.
The scariest movie you’ll watch
In the campaign observed by MTI, Massiv is masquerading as IPTV application. These types of applications provide access to online TV services. There are multiple services that provide this – including some that might violate copyright policies, thus not allowed to be distributed via official Google Play Store. In general, users of IPTV applications are used to the fact that these applications are distributed outside of the official store, usually through their own websites or Telegram channels.

Such an approach is a tasty morsel for fraudsters eager to deliver malware to an unsuspecting victim. Since IPTV users find it very natural to look for these apps outside of the store, creating a fake website of a new attractive app (or faking an existing one) allows threat actors to keep the user unsuspicious about the necessity to install the application from unknown sources. Users seeking “premium” or region-restricted content are already accustomed to bypassing official app stores, reducing suspicion.
In most of the cases observed, it is just masquerading. No actual IPTV applications were infected or initially contained malicious code. Usually, the dropper that mimics IPTV app opens a WebView with IPTV website in it, while the actual malware is already installed and running on the device.
Looking broader on the current mobile threat landscape, we see that Massiv is not the only malware that uses this masquerading. Over past 6-8 months this lure has become increasingly popular, as we observe a rising number of the malware dropper samples masquerading as IPTV applications. Countries that were observed targeting by such masquerading include Spain, Portugal, France, Turkey.

However, our data shows that the most popular masquerading is still browser update, which is also potentially not suspicious for a regular user.
Conclusion
Massiv, being yet another new banking Trojan on the already rich threat landscape, shows continuous demand amongst criminals for such tools. Its capabilities reflect the latest trends and necessity for the fraudsters to perform fraud on mobile channel.
While not yet observed being promoted as Malware-as-a-Service, Massiv’s operator shows clear signs of going this path, introducing API keys to be used in malware communication with the backend. Code analysis revealed ongoing development, with more features likely to be introduced in the future.
Financial organizations are advised to monitor this threat as it has a potential to grow in a proper Malware-as-a-Service; however, remaining privately operated it raises its chances to stay under the radars due to small yet targeted and powerful campaigns, dragging less attention by detection solutions.
Appendix
Indicators of Compromise
|
SHA-256 |
Package name |
Application name |
|
| 54d4cb45fb7a18780ff2ccc7314b9b51ae446c58a179abbf9e62ce0c28539e8e | hobfjp.anrxf.cucm | Google Play | Massiv payload |
| f9a52a923989353deb55136830070554db40f544be5a43534273126060f8c1f6 | hfgx.mqfy.fejku | IPTV24 | Dropper |
Bot commands
| Commands | description |
|
back |
Perform Back global action |
|
blackscreen |
Enable black overlay, mute sounds and vibration |
|
check |
Send an update of device information |
|
click |
Perform click by coordinates |
|
clipboard |
Set clipboard with text |
|
disableBlackscreen |
Disable black screen |
|
disableGraphics |
Turn off screen streaming |
|
enableGraphics |
Turn on screen streaming |
|
fileManager |
List or download specified files |
|
graphicKey |
Unlock the device with pattern |
|
home |
Perform Home global action |
|
inject |
Show overlay for the specified package name |
|
injectPattern |
Show fake screen for device pattern lock |
|
injectPin |
Show fake screen for device PIN |
|
installApk |
Download and install APK from the specified URL |
|
keypress |
Input corresponding symbol in the current text field |
|
overview |
Perform Recents global action |
|
power |
Open the power long-press dialog |
|
push |
Show push notification with specified text |
|
reinitialization |
Perform forced reconnect via WebSocket |
|
renicilization |
Same as “reinitialization”, perform forced reconnect |
|
requestAdmin |
Open Device Admin settings screen, requesting it |
|
requestBattery |
Open Battery Optimization settings |
|
requestFileAccess |
Open MANAGE_APP_ALL_FILES_ACCESS_PERMISSION screen |
|
requestGoogleProtect |
Open Play Protect settings screen |
|
requestInstallPermission |
Request REQUEST_INSTALL_PACKAGES permission |
|
requestMiuiBackground |
Open MIUI-specific AutoStartManagementActivity |
|
requestPush |
Request android.permission.POST_NOTIFICATIONS |
|
requestReadSms |
Request android.permission.READ_SMS |
|
requestWriteSettings |
Open android.settings.action.MANAGE_WRITE_SETTINGS screen |
|
swipe |
Perform swipe by coordinates |
|
swipeDown |
Perform swipe down |
|
swipeUp |
Perform swipe up |
|
uninstallApp |
Uninstall specified application |
|
updateInjects |
Download latest HTMLs for overlay attacks |
|
wakeUp |
Wake up the device |
|
get_backup_addresses |
Save additional C2 addresses |
|
get_files_zip |
Download ZIP archive with overlays for targeted applications |
|
inject |
Mark submitted stolen credentials as processed |
|
log |
Clear logs databases on the device |




Publicar comentário