Event Triggered Execution: Broadcast Receivers

Adversaries may establish persistence using system mechanisms that trigger execution based on specific events. Mobile operating systems have means to subscribe to events such as receiving an SMS message, device boot completion, or other device activities.

An intent is a message passed between Android applications or system components. Applications can register to receive broadcast intents at runtime, which are system-wide intents delivered to each app when certain events happen on the device, such as network changes or the user unlocking the screen. Malicious applications can then trigger certain actions within the app based on which broadcast intent was received.

In addition to Android system intents, malicious applications can register for intents broadcasted by other applications. This allows the malware to respond based on actions in other applications. This behavior typically indicates a more intimate knowledge, or potentially the targeting of specific devices, users, or applications.

In Android 8 (API level 26), broadcast intent behavior was changed, limiting the implicit intents that applications can register for in the manifest. In most cases, applications that register through the manifest will no longer receive the broadcasts. Now, applications must register context-specific broadcast receivers while the user is actively using the app.[1]

ID: T1624.001
Sub-technique of:  T1624
Tactic Type: Post-Adversary Device Access
Tactic: Persistence
Platforms: Android
Contributors: Alex Hinchliffe, Palo Alto Networks
Version: 1.1
Created: 30 March 2022
Last Modified: 16 March 2023

Procedure Examples

ID Name Description
S1095 AhRat

AhRat can register with the CONNECTIVITY_CHANGE and WIFI_STATE_CHANGED broadcast events to trigger further functionality.[2]

S0525 Android/AdDisplay.Ashas

Android/AdDisplay.Ashas has registered to receive the BOOT_COMPLETED broadcast intent to activate on device startup.[3]

S0524 AndroidOS/MalLocker.B

AndroidOS/MalLocker.B has registered to receive 14 different broadcast intents for automatically triggering malware payloads. [4]

C0033 C0033

During C0033, PROMETHIUM used StrongPity to receive the following broadcast events to establish persistence: BOOT_COMPLETED, BATTERY_LOW,USER_PRESENT, SCREEN_ON, SCREEN_OFF, or CONNECTIVITY_CHANGE.[5]

S0479 DEFENSOR ID

DEFENSOR ID abuses the accessibility service to auto-start the malware on device boot. This is accomplished by receiving the android.accessibilityservice.AccessibilityService intent.[6]

S0478 EventBot

EventBot registers for the BOOT_COMPLETED intent to auto-start after the device boots.[7]

S0522 Exobot

Exobot has registered to receive the BOOT_COMPLETED broadcast intent.[8]

S0509 FakeSpy

FakeSpy can register for the BOOT_COMPLETED broadcast Intent.[9]

S0408 FlexiSpy

FlexiSpy uses root access to establish reboot hooks to re-install the application from /data/misc/adn.[10] At boot, FlexiSpy spawns daemons for process monitoring, call monitoring, call managing, and system.[10]

S1103 FlixOnline

FlixOnline may use the BOOT_COMPLETED action to trigger further scripts on boot.[11]

S0421 GolfSpy

GolfSpy registers for the USER_PRESENT broadcast intent and uses it as a trigger to take photos with the front-facing camera.[12]

S0536 GPlayed

GPlayed can register for the BOOT_COMPLETED broadcast intent.[13]

S0544 HenBox

HenBox has registered several broadcast receivers.[14]

S0316 Pegasus for Android

Pegasus for Android listens for the BOOT_COMPLETED broadcast intent in order to maintain persistence and activate its functionality at device boot time.[15]

S0419 SimBad

SimBad registers for the BOOT_COMPLETED and USER_PRESENT broadcast intents, which allows the software to perform actions after the device is booted and when the user is using the device, respectively.[16]

S0324 SpyDealer

SpyDealer registers the broadcast receiver to listen for events related to device boot-up.[17]

S0305 SpyNote RAT

SpyNote RAT uses an Android broadcast receiver to automatically start when the device boots.[18]

S0545 TERRACOTTA

TERRACOTTA has registered several broadcast receivers.[19]

S0558 Tiktok Pro

Tiktok Pro has registered for device boot, incoming, and outgoing calls broadcast intents.[20]

S0427 TrickMo

TrickMo registers for the SCREEN_ON and SMS_DELIVER intents to perform actions when the device is unlocked and when the device receives an SMS message.[21]

Mitigations

ID Mitigation Description
M1006 Use Recent OS Version

Android 8 introduced additional limitations on the implicit intents that an application can register for.[1]

Detection

ID Data Source Data Component Detects
DS0041 Application Vetting Permissions Requests

Application vetting services can detect which broadcast intents an application registers for and which permissions it requests.

References