
Wi-Fiクライアントとアクセスポイント向けの自動脆弱性テスター。フレームインジェクション、ミックスモードテスト、パケットキャプチャ解析を通じて、FragAttacksのフラグメンテーション/アグリゲーションの欠陥を検出します。
このリポジトリには FragAttacks ツールが含まれています。これは、Wi-Fi クライアントとアクセスポイントを、fragmentation(断片化)および aggregation(集約)**attacks(攻撃)**に対してテストできます。これらの脆弱性は、すべての 保護された Wi-Fi ネットワークに影響します。これらの脆弱性の詳細については、fragattacks.com を参照してください。
以下の追加リソースが利用可能です:
2020年8月11日以降に行われたツールの更新の詳細な概要については、変更ログ を参照してください。この変更ログには、FragAttacks ツールが基づいている hostap のバージョンに関する情報も含まれています。
WPA2 と WPA3 は CCMP および GCMP 暗号化アルゴリズムが同一であるため、これらの攻撃は両方に対して同じように適用されることに注意してください。古い WPA ネットワークはデフォルトで TKIP を使用して暗号化しており、TKIP に対する攻撃 の適用可能性は論文とウェブサイトで議論されています。Wi-Fi がその誕生以来脆弱であることを示すために、論文とウェブサイトでは WEP に対する攻撃 の適用可能性についても簡単に議論しています。
特定のワイヤレスネットワークカードのみがサポートされています。これは、一部のネットワークカードが注入されたフレームのシーケンス番号やフラグメント番号を上書きしたり、異なる優先度のフレームを並べ替えたりする可能性があり、これがテストツールの妨げになるためです(つまり、実際には脆弱であるのに、ツールが安全であると表示する可能性があります)。以下のネットワークカードが正常に動作することを確認しています:
| ネットワークカード | USB | 5GHz | 混合モード | インジェクションモード |
|---|---|---|---|---|
| Technoethical N150 HGA | はい | いいえ | 修正済みドライバー/ファームウェア | 修正済みドライバー/ファームウェア |
| TP-Link TL-WN722N v1.x | はい | いいえ | 修正済みドライバー/ファームウェア | 修正済みドライバー/ファームウェア |
| Alfa AWUS036NHA | はい | いいえ | 修正済みドライバー/ファームウェア | 修正済みドライバー/ファームウェア |
| Intel Wireless-AC 8265 | いいえ | はい | 修正済みドライバー | はい |
| Intel Wireless-AC 3160 | いいえ | はい | 修正済みドライバー | はい |
| Alfa AWUS036ACM | はい | はい | 修正済みドライバー | はい |
| Netgear WN111v2 | はい | いいえ | 修正済みドライバー | はい |
| Alfa AWUS036ACH | はい | はい | いいえ | はい |
最後の2つの列は以下を意味します:
混合モード:推奨される 混合モード でネットワークカードを使用できるかどうか。
インジェクションモード:インジェクションモード で、ネットワークカードを2番目のインターフェースとして使用してフレームを注入できるかどうか。
はい は、そのモードでカードがそのまま動作することを示します。修正済みドライバー/ファームウェア は、パッチが適用されたドライバーやファームウェアを使用すると互換性があることを意味します。いいえ は、そのモードがネットワークカードでサポートされていないことを意味します。テストツールは混合モードで使用することをお勧めします。
USBデバイスは仮想マシン内で使用でき、修正済みドライバーやファームウェアをこの仮想マシンにインストールできることに注意してください。ただし、仮想マシンの使用はネットワークカードの信頼性を低下させる可能性があることがわかりました。修正済みドライバー/ファームウェアをネイティブにインストールできない場合は、代わりにライブUSBイメージの使用をお勧めします。
上記のネットワークカードに関する私の経験は こちら にあります。要約すると:
混合モードの AWUS036ACM は、最新のドライバーで信頼性が高いようです。これが私が推奨するものです。より安価でほぼ同一のデバイスとして、MT7612U チップセット を搭載したものがあります。詳細は こちら を参照してください。
以前は混合モードで Technoethical N150 HGA を推奨していました。このドングルは TP-Link TL-WN722N v1.x と同一で、修正済みドライバーとファームウェアの使用が必要です。これは最もよくテストされたドングルの1つですが、入手が困難です。そのため、現在は代わりに AWUS036ACM を推奨しています。
Intel 3160 と 8265 はサポートされており、広範囲にテストされています。時々ファームウェアがクラッシュしましたが、再起動するとネットワークカードが再び使用可能になります。Intel AX200 はこのテストツールと互換性がありません。
WN111v2 はうまく動作するようです。ただし、広範囲にはテストしていません。
AWUS036ACH 用のドライバーは Linux カーネルの一部ではなく、別のドライバーのインストールが必要です。Kali では、パッケージマネージャーを使用してこのドライバーをインストールできます。このカードは広範囲にはテストされていません。
上記のネットワークカードのいずれかを見つけられない場合は、動作する可能性が高い 代替ネットワークカード を探すことができます。明示的にサポートされていないネットワークカードを使用する場合は、使用する前に インジェクションテスト を最初に実行し、既知の脆弱な実装に対してツールを使用して、ツールが正しく動作することを確認することを強くお勧めします。
テストツールは、カーネル 5.8 を使用する Ubuntu 20.04 でテストされています。別の Linux ディストリビューションを使用する場合、5.12 以下のカーネルバージョンのみがサポートされる ことに注意してください。
Ubuntu 20.04 を使用する場合、最初に以下のようにカーネル 5.8 をインストールする必要があります。既存のカーネルはインストールされたままになり、デフォルトで引き続き使用されることに注意してください:
sudo apt install linux-image-5.8.0-63-generic linux-headers-5.8.0-63-generic linux-hwe-5.8-headers-5.8.0-63 \
linux-modules-5.8.0-63-generic linux-modules-extra-5.8.0-63-generic
Ubuntu を再起動し、起動中に Shift キーを押し続け、「Advanced options for Ubuntu」を選択し、「Ubuntu, with Linux 5.8.0-63-generic」を選択してカーネル 5.8 を起動します。GRUB の設定を編集 して、Ubuntu がこのカーネルバージョンをデフォルトで使用するようにできます。この実行中のカーネルで次の手順を続行してください。
必要な依存関係をインストールします:
sudo apt-get update
sudo apt-get install libnl-3-dev libnl-genl-3-dev libnl-route-3-dev libssl-dev \
libdbus-1-dev git pkg-config build-essential macchanger net-tools python3-venv \
aircrack-ng rfkill firmware-ath9k-htc
# Note: on Kali linux use the package firmware-atheros instead of firmware-ath9k-htc
次に、このリポジトリをクローンし、ツールをビルドして、仮想 python3 環境を構成します:
git clone https://github.com/vanhoefm/fragattacks.git fragattacks
cd fragattacks/research
./build.sh
./pysetup.sh
上記の手順は一度だけ実行すれば十分です。git を使用して新しいコードを取り込んだ後は、./build.sh と ./pysetup.sh を再度実行する必要があります。
修正済みドライバーを次のコマンドでインストールします:
sudo apt-get install bison flex linux-headers-$(uname -r)
git clone https://github.com/vanhoefm/fragattacks-drivers58.git fragattacks-drivers58
cd fragattacks-drivers58
make defconfig-wifi
make -j 4
sudo make install
これにより、Linux がサポートするほとんどのネットワークカード用のドライバーがコンパイルされます。私が明示的にテストしたネットワークカード用のドライバーのみをコンパイルしたい場合は、代わりに make defconfig-experiments を使用してください。次の警告が表示される可能性があります:
make defconfig-wifi を実行すると、-Wyacc と -Wformat-overflow に関連する警告が表示される場合があります。ドライバーが正常にコンパイルされる限り、これらの警告は無視して構いません。.. needs unknown symbol .. を含むいくつかの警告。これらの警告は、ディレクトリ /lib/modules/*/updates/ を含まず、コンパイルされたドライバーが動作している限り無視して構いません。SSL error と sign-file コマンドを含む繰り返しの警告。これは、カーネルモジュールのデジタル署名が失敗したことを意味します。通常は無視して構いません。cat /sys/module/mac80211/parameters/fragattack_version を実行することで、修正済みドライバーが配置されたことを確認できます。このファイルが存在する場合、修正済みドライバーは正常にインストールされています。次に、修正済みの ath9k_htc ファームウェアをインストールします:
cd research/ath9k-firmware/
./install.sh
# Now reboot
./install.sh スクリプトは、ath9k_htc ファームウェアイメージがディレクトリ /lib/firmware/ath9k_htc にあることを前提としています。お使いのシステムでこれが当てはまらない場合は、htc_7010.fw と htc_9271.fw を適切なディレクトリに手動でコピーする必要があります。
修正済みドライバーとファームウェアをインストールした後、Wi-Fi ドングルを取り外し、システムを再起動 する必要があります。Linux カーネルが更新された場合や修正済みドライバーが更新された場合は、上記の手順を再度実行する必要があります。
デバイスがそのまま動作する場合でも、カーネルとドライバーのコードに予期しない回帰がないことを保証するため、修正済みドライバーのインストールを引き続きお勧めします。
修正済みドライバー/ファームウェアをネイティブにインストールできない場合は、修正済みドライバー/ファームウェアとテストツールが含まれる ライブUSBイメージ をダウンロードできます。あるいは、USB ネットワークカードを備えた仮想マシンを使用することもできますが、実際には仮想マシンの使用は信頼性が低いことがわかりました。
テストツールを使用するたびに、まず仮想 python 環境を root としてロードする必要があります。これには次のコマンドを使用します:
cd research
sudo su
source venv/bin/activate
次に、テストツールの妨げにならないように、ネットワークマネージャーで Wi-Fi を無効 にします。また、他のネットワークサービスが送信トラフィックを発生させていないことを確認してください。./droptraffic.sh を実行して iptables でトラフィックをブロックすることで確認できます(再起動すると元に戻せます)。必要に応じて sudo airmon-ng check を実行して、ワイヤレスネットワークカードを使用していてツールの妨げになる可能性のある他のプロセスを確認できます。
テストツールはクライアントと AP の両方をテストできます: