
BSFは、ピアツーピアボットネットを実装および拡張し、設定を微調整し、防御者が監視と対策を評価できるようにする離散シミュレーション環境を提供します。
ボットマスターと防御者との間の軍拡競争において、防御者はボットマスターが導入する行動や新たな脅威に対応しなければならないため、ボットマスターが優位に立っています。Botnet Simulation Framework (BSF)は、競争の場を平等にすることでこの問題に対処します。これにより防御者は、新しいボットネット監視技術や対策を開発・評価することで、軍拡競争で先を行くことができます。実環境での実験は他の研究者の妨害になり、ボットマスターに気づかれる可能性があるため、これは極めて重要です。
BSFは、ピアツーピアボットネットの現実的なシミュレーションを可能にし、監視メカニズムやテイクダウンの試みが実環境に展開される前に、その設計と影響を調査・研究することができます。BSFは離散イベントボットネットシミュレータであり、以下のような高度に設定可能(かつカスタマイズ可能)なボットネット機能を提供します:
さらに、BSFはシミュレーションの結果をさらに調査するためのインタラクティブな可視化モジュールを提供します。BSFは、研究者や防御者が対監視メカニズム [1,2,3] の存在下でさまざまな監視メカニズムの設計を研究できるようにすることを目的としています。さらに、このツールにより、ユーザーはこれまでに見られたボットネットの設計選択の影響を調査・理解することができます。
BSFは、シミュレーションフレームワークと可視化ツールで構成されています。シミュレーションフレームワーク自体はOMNeT++上に構築されています。可視化はDash上に構築されており、お気に入りのブラウザ内でインタラクティブな機能を提供します。
BSFの現在のバージョンは、OMNeT++バージョン5.4.1を使用して構築およびテストされています。
インストールガイド、チュートリアル、および提供される機能に関するリファレンスについては、OMNeT++ドキュメントを参照してください。
ボットネットシミュレーションを可視化するには、以下のPythonパッケージが必要です:
pip install dash==1.2.0 # The core dash backend
pip install dash-daq==0.1.0 # DAQ components (newly open-sourced!)
pip install networkx
pip install natsort
pip install numpy
OMNeT++シミュレーションは、.iniファイルで定義された設定に基づいています。このリポジトリのsimulationsフォルダには、tests.iniおよびsample.iniファイル内に事前定義された設定が含まれています。
設定を実行するには、OMNeT++ IDEまたはコマンドラインのいずれかを使用できます。BSFはOMNeT++のグラフィカル機能を使用しないため、すべてのシミュレーションをcmdenv(つまりコンソール出力のみ)で実行することをお勧めします。
IDE内でシミュレーションを実行するには、実行構成を設定する必要があります。そのためには、*.iniファイルを右クリックし、Run As -> Run Configurationsを選択します。次に、以下の画像に示すように設定ファイルを設定します:

あとは適用と実行をクリックするだけです。シミュレーションの出力がIDEコンソールに表示されます。
コマンドラインから実行するには、まずプロジェクトをビルドする必要があります。ルートフォルダに移動し、以下を実行します:
make MODE=release all
その後、simulationsフォルダに移動し、以下を実行します:
../BSF -r 0 -m -u Cmdenv -c SampleConfig_Crawler -n .. samples.ini
IDEまたはコマンドラインのどちらからシミュレーションを実行しても、次のような出力が表示されます:
** Event #577792 t=64831.46985369179 Elapsed: 4.21157s (0m 04s) 37% completed (37% total)
Speed: ev/sec=180486 simsec/sec=14682 ev/simsec=12.293
Messages: created: 406512 present: 2108 in FES: 487
Just crawled: 24 nodes at 88983.25891616358
Just crawled: 40 nodes at 92583.25891616358
** Event #1050880 t=93607.74036896409 Elapsed: 6.28757s (0m 06s) 54% completed (54% total)
Speed: ev/sec=227885 simsec/sec=13861.4 ev/simsec=16.4402
Messages: created: 729732 present: 2106 in FES: 630
Just crawled: 108 nodes at 96183.25891616358
Just crawled: 286 nodes at 99783.25891616358
Just crawled: 570 nodes at 103383.25891616358
「**」で始まるブロックは、シミュレーションの進行状況と統計を示すOMNeT++の標準出力です。選択した設定では、クローラによる追加出力があり、各クローリング間隔で発見されたノード数を報告します。これだけではあまりわかりませんが、次のセクションでは、ボットネットとクローラの結果の両方を可視化する方法を示します。
可視化はシミュレーションフレームワークから分離されており、生成されたグラフと監視ログファイルを基に動作します。メインフレームワークを実行しなくても可視化を試せるように、サンプルデータもアップロードしています。
シミュレーションの結果を可視化するには、visualizationフォルダに移動し、app.pyを呼び出します。その後、お気に入りのブラウザを開き、*http://127.0.0.1:8050/*を開きます。これにより、サンプル設定の1つのグラフビューが表示され、以下のようなものが表示されます:

画面右上のドロップダウンメニューでは、異なる設定の結果を選択できます。画面下部には、ボットネットの利用可能なすべてのスナップショットを示すタイムラインが表示されます。これにより、ボットのアクティビティと接続性の変化を可視化できます。さらに、右側のメニューでは、クローラやセンサーによって収集された情報を可視化できます。次の図は、クローラのビューが緑色で強調表示された例です。

さらに、現在は監視およびテイクダウン操作の分析を支援する、より高度な可視化機能の開発に取り組んでいます。
以下の出版物は、BSFの使用例を示しています:
[3] Emmanouil Vasilomanolakis, Max Mühlhäuser, Jan Helge Wolf, Leon Böck, Shankar Karuppayah