All Projects → reddr → Axplorer

reddr / Axplorer

Licence: apache-2.0
axplorer - Android Permission Mappings

Projects that are alternatives of or similar to Axplorer

apkutil
a useful utility for android app security testing
Stars: ✭ 52 (-23.53%)
Mutual labels:  android-security
Cwac Security
CWAC-Security: Helping You Help Your Users Defend Their Data
Stars: ✭ 294 (+332.35%)
Mutual labels:  android-security
Android Reports And Resources
A big list of Android Hackerone disclosed reports and other resources.
Stars: ✭ 590 (+767.65%)
Mutual labels:  android-security
android-webauthn-authenticator
A WebAuthn Authenticator for Android leveraging hardware-backed key storage and biometric user verification.
Stars: ✭ 101 (+48.53%)
Mutual labels:  android-security
CheckoutVerifier
Verify your In-App Purchase receipts & protect your Apps from hacking, patching used by Piracy Apps like Lucky Patcher.
Stars: ✭ 48 (-29.41%)
Mutual labels:  android-security
Adhrit
Android Security Suite for in-depth reconnaissance and static bytecode analysis based on Ghera benchmarks.
Stars: ✭ 399 (+486.76%)
Mutual labels:  android-security
remote-adb-scan
pure python remote adb scanner + nmap scan module
Stars: ✭ 19 (-72.06%)
Mutual labels:  android-security
Pinkman
PINkman is a library to help implementing an authentication by a PIN code in a secure manner. The library derives hash from the user's PIN using Argon2 function and stores it in an encrypted file. The file is encrypted with the AES-256 algorithm in the GCM mode and keys are stored in the AndroidKeystore.
Stars: ✭ 59 (-13.24%)
Mutual labels:  android-security
SecurityDemo
ndk进行简单的签名校验,密钥保护demo,android应用签名校验
Stars: ✭ 22 (-67.65%)
Mutual labels:  android-security
Dexcalibur
[Official] Android reverse engineering tool focused on dynamic instrumentation automation. Powered by Frida. It disassembles dex, analyzes it statically, generates hooks, discovers reflected methods, stores intercepted data and does new things from it. Its aim is to be an all-in-one Android reverse engineering platform.
Stars: ✭ 512 (+652.94%)
Mutual labels:  android-security
dumproid
Android process memory dump tool without ndk.
Stars: ✭ 55 (-19.12%)
Mutual labels:  android-security
Damn-Vulnerable-Bank
Damn Vulnerable Bank is designed to be an intentionally vulnerable android application. This provides an interface to assess your android application security hacking skills.
Stars: ✭ 379 (+457.35%)
Mutual labels:  android-security
Sec skills
软件安全工程师技能表
Stars: ✭ 410 (+502.94%)
Mutual labels:  android-security
SSBiometricsAuthentication
Biometric factors allow for secure authentication on the Android platform.
Stars: ✭ 87 (+27.94%)
Mutual labels:  android-security
R2frida
Radare2 and Frida better together.
Stars: ✭ 610 (+797.06%)
Mutual labels:  android-security
fingerprintjs-android
Swiss army knife for identifying and fingerprinting Android devices.
Stars: ✭ 336 (+394.12%)
Mutual labels:  android-security
Injuredandroid
A vulnerable Android application that shows simple examples of vulnerabilities in a ctf style.
Stars: ✭ 317 (+366.18%)
Mutual labels:  android-security
Android Sitemap
👓 Every link ever to Android Developer site.
Stars: ✭ 61 (-10.29%)
Mutual labels:  android-security
Aprox
android proxy setting tool
Stars: ✭ 34 (-50%)
Mutual labels:  android-security
Awesome Android Security
A curated list of Android Security materials and resources For Pentesters and Bug Hunters
Stars: ✭ 506 (+644.12%)
Mutual labels:  android-security

axplorer

axplorer (Android explorer) is a static analysis tool to study Android's application framework's internals. It generates high-precision call-graphs for middleware services that are subsequently analyzed via control-flow slicing. As one of the results, axplorer can generate very accurate Android API to permission mappings.

Note: As for now we haven't released the source code yet, due to time constraints that prevent us from publishing well written and documented code.

Android Permission Mappings

For the API levels 16 (4.1) - 25 (7.1) we currently provide three different mappings (SDK, Application Framework, and ContentProviders).
For the SDK and framework mapping, the presence of multiple permissions does not necessarily mean that all permissions are required to execute the method. Often, permissions are only required for specific input arguments or execution paths. Hence, axplorer reports the upper threshold (a more fine-grained path-sensitive analysis is currently not available).

