
Эволюционный фаззер на основе грамматики для динамического анализа интерфейсов AT-команд на смартфонах Android через Bluetooth и USB, выявляющий DoS, утечки конфиденциальности и уязвимости понижения протокола.
"Opening Pandora's Box through ATFuzzer: Dynamic Analysis of AT Interface for Android Smartphones" принята к публикации на 35-й Ежегодной конференции по приложениям компьютерной безопасности (ACSAC) 2019. https://syed-rafiul-hussain.github.io/wp-content/uploads/2019/11/atfuzz.pdf
В данной статье основное внимание уделяется проверке корректности и надежности интерфейса AT-команд, предоставляемого процессором сотового базового диапазона через Bluetooth и USB. Прикладной процессор устройства использует этот интерфейс для отправки команд высокого уровня (или AT-команд) процессору базового диапазона для выполнения операций сотовой сети (например, совершения телефонного звонка). Уязвимости в этом интерфейсе могут быть использованы злонамеренными Bluetooth-периферийными устройствами для проведения различных атак, включая DoS и атаки на конфиденциальность. Для выявления таких уязвимостей мы предлагаем ATFuzzer, который использует грамматически направленный эволюционный подход к фаззингу, мутирующий правила продукции грамматики AT-команд вместо конкретных AT-команд. Эмпирическая оценка ATFuzzer на 8 смартфонах Android от 5 производителей выявила 4 недействительные грамматики AT-команд через Bluetooth и 13 через USB, с последствиями от DoS, понижения версии сотового протокола до серьезных утечек конфиденциальности.
Python 2.7.15. Пожалуйста, не используйте python 3, так как есть несовместимости библиотек. Требуемые библиотеки указаны в файле requirements.txt, их можно установить, выполнив команду:
pip install -r requirements.txt
Примечание: модуль pybluez для python 2.7 несовместим с Windows. Для установки pybluez на Windows необходимо загрузить предыдущую версию. Загрузите PyBluez‑0.22‑cp27 с pybluez и установите её с помощью команды:
pip install <pybluez file.whl>
Для запуска ATFuzzer выполните следующую команду:
sudo python executeFuzzer.py <list_of_grammars> <device_name> <port (optional)>
Также можно запустить ATFuzzer с несколькими случайно выбранными грамматиками с помощью команды:
sudo python executeFuzzer.py multi <device_name> <port (optional)>
Затем программа предлагает выбрать один из 4 вариантов:
Эти опции позволяют пользователю выбрать, какой тип ATFuzzer запускать. Это необходимо для тестирования и оценки эффективности нашего фаззера.
Наконец, ATFuzzer требует указать, какой канал будет использоваться для передачи AT-команд. Можно выбрать один из трех вариантов:
Если выбран Bluetooth, программа запрашивает Bluetooth-адрес целевого устройства. Пользователь может ввести MAC-адрес Bluetooth устройства в формате: XX:XX:XX:XX:XX:XX (например, 1A:2B:3C:4D:5E:6F).
Тестовый запуск выполняет ATFuzzer с фиктивными параметрами оценки и без отправки команд устройству. Эта опция предназначена только для тестирования, поэтому не используйте её для фаззинга реального смартфона.
Примечание: если вы запускаете Bluetooth ATFuzzer на Linux, может потребоваться выполнить программу с sudo, в зависимости от конфигурации системы.
Ниже приводится описание структуры реализации ATFuzzer.
commandGrammar.json: json-файл, содержащий набор грамматик для более чем 80 AT-команд. Грамматики определены по определенной структуре, позволяющей программе эффективно их считывать.
executeFuzzer.py: основная программа, позволяющая пользователю запускать ATFuzzer. Предоставляет различные варианты выполнения (см. Как запустить).
grammarFuzzer.py: реализует собственно фаззинг. Считывает грамматики для AT-команд, предоставленные пользователем, и выполняет цикл фаззинга: генерация входных данных - отправка входных данных - оценка грамматики - эволюция грамматики.
multiGrammarFuzzer.py: реализует собственно фаззинг. Считывает грамматики для случайно выбранных AT-команд и выполняет цикл фаззинга: генерация входных данных - отправка входных данных - оценка грамматики - эволюция грамматики.
grammarModifier.py: реализует функции для фазы эволюции. Эти функции включают кроссовер грамматик и мутацию грамматик.
inputGen.py: генерирует случайный экземпляр AT-команды на основе заданной входной грамматики.
atCmdInterface.py: реализует функции, необходимые для взаимодействия с AT-интерфейсом целевого устройства. Отвечает за настройку связи с устройством, отправку экземпляров AT-команд и, наконец, сбор и оценку ответов.
afl_fuzzer.py: реализует функции, используемые для выполнения фаззера AFL в контексте AT-команд.
utilityFunctions.py: реализует вспомогательные функции для выполнения основной программы.
results: каталог, содержащий результаты каждого запуска ATFuzzer.
https://www.youtube.com/watch?v=qR4Pq5i0IRE
Если ваше исследование нашло один или несколько компонентов savior полезными, пожалуйста, процитируйте следующую статью:
@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}
}