Adversaries may track a device’s physical location through use of standard operating system APIs via malicious or exploited applications on the compromised device.
On Android, applications holding the ACCESS_COAURSE_LOCATION
or ACCESS_FINE_LOCATION
permissions provide access to the device’s physical location. On Android 10 and up, declaration of the ACCESS_BACKGROUND_LOCATION
permission in an application’s manifest will allow applications to request location access even when the application is running in the background.[1] Some adversaries have utilized integration of Baidu map services to retrieve geographical location once the location access permissions had been obtained.[2][3]
On iOS, applications must include the NSLocationWhenInUseUsageDescription
, NSLocationAlwaysAndWhenInUseUsageDescription
, and/or NSLocationAlwaysUsageDescription
keys in their Info.plist
file depending on the extent of requested access to location information.[4] On iOS 8.0 and up, applications call requestWhenInUseAuthorization()
to request access to location information when the application is in use or requestAlwaysAuthorization()
to request access to location information regardless of whether the application is in use. With elevated privileges, an adversary may be able to access location data without explicit user consent with the com.apple.locationd.preauthorized
entitlement key.[5]
ID | Name | Description |
---|---|---|
S1061 | AbstractEmu |
AbstractEmu can access a device's location.[6] |
S0309 | Adups | |
S1095 | AhRat | |
S0304 | Android/Chuli.A |
Android/Chuli.A stole geo-location data.[9] |
S0292 | AndroRAT | |
S0422 | Anubis | |
S1079 | BOULDSPY |
BOULDSPY can get a device’s location using GPS or network.[12] |
S1094 | BRATA | |
S0655 | BusyGasper |
BusyGasper can collect the device’s location information based on cellular network or GPS coordinates.[14] |
C0033 | C0033 |
During C0033, PROMETHIUM used StrongPity to access the device’s location.[15] |
S0529 | CarbonSteal |
CarbonSteal can access the device’s location and track the device over time.[16] |
S0480 | Cerberus | |
S1083 | Chameleon | |
S0323 | Charger |
Charger checks the local settings of the device and does not run its malicious logic if the device is located in Ukraine, Russia, or Belarus.[19] |
S0555 | CHEMISTGAMES |
CHEMISTGAMES has collected the device’s location.[20] |
S0425 | Corona Updates |
Corona Updates can track the device’s location.[21] |
S0505 | Desert Scorpion |
Desert Scorpion can track the device’s location.[22] |
S1092 | Escobar |
Escobar can request coarse and fine location permissions to track the device.[23] |
S0507 | eSurv | |
S0405 | Exodus |
Exodus Two can extract the GPS coordinates of the device.[25] |
S1080 | Fakecalls | |
S0182 | FinFisher |
FinFisher tracks the latitude and longitude coordinates of the infected device.[27] |
S0408 | FlexiSpy | |
S1093 | FlyTrap | |
S0577 | FrozenCell |
FrozenCell has used an online cell tower geolocation service to track targets.[30] |
S0535 | Golden Cup |
Golden Cup can track the device’s location.[31] |
S0551 | GoldenEagle |
GoldenEagle has tracked location.[16] |
S0421 | GolfSpy | |
S0536 | GPlayed | |
S0544 | HenBox | |
S1128 | HilalRAT | |
S1077 | Hornbill |
Hornbill can access a device’s location and check if GPS is enabled. Hornbill has logic to only log location changes greater than 70 meters.[35] |
S0463 | INSOMNIA | |
S0485 | Mandrake | |
S0407 | Monokle | |
S0399 | Pallas |
Pallas tracks the latitude and longitude coordinates of the infected device.[27] |
S0289 | Pegasus for iOS |
Pegasus for iOS update and sends the location of the phone.[38] |
S0291 | PJApps |
PJApps has the capability to collect and leak the victim's location.[10] |
S0295 | RCSAndroid |
RCSAndroid can record location.[39] |
S0549 | SilkBean | |
S0327 | Skygofree | |
S0324 | SpyDealer | |
S0305 | SpyNote RAT |
SpyNote RAT collects the device's location.[41] |
S0328 | Stealth Mango |
Stealth Mango can perform GPS location tracking as well as capturing coordinates as when an SMS message or call is received.[42] |
S1082 | Sunbird | |
S0329 | Tangelo |
Tangelo contains functionality to gather GPS coordinates.[42] |
S1069 | TangleBot | |
S0558 | Tiktok Pro |
Tiktok Pro can track the device’s location.[44] |
S0418 | ViceLeaker |
ViceLeaker can collect location information, including GPS coordinates.[45][46] |
S0506 | ViperRAT | |
G0112 | Windshift |
Windshift has included location tracking capabilities in the malicious apps deployed as part of Operation BULL and Operation ROCK.[48] |
S0314 | X-Agent for Android |
X-Agent for Android was believed to have been used to obtain locational data of Ukrainian artillery forces.[49] |
ID | Mitigation | Description |
---|---|---|
M1012 | Enterprise Policy |
If devices are enrolled using Apple User Enrollment or using a profile owner enrollment mode for Android, device controls prevent the enterprise from accessing the device’s physical location. This is typically used for a Bring Your Own Device (BYOD) deployment. |
M1014 | Interconnection Filtering |
Filtering requests by checking request origin information may provide some defense against spurious operators.[50] |
M1006 | Use Recent OS Version |
On Android 11 and up, users are not prompted with the option to select "Allow all the time" and must navigate to the settings page to manually select this option. On iOS 14 and up, users can select whether to provide Precise Location for each installed application. |
M1011 | User Guidance |
Users should be wary of granting applications dangerous or privacy-intrusive permissions, such as access to location information. Users should also protect their account credentials and enable multi-factor authentication options when available. |
ID | Data Source | Data Component | Detects |
---|---|---|---|
DS0041 | Application Vetting | Permissions Requests |
Android applications requesting the |
DS0042 | User Interface | System Settings |
In both Android (6.0 and up) and iOS, the user can view which applications have the permission to access the device location through the device settings screen and revoke permissions as necessary. |