Hooking

Adversaries may utilize hooking to hide the presence of artifacts associated with their behaviors to evade detection. Hooking can be used to modify return values or data structures of system APIs and function calls. This process typically involves using 3rd party root frameworks, such as Xposed or Magisk, with either a system exploit or pre-existing root access. By including custom modules for root frameworks, adversaries can hook system APIs and alter the return value and/or system data structures to alter functionality/visibility of various aspects of the system.

ID: T1617
Sub-techniques:  No sub-techniques
Tactic Type: Post-Adversary Device Access
ⓘ
Tactic: Defense Evasion
ⓘ
Platforms: Android
Contributors: Jörg Abraham, EclecticIQ
Version: 1.0
Created: 24 September 2021
Last Modified: 24 October 2025

Procedure Examples

ID Name Description
S1208 FjordPhantom

FjordPhantom has used the hooking framework in a variety of ways, including returning false information to detection mechanisms, pretending that GooglePlayServices are unavailable, and manipulating UI functionality.[1]

S1231 GodFather

GodFather has used the Xposed hooking framework to intercept HTTP requests and responses, capturing and exfiltrating sensitive information, such as credentials.[2]

S0407 Monokle

Monokle can hook itself to appear invisible to the Process Manager.[3]

Mitigations

ID Mitigation Description
M1002 Attestation

Device attestation can often detect rooted devices.

M1010 Deploy Compromised Device Detection Method

Mobile security products can often detect rooted devices.

Detection Strategy

ID Name Analytic ID Analytic Description
DET0719 Detection of Hooking AN1850

For Android, detect Hooking from documented management, network, or vetting evidence; treat state queries as periodic observations rather than real-time events. Correlate Application Permission via Android Enterprise DPC / Application Vetting [DevicePolicyManager.getPermissionGrantState(); PackageManager manifest/requested-permission review]; OS API Execution via Application Vetting / Instrumented Dynamic Analysis [Dynamic API/runtime trace: App process loads external code module or native library from non-system path injected into zygote or app_process runtime — abnormal library injection path is the hooking mechanism indicator]. 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.

References