Adversaries may execute their own malicious payloads by hijacking the way an operating system runs applications. Hijacking execution flow can be for the purposes of persistence since this hijacked execution may reoccur at later points in time.
On Android, adversaries may overwrite the standard OS API library with a malicious alternative to hook into core functions to achieve persistence. By doing this, the adversary’s code will be executed every time the overwritten API function is called by an app on the infected device.
| ID | Name | Description |
|---|---|---|
| S0420 | Dvmap |
Dvmap replaces |
| S0408 | FlexiSpy | |
| S0494 | Zen |
Zen can install itself on the system partition to achieve persistence. Zen can also replace |
| ID | Mitigation | Description |
|---|---|---|
| M1002 | Attestation |
Device attestation could detect unauthorized operating system modifications. |
| M1004 | System Partition Integrity |
Android Verified Boot can detect unauthorized modifications made to the system partition, which could lead to execution flow hijacking.[4] |
| ID | Name | Analytic ID | Analytic Description |
|---|---|---|---|
| DET0689 | Detection of System Runtime API Hijacking | AN1800 |
For Android, detect System Runtime API Hijacking primarily during application vetting or controlled analysis rather than assuming a live device SOC feed. Correlate OS API Execution via Application Vetting / Instrumented Dynamic Analysis [Dynamic API/runtime trace: Multiple applications invoking core system APIs (sensor, permission, telephony, PackageManager) show inconsistent, suppressed, or modified return values compared to OS-expected behavior — cross-app API result inconsistency is the runtime hi]; OS API Execution via Application Vetting / Instrumented Dynamic Analysis [Dynamic API/runtime trace: Device integrity degradation (root detected, system partition modification, SafetyNet/Play Integrity failure) coincident with anomalous system API behavior affecting runtime resolution]. Alert on a sequence or state change inconsistent with the device/app baseline, approved management policy, or expected user workflow; do not infer unobserved API calls, file/process activity, or payload content from management state alone. |