
文法誘導進化的ファザーは、AndroidスマートフォンのATコマンドインターフェースをBluetoothおよびUSB経由で動的に解析し、DoS、プライバシー漏洩、およびプロトコルダウングレードの脆弱性を明らかにします。
「ATFuzzerによるパンドラの箱を開ける:Androidスマートフォン向けATインターフェースの動的解析」は、第35回ACSAC(2019年)に採択されました。 https://syed-rafiul-hussain.github.io/wp-content/uploads/2019/11/atfuzz.pdf
本論文は、BluetoothおよびUSBを介してセルラーベースバンドプロセッサが公開するATコマンドインターフェースの正確性と堅牢性のチェックに焦点を当てています。デバイスのアプリケーションプロセッサは、このインターフェースを使用してベースバンドプロセッサに高レベルコマンド(またはATコマンド)を発行し、セルラーネットワーク操作(例:電話の発信)を実行します。このインターフェースの脆弱性は、悪意のあるBluetooth周辺機器によって悪用され、DoS攻撃やプライバシー攻撃などのさまざまな攻撃を仕掛ける可能性があります。そのような脆弱性を特定するために、我々はATFuzzerを提案します。これは、具体的なATコマンドではなく、ATコマンド文法の生成規則を突然変異させる、文法誘導型進化的ファジングアプローチを使用します。5社のベンダーから8台のAndroidスマートフォンを用いたATFuzzerの実証評価では、Bluetooth経由で4つ、USB経由で13の無効なATコマンド文法が明らかになり、DoS、セルラープロトコルバージョンのダウングレードから深刻なプライバシー漏洩に至るまで影響が及びました。
Python 2.7.15。ライブラリの非互換性があるため、Python 3は使用しないでください。必要なライブラリはファイルrequirements.txtに指定されており、以下のコマンドを実行してインストールできます。
pip install -r requirements.txt
注: Python 2.7用のモジュールpybluezはWindowsと互換性がありません。Windowsにpybluezをインストールするには、以前のバージョンをダウンロードする必要があります。pybluezでPyBluez‑0.22‑cp27をダウンロードし、以下のコマンドでインストールしてください。
pip install <pybluezファイル.whl>
ATFuzzerを実行するには、以下のコマンドを実行します。
sudo python executeFuzzer.py <文法リスト> <デバイス名> <ポート(オプション)>
代わりに、ランダムに選択された複数の文法でATFuzzerを実行することもできます。次のコマンドを使用します。
sudo python executeFuzzer.py multi <デバイス名> <ポート(オプション)>
プログラムは以下の4つのオプションから選択を求めます。
これらのオプションにより、ユーザーは実行するATFuzzerの種類を選択できます。これは、ファザーの有効性をテストおよび評価するために基本となります。
最後に、ATFuzzerはATコマンド送信に使用するチャンネルを指定する必要があります。次の3つのオプションから1つを選択できます。
Bluetoothオプションを選択した場合、プログラムはターゲットデバイスのBluetoothアドレスを尋ねます。ユーザーはデバイスのBluetooth MACアドレスをXX:XX:XX:XX:XX:XXの形式(例:1A:2B:3C:4D:5E:6F)で入力できます。
テスト実行は、偽の評価パラメータを使用してATFuzzerを実行し、デバイスにコマンドを送信しません。このオプションはテスト目的のみであるため、実際のスマートフォンのファジングには使用しないでください。
注: LinuxでBluetooth ATFuzzerを実行する場合、システム構成によってはプログラムをsudoで実行する必要があるかもしれません。
以下に、ATFuzzerの実装の構造について説明します。
commandGrammar.json: 80以上のATコマンドの文法セットを含むjsonファイル。文法はプログラムが効率的に読み取れる特定の構造に従って定義されています。
executeFuzzer.py: ユーザーがATFuzzerを実行できるようにするメインプログラム。さまざまな実行オプションを提供します(実行方法を参照)。
grammarFuzzer.py: 実際のファジングを実装します。ユーザーが送信したATコマンドの文法を読み取り、ファジングループ(入力生成 - 入力送信 - 文法評価 - 文法進化)を実行します。
multiGrammarFuzzer.py: 実際のファジングを実装します。ランダムに選択されたATコマンドの文法を読み取り、ファジングループ(入力生成 - 入力送信 - 文法評価 - 文法進化)を実行します。
grammarModifier.py: 進化フェーズの関数を実装します。これらの関数には文法交叉と文法突然変異が含まれます。
inputGen.py: 入力文法を与えられたランダムなATコマンドインスタンスを生成します。
atCmdInterface.py: ターゲットデバイスのATインターフェースと対話するために必要な関数を実装します。デバイスとの通信の設定、ATコマンドインスタンスの送信、そして応答の収集と評価を担当します。
afl_fuzzer.py: ATコマンドのコンテキストでAFLファザーを実行するために使用される関数を実装します。
utilityFunctions.py: メインプログラムの実行をサポートする関数を実装します。
results: 各ATFuzzer実行の結果を含むディレクトリ。
https://www.youtube.com/watch?v=qR4Pq5i0IRE
あなたの研究でsaviorの1つまたは複数のコンポーネントが役立つ場合は、以下の論文を引用してください。
@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}
}