Current shortcomings:

  • Maps for SDK/Framework >23 might be incomplete due to the fact that parts of the permission checking have been moved to the AppOpsManager (runtime permission checks). This requires some additional anaylsis which we have not implemented yet.
  • Maps are currently missing APIs with permissions checked in native code (Camera, etc.). We hope to provide these soon.

Application Framework Mapping

The framework permission mapping includes any permission-protected, public method/API of the application framework that is accessible via inter-process communication (IPC). Apps might bypass the Android SDK to directly access these methods.

<method signature> :: <permission> [,<permissions>]

Android SDK Mapping

The SDK mapping includes the documented API that requires at least one permission. The documented API comprises everything the app developer is supposed to use when implementing against the SDK.

<method signature> :: <permission> [,<permissions>]

ContentProvider Mapping

The ContentProvider (CP) mappings includes any system ContentProviders that protect read/write operations on the entire CP or paths thereof with permissions (e.g. contact content provider). The mapping follows the template below (derived from Content-Provider Basics.

content:// <path|pathPrefix|pathPattern:<path*>> [R|W|RW|grant-uri-permission]

There exist four different invariants:

  1. content:// [R|W|RW]
  2. content:// [grant-uri-permission]
  3. content:// <path|pathPrefix|pathPattern:<path*>> [R|W|RW]
  4. content:// <path|pathPrefix|pathPattern:<path*>> [grant-uri-permission]

Example (invariant 1)

  • com.android.providers.contacts.CallLogProvider content://call_log [R] android.permission.READ_CALL_LOG
  • com.android.providers.contacts.CallLogProvider content://call_log [W] android.permission.WRITE_CALL_LOG

Example (invariant 3):

  • com.android.bluetooth.opp.BluetoothOppProvider content://com.android.bluetooth.opp path:/btopp [RW] android.permission.ACCESS_BLUETOOTH_SHARE

Example (invariant 3+4):

  • com.android.providers.downloads.DownloadProvider content://downloads pathPrefix:/all_downloads/ [grant-uri-permission]
  • com.android.providers.downloads.DownloadProvider content://downloads pathPrefix:/all_downloads [RW] android.permission.ACCESS_ALL_DOWNLOADS
  • com.android.providers.downloads.DownloadProvider content://downloads pathPrefix:/my_downloads [RW] android.permission.INTERNET
  • com.android.providers.downloads.DownloadProvider content://downloads pathPrefix:/download [RW] android.permission.INTERNET

Permission Statistics

Number of permissions per API level by permission protection level.
API levels:
API 16 (Android 4.1, 4.1.1), API 17 (Android 4.2, 4.2.2), API 18 (Android 4.3), API 19 (Android 4.4), API 21 (Android 5.0), API 22 (Android 5.1), API 23 (Android 6.0), API 24 (Android 7.0), API 25 (Android 7.1)

Abbreviations:
signature (sig), development (dev), privileged (priv), installer (inst), preinstalled (pre)

Protection level/API 16 17 18 19 21 22 23 24 25
normal 18 23 23 24 25 25 29 29 29
dangerous 49 39 37 35 39 38 20 21 21
signature (sig) 25 34 40 42 43 43 44 54 54
sig|system 32 38 36 46 61 64 5 1 2
sig|system|dev 8 9 11 11 12 12 - - -
sig|priv - - - - - - 60 71 72
sig|priv|dev - - - - - - 12 13 12
sig|priv|dev|appop - - - - - - 1 1 1
sig|priv|inst - - - - - - 1 1 1
sig|inst - - - - - - 4 4 4
sig|inst|verifier - - - - - - 2 3 3
sig|dev|appop - - - - 1 1 - - -
sig|pre|appop|pre23 - - - - - - 1 1 1
Total permissions: 132 143 147 158 181 183 179 199 200

Manifest files

The manifests directory contains the original AndroidManifest files for the framework (named: AndroidManifest-$APILEVEL.xml) and all system apps within the AOSP release.

Scientific publication

Abstract
In contrast to the Android application layer, Android's application framework's internals and their influence on the platform security and user privacy are still largely a black box for us. In this paper, we establish a static runtime model of the application framework in order to study its internals and provide the first high-level classification of the framework's protected resources. We thereby uncover design patterns that differ highly from the runtime model at the application layer.

We demonstrate the benefits of our insights for security-focused analysis of the framework by re-visiting the important use-case of mapping Android permissions to framework/SDK API methods. We, in particular, present a novel mapping based on our findings that significantly· improves on prior results in this area that were established based on insufficient knowledge about the framework's internals. Moreover, we introduce the concept of permission locality to show that although framework services follow the principle of separation of duty, the accompanying permission checks to guard sensitive operations violate it.

Paper
For technical details and evaluation results, please refer to our publication:

On Demystifying the Android Application Framework: Re-Visiting Android Permission Specification Analysis
Usenix Security 2016

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].