妨害検出器を構築する方法

ワイヤレス通信のない今日の世界を想像してください。携帯電話、自宅でのWifi、GPS、Bluetoothキーボード/マウス/イヤホンなどはありません。明らかに、私たちが認識している以上にワイヤレス接続に依存しています。それでは、これらの無線信号が役に立たなくなり、通信が完全に失われるという方法で影響を受けるとしたらどうでしょうか?それも可能でしょうか?まあ、場合によってはそうであり、達成するのは非常に簡単です...しかし、幸運にもこれらのタイプの脅威を識別する方法があり、それらの1つを紹介します。

ジャミング

先ほど言ったように、私たちは無線ネットワークにかなり依存しています。ワイヤレス通信は、2人が話しているようなものです。そのうちの1人が話し、次に耳を傾けます。第三者が彼らに近づき、他の2人がもうお互いに聞くことができないほど大声で叫び始めたらどうでしょうか?最初は会話を続けようとしますが、すぐにそれが不可能であることに気付き、クレイジーな男が黙るのを待って話すことをやめます。これは、多くの通信プロトコルで起こることです。チャンネルがビジーであることに気づくと、彼らは立ち去ります。したがって、これらのデバイス間のメッセージ交換は中断されます。他のプロトコルのように、メディアが空いていないときに通信しようとしても、ノイズが大きすぎると、相手側でメッセージが正しく受信されず、通信が不可能になります。これは、ワイヤレスジャミングと呼ばれるものです。

ワイヤレスネットワークで意図的な干渉を引き起こすことを目的とする多数の悪意のあるワイヤレスデバイスがあります。それらは明らかに違法ですが、最近では手頃な価格でオンラインで購入することができます。

これらのジャマーは次のように機能します。これらは、使用されているワイヤレス通信プロトコルの物理層に影響を与える強力なワイヤレス信号を生成します。つまり、特定の周波数帯域のプロトコルに影響を与えることができます。これらは、OSIスタックの最初の層である媒体に影響を与えます。その結果、通信に使用される上位層が影響を受けます。 Wifi、bluetooth、3G、4G、GSM、GPS、名前を付けます。会話の途中で叫び始める狂った男のようです。スピーカーが英語またはロシア語のどちらで話しているかは気にしません。お互いに話すことができなくなります。

妨害信号にはさまざまなタイプがありますが、最も一般的に使用されるのは次の4つです。

連続波:振幅が一定で周波数が一定の正弦波狭帯域信号

周波数変調:サービス帯域の周波数を掃引する一定の振幅と可変の周波数を持つ正弦波信号

広帯域:単一のエミッターの帯域幅に関して大きい周波数帯域を送信します

パルス信号:サービス帯域全体でいくつかの高調波成分が分割された断続的な信号

ワイヤレス通信に影響を与えるために使用できる信号には複数のタイプがあります。ただし、インターネット上で簡単に購入できる商用妨害装置は、特定の帯域で強力で広帯域の妨害装置を実現する最も安価な方法であるため、パルス式妨害装置を使用します。

それで、私たちはこれについて何をしますか?通常の無線ネットワークに影響を与えようとしている悪意のあるデバイスがあることをどのようにして検出できますか?解決策の1つは、ジャマー検出器を構築することです。シンプルでしょ? :)

DoSセンシング—妨害検出器

今日(このブログ記事を書き始めた日)、Worldsensingに参加してから2年が経ちました。これは最近大きく成長しているIoT企業であり、個人的にはここで働くことは私にとって素晴らしい経験でした。私は主に欧州連合によって設立されたイノベーションプロジェクトに主に取り組むチームの一員です。 CIPSECと呼ばれるこれらのプロジェクトの1つにおいて、ワイヤレスサービス拒否(DoS)攻撃を検出できるツールの開発が求められました。問題を分析し、多くの研究を行った後、DoS Sensing、ジャマーディテクターIoTデバイスを構築することにしました。結局のところ、私たちはIoT企業です!

アイデアは、周波数帯域に関係なく、任意のワイヤレスネットワークを保護できるデバイスを持つことでした。これは、物理層で異常を検出し、攻撃がいつ行われたかを通知できる必要があることを意味します。これにより、単一のデバイスを使用して、WiFiルーター、携帯電話、またはLoRaを介して通信するWorldsensingのLoadsensingデータロガーなどの異種デバイスのセキュリティを向上させることができます。

その結果、私たちが欲しかったのは、ワイヤレス信号に干渉せず、単に受動的に聞き取り、異常を見つけるためにそれらを分析するスマートセンサーでした。そのようなことがあった場合は、何らかのアクションが取られるように攻撃について通知する必要があります。もちろん、攻撃が行われるときに、攻撃信号の強度をリアルタイムで確認するための視覚的なツールがあると役立ちます。

ソリューションのアーキテクチャ

しかし、どうやってそのようなものを構築するのでしょうか?まず、通信プロトコルにとらわれず、物理層を分析する場合、SDR(Software Defined Radio)モジュールを使用するのが最善の選択肢です。これらのモジュールは主にマルチバンド無線のみですが、一般にハードウェア(フィルター、モジュレーター、ミキサーなど)で実装される他のすべてのコンポーネントはソフトウェアで実行されます。これにより、通信プロトコルが何であれ、ワイヤレス信号をアナログ形式からデジタル形式に変換できます。次に、信号のタイプを分析し、それがよく知られている妨害信号の1つに対応することを確認するだけです。これは、信号の署名と既知の署名を比較するようなものです。

次に、必要なのはSDRモジュールだけですか?さて、SDRモジュールのみでは分析を行えません。アナログデータをデジタルサンプルに変換するだけです。ああ、ところで、もちろんアンテナも必要です。ワイヤレス信号をキャプチャせずにキャプチャするにはどうすればよいですか?右。しかし、アンテナは周波数に依存します。すべての周波数に同じアンテナを使用することはできません。正しいですが、使用できる広範囲の周波数をカバーするアンテナがいくつかあります。

OK、アンテナ、SDRモジュール、およびそれによって生成されたデータを処理するものが必要になります。これにより、センサーであるIoTデバイスが構成されます。ワイヤレススペクトルをキャプチャし、検出イベントに変換できる必要があります。これらのイベントは、「実際に妨害者がいる」または「妨害者がいない」タイプであり、ソリューションをリアルタイムで実行するために定期的に通知する必要があります。これらのイベントには、進行中の攻撃の種類、攻撃している信号の信号強度、攻撃が見つかった頻度、そしてもちろんタイムスタンプなどの情報が含まれます。

良い。この時点で残っているのは、これらの攻撃イベントをリアルタイムで視覚化できるソフトウェアだけです。通常、このようなアプリケーションはクラウドで実行され、それにアクセスするためのWebインターフェイスを提供します。さらに、クラウドで実行されているソフトウェアは、過去のイベントを見たい場合に備えてデータを保存する手段も提供する必要があります。

OK私たちのアーキテクチャは次のようなものです。

ワイヤレス信号はアンテナで受信されます。次に、SDRモジュールによってデジタルサンプルに変換されます。これらは処理ボードによって処理され、ボードが攻撃が行われているかどうかを判断すると、結果は監視サーバーに伝達され、監視サーバーはデータを受信して​​保存します。次に、視覚化ツールを使用して、これらのイベントをリアルタイムで履歴的に表示できます。

センサー(ハードウェア)

次に、センサーを構築する必要があります。アンテナから始めましょう。複数の帯域をカバーするアンテナがいくつかあることを知っています。たとえば、この帯域は実際にテストして良好な結果が得られています。いくつかの周波数帯域をカバーし、複数のプロトコルを保護するために、このようなものを使用できます。それでも、最初はWifi帯域を保護するためのプロトタイプの作成に重点を置いていたため、2.4 Ghz — 2.5 Ghzアンテナで十分でした。その理由は後で説明します。

SDRモジュールも必要です。どれ?市場にはいくつかの製品があります。専門家との調査と議論の後、このプロトタイプではHackRF Oneを選択することにしました。このデバイスは優れた価格と品質の関係を提供し、1 MHz〜6 GHzの周波数をカバーします。そのドライバーはオープンソースであり、ほとんどのLinuxディストリビューションのパッケージマネージャーを介して簡単にインストールできます。

いいですね、これは形になり始めています。ここで、処理ボードであるSDRモジュールによって生成されたデジタルサンプルを処理できるマシンが必要です。ここでは、少し注意が必要です。データのストリームをリアルタイムで分析する場合は、かなりの処理能力が必要です。適切なサンプリングレート(5 Mspsなど)があると、合計で300 Mbpsを超えるデータレートが得られます。すべてを分析したい場合、これは大量のデータです。幸いなことに、リアルタイムソリューションを実現するためには、毎秒少なくとも数束のデータを除いてすべてを処理する必要はありません。この場合、ラップトップは素晴らしいですが、ラップトップでIoTデバイスを作成することはできません。あなたは間違いなく小さなものが必要です。次に、Raspberry Piを考えましたが、バージョン3でさえ目的によっては十分ではない場合があります(ただし、結果に遅延が発生することを気にしない場合でも機能します)。これが、Odroid C2を採用することにした理由です。このボードはその価格で非常に強力で、ubuntu-minimalを実行できます。これは非常に役立ちます。 HackRF Oneを接続したい場合、依存関係は本当に簡単にインストールでき、非常に堅牢なボードです。

パーフェクト。他に何か?はい、そうです。 IoTデバイスを構築し、見栄えを良くしたい場合は、箱が必要になります。さらに、そのデバイスを屋外に設置する場合は、ボックスが防水であることを確認してください!すでに知っているものを使用しましょう。 Worldsensingには、ビットキャリアと呼ばれる製品があります。これは、ボックスにアンテナが埋め込まれ、Wifi帯域の検出器にのみアクセスする場合の目的に完全に対応しています。そのため、ビットキャリアボックスを再利用し、主にその帯域での攻撃の検出に集中することにしました。

センサー(ファームウェア)

これはおそらく、構築プロセスの最も複雑な部分です。組み込みデバイス(ファームウェアと呼ばれる)で使用されるソフトウェアは、SDRモジュールからのデジタルサンプルを処理し、ジャマーの有無を判断する必要があります。幸いなことに、仕事を大幅に簡素化するツールがあり、それらはオープンソースですらあります!この目的のために、GNU Radioを使用します。

GNU Radioは無料のソフトウェア開発ツールキットで、さまざまな種類の信号処理ブロックを使用して、信号処理システムとソフトウェア無線を実装できます。ソフトウェアで信号処理を行うブロックを使用し、相互に接続して、信号を変換して出力を生成できます。フィルター、イコライザー、デコーダーなど、多くの定義済みの関数があります。そして、最良の部分は、独自のブロックを開発し、それらを使用して他のブロックと接続できることです。アプリケーションはC ++またはPythonで作成できます。 GNU Radioでは、SDRモジュールを使用して、次のようなクールなものを視覚化できます。

これは信号のFFTです。つまり、コンピューターで独自のスペクトルアナライザーを実行しているということです。

一方、信号ソースを別のブロックに接続して、サンプルを別のブロックに変換するなど、他のこともできます。 GNU Radio Companionと呼ばれるこのためのグラフィカルユーザーインターフェイスがあり、次のようになります。

このツールは、ブロックを接続してアプリケーションを実行し、出力を生成するPythonスクリプトを生成します。この場合、構築したいのは、シグナル上で特定のパターンまたはシグネチャが見つかるように分析できるカスタマイズされたブロックを通過するサンプルのフローです。これが発生した場合、発見したというメッセージを送信し、妨害者を特定しました。処理ボード上のSDR妨害検出(SDRJD)アプリケーションのアーキテクチャは次のとおりです。

デジタルサンプルは、SDRモジュールであるソースから取得されます。ただし、GNU Radioとそのブロック指向アーキテクチャのおかげで、ソースとしてのSDRモジュールは、ブロックがある限り、他の可能なソースに置き換えることができます。たとえば、ソースはファイルです。これは非常に便利です。信号(たとえばジャマー)を記録し、ファイルにダンプし(ファイルに書き込むシンクブロックを使用)、テストに必要な回数だけ再利用できるためです。

また、信号調整器を使用して、ジャマー検出アルゴリズムによって分析されるサンプルを準備します。それらは4つあり(ジャマーのタイプごとに1つ)、データを並列処理します(実際、すべてのGNU Radioブロックは独自のスレッドで実行されます)。アルゴリズムが決定すると、この決定をDetector Message Receiverに伝えます。Detectorはこの決定を集約し、最終的にジャマーが存在するかどうかを決定し、メッセージをLinuxキューに入れます。

SDRJDアプリケーションには非常に完全な構成ファイルがあり、サンプリング周波数、入力ゲイン、信号ソース、中心周波数、その他多くのパラメーターを構成できます。センサーがインストールされている環境に応じて変化する可能性があるため、各検出アルゴリズムを調整および較正するパラメーターもあります。非常にノイズの多い環境では、しきい値とTongアルゴリズムパラメータの再調整が必要になる場合があります。

Tongアルゴリズムは、偽陽性の結果を改善し、各ジャマー検出アルゴリズムによって行われる決定を改良するために開発された興味深い手順です。それは、結論を出すためにいくつかの決定をすることから成ります。カウンターK = Bから始めます。決定が正の場合、Kをインクリメントします。KがAに等しい場合、結果は正です。決定が負の場合、Kをデクリメントします。Kが0に等しい場合、結果は負になります。無限に反復する可能性があるため、否定的な結果が宣言されるまで、反復の最大数もカウントします。

ここで説明するすべてのファームウェアはオープンソースであり、ここで見つけることができます。

前述したように、検出メッセージはLinuxキューに入れられます。別のプロセスは、キューからメッセージを読み取り、クラウドで実行されている監視ソフトウェアに転送することを担当します。

監視ソフトウェア

ソフトウェアに関しては、リアルタイムでデータを表示するために使用でき、ダッシュボードを準備するのに使いやすいさまざまなツールについて調査していました。 InfluxDB、Kapacitor、Grafanaの組み合わせがニーズを満たすのに最適であることを発見しました。監視ソフトウェアアーキテクチャは、最終的に次のようになりました。

センサーは、InfluxDBデータベースにデータを挿入するPythonスクリプトと通信します。 Kapacitorがセンサーからの検出メッセージを改良するために魔法をかけ、Grafanaがリアルタイムで攻撃を提示して統計を表示するために使用するデータベースに攻撃エントリを再挿入する場所です。積極的な攻撃がある場合はいつでも、Kapacitorは、ATOS XL-SIEMにsyslogエントリを書き込む別のプロセスにもそれを伝えます。このSIEMは、CIPSECプロジェクトのコンテキストで開発およびテストされました。

ここでは、カパシトールが非常に重要な役割を果たします。センサーの検出しきい値とパラメーターを調整できたとしても、必ずしも攻撃を意味しない散発的な誤検出または検出がいくつかある可能性があることがわかりました。これらのケースでは、そうではないことがわかっていたため、「ミニアタック」が行われていることを示したくありませんでした。これが、センサーからの検出メッセージの改良レイヤーを追加した理由であり、そのレイヤーはKapacitorによって実装されています。アルゴリズムは次のとおりです。

  • センサーからの最後の_windowDuration_ジャマー検出決定の_positiveRatio_%(生の決定テーブル内)が正であり、JNR(ジャマー対ノイズ比)が_jnrThreshold_より大きい場合、正の攻撃イベントを宣言します。そうでない場合は、負の攻撃イベントを宣言します。
  • _jammerUpdateWindowDuration_を_windowDuration_スライドウィンドウでさらに数秒スライドします

現在、パラメーターを次のように設定しており、良好な結果が得られています。

  • _jnrThreshold_:1 dB
  • _positiveRatio_:90
  • _windowDuration_:5秒
  • _jammerUpdateWindowDuration_:1秒

フロントエンド

ソリューションの最新部分は、視覚化ツールで構成されています。このツールはGrafanaを使用して構築され、攻撃やその他の統計を視覚化するダッシュボードを提供します。これは、検出可能な各タイプの攻撃のJNR対時間のリアルタイムグラフを提供します。さらに、最終日におけるタイプごとの攻撃の数を示します(この時間枠は変更できます)。また、ジャマー検出デバイスの現在のステータスを表示するウィジェットもあります。青はセンサーがアクティブであることを意味し、赤は攻撃を受けていることを意味し、グレーはセンサーが非アクティブであることを意味します。これはどのように見えるかです:

要約

ジャマー検出器の構築は簡単な手順ではないことがわかりました。ファームウェアとソフトウェアの開発には時間がかかり、センサーとセンサーの結果が一致するように両方を改良することも必要です。それにもかかわらず、結果は非常に素晴らしいプロトタイプであり、ワイヤレス環境に大きな影響を与えるこのようなタイプの攻撃を検出する実現可能性の概念実証として使用できます。

センサーを自分で試してみたいと思う場合は、先に進み、SDRモジュールを入手し、ファームウェアリポジトリをダウンロードし、READMEの指示に従ってジャマー検出を自分で実行してください!

免責事項

このプロジェクト(Cipsec)は、助成金契約No 700378の下で、欧州連合のHorizo​​n 2020の研究とイノベーションプログラムから資金を受けています。 Research Executive Agencyは、含まれる情報の使用について責任を負いません。