
Grammatikgesteuerter evolutionärer Fuzzer zur dynamischen Analyse von AT-Befehlsschnittstellen auf Android-Smartphones über Bluetooth und USB, der DoS-Angriffe, Datenschutzlecks und Protokoll-Downgrade-Schwachstellen aufdeckt.
"Opening Pandora's Box through ATFuzzer: Dynamic Analysis of AT Interface for Android Smartphones" wurde zur 35. Annual Computer Security Applications Conference (ACSAC) 2019 angenommen. https://syed-rafiul-hussain.github.io/wp-content/uploads/2019/11/atfuzz.pdf
Dieses Papier konzentriert sich auf die Überprüfung der Korrektheit und Robustheit der AT-Befehlsschnittstelle, die vom zellularen Basisbandprozessor über Bluetooth und USB bereitgestellt wird. Der Anwendungsprozessor eines Geräts verwendet diese Schnittstelle, um High-Level-Befehle (oder AT-Befehle) an den Basisbandprozessor zur Durchführung von Mobilfunknetzoperationen (z. B. Telefonieren) zu senden. Schwachstellen in dieser Schnittstelle können von bösartigen Bluetooth-Peripheriegeräten ausgenutzt werden, um verschiedene Angriffe wie DoS- und Datenschutzangriffe zu starten. Um solche Schwachstellen zu identifizieren, schlagen wir ATFuzzer vor, das einen grammatikgesteuerten evolutionären Fuzzing-Ansatz verwendet, der Produktionsregeln der AT-Befehlsgrammatik anstelle konkreter AT-Befehle mutiert. Die empirische Evaluierung mit ATFuzzer an 8 Android-Smartphones von 5 Herstellern ergab 4 ungültige AT-Befehlsgrammatiken über Bluetooth und 13 über USB mit Auswirkungen, die von DoS, Herabstufung der zellularen Protokollversion bis hin zu schwerwiegenden Datenschutzlecks reichen.
Python 2.7.15. Bitte verwenden Sie nicht Python 3, da es Bibliotheksinkompatibilitäten gibt. Die benötigten Bibliotheken sind in der Datei requirements.txt angegeben und können mit dem folgenden Befehl installiert werden:
pip install -r requirements.txt
Hinweis: Das Modul pybluez für Python 2.7 ist nicht mit Windows kompatibel. Um pybluez unter Windows zu installieren, muss eine frühere Version heruntergeladen werden. Laden Sie PyBluez‑0.22‑cp27 von pybluez herunter und installieren Sie es mit dem Befehl:
pip install <pybluez file.whl>
Um ATFuzzer auszuführen, führen Sie den folgenden Befehl aus:
sudo python executeFuzzer.py <list_of_grammars> <device_name> <port (optional)>
Alternativ ist es möglich, ATFuzzer mit mehreren zufällig ausgewählten Grammatiken mit dem Befehl auszuführen:
sudo python executeFuzzer.py multi <device_name> <port (optional)>
Das Programm fragt dann nach einer Auswahl aus 4 Optionen:
Diese Optionen ermöglichen dem Benutzer, auszuwählen, welcher Typ von ATFuzzer ausgeführt werden soll. Dies ist grundlegend, um die Wirksamkeit unseres Fuzzers zu testen und zu bewerten.
Schließlich muss ATFuzzer angeben, welcher Kanal für die Übertragung von AT-Befehlen verwendet wird. Es kann eine von drei Optionen ausgewählt werden:
Wenn die Bluetooth-Option ausgewählt wird, fragt das Programm nach der Bluetooth-Adresse des Zielgeräts. Der Benutzer kann die Bluetooth-MAC-Adresse des Geräts im Format XX:XX:XX:XX:XX:XX (z. B. 1A:2B:3C:4D:5E:6F) eingeben.
Die Testausführung führt ATFuzzer mit gefälschten Evaluierungsparametern aus, ohne Befehle an ein Gerät zu senden. Diese Option dient nur zu Testzwecken, verwenden Sie sie daher nicht zum Fuzzen eines echten Smartphones.
Hinweis: Wenn Sie Bluetooth ATFuzzer unter Linux ausführen, kann es je nach Systemkonfiguration erforderlich sein, das Programm mit sudo auszuführen.
Im Folgenden geben wir eine Beschreibung der Struktur der Implementierung von ATFuzzer.
commandGrammar.json: JSON-Datei, die eine Reihe von Grammatiken für über 80 AT-Befehle enthält. Die Grammatiken sind nach einer bestimmten Struktur definiert, die es dem Programm ermöglicht, sie effizient zu lesen.
executeFuzzer.py: Hauptprogramm, das dem Benutzer ermöglicht, ATFuzzer auszuführen. Es bietet verschiedene Ausführungsoptionen (siehe Wie man es ausführt).
grammarFuzzer.py: Implementiert das eigentliche Fuzzing. Es liest die Grammatiken für die vom Benutzer übermittelten AT-Befehle und führt die Fuzzing-Schleife aus: Eingabeerzeugung – Eingabeübermittlung – Grammatikbewertung – Grammatikevolution.
multiGrammarFuzzer.py: Implementiert das eigentliche Fuzzing. Es liest die Grammatiken für die zufällig ausgewählten AT-Befehle und führt die Fuzzing-Schleife aus: Eingabeerzeugung – Eingabeübermittlung – Grammatikbewertung – Grammatikevolution.
grammarModifier.py: Implementiert die Funktionen für die Evolutionsphase. Zu diesen Funktionen gehören Grammatik-Crossover und Grammatik-Mutation.
inputGen.py: Erzeugt eine zufällige AT-Befehlsinstanz basierend auf einer Eingabegrammatik.
atCmdInterface.py: Implementiert die Funktionen, die für die Interaktion mit der AT-Schnittstelle des Zielgeräts erforderlich sind. Es ist für den Aufbau der Kommunikation mit dem Gerät, die Übermittlung der AT-Befehlsinstanzen und schließlich das Sammeln und Auswerten der Antworten verantwortlich.
afl_fuzzer.py: Implementiert die Funktionen, die zur Ausführung des AFL-Fuzzers im Kontext von AT-Befehlen verwendet werden.
utilityFunctions.py: Implementiert Unterstützungsfunktionen für die Ausführung des Hauptprogramms.
results: Verzeichnis, das die Ergebnisse jeder ATFuzzer-Ausführung enthält.
https://www.youtube.com/watch?v=qR4Pq5i0IRE
Wenn Ihre Forschung eine oder mehrere Komponenten von savior nützlich findet, zitieren Sie bitte das folgende Papier:
@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}
}