All Projects → Imtiazkarimik23 → Atfuzzer

Imtiazkarimik23 / Atfuzzer

"Opening Pandora's Box through ATFuzzer: Dynamic Analysis of AT Interface for Android Smartphones" ACSAC 2019

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Atfuzzer

Cwac Security
CWAC-Security: Helping You Help Your Users Defend Their Data
Stars: ✭ 294 (+129.69%)
Mutual labels:  android-security
Aprox
android proxy setting tool
Stars: ✭ 34 (-73.44%)
Mutual labels:  android-security
Amdh
Android Mobile Device Hardening
Stars: ✭ 95 (-25.78%)
Mutual labels:  android-security
Adhrit
Android Security Suite for in-depth reconnaissance and static bytecode analysis based on Ghera benchmarks.
Stars: ✭ 399 (+211.72%)
Mutual labels:  android-security
Android Reports And Resources
A big list of Android Hackerone disclosed reports and other resources.
Stars: ✭ 590 (+360.94%)
Mutual labels:  android-security
Android Sitemap
👓 Every link ever to Android Developer site.
Stars: ✭ 61 (-52.34%)
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 (-62.5%)
Mutual labels:  android-security
Android Security
An app showcase of some techniques to improve Android app security
Stars: ✭ 125 (-2.34%)
Mutual labels:  android-security
R2frida
Radare2 and Frida better together.
Stars: ✭ 610 (+376.56%)
Mutual labels:  android-security
Rms Runtime Mobile Security
Runtime Mobile Security (RMS) 📱🔥 - is a powerful web interface that helps you to manipulate Android and iOS Apps at Runtime
Stars: ✭ 1,194 (+832.81%)
Mutual labels:  android-security
Sec skills
软件安全工程师技能表
Stars: ✭ 410 (+220.31%)
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 (+300%)
Mutual labels:  android-security
Axplorer
axplorer - Android Permission Mappings
Stars: ✭ 68 (-46.87%)
Mutual labels:  android-security
Injuredandroid
A vulnerable Android application that shows simple examples of vulnerabilities in a ctf style.
Stars: ✭ 317 (+147.66%)
Mutual labels:  android-security
Droid Watcher
[OUTDATED & UNSUPPORTED] Droid Watcher - Android Spy Application
Stars: ✭ 103 (-19.53%)
Mutual labels:  android-security
SecurityDemo
ndk进行简单的签名校验,密钥保护demo,android应用签名校验
Stars: ✭ 22 (-82.81%)
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 (-53.91%)
Mutual labels:  android-security
Awesome Mobile Security
An effort to build a single place for all useful android and iOS security related stuff. All references and tools belong to their respective owners. I'm just maintaining it.
Stars: ✭ 1,837 (+1335.16%)
Mutual labels:  android-security
Coeus
Android apk/sdk Scan包括android apk/sdk 安全审计代码扫描以及国内政策扫描
Stars: ✭ 122 (-4.69%)
Mutual labels:  android-security
Mobile Security Framework Mobsf
Mobile Security Framework (MobSF) is an automated, all-in-one mobile application (Android/iOS/Windows) pen-testing, malware analysis and security assessment framework capable of performing static and dynamic analysis.
Stars: ✭ 10,212 (+7878.13%)
Mutual labels:  android-security

ATFuzzer

"Opening Pandora's Box through ATFuzzer: Dynamic Analysis of AT Interface for Android Smartphones" is accepted to the 35th Annual Computer Security Applications Conference (ACSAC) 2019. https://relentless-warrior.github.io/wp-content/uploads/2019/11/atfuzz.pdf

Abstract

This paper focuses on checking the correctness and robustness of the AT command interface exposed by the cellular baseband processor through Bluetooth and USB. A device’s application processor uses this interface for issuing high-level commands (or, AT commands) to the baseband processor for performing cellular network operations (e.g., placing a phone call). Vulnerabilities in this interface can be leveraged by malicious Bluetooth peripherals to launch various attacks including DoS and privacy attacks. To identify such vulnerabilities, we propose ATFuzzer that uses a grammar-guided evolutionary fuzzing approach which mutates production rules of the AT command grammar instead of concrete AT commands. Empirical evaluation with ATFuzzer on 8 Android smartphones from 5 vendors revealed 4 invalid AT command grammars over Bluetooth and 13 over USB with implications ranging from DoS, downgrade of cellular protocol version to severe privacy leaks.

Run ATFuzzer

Requirements

Python 2.7.15. Please do not use python 3 because there are library incompatibilities. The required libraries are specified in the file requirements.txt and they can be installed executing the command:

pip install -r requirements.txt

Note: the module pybluez for python 2.7 is not compatible with Windows. To install pybluez on Windows it is necessary to download a previous version. Download PyBluez‑0.22‑cp27 at pybluez and install it with the command:

pip install <pybluez file.whl>

How to run

To run ATFuzzer execute the following command:

sudo python executeFuzzer.py <list_of_grammars> <device_name> <port (optional)>

Alternatively, it is possible to execute ATFuzzer with multiple random chosen grammars with the command:

sudo python executeFuzzer.py multi <device_name> <port (optional)>

The program then asks to choose among 4 option:

  • 0 - Standard fuzzer (includes crossover, mutation, feedback evaluation)
  • 1 - No feedback fuzzer
  • 2 - No crossover fuzzer
  • 3 - No mutation fuzzer

These options allows the user to choose which type of ATFuzzer to run. This is fundamental to test and evaluate the effectiveness of our fuzzer.

Finally, ATFuzzer requires to specify which channel will be used for the AT commands transmission. It is possible to select one among three options:

  • b - Bluetooth
  • u - USB
  • t - Test execution (does not require any connected device)

If the Bluetooth option is selected, the program asks for the Bluetooth address of the target device. The user may insert the Bluetooth MAC address of the device in the specific format: XX:XX:XX:XX:XX:XX (e.g., 1A:2B:3C:4D:5E:6F).

Test execution executes ATFuzzer with fake evaluation parameters and without submitting any command to a device. This option is only for testing purpose, so do not use it to fuzz an actual smartphone.

Note: if you run Bluetooth ATFuzzer on Linux, it may be necessary to execute the program with sudo, depending on the system configuration.

Structure of ATFuzzer implementation

In the following we provide a description of the structure of the implementation of ATFuzzer.

commandGrammar.json: json file which contains a set of grammars for more that 80 AT commands. The grammars are defined following a specific structure that allows the program to efficiently read them.

executeFuzzer.py: main program which allows the user to run ATFuzzer. It provides different options of execution (see How to run).

grammarFuzzer.py: implements the actual fuzzing. It reads the grammars for the AT commands submitted by the user and performs the fuzzing loop: input generation - input submission - grammar evaluation - grammar evolution.

multiGrammarFuzzer.py: implements the actual fuzzing. It reads the grammars for the randomly chosen AT commands and performs the fuzzing loop: input generation - input submission - grammar evaluation - grammar evolution.

grammarModifier.py: implements the functions for the evolution phase. Such functions include grammar crossover and grammar mutation.

inputGen.py: generates an random AT command instance given a input grammar.

atCmdInterface.py: implements the functions necessary to interact with the AT interface of the target device. It is responsible for setting up the communication with the device, submitting the AT command instances, and finally collecting and evaluating the responses.

afl_fuzzer.py: implements the functions used to execute AFL fuzzer in the context of AT commands.

utilityFunctions.py: implements support functions for the execution of the main program.

results: directory containing the results of each ATFuzzer execution.

Demo

https://www.youtube.com/watch?v=qR4Pq5i0IRE

Citation

If your research find one or several components of savior useful, please cite the following paper:


@inproceedings{karim2019opening,
  title={Opening Pandora's box through ATFuzzer: dynamic analysis of AT interface for Android smartphones},
  author={Karim, Imtiaz and Cicala, Fabrizio and Hussain, Syed Rafiul and Chowdhury, Omar and Bertino, Elisa},
  booktitle={Proceedings of the 35th Annual Computer Security Applications Conference},
  pages={529--543},
  year={2019}
} 

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].