この記事では、802.11フレームをElasticsearchに送信できるエージェントであるWiFiBeatについて説明します。Elasticsearchでは、それらを分析し、グラフを作成し、攻撃を検出できます。 このシステム全体は、完全にフリーソフトウェア上に構築されています。
はじめに
→ ユーティリティ公式サイト
→ GitHub
WiFiBeatを使用すると、モニターモードでWi-Fiアダプターを操作し、JSONフレームからオブジェクトを作成して、 Elasticsearch分析エンジンのデータベースに送信できます。 さらに、WiFiBeatはPCAPファイルからフレームを読み取ることができます。
収集された情報の分析は、Elasticの別の無料製品であるKibanaビジュアライザーで行われます。
WiFiBeatは公式にUbuntu 16.04で安定して動作しますが、もちろん、他のディストリビューションでも実行できますが、ユーティリティが作成されたライブラリバージョンの依存関係と不一致に問題がある可能性があります。 WiFiBeatを起動するには、 TP-LINK TL-WN722N USB Wi-Fiアダプターがモニターモードで接続されている64ビットUbuntu 16.04を使用します。
ElasticsearchとKibanaは64ビットDebian 9にデプロイされます。
WiFiBeatをインストールする
インストールプロセスの詳細は、 GitHubで説明されています 。
libtinsをインストールする
wget https://github.com/mfontanini/libtins/archive/v3.5.tar.gz tar -zxf v3.5.tar.gz cd libtins-3.5 apt-get install libpcap-dev libssl-dev build-essential libboost-all-dev mkdir build cd build cmake ../ -DLIBTINS_ENABLE_CXX11=1 make make install ldconfig
不足しているパッケージをシステムにインストールします
apt-get install libyaml-cpp-dev libpoco-dev rapidjson-dev libtsan0 libboost-all-dev libb64-dev libwireshark-data build-essential libnl-3-dev libnl-genl-3-dev libnl-idiag-3-dev
CodeliteをインストールしてWiFiBeatをビルドします
apt-get install codelite codelite-plugins
codeliteを実行し、新しいワークスペースを作成します
タイプC ++
ディレクトリを覚えておいてください
ワークスペースが作成されたら、ディレクトリに移動し、GitHubからWiFiBeatとライブラリをダウンロードします。
cd /root/WiFiBeat git clone https://github.com/WiFiBeat/WiFiBeat git clone https://github.com/WiFiBeat/elasticbeat-cpp git clone https://github.com/WiFiBeat/simplejson-cpp
codeliteで3つのプロジェクトすべてをワークスペースに追加します
結果は次のようになります
プロジェクトのリストでwifibeatをダブルクリックすると、目立つはずです
wifibeatを右クリックし、ビルドを選択します
コンパイラが選択されていない場合は選択し、再度ビルドします
すべての依存関係がシステムにインストールされ、その前にすべてを正しく行った場合、コンパイルプロセスの最後にエラーがないことを示すメッセージが表示されます。
====0 errors, 2 warnings, total time: 00:01:13 seconds====
カスタマイズ
ElasticsearchとKibanaのインストールプロセスについては、この記事では取り上げません。 このテーマに関する十分な資料がネット上にあります。 マシン192.168.1.30で動作し、マシン192.168.1.31でWiFiBeatで動作すると仮定します。 ElasticsearchはHTTPポート9200でリッスンし、認証を必要としません。
Wi-Fiアダプターをマシン192.168.1.31に接続し、モニターモードにしました。
システムでは、mon0として表示されます。
WiFiBeatのあるディレクトリから、設定ファイルをetcにコピーして編集します
cp wifibeat.yml /etc vi /etc/wifibeat.yml
このファイルはよく文書化されており、主なオプションを簡単に説明します。
2.4 GHz帯域の5番目のチャネルで動作する1つのネットワークのトラフィックを分析します。
したがって、インターフェイス設定には1つのエントリを残します。 一度に複数のチャンネルを分析し、それぞれのリスニング時間を設定することが可能です。
wifibeat.interfaces.devices: mon0: [5]
セクション出力ファイルからすべてを削除します
PCAPフィルターのセクションでは、以下を設定します
wifibeat.interfaces.filters: mon0: type mgt
ここでは、 Wiresharkと同様にフィルターが示されています。この場合、802.11管理フレームのみに関心があることを示しています。 これらには以下が含まれます。
- 認証フレーム
- 認証解除フレーム
- 関連付け要求フレーム
- アソシエーション応答フレーム
- 再関連付け要求フレーム
- 再関連付け応答フレーム
- 分離フレーム
- ビーコンフレーム
- プローブ要求フレーム
- プローブ応答フレーム
- 送信要求(RTS)フレーム
- 送信許可(CTS)フレーム
- 確認応答(ACK)フレーム
「ローカルファイル」セクションと「復号化」セクションでは、すべてコメントアウトしました。この例では暗号化キーは必要ありません。また、PCAPファイルからも読み取りません。
[キュー]セクションでは何も変更せず、[出力]セクションでElasticsearchのアドレスとポートを設定します。
output.elasticsearch: enabled: true protocol: "http" # Array of hosts to connect to. hosts: [ "192.168.1.30:9200" ]
保存して、WiFiBeatのあるディレクトリとDebugサブディレクトリに移動します。 これには、コンパイルされたwifibeat実行可能ファイルが含まれている必要があります。
打ち上げ
192.168.1.30マシンでElasticsearchとKibanaを起動します。 ポート9200(Elasticsearch)およびKibana(5601)がリッスンしていることを確認します。
マシン192.168.1.31で、構成にエラーがなかったことを確認します
./wifibeat -d
設定ファイルの解析が表示されます。 エラーがある場合、wifibeatは問題を報告します。 すべてが順調であれば、実行
./wifibeat -f
-fスイッチを使用すると、wifibeatを非デーモンモードで実行できます。 これまでのところ、私たちにとってはより便利です。
Kibanaを開いてインデックスを確認すると、新しいwifibeat *インデックスが表示されていることがわかります。
Kibanaをセットアップします。 管理、インデックスパターンに移動
新しいテンプレートを作成します。
メインとしてマークする
WiFiBeatに付属のダッシュボードとビジュアライゼーションをインポートします
WiFiBeat / kibanaディレクトリからkibana.jsonファイルを選択します
インポートが成功した場合は、[ダッシュボード]タブに移動し、そこでWLANを見つけることができます
wifibeat.ymlでフィルターを使用しない場合、次のようになります。
フィルター(この場合)では、コントロールフレームとデータフレームにデータは表示されません。
ダッシュボードに加えて、新しい視覚化があります。
結論として
次に、Elasitcパッケージの別のコンポーネントであるX-Packを使用して、認証解除フレームのバーストを検出したときのアクションを設定できます。これは、DoS攻撃またはブルートフォースのハンドシェイクを取得しようとする可能性があります。 このようにして、ワイヤレス攻撃検出システムを構築できます。