はじめに
ワイヤレスネットワーク、特にWi-Fiは、現代の生活に欠かせないものとなりました。しかし、その利便性の裏側には、セキュリティのリスクが常に潜んでいます。特に古い暗号化方式であるWEP (Wired Equivalent Privacy) は、多くの脆弱性が発見されており、現在では安全とは言えません。
一部のワイヤレス侵入防止システム (WIPS) は、WEPの脆弱性を突いた攻撃(特にキー解析)を妨害するために、「WEPクローキング (WEP Cloaking™)」と呼ばれる技術を用いることがあります。これは、偽のWEPフレーム(チャフと呼ばれる)を意図的にネットワーク上に挿入することで、aircrack-ng
のような解析ツールを混乱させ、キーの特定を困難にする手法です。
このような状況で役立つのが、Aircrack-ngスイートに含まれるairdecloak-ng
というツールです。このツールは、キャプチャファイル(pcap形式)からWEPクローキングによる偽フレームを除去し、WEPキーの解析を可能にすることを目的としています。💪
このブログ記事では、airdecloak-ng
の機能、仕組み、そして具体的な使い方について、詳しく解説していきます。無線LANセキュリティの分析やテストを行う際に、このツールがどのように役立つのかを見ていきましょう。
airdecloak-ngとは? 🤔
airdecloak-ng
は、Aircrack-ngという無線LANセキュリティ評価ツールのスイートに含まれるコマンドラインユーティリティの一つです。その主な役割は、WEPクローキング技術によって挿入された偽のWEPフレーム(チャフ)を、ネットワークトラフィックを記録したpcapファイルから除去することです。
WEPクローキングは、前述の通り、WEPキーのクラッキングを防ぐためにWIPSによって使用される妨害技術です。偽のフレームが大量に混入していると、aircrack-ng
などのツールは正しいWEPキーを特定するのが非常に困難、あるいは不可能になります。
airdecloak-ng
は、様々なフィルターを用いて、キャプチャファイル内のパケットを分析し、「本物」のパケットと「クローキングされた(偽の)」パケットを識別・分離します。これにより、クリーンな状態のキャプチャファイル(フィルタリング済みファイル)を生成し、aircrack-ng
でのキー解析を成功させる可能性を高めます。✨
まれに、WEPクローキングが施されていても、airdecloak-ng
を使わずにキーを解析できることもありますが、解析が失敗する場合や、「Decrypted correctly」の割合が50〜65%程度にとどまる場合は、WEPクローキングが施されている可能性が高く、airdecloak-ng
の出番となります。
airdecloak-ngの仕組み ⚙️
airdecloak-ng
は、以下のステップで動作します。
- データの読み込みと選択: 入力されたpcapファイルを読み込み、指定されたネットワーク(BSSIDまたはESSIDで指定)に関連するパケットを選択します。
- 初期分類: 選択された各パケットをリストに追加し、初期状態を「不明 (unknown)」として分類します。ただし、ビーコンなどの管理フレームは最初から「クローキングされていない (uncloaked)」とマークされることがあります。
- ベースフィルターの適用: まず基本的なフィルター(ベースフィルター)を適用します。これは、ビーコンフレームのシーケンス番号などをチェックして、明らかに不正なパケットを除去する役割を持ちます。このフィルターはデフォルトで有効ですが、
--disable-base-filter
オプションで無効化も可能です。 - ユーザー指定フィルターの適用: ユーザーが
--filters
オプションで指定した順序に従って、追加のフィルターを適用します。各フィルターは、パケットの様々な特性(信号強度、シーケンス番号、IVなど)を分析し、パケットの状態を「不明 (unknown)」、「クローキングされていない (uncloaked)」、「潜在的にクローキングされている (potentially cloaked)」、「クローキングされている (cloaked)」のいずれかに変更します。フィルターを適用する順序は非常に重要であり、順序が異なると結果も変わる可能性があります。 - 最終的な分類: すべてのフィルター適用後、「不明 (unknown)」状態のまま残ったパケットは「クローキングされていない (uncloaked)」と見なされます。「潜在的にクローキングされている (potentially cloaked)」とマークされたパケットは最終的に「クローキングされている (cloaked)」と分類されます。
- ファイルの出力: 最後に、「クローキングされていない (uncloaked)」と分類されたパケットを指定された出力ファイル(デフォルトでは
<入力ファイル名>-filtered.pcap
)に書き込みます。また、「クローキングされている (cloaked)」と分類されたパケットも別のファイル(デフォルトでは<入力ファイル名>-cloaked.pcap
)に出力されます。「不明/無視」されたパケットも別のファイル(デフォルト:invalid_status.pcap
)に出力可能です。
airdecloak-ng
が効果的に動作するためには、入力となるpcapファイルに、対象ネットワークのすべてのパケット(ビーコンやその他の管理フレームを含む)が含まれている必要があります。また、可能であればPrismまたはRadiotapヘッダー(信号強度などの物理層情報を含む)が存在することが望ましいです。📡
WEPクローキングされたフレームを特定するために、airdecloak-ng
は以下のような要素を利用します。
- シーケンス番号 (Sequence Number – SN): 連続性や重複をチェックします。
- 信号強度 (Signal Quality): APからのパケットの信号強度を比較します(Radiotap/Prismヘッダが必要)。
- 初期化ベクトル (Initialization Vector – IV): 重複などをチェックします。
- フレームサイズ
- フレームの到着タイミングや順序
- その他のフレーム属性
インストール 💻
airdecloak-ng
は、Aircrack-ngスイートの一部として提供されています。したがって、個別にインストールする必要はなく、Aircrack-ngスイートをインストールすれば利用可能になります。
多くのペネトレーションテスト用Linuxディストリビューション(例えばKali LinuxやParrot Security OS)には、Aircrack-ngスイートが標準で含まれています。
もし、お使いのシステムにAircrack-ngがインストールされていない場合は、ディストリビューションのパッケージマネージャを使用してインストールできます。
Debian / Ubuntu / Kali Linux の場合:
sudo apt update
sudo apt install aircrack-ng
Fedora の場合:
sudo dnf install aircrack-ng
Arch Linux の場合:
sudo pacman -S aircrack-ng
ソースコードからビルドすることも可能です。最新版や特定の機能を利用したい場合は、Aircrack-ngのGitHubリポジトリからソースコードを取得し、コンパイル・インストールを行ってください。手順については、Aircrack-ngの公式ドキュメントを参照してください。
基本的な使い方 🚀
airdecloak-ng
の基本的な構文は以下の通りです。
airdecloak-ng [オプション] -i <入力ファイル> --bssid <ターゲットBSSID> [--filters <フィルターリスト>]
または
airdecloak-ng [オプション] -i <入力ファイル> --ssid <ターゲットESSID> [--filters <フィルターリスト>]
必須オプション
-i <入力ファイル>
: 処理対象のpcapキャプチャファイルを指定します。--bssid <BSSID>
または--ssid <ESSID>
: フィルタリング対象のネットワークを指定します。BSSID (アクセスポイントのMACアドレス) または ESSID (ネットワーク名) のいずれかを指定する必要があります。(注: ドキュメントによっては--ssid
が「まだ実装されていない」と記載されている場合がありますが、最新バージョンでは利用可能かもしれません。基本的には--bssid
の使用が確実です。)
主なオプション
-o <出力ファイル>
: フィルタリング後の「クローキングされていない」パケットを保存するファイル名を指定します。デフォルトは<入力ファイル名>-filtered.pcap
です。-c <出力ファイル>
: 「クローキングされている」と判断されたパケットを保存するファイル名を指定します。デフォルトは<入力ファイル名>-cloaked.pcap
です。-u <出力ファイル>
: 「不明/無視」されたパケットを保存するファイル名を指定します。デフォルトはinvalid_status.pcap
です。--filters <フィルターリスト>
: 適用するフィルターをカンマ区切りで指定します。例:signal,duplicate_iv,consecutive_sn
。フィルターの種類と順序が重要です。--disable-base-filter
: デフォルトで適用されるベースフィルターを無効にします。--drop-frag
: フラグメント化された(分割された)パケットを破棄します。多くのネットワークではフラグメンテーションは不要なため、有効な場合があります。--help
(-h
): ヘルプメッセージを表示します。
簡単な実行例
例えば、capture.pcap
というファイルから、BSSIDが 00:11:22:33:44:55
のネットワークのパケットをフィルタリングし、重複IVフィルターと連続SNフィルターを適用する場合、以下のように実行します。
airdecloak-ng -i capture.pcap --bssid 00:11:22:33:44:55 --filters duplicate_iv,consecutive_sn
これにより、capture-filtered.pcap
(フィルタリング済み)とcapture-cloaked.pcap
(クローキングされたパケット)という2つのファイルが生成されます。その後、capture-filtered.pcap
を aircrack-ng
に入力してWEPキーの解析を試みます。
フィルターの詳細 🧐
airdecloak-ng
の心臓部とも言えるのが、様々なフィルターです。これらのフィルターを組み合わせ、適切な順序で適用することで、クローキングされたパケットを効果的に除去します。以下に、利用可能な主なフィルターとその機能を示します。
フィルター名 | 説明 | 備考 |
---|---|---|
signal |
アクセスポイント(AP)から受信したパケットの信号強度に基づいてフィルタリングを試みます。偽のフレームは、実際のフレームを受信した後に生成・送信されるため、タイミングや信号強度に差が出ることがあります。 | pcapファイルにPrismまたはRadiotapヘッダーが必要です。クライアントフレームのフィルタリングも将来的に追加される可能性があります。 |
duplicate_sn |
APとクライアントの両方について、近接して出現する重複したシーケンス番号を持つパケットを削除します。 | 偽フレームは本物のフレームと同じシーケンス番号を持つことがあるため、有効なフィルタです。 |
duplicate_sn_ap |
APからのパケットについてのみ、重複したシーケンス番号を持つものを削除します。 | |
duplicate_sn_client |
クライアントからのパケットについてのみ、重複したシーケンス番号を持つものを削除します。 | |
consecutive_sn |
WEPのIVは(理想的には)連続しているべきであるという事実に基づいてフィルタリングします。(APからのパケットのみ対象) | 実際の通信では必ずしも連続しない場合もありますが、クローキング検出の一助となります。 |
duplicate_iv |
重複したIVを持つすべてのパケットを削除します。 | WEPの脆弱性の一つであるIVの再利用を検出するのにも似ていますが、ここでは偽フレーム除去が目的です。 |
signal_dup_consec_sn |
信号強度(利用可能な場合)、重複シーケンス番号、連続シーケンス番号を組み合わせてフィルタリングします。個々のフィルターを別々に適用するよりも精密なフィルタリングが期待できます。 | 複数の要素を複合的に判断します。 |
wep_decloak (旧名?) / Base Filterの一部? |
WEPクローキングを解除するための基本的なロジック。他のフィルターと組み合わせて使用されます。(特定の独立したフィルター名ではない可能性あり。ベースフィルターに含まれる機能かもしれません) | |
decrypt_wep |
既知のWEPキーを使用してパケットを復号し、内容が有効かどうかでフィルタリングします。(ドキュメントによっては言及がない場合あり) | WEPキーが判明している場合に有効。 |
crc_error |
CRC (巡回冗長検査) エラーを持つパケットを除去します。(ドキュメントによっては言及がない場合あり) | 破損パケット除去。 |
fragmentation / --drop-frag オプション |
フラグメント化されたパケットを処理または破棄します。(--drop-frag オプションとして実装されていることが多い) |
通常、無線LANではフラグメンテーションは稀です。 |
qos_null / --null-packets オプション |
QoS Null フレーム (データを含まないフレーム) がクローキングされる可能性を考慮します。(ドキュメントでは「未実装」とされている場合あり) |
フィルターの順序の重要性:
前述の通り、--filters
オプションで指定するフィルターの順序は結果に大きく影響します。例えば、最初にduplicate_sn
を適用してからsignal
を適用するのと、その逆では、最終的に「クローキングされている」と判断されるパケットが変わる可能性があります。どの順序が最適かは、キャプチャされたデータの特性やクローキングの手法によって異なるため、試行錯誤が必要になることもあります。一般的には、より確実な(誤判定の少ない)フィルターから適用していくのが良い戦略とされます。
実践的な例とシナリオ 🛠️
ここでは、いくつかの具体的なシナリオと、それに対応するairdecloak-ng
のコマンド例を示します。
シナリオ1: 基本的なクローキング除去
キャプチャファイル wep_capture.pcap
から BSSID AA:BB:CC:DD:EE:FF
のネットワークのパケットを抽出し、重複シーケンス番号と重複IVフィルターを適用する場合。
airdecloak-ng -i wep_capture.pcap --bssid AA:BB:CC:DD:EE:FF --filters duplicate_sn,duplicate_iv
実行後、wep_capture-filtered.pcap
を aircrack-ng
で解析します。
aircrack-ng wep_capture-filtered.pcap
シナリオ2: 信号強度情報を利用
キャプチャファイル noisy_capture.pcap
(Radiotapヘッダ付き) から BSSID 11:22:33:44:55:66
のネットワークを処理し、信号強度、重複シーケンス番号、連続シーケンス番号を複合的に利用してフィルタリングする場合。
airdecloak-ng -i noisy_capture.pcap --bssid 11:22:33:44:55:66 --filters signal_dup_consec_sn
この signal_dup_consec_sn
フィルターは、複数の基準を組み合わせるため、より精度の高いフィルタリングが期待できます。
シナリオ3: フィルター順序の試行
complex_capture.pcap
(BSSID DE:AD:BE:EF:00:11
) の解析がうまくいかない場合、フィルターの順序を変えて試してみます。
試行1:
airdecloak-ng -i complex_capture.pcap --bssid DE:AD:BE:EF:00:11 --filters duplicate_iv,duplicate_sn,consecutive_sn -o filtered1.pcap -c cloaked1.pcap
試行2:
airdecloak-ng -i complex_capture.pcap --bssid DE:AD:BE:EF:00:11 --filters consecutive_sn,duplicate_sn,duplicate_iv -o filtered2.pcap -c cloaked2.pcap
それぞれの結果ファイル (filtered1.pcap
, filtered2.pcap
) を aircrack-ng
で解析し、どちらが良い結果をもたらすかを確認します。出力ファイル名を -o
と -c
で明示的に指定すると、結果を比較しやすくなります。
シナリオ4: フラグメント化されたパケットの除去
フラグメント化されたパケットが問題を引き起こしている可能性がある場合、--drop-frag
オプションを追加します。
airdecloak-ng -i fragmented_capture.pcap --bssid 99:88:77:66:55:44 --filters duplicate_sn --drop-frag
結果の確認
airdecloak-ng
を実行すると、通常はフィルタリングされたパケット数やクローキングされたと判断されたパケット数などの統計情報が表示されます。また、-c
オプションで出力したファイル (*-cloaked.pcap
) に多数のパケットが含まれていれば、実際にクローキングが行われていた可能性が高いと言えます。
最終的な目標は、airdecloak-ng
で生成した *-filtered.pcap
ファイルを使って、aircrack-ng
でWEPキーを正常にクラックすることです。解析に成功すれば、airdecloak-ng
によるフィルタリングが効果を発揮したことになります🎉。
考慮事項と制限点 ⚠️
airdecloak-ng
は強力なツールですが、万能ではありません。利用にあたっては、以下の点を考慮する必要があります。
- 完全な除去の保証はない: クローキング技術やネットワークの状況によっては、
airdecloak-ng
を使用してもすべての偽フレームを完全に除去できない場合があります。フィルターの選択や順序を調整しても、解析に必要な十分な品質のデータが得られない可能性も残ります。 - フィルターの副作用: フィルターは、偽フレームだけでなく、稀に本物のデータフレームを誤って「クローキングされている」と分類してしまう可能性があります。特にアグレッシブなフィルター設定を行うと、解析に必要なデータまで失われるリスクがあります。
- 入力データの品質:
airdecloak-ng
の性能は、入力となるpcapファイルの品質に大きく依存します。パケットロスが多い、あるいは必要な管理フレーム(特にビーコン)が含まれていないキャプチャファイルでは、効果的なフィルタリングが困難になります。Radiotap/Prismヘッダーの有無もsignal
フィルターの有効性に影響します。 - WEPクローキング自体の影響: WEPクローキング技術は、偽フレームを大量に送信するため、ネットワーク全体の帯域幅を消費し、通信速度を低下させるという副作用があります。Aircrack-ngのドキュメントによると、11Mbpsのネットワークでクローキングが有効な場合、実効帯域幅が約300kb/s程度まで低下するテスト結果もあるようです。これは、ツールとは関係ないクローキング技術自体の特性です。
- キーを持っている場合: WEPクローキングは、あくまでWEPキーの「クラッキング」を困難にする技術であり、キーを知っていれば通信内容の復号自体を妨げるものではありません。
airdecap-ng
などのツールを使えば、キーを用いて通常通り復号できます。 - 法的・倫理的側面: 再三になりますが、
aircrack-ng
スイートのツールを使用する際は、法律と倫理を遵守することが絶対条件です。許可なく他者のネットワークを分析・攻撃することは違法行為です。教育や研究、正当なセキュリティ評価の目的でのみ使用してください。🚫
まとめ ✨
airdecloak-ng
は、WEPクローキングという特定の妨害技術に対抗するために設計された、Aircrack-ngスイートの重要なツールです。偽のWEPフレーム(チャフ)が挿入されたpcapファイルから、これらを除去し、aircrack-ng
によるWEPキー解析を可能にします。
信号強度、シーケンス番号、IVなどの様々な要素を分析するフィルター群を、適切な順序で適用することが、このツールを効果的に使う鍵となります。入力データの品質も重要であり、完全なパケットキャプチャ(特にビーコンを含む)と、可能であればRadiotap/Prismヘッダーの存在が望まれます。
WEPは現在では時代遅れのセキュリティ方式であり、使用は推奨されません。しかし、古いシステムや特定の環境でまだWEPが使われている場合、そのセキュリティ評価を行う上でWEPクローキングのような妨害技術に遭遇する可能性はあります。そのような状況において、airdecloak-ng
は解析を進めるための有効な手段を提供します。
ただし、その利用は常に法と倫理の範囲内で行われるべきです。技術的な知識とツールは、責任ある方法で使用することが求められます。
この記事が、airdecloak-ng
の理解と適切な活用の一助となれば幸いです。Happy (ethical) hacking! 😉
参考情報
- Aircrack-ng Official Website: https://www.aircrack-ng.org/
- Aircrack-ng Documentation – airdecloak-ng: https://www.aircrack-ng.org/doku.php?id=airdecloak-ng
- Kali Linux Tools – aircrack-ng: https://www.kali.org/tools/aircrack-ng/
コメント