Packetforge-ng 徹底解説:カスタムパケット作成の技術

セキュリティツール

はじめに:Packetforge-ngとは? 🤔

packetforge-ngは、無線LANセキュリティ評価ツールスイートであるAircrack-ngに含まれる強力なコマンドラインツールです。その主な目的は、暗号化された無線パケット(802.11フレーム)を手動で作成(forge)することです。これにより、特定の目的を持ったパケットを生成し、無線ネットワークへのインジェクション(注入)攻撃やテストに利用することができます。

特に、WEP (Wired Equivalent Privacy) で保護されたネットワークのセキュリティ評価において、aireplay-ngなどの他のツールと連携して使用されることが多いです。WEPクラッキングプロセスでは、特定の種類のパケット(特にARPリクエスト)を大量にネットワークに注入することで、解読に必要なInitialization Vector (IV) を効率的に収集する必要があり、packetforge-ngはこのARPリクエストパケットの生成に役立ちます。

作成できるパケットの種類は多岐にわたり、ARPリクエストだけでなく、UDP、ICMP、さらにはカスタム定義のパケットまで生成可能です。これにより、ネットワークのフィルタリングルールのテストや、侵入検知システム(IDS)の動作検証など、より高度なテストシナリオにも対応できます。

⚠️ 注意: packetforge-ngを含むAircrack-ngスイートのツールは、強力な機能を持つため、許可なく他者のネットワークに対して使用することは絶対に避けてください。法律に抵触する可能性があり、重大な結果を招くことがあります。必ず自身が管理するネットワーク、または明確な許可を得たネットワークでのみ、教育・研究・正当なセキュリティ評価の目的で使用してください。

Packetforge-ngを使用するための前提条件 🛠️

packetforge-ngを効果的に使用するには、いくつかの準備が必要です。

  • Aircrack-ngスイートのインストール: packetforge-ngはAircrack-ngの一部なので、まずスイート全体がシステムにインストールされている必要があります。Kali Linuxなどのペネトレーションテスト用ディストリビューションには通常プリインストールされています。他のLinuxディストリビューションでは、パッケージマネージャー(例:sudo apt install aircrack-ng)やソースからインストールする必要があります。
  • モニターモード対応の無線LANアダプタ: パケットのインジェクションや、前提となるキーストリーム(PRGA)を取得するためには、無線LANアダプタがモニターモード(Monitor Mode)とパケットインジェクション(Packet Injection)に対応している必要があります。airmon-ngコマンドでモニターモードを有効化できます。
  • PRGA (Pseudo Random Generation Algorithm) キーストリームファイル: 暗号化されたパケットを作成するには、WEP暗号化に使用されるキーストリーム(疑似乱数列)が必要です。このキーストリームは通常、aireplay-ngChopChop攻撃 (-4) やFragmentation攻撃 (-5) によって取得します。これらの攻撃によって、.xor拡張子を持つファイル(PRGAファイル)が生成されます。このファイルがpacketforge-ng-yオプションで必要になります。
  • ターゲットネットワークの情報: 作成するパケットに応じて、ターゲットアクセスポイントのBSSID(MACアドレス)、接続しているクライアントのMACアドレス、場合によってはIPアドレスなどの情報が必要になります。これらの情報はairodump-ngコマンドを使用して収集できます。

💡 キーストリームとは? WEPのようなストリーム暗号では、平文データと「キーストリーム」と呼ばれる疑似乱数列をXOR演算することで暗号化が行われます。復号はこの逆で、暗号文と同じキーストリームをXOR演算することで平文に戻します。packetforge-ngは、既知のキーストリームの一部(PRGAファイル)を利用して、任意の平文データから有効な暗号化パケットを「偽造」するのです。

基本的な使い方とコマンド構文 ⌨️

packetforge-ngの基本的なコマンド構文は以下の通りです。

packetforge-ng <モード> <オプション>

まず、どの種類のパケットを作成するかをモードで指定します。次に、作成するパケットの詳細(MACアドレス、IPアドレス、使用するキーストリームファイルなど)をオプションで指定します。

以下のモードが利用可能です。

モードオプション 代替オプション 説明
--arp -0 ARP (Address Resolution Protocol) リクエストパケットを作成します。WEPクラッキングで最も一般的に使用されます。
--udp -1 UDP (User Datagram Protocol) パケットを作成します。
--icmp -2 ICMP (Internet Control Message Protocol) リクエスト(例:Ping)パケットを作成します。
--null -3 NULLパケット(データ部が空のLLCパケット)を作成します。特定のテストシナリオで使用されることがあります。
--custom -9 カスタムパケットを作成します。-rオプションで読み込んだテンプレートパケットを基に、-yで指定したキーストリームで暗号化します。

以下はよく使われるオプションの一部です。

オプション 説明
-a <BSSID> ターゲットアクセスポイントのMACアドレスを指定します。 -a 00:11:22:33:44:55
-h <Source MAC> 送信元として偽装するMACアドレスを指定します。(通常は接続済みクライアントのMAC) -h AA:BB:CC:DD:EE:FF
-c <Destination MAC> 宛先MACアドレスを指定します。(ARPリクエストの場合は通常ブロードキャストFF:FF:FF:FF:FF:FF -c FF:FF:FF:FF:FF:FF
-k <Destination IP[:Port]> 宛先IPアドレス(とオプションでポート)を指定します。 -k 192.168.1.1
-l <Source IP[:Port]> 送信元IPアドレス(とオプションでポート)を指定します。(Lの小文字) -l 192.168.1.100
-y <PRGA ファイル> 暗号化に使用するキーストリーム(PRGA)を含む.xorファイルを指定します。必須オプションです。 -y keystream.xor
-w <出力ファイル> 作成したパケットを指定したpcapファイルに書き出します。このファイルをaireplay-ngなどで使用します。 -w forged_packet.cap
-p <FCTRL> 802.11フレームコントロールフィールドを16進数で指定します。 -p 0841
-j FromDSビットをセットします。(APからクライアントへのパケット) -j
-o ToDSビットをクリアします。(通常、インフラストラクチャモードではToDS=1, FromDS=0がクライアントからAP) -o
-e WEP暗号化を無効にします。(暗号化されていないパケットを作成する場合) -e
-t <TTL> IPヘッダのTime To Live(TTL)値を指定します。 -t 64
-r <入力ファイル> カスタムパケットモード(-9)で使用。暗号化されていないテンプレートパケットを含むpcapファイルを読み込みます。 -r template.cap
-s <サイズ> NULLパケットモード(-3)で使用。生成するNULLパケットのサイズを指定します。 -s 64

より多くのオプションについては、packetforge-ng --helpコマンドで確認できます。

実践例:ARPリクエストパケットの作成 🎯

最も一般的なpacketforge-ngの利用例は、WEPクラッキングを加速するためのARPリクエストパケットを作成することです。以下にその手順を示します。

  1. キーストリームの取得: まず、aireplay-ngのFragmentation攻撃 (-5) またはChopChop攻撃 (-4) を使用して、ターゲットネットワークからキーストリームを取得し、.xorファイルとして保存します。
    # Fragmentation攻撃の例 (mon0はモニターモードのインターフェース名)
    aireplay-ng -5 -b <ターゲットAPのBSSID> -h <認証済みクライアントのMAC> mon0
    # 成功すると、.xor ファイルがカレントディレクトリに生成される (例: fragment-XXXX-XXXXXX.xor)
  2. packetforge-ngによるARPリクエスト作成: 取得した.xorファイルを使って、ARPリクエストパケットを作成します。
    packetforge-ng --arp -a <ターゲットAPのBSSID> -h <偽装する送信元MAC> -k <ARPリクエストの宛先IP> -l <ARPリクエストの送信元IP> -y <生成された.xorファイル名> -w <出力ファイル名.cap>
    
    # 具体例
    packetforge-ng --arp -a 00:14:6C:7E:40:80 -h 00:0F:B5:AB:CB:9D -k 192.168.1.100 -l 192.168.1.1 -y fragment-0124-161129.xor -w arp_request.cap

    解説:

    • --arp (または -0): ARPリクエストを作成するモード。
    • -a 00:14:6C:7E:40:80: ターゲットAPのBSSID。
    • -h 00:0F:B5:AB:CB:9D: 送信元として偽装するMACアドレス(通常は先にaireplay-ng -1などで認証した際のMACや、実際に接続しているクライアントのMAC)。
    • -k 192.168.1.100: ARPリクエストで問い合わせるIPアドレス(”Who has 192.168.1.100?”)。
    • -l 192.168.1.1: ARPリクエストを発行する送信元IPアドレス(”Tell 192.168.1.1″)。
    • -y fragment-0124-161129.xor: ステップ1で取得したキーストリームファイル。
    • -w arp_request.cap: 作成したパケットを保存するファイル名。
    💡 IPアドレスについて: ARPリクエストインジェクションの場合、アクセスポイントは通常、IPアドレスの妥当性を厳密にチェックしません。そのため、送信元・宛先IPアドレスとして 255.255.255.255 を使用しても機能することが多いです。これにより、ネットワーク内の実際のIPアドレスを知らなくてもARPインジェクションを開始できます。
    # IPアドレスをブロードキャストにした例
    packetforge-ng --arp -a 00:14:6C:7E:40:80 -h 00:0F:B5:AB:CB:9D -k 255.255.255.255 -l 255.255.255.255 -y fragment-0124-161129.xor -w arp_request_bcast.cap
  3. 作成したパケットのインジェクション: 作成したarp_request.capファイルをaireplay-ngのインタラクティブパケットリプレイモード (-2) で注入します。
    aireplay-ng -2 -r arp_request.cap mon0

    これにより、偽造したARPリクエストがターゲットネットワークに連続して送信され、APからのARP応答(これも暗号化されている)を引き出します。これらの応答パケットに含まれる大量のIVをairodump-ngでキャプチャし、最終的にaircrack-ngでWEPキーを解読します。

他のパケットタイプの作成例 📜

特定のポート宛のUDPパケットを作成する場合です。ファイアウォールやポートフィルタリングのテストなどに使えます。

packetforge-ng --udp -a <BSSID> -h <Source MAC> -k <Dest IP>:<Dest Port> -l <Source IP>:<Source Port> -y <PRGA File> -w udp_packet.cap

# 例: 192.168.1.100 の UDPポート 53 (DNS) 宛
packetforge-ng --udp -a 00:11:22:33:44:55 -h AA:BB:CC:DD:EE:FF -k 192.168.1.100:53 -l 192.168.1.200:12345 -y keystream.xor -w dns_query.cap

ICMP Echo Request(いわゆるPing)パケットを作成します。ネットワーク機器の応答テストなどに利用できます。

packetforge-ng --icmp -a <BSSID> -h <Source MAC> -k <Dest IP> -l <Source IP> -y <PRGA File> -w icmp_request.cap

# 例: 192.168.1.1 宛のPing
packetforge-ng --icmp -a 00:11:22:33:44:55 -h AA:BB:CC:DD:EE:FF -k 192.168.1.1 -l 192.168.1.200 -y keystream.xor -w ping_request.cap

より特殊なパケットを作成したい場合は、カスタムモードを使用します。まず、作成したいパケットの「テンプレート」となる暗号化されていないパケットをpcapファイルとして用意します(Wiresharkなどで作成・編集できます)。次に、そのテンプレートファイルとキーストリームを指定してpacketforge-ngを実行します。

packetforge-ng --custom -a <BSSID> -h <Source MAC> -r <テンプレートpcapファイル> -y <PRGA File> -w custom_packet.cap

# 例
packetforge-ng --custom -a 00:11:22:33:44:55 -h AA:BB:CC:DD:EE:FF -r template.pcap -y keystream.xor -w my_custom_packet.cap

-k-lオプションはカスタムモードでは通常使用されず、ヘッダー情報はテンプレートファイルの内容に基づきます。MACアドレス(-a, -h, -c)などは上書き指定が可能です。

ユースケースとシナリオ 🧐

packetforge-ngは以下のようなシナリオで役立ちます。

  • WEPクラッキングの高速化: 最も一般的な用途です。ARPリクエストを大量に生成・注入し、IVの収集を劇的に加速させます。
  • ネットワーク機器のストレステスト: 大量の特定のパケット(例:ICMP、UDP)を生成して送りつけ、アクセスポイントやルーター、ファイアウォールの負荷耐性をテストします。
  • ファイアウォール/IDS/IPSのルール検証: 特定のプロトコルやポート、フラグを持つパケットを作成し、それらがセキュリティ機器によって正しく検知・ブロック(または許可)されるかを確認します。
  • 特殊なネットワーク状況の再現: 通常では発生しにくいような異常なパケットやフラグメント化されたパケットを作成し、ネットワーク機器やプロトコルスタックの挙動をテストします。
  • 教育と研究: 802.11フレーム構造、暗号化(特にWEP)、パケットインジェクションの仕組みを理解するための実践的な学習ツールとして利用できます。

重要な考慮事項と法的側面 ⚖️

法的・倫理的責任

繰り返しになりますが、packetforge-ngを含むAircrack-ngスイートは、ペネトレーションテストやセキュリティ評価のためのツールです。絶対に、自身が管理権限を持たない、あるいは明示的な許可を得ていないネットワークやシステムに対して使用してはいけません。 不正アクセス行為は、日本の法律(不正アクセス禁止法など)を含む多くの国で犯罪とみなされます。

これらのツールを使用する際は、常に倫理的な観点を持ち、法規制を遵守する責任があります。教育や研究目的であっても、必ず閉じた実験環境や自身の所有する機器に対してのみ使用してください。

  • WEP専用: packetforge-ngの暗号化機能は基本的にWEPを対象としています。WPA/WPA2などのより強固な暗号化方式に対して、同様の方法で任意のパケットを暗号化して注入することはできません(ただし、WPA/WPA2に対しても、暗号化されていない管理フレーム(Deauthenticationなど)の注入は可能です)。
  • キーストリーム依存: 暗号化パケットの作成には、有効なキーストリーム(PRGA)が不可欠です。キーストリームが取得できなければ、暗号化されたパケットを偽造することはできません。
  • ドライバーとハードウェアの互換性: パケットインジェクション自体が、使用している無線LANアダプタとそのドライバーに依存します。すべてのカード/ドライバーがインジェクションや特定の攻撃モードに対応しているわけではありません。

まとめ ✨

packetforge-ngは、Aircrack-ngスイートの中でも特に「能動的」な役割を担うツールであり、特定の目的を持った暗号化(主にWEP)パケットを作成する能力を提供します。ARPリクエストの生成によるWEPクラッキングの高速化が最も知られた用途ですが、UDPやICMP、カスタムパケットの作成機能により、ネットワークテストやセキュリティ検証の幅広いシナリオで活用できる可能性を秘めています。

ただし、その強力な機能ゆえに、使用には高度な知識と倫理観、そして法規制の遵守が求められます。正しく理解し、責任を持って使用することで、packetforge-ngは無線LANセキュリティの学習と評価において非常に価値のあるツールとなるでしょう。🚀

参考情報 📚

コメント

タイトルとURLをコピーしました