airgraph-ng
は、有名な無線LANセキュリティ監査ツールスイート Aircrack-ng の一部として提供されている、強力な可視化ユーティリティです。このツールの主な目的は、airodump-ng
(同じくAircrack-ngスイートのツール)によってキャプチャされた無線LANの通信データ(.csv
ファイル形式)を解析し、アクセスポイント(AP)とクライアントデバイスの関係性や、クライアントが探しているネットワーク(プローブリクエスト)をグラフィカルに表示することです。
複雑な無線LAN環境では、どのデバイスがどのAPに接続しているのか、あるいはどのネットワークを探しているのかをテキストベースのログから把握するのは困難な場合があります。airgraph-ng
を使うことで、これらの関係性を視覚的に理解しやすくなり、ネットワーク構成の分析、セキュリティ監査、トラブルシューティングなどに役立ちます。🕵️♀️
このブログ記事では、airgraph-ng
の基本的な使い方から、生成されるグラフの種類、主要なオプション、そして利用上の注意点まで、詳細に解説していきます。
準備するもの 🛠️
airgraph-ng
を使用するには、いくつかの準備が必要です。
-
Aircrack-ng スイート:
airgraph-ng
は Aircrack-ng スイートに含まれています。まだインストールしていない場合は、まず Aircrack-ng をインストールする必要があります。多くのLinuxディストリビューション(特にKali Linuxなどのペネトレーションテスト用OS)では、パッケージマネージャを使って簡単にインストールできます。Debian/Ubuntu系:
sudo apt update sudo apt install aircrack-ng
Fedora系:
sudo dnf install aircrack-ng
airgraph-ng
自体が別パッケージになっている場合もあります(特に古いバージョンや一部ディストリビューション)。その場合は、airgraph-ng
パッケージもインストールしてください。sudo apt install airgraph-ng # Debian/Ubuntu系の場合
-
Graphviz:
airgraph-ng
はグラフの描画エンジンとして Graphviz を利用します。これも別途インストールが必要です。Debian/Ubuntu系:
sudo apt install graphviz
Fedora系:
sudo dnf install graphviz
macOS (Homebrewを使用):
brew install graphviz
注意: Graphviz が正しくインストールされていない、またはパスが通っていない場合、
airgraph-ng
はグラフを生成できずにエラーとなります。 -
airodump-ng の出力ファイル (CSV形式):
airgraph-ng
が解析する元データです。airodump-ng
を実行する際に-w <prefix>
オプションまたは--write <prefix>
オプションを指定すると、複数のファイルが生成されますが、airgraph-ng
が主に使用するのは<prefix>-XX.csv
という名前のCSVファイルです。(XXは連番)例:
airodump-ng wlan0mon -w capture
を実行するとcapture-01.csv
のようなファイルが生成されます。古いバージョンの Aircrack-ng (1.0rc3より前) では
.txt
形式で出力されていましたが、現在は.csv
形式が標準です。airgraph-ng
はこのCSVファイルを読み込みます。 -
Python:
airgraph-ng
はPythonスクリプトとして実装されています。通常、Linux環境にはPythonがプリインストールされていますが、もしインストールされていなければ、Python 3 をインストールしてください。
基本的な使い方 🚀
airgraph-ng
の基本的なコマンド構文は以下の通りです。
airgraph-ng -i <input_csv_file> -o <output_image_file> -g <graph_type>
-i, --input <input_csv_file>
: 入力となるairodump-ng
のCSVファイルを指定します。必須オプションです。-o, --output <output_image_file>
: 生成されるグラフ画像の出力ファイル名を指定します。拡張子によって画像形式が決まります(例:.png
,.jpg
,.svg
など、Graphvizがサポートする形式)。必須オプションです。-g, --graph <graph_type>
: 生成するグラフの種類を指定します。CAPR
またはCPG
のいずれかを指定します。必須オプションです。
グラフの種類
airgraph-ng
では、主に2種類のグラフを生成できます。
- CAPR (Client to AP Relationship): アクセスポイント(AP)とそれに接続しているクライアントデバイスの関係を示します。どのクライアントがどのAPに紐づいているかを視覚化するのに役立ちます。ネットワークの基本的な接続構造を把握するのに適しています。
- CPG (Common Probe Graph): クライアントデバイスが探索しているネットワーク(プローブリクエストで送信したSSID)を示します。デバイスが過去に接続したことのあるネットワークや、接続しようとしているネットワークを明らかにすることができます。特定のデバイスの移動履歴や接続傾向を探る際に有用です。
簡単な実行例
airodump-ng
で取得した capture-01.csv
ファイルを使って、APとクライアントの関係図 (CAPR) を network_map.png
という名前で生成する場合:
airgraph-ng -i capture-01.csv -o network_map.png -g CAPR
同じファイルから、クライアントのプローブリクエスト (CPG) を probe_requests.svg
という名前で生成する場合 (SVG形式):
airgraph-ng -i capture-01.csv -o probe_requests.svg -g CPG
実行すると、Graphviz を使用してグラフが生成されます。CSVファイルの内容(検出されたAPやクライアントの数)によっては、グラフの生成に時間がかかることがあります。また、生成される画像サイズが非常に大きくなる可能性もありますので注意が必要です。🖼️
生成されるグラフの読み方
生成されたグラフは、ノード(点や図形)とエッジ(線)で構成されます。これらが何を表しているかを理解することが重要です。
- ノード (Nodes):
- アクセスポイント (AP): 通常、四角形や楕円形で表現され、BSSID(MACアドレス)やESSID(ネットワーク名)が表示されます。
- クライアント (Client): 通常、円形や点で表現され、MACアドレスが表示されます。
- プローブされたSSID (Probed SSID): CPGグラフでは、クライアントが探していたネットワーク名(SSID)がノードとして表示されることがあります。
- エッジ (Edges):
- CAPRグラフ: APノードとクライアントノードを結ぶ線は、そのクライアントがそのAPに接続(または関連付け)されていることを示します。
- CPGグラフ: クライアントノードとSSIDノードを結ぶ線は、そのクライアントがそのSSIDをプローブリクエストで探索していたことを示します。
ノードの色や形状、線の種類などは、Graphvizのデフォルト設定やairgraph-ng
のバージョンによって若干異なる場合があります。多くの場合、APとクライアントは異なる形状や色で区別されます。
CAPRグラフの解釈例
CAPRグラフを見ることで、以下のような情報を読み取れます。
- 特定のAPにどれだけのクライアントが接続しているか。
- 複数のAPが存在する場合、クライアントがどのように分散しているか。
- 特定のクライアントがどのAPに接続しているか。
- (airodump-ngが検出できていれば) APとクライアント間の信号強度などの情報が付加されている場合もあります。(ただし、グラフ上での表現は限定的)
これにより、例えば「特定のAPに負荷が集中している」「本来接続すべきでないAPにクライアントが接続している」といった状況を視覚的に把握できます。
CPGグラフの解釈例
CPGグラフは、クライアントの「足跡」を探るのに役立ちます。
- 特定のクライアントがどのようなネットワーク名(SSID)を探しているか。自宅、職場、よく利用する公共Wi-FiなどのSSIDが見つかることがあります。
- 複数のクライアントが共通して探しているSSIDは何か。特定の場所(イベント会場、企業など)で共通して利用されているネットワークかもしれません。
- 正規のネットワーク名に似せた偽AP(Evil Twin)への接続試行がないか。(ただし、これはグラフだけでは判断が難しい場合が多い)
プライバシーに関わる情報が含まれる可能性もあるため、取り扱いには注意が必要です。
主要なオプション詳解 ⚙️
airgraph-ng
には、基本的な使い方で紹介した以外にもいくつかのオプションがあります。
オプション | 省略形 | 説明 |
---|---|---|
--input <file> |
-i <file> |
入力ファイル指定 (必須): airodump-ng が生成したCSV形式のファイルを指定します。.cap や .pcap ファイルではなく、-XX.csv ファイルである点に注意してください。 |
--output <file> |
-o <file> |
出力ファイル指定 (必須): 生成するグラフ画像のファイル名を指定します。拡張子で画像形式を指定します (例: graph.png , graph.svg )。 |
--graph <type> |
-g <type> |
グラフタイプ指定 (必須): CAPR (Client to AP Relationship) または CPG (Common Probe Graph) のいずれかを指定します。 |
--dotfile |
-d |
DOTファイルを保持: Graphvizがグラフを描画するために内部的に使用する .dot ファイルを、画像生成後も削除せずに保持します。.dot ファイルはテキスト形式であり、手動で編集してグラフの見た目をカスタマイズすることも可能です。 |
--help |
-h |
ヘルプ表示: 利用可能なオプションの一覧と簡単な説明を表示します。 |
--about (古いバージョン) |
-a (古いバージョン) |
バージョン情報表示: ツールに関する情報を表示します。最近のバージョンでは -h や他の情報に含まれるか、削除されている可能性があります。 |
最新のオプションについては、airgraph-ng --help
コマンドを実行して確認するのが最も確実です。
注意: 古いドキュメントやチュートリアルでは、存在しないオプションや挙動が異なるオプションが記載されている場合があります。必ず使用しているバージョンのヘルプ情報を参照してください。
応用例とヒント ✨
大規模ネットワークの可視化
多数のAPとクライアントが存在する環境では、生成されるグラフが非常に複雑になり、見づらくなることがあります。このような場合は、airodump-ng
でキャプチャする際に対象を絞り込むことが有効です。
- 特定のチャンネルのみをスキャンする (
-c <channel>
オプション)。 - 特定のBSSID (APのMACアドレス) のみを対象とする (
--bssid <bssid>
オプション)。 - 特定のESSID (ネットワーク名) のみを対象とする (
--essid <essid>
オプション)。
絞り込んだデータで airgraph-ng
を実行すれば、より焦点を当てた見やすいグラフが得られます。
複数のCSVファイルの結合
異なる時間帯や場所で取得した複数の airodump-ng
のCSVファイルを結合して、より広範なネットワーク図を作成したい場合があります。Aircrack-ngスイートには、このためのユーティリティ airodump-join
(または古いバージョンの dump-join.py
) が含まれていることがあります。
airodump-join -o combined.csv -i capture1-01.csv capture2-01.csv capture3-01.csv
結合した combined.csv
ファイルを airgraph-ng
の入力として使用できます。
airodump-join
が単体コマンドとして存在しない場合、airgraph-ng
のインストールディレクトリ内のスクリプトとして提供されている可能性があります(例: /usr/share/airgraph-ng/airodump-join
)。
トラブルシューティング
- Graphvizが見つからないエラー: 最も一般的な問題です。
sudo apt install graphviz
(または該当するOSのコマンド) でGraphvizが正しくインストールされているか確認してください。インストール後もエラーが出る場合は、パスが通っているか確認します。 - CSVファイル形式のエラー:
airgraph-ng
はairodump-ng
が生成する特定のCSV形式を期待しています。手動で編集したり、異なるツールで生成したCSVファイルを使用すると、エラーが発生する可能性があります。Aircrack-ngのバージョン間の互換性問題も稀に発生することがあります。 - パーミッションエラー: 入力CSVファイルへの読み取り権限、または出力先ディレクトリへの書き込み権限がない場合に発生します。
sudo
を使うか、適切な権限を設定してください。 - グラフが生成されない/空になる: 入力したCSVファイルに、指定したグラフタイプ(CAPRまたはCPG)を描画するのに十分な情報が含まれていない可能性があります。例えば、クライアントが全く検出されていないCSVファイルでCAPRグラフを生成しようとしても、意味のあるグラフはできません。
生成されたDOTファイルの活用
-d
オプションで .dot
ファイルを保持した場合、これをテキストエディタで開いて内容を確認・編集できます。GraphvizのDOT言語の知識があれば、ノードの色、形状、ラベル、線のスタイルなどを細かくカスタマイズして、より分かりやすいグラフを作成することも可能です。
まとめ
airgraph-ng
は、airodump-ng
で収集した無線LANのデータを視覚的に表現するための便利なツールです。📊 APとクライアントの関係 (CAPR) や、クライアントが探しているネットワーク (CPG) をグラフ化することで、複雑なネットワーク環境の理解を助けます。
主なポイント:
- Aircrack-ngスイートとGraphvizが必要です。
- 入力は
airodump-ng
のCSVファイル、出力は画像ファイルです。 CAPR
とCPG
の2種類のグラフタイプがあります。- オプションを使って、DOTファイルを保持したり、ヘルプを確認したりできます。
- 大規模ネットワークでは、
airodump-ng
で対象を絞ると見やすくなります。 airodump-join
で複数のCSVファイルを結合できます。
無線LANのセキュリティ監査やネットワーク構成の分析において、airgraph-ng
は強力な味方となるでしょう。テキストログだけでは見過ごしてしまうかもしれない関係性を、視覚的に捉えることができます。ぜひ活用してみてください!👍
参考情報
- Aircrack-ng Official Website & Documentation:
https://www.aircrack-ng.org/
(
airgraph-ng
のドキュメントページ: https://www.aircrack-ng.org/doku.php?id=airgraph-ng) - Kali Linux Tools – aircrack-ng:
https://www.kali.org/tools/aircrack-ng/
(Kali Linuxに含まれる Aircrack-ng スイートの説明ページ。
airgraph-ng
の簡単な説明と使い方の例も記載されています) - Graphviz Official Website:
https://graphviz.org/
(
airgraph-ng
が利用するグラフ描画ソフトウェア)
コメント