ATFuzzer: Dynamic Analysis of AT Interface for Android Smartphones
“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.
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 than 80 AT commands. The grammars are defined following a specific structure that allows the program to efficiently read them.
executeFuzzer.py: the main program that 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 a random AT command instance given an 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.