Malware Characterization
Overview
We used five high-level categories to describe the analyzed Google Play malware:
Below, we list and describe sub-categories for each high-level category. We also list the number of samples in each category/sub-category.
Malware Event Conditions
System Events
- Boot Status - Triggered based on the device boot status (e.g., boot complete, quickboot poweron, reboot, etc.)
- Device Status - Triggered on the device screen status (e.g., screen on/off, device unlocked, dreaming stopped, etc.)
- Network Status - Triggered on the device network status (e.g., connectivity change, wifi state change, signal strength change, etc.)
- Developer-Defined - Triggered on non-Android defined intents (e.g., push notifications from Firebase messaging services)
- Package Changes - Triggered on package related changes (e.g., installing an app, updating an app, removing an app, etc.)
- Service Bind - Triggered on the use of bound services (e.g., notification listeners, accessibility)
- SMS Delivery - Triggered on SMS deliveries (e.g., SMS received, SMS sent, etc.)
- Battery Status - Triggered on the device battery status (e.g., battery level changes, charging status changes)
- Call Status - Triggered on the device call status (e.g., receiving a call, putting a call on hold, hanging up the call, etc.)
- USB Status - Triggered on device USB status (e.g., connecting a USB to the device)
User Events
- Application Launch - Triggered when the user launches the app
- Button Click - Triggered when the user interacts with a button on the app
- Sensitive Input - Triggered when the user inputs sensitive information into UI elements of the app
- Permissions - Triggered when the user grants an app permissions
- App Install - Triggered when the user installs an app
- Clipboard Text - Triggered when the user copies text to the clipboard
Scheduling Events
- Triggered by scheduling an alarm or handler that executes periodically
Malware Check Conditions
External Server
- SMS - Checking based on command retrieved from SMS
- Internet - Checking based on commands retrieved from the internet
Device
- Sensor - Checking data from sensors (e.g., battery, temperature, motion sensors)
- Hardware Specifications - Checking hardware specifications of the device (e.g., CPU, screen status, network operator, etc.)
- Software Specifications - Checking software specifications of the device (e.g., Android version, apps installed on device, emulator indicators, current phone state, device rooted, etc.)
- Network - Checking network status of the device
Environment
- Location - Checking based on specific location
- Time - Checking based on specific time
Application
- Permission - Checking if the app is provided with permissions
- Data Format - Checking for a specific data format (e.g., phone number, PIN number, wallet address, image format, etc.)
- Probability - Checking based on a probability roll (e.g., rolling a random number between 1-100 and checking it is less than 25)
- Install Referrer - Checking if the app was installed under a specific install referrer (e.g., clicky, azuvu, etc.)
- App Version - Checking if the app is a certain version
Malware Payloads
- Information Stealing - Stealing information from the user (e.g., device, bank/social/entertainment accounts, content specific to the user, etc.)
- Ad Abuse - Abusing advertisement schemes for monetary value
- Premium Charges - Subscribe the device to premium charges (e.g., premium SMS, premium rate numbers, WAP billing)
- Cryptocurrency Mining - Mining cryptocurrency without the users consent
- Root Exploit - Granting elevated access to perform unauthorized actions
- Clipboard Hijacking - Replacing the text of the user’s copy action to perform unintentional actions (e.g., replace copied text with malware developers cryptocurrency wallet)
- Port Forwarding - Gain access to the users internal network
- Ransom - Disable device functionalities to coerce victim into paying a fee to re-enable the device
- Unknown - Payloads which download an unknown malicious executable
Hiding Techniques
- Icon Manipulation - Changes to the icon to deter attention from the user (e.g., hiding the icon, changing icon to something user would not normally uninstall)
- Rich Benign Functionality - Implementing functionalities that a user deems useful
- Device Admin - Granting device admin privileges to increase difficulty in uninstalling the application
- Information Blocking - Blocking information of malicious activities from the user (e.g., cancelling a notification, deleting an SMS message, etc.)
- Self-Uninstallation - Uninstalls itself to confuse the user on which app performed the malicious behavior
- Automated Gesture Input - Prevent the user from performing certain actions by performing automated gestures (e.g., pressing back button when the user is on an Antivirus app)
- Screen Locking - Hide malicious behaviors of application by locking the screen
Coding Properties
Location
- Direct - Implementation includes code from source DEX files
- Hidden (Local) - Implementation includes code from local assets
- Downloaded (Remote) - Implementation include code downloaded from remote sources
Language
- Bytecode - Implementation found in Java bytecode
- Native - Implementation found in native code
- Web - Implementation found in HTML/CSS/JS
Detailed Mapping of Samples
Categorization of the properties of each sample is given in the tables below.