| ID | Name |
|---|---|
| T1417.001 | Keylogging |
| T1417.002 | GUI Input Capture |
Adversaries may log user keystrokes to intercept credentials or other information from the user as the user types them.
Some methods of keylogging include:
AccessibilityService class, overriding the onAccessibilityEvent method, and listening for the AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED event type. The event object passed into the function will contain the data that the user typed. | ID | Name | Description |
|---|---|---|
| S0422 | Anubis |
Anubis has a keylogger that works in every application installed on the device.[2] |
| S1079 | BOULDSPY | |
| S1094 | BRATA | |
| S0655 | BusyGasper |
BusyGasper can collect every user screen tap and compare the input to a hardcoded list of coordinates to translate the input to a character.[7] |
| S0480 | Cerberus | |
| S1083 | Chameleon |
Chameleon has logged keystrokes of an infected device.[9] Additionally, Chameleon has stolen PINs, passwords and graphical keys through keylogging functionalities.[10] |
| S9004 | Crocodilus |
Crocodilus has the ability to enable or disable keylogging.[11] |
| S9005 | DocSwap |
When an accessibility event occurs, DocSwap has used a keylogger to record the target application’s icon, package name, event text, and timestamp.[12][13] |
| S1054 | Drinik |
Drinik can use keylogging to steal user banking credentials.[14] |
| S1092 | Escobar | |
| S0478 | EventBot |
EventBot can abuse Android’s accessibility service to record the screen PIN.[16] |
| S0522 | Exobot |
Exobot has used web injects to capture users’ credentials.[17] |
| S0408 | FlexiSpy |
FlexiSpy can record keystrokes and analyze them for keywords.[18] |
| S1231 | GodFather |
GodFather has intercepted and recorded sensitive information from the application to include user credentials. GodFather has also leveraged a deceptive overlay that tricks users into submitting their device lock credentials which are captured.[19] |
| S0406 | Gustuff |
Gustuff abuses accessibility features to intercept all interactions between a user and the device.[20] |
| S0407 | Monokle | |
| S1062 | S.O.V.A. | |
| S1055 | SharkBot |
SharkBot can use accessibility event logging to steal data in text fields.[23] |
| S9006 | VajraSpy | |
| G0112 | Windshift |
Windshift has included keylogging capabilities as part of Operation ROCK.[25] |
| ID | Mitigation | Description |
|---|---|---|
| M1012 | Enterprise Policy |
When using Samsung Knox, third-party keyboards must be explicitly added to an allow list in order to be available to the end-user.[26] |
| M1011 | User Guidance |
Users should be wary of granting applications dangerous or privacy-intrusive permissions, such as keyboard registration or accessibility service access. |
| ID | Name | Analytic ID | Analytic Description |
|---|---|---|---|
| DET0661 | Detection of Keylogging | AN1751 |
Defender correlates an app acquiring input-capture capability (AccessibilityService enablement or default IME set) with high-frequency text-change/IME commit callbacks sourced from other packages, followed by local keylog persistence and/or small, immediate network egress. Chain: capability/permission → intercept (accessibility ‘TYPE_VIEW_TEXT_CHANGED’ or IME commitText/onStartInput bursts) → persist to container → near-term egress. |
| AN1752 |
Defender correlates a custom keyboard extension activation (optionally with TCC ‘Full Access’) or abnormal UI text-entry interception with local keylog persistence and/or small egress. Chain: capability/consent (keyboard Full Access/TCC) → intercept (keyboard commit events or repeated secure text entry edits) → persist to container → near-term egress. |