この記事のスタンス
本記事は 自宅 / 自社で管理している Wi-Fi に対する ペネトレーションテスト学習用の環境構築メモです。
他人の Wi-Fi へのキャプチャ・攻撃は日本では電波法・不正アクセス禁止法違反になるため、絶対に行いません。
Qiita で公開する以上、誰が読んでも参考になる「環境構築の手順と落とし穴」だけに絞っています。
🧭 何をやりたかったか
MacBook (Apple Silicon) 1台で完結する Wi-Fi ペネトレーションテスト学習環境 が欲しい、というモチベーションです。
最終的に達成したかったのは:
- ✅ Kali Linux を Apple Silicon Mac で動かす(仮想化、ARM64)
- ✅ USB Wi-Fi アダプタを VM にパススルーして認識させる
- ✅
airmon-ngで monitor mode に切り替える - ✅
airodump-ngで周辺 AP をスキャンする - ✅ 5GHz 帯(DFS 含む)も掴める
結論から言うとぜんぶ動いたんですが、地味な罠が 2 つあって、両方とも検索しても情報が散逸していたので、まとめて記録しておきます。
🛠️ 用意したもの
| 項目 | 内容 |
|---|---|
| ホスト | MacBook (Apple Silicon, macOS 26.5) |
| 仮想化 | UTM(QEMU 10.0 ベース、無料・OSS) |
| ゲスト | Kali Linux 2026.1 ARM64 installer ISO (約 3.7GB) |
| USB Wi-Fi(最初) | Buffalo WLI-UC-G301N(Ralink RT3072、2.4GHz のみ) |
| USB Wi-Fi(本採用) | ALFA AWUS036AC(Realtek RTL8812AU、2.4 / 5GHz、メルカリで¥6,980) |
| ターミナル | macOS 標準 Terminal.app(後述する SSH 越し操作で多用) |
UTM は AppStore 版もありますが、サポート寄付用なので無料の公式ビルドで充分です。
⛳️ ゴール画像
最終的に、Mac の Terminal から SSH で Kali に入って、こんな感じで airodump-ng で周辺 AP / プローブが見える状態を目指します。
CH 7 ][ Elapsed: 1 min ][ 2026-05-15 23:46
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
18:AA:45:XX:XX:F8 -61 44 0 0 1 130 OPN <length: 0>
18:AA:45:XX:XX:FB -63 40 0 0 1 130 WPA2 CCMP PSK MyPlace_XXXXXX
...
5GHz 対応アダプタにすれば、ここに WPA3 の ch36 / ch48 / ch60 / ch104〜 あたりも並びます。
📦 Step 1: UTM のインストール
Homebrew Cask で一発です。
brew install --cask utm
GUI から「新規仮想マシンを作成」→「仮想化」→「Linux」を選びます。
(Emulation ではなく仮想化 を選ぶのが超重要。Apple Silicon のネイティブ速度を引き出せます)
VM 設定のポイント:
| 項目 | 値 | 補足 |
|---|---|---|
| Apple 仮想化を使用 | OFF | ON にすると USB パススルー周りが弱い。QEMU を選ぶ |
| Boot ISO image | Kali ARM64 ISO を指定 | |
| メモリ | 4096 MiB | Light 用途なら充分 |
| CPU | 4 コア | M シリーズなら余裕 |
| ストレージ | 20 GB | top10 ツール程度なら 10GB 弱で済む |
| 共有ディレクトリ | スキップ | 後で追加可能 |
⚠️ Step 2: 罠その 1 〜 インストーラが黒画面で止まる
これがマジで時間を溶かす問題でした。
VM 起動 → GRUB メニュー(青背景)→ Install を選択 → Enter
→ カーネル起動メッセージが 1 行だけ出る:
[ 0.016987] PCI: OF: of_root node is NULL, cannot create PCI host bridge node
→ そのまま永遠に固まる。
「Graphical install ならいけるかも」と試しても同じ。virtio-gpu-pci → virtio-ramfb → ramfb とディスプレイドライバを変えてみても、状態が Display output is not active ⇆ Guest has not initialized the display (yet). を往復するだけ。
これは UTM + Kali ARM64 インストーラの有名な再発バグで、関連 Issue が継続報告されています:
- utmapp/UTM Issue #4090 Completely black screen when installing Kali M1 version
- utmapp/UTM Issue #5122 Kali Linux Apple Silicon(ARM64) Issue
- utmapp/UTM Issue #5525 Stuck on "Guest has not initialized the display (yet)"
- Kali Bug Tracker #7958 Installation according to docs on UTM gets stuck
解決策:シリアルコンソールを追加する
カーネルは実はちゃんと動いてるけど、フレームバッファに描画できていないだけ、というのが本質的な状況。なので シリアル経由で操作できれば良いわけです。
UTM 側で:
- VM 停止(実行中なら ⏻ 長押し)
- UTM ホーム → VM を右クリック → 編集
- 左ペイン下の 「+ 新規...」 → 「シリアル」 を追加
- シリアルの設定で インターフェース を
Built-in Terminalに変更 - 保存
- VM 起動
起動するとメインの VM ウィンドウとは別に (ターミナル 1) という追加ウィンドウが開きます。
そっちにインストーラの テキスト UI 版(Debian Installer ベース)が流れてくるので、それで操作します。
補足:
Display output is not activeのメインウィンドウは無視で OK。ディスプレイドライバはデフォルトのvirtio-gpu-pciに戻しておいて構いません。インストール完了後、再起動した Kali はちゃんと描画されることもあります(環境による)。
このシリアル UI でインストーラ最後まで進めます。途中の選択肢は概ねデフォルトで OK ですが、ソフトウェア選択画面だけは押さえどころです。
| 項目 | 推奨 |
|---|---|
| Desktop environment: Xfce | ✅ そのまま(軽量で◎) |
| Collection of tools: top10 | ✅ これだけで aircrack-ng / wireshark / nmap が入る
|
| default | ✅ 追加で入れると幅広い CTF ツールが揃う(+5GB) |
| large | ❌ 20GB ディスクには入らない(+15GB) |
| everything | ❌ 50GB+ なので絶対 NG |
今回は Xfce + top10 だけで aircrack-ng 関連は全部入ったので、最小構成でも目的は達成できます。
⚠️ Step 3: 罠その 2 〜 再起動するとまたインストーラが起動する
インストール完了 → reboot → またあの青い GRUB Install メニュー。
理由は単純で、ISO が CD/DVD として刺さりっぱなし だから、UEFI の起動順位で CD が先に呼ばれるためです。
解決策:CD/DVD から ISO を取り出す
- VM 強制停止
- VM 右クリック → 編集 → CD/DVD ドライブの行
- ISO を「消去」 or「取り出し」 で外す
- 保存して起動
これで HDD(インストール済み Kali)から普通にブートします。シリアルコンソール窓で kali login: が出れば成功。
🔌 Step 4: 罠その 3 〜 USB Wi-Fi アダプタが VM に届かない
ここが最大の落とし穴。UTM のドキュメントにもあまり書かれていないので、初見だとかなりハマります。
症状
- Mac に USB Wi-Fi アダプタを挿す → System Information では認識 OK
- UTM の VM ウィンドウ上部 🔌 アイコンをクリック → デバイス一覧に出てる ✅
- クリックしてチェックを入れる → 一見、接続成功っぽい挙動 ✅
-
Kali 側で
lsusbしても何も出ない ❌ -
sudo dmesg | tailしてもイベント無し ❌
ツールバーの UI は反応してるけど、実際には何も転送されていない という UI バグ的挙動です。
解決策:VM 設定の「USB 共有」マスタースイッチを ON にする
実は VM 設定に「USB デバイス共有を有効にする」というグローバルスイッチがあって、これが OFF だとツールバーは反応するけど実体は何も起きません。
- VM 停止
- 編集 → 左ペイン 「入力」 パネル
- 「USB 共有 → ホストから USB デバイスを共有」 を ON
- 保存 → VM 起動
- 🔌 メニューから対象デバイスを選択
これで Kali 側 lsusb にちゃんと出ます:
ctf@kali:~$ lsusb
...
Bus 003 Device 002: ID 0411:016f BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-G301N Wireless LAN Adapter [Ralink RT3072]
dmesg を見るとドライバが自動でロードされてる様子もわかります:
usb 3-3: New USB device found, idVendor=0411, idProduct=016f, bcdDevice= 1.01
usb 3-3: Product: 802.11 n WLAN
usb 3-3: Manufacturer: Ralink
ieee80211 phy0: rt2x00_set_rt: Info - RT chipset 3071, rev 0213 detected
usbcore: registered new interface driver rt2800usb
ieee80211 phy0: rt2x00lib_request_firmware: Info - Loading firmware file 'rt2870.bin'
ieee80211 phy0: rt2x00lib_request_firmware: Info - Firmware detected - version: 0.36
Kali 標準カーネルに rt2800usb ドライバが入っているので、Buffalo WLI-UC-G301N は挿すだけ系の最古参鉄板アダプタとして今でも普通に動きます。
🌐 Step 5: Mac から SSH で操作環境を快適にする
ここまでで一応動くのですが、シリアルコンソールはコピペが効かなかったり画面サイズが固定だったりして苦痛です。SSH に切り替えると劇的に快適になります。
Kali 側で 1 回だけ:
sudo apt install -y openssh-server
sudo systemctl enable --now ssh
# 自 IP 確認
ip -4 addr | grep inet
UTM の「共有ネットワーク(NAT)」を使っていると、Kali には 192.168.64.X 系の IP が振られます。
Mac 側の Terminal.app から:
ssh ctf@192.168.64.2
# 初回は yes、パスワード入力
これで 複数ウィンドウ / 複数タブで同時に Kali を触れる ようになるので、後で airodump-ng を流しつつ別窓で aireplay-ng を撃つみたいな作業がストレスフリーです。
📡 Step 6: monitor mode → airodump-ng で動作確認
ここまで来たら本番です。
# NetworkManager 等の干渉プロセスを kill
sudo airmon-ng check kill
# monitor mode へ
sudo airmon-ng start wlan0
# 確認
iw dev
WLI-UC-G301N(rt2800usb)だと、インターフェース名は wlan0 → wlan0mon にリネームされます。
sudo airodump-ng wlan0mon
実行すると、こんな感じで周辺 AP がリストアップされます:
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
D0:56:F2:XX:XX:00 -53 38 0 0 6 130 WPA2 CCMP PSK XXXXX-2G-XXXX
18:AA:45:XX:XX:F8 -61 44 0 0 1 130 OPN <length: 0>
...
ここまで来れば CTF 環境の最低限のセットアップは完了です。お疲れさまでした 🍻
🚀 5GHz 対応にしたければ ALFA AWUS036AC
WLI-UC-G301N は 2.4GHz オンリーなので、最近の Wi-Fi 5 / 6 ルーターには手が出ません。
5GHz 帯(特に DFS 帯)を掴みたい場合は、CTF 界隈で鉄板の ALFA AWUS036AC(Realtek RTL8812AU) がおすすめです。
| WLI-UC-G301N | AWUS036AC | |
|---|---|---|
| チップ | Ralink RT3072 | Realtek RTL8812AU |
| バンド | 2.4GHz のみ | 2.4GHz + 5GHz(DFS 含む) |
| 速度 | 150 Mbps (11n) | 867 Mbps (11ac) |
| アンテナ | 1本(5dBi) | 2本(5dBi×2) |
| ドライバ |
rt2800usb(mainline) |
rtw88_8812au(kernel 6.14+ で mainline 入り ) |
| 中古市場 | 1,000円〜 | メルカリで 6,000〜8,000円 |
私は最終的に AWUS036AC に乗り換えました。kernel 6.14 以降の Kali 2026.1 なら DKMS 不要で挿すだけで動きます。これは結構地味に革命的で、数年前まで aircrack-ng/rtl8812au の DKMS ドライバを毎回ビルドしないといけなかった面倒さがゼロになっています。
ちなみに AWUS036AC の場合、airmon-ng start wlan0 してもインターフェース名は wlan0 のままで wlan0mon にリネームされません。iw dev で type monitor になっていれば OK です。
# 5GHz 含むフルバンドスキャン
sudo airodump-ng --band abg wlan0
これで Wi-Fi 5/6 の最新 AP も視界に入ります。
🧹 まとめ:3 つの罠と対策
| 罠 | 対策 |
|---|---|
| Kali ARM64 インストーラが黒画面で固まる | UTM VM 設定にシリアルデバイスを追加(Built-in Terminal)してテキスト UI で操作 |
| 再起動するとまたインストーラが起動 | VM 設定で CD/DVD から ISO を取り出す |
| USB アダプタを 🔌 で選んでも Kali に届かない | VM 設定「入力」→「USB 共有」マスタースイッチを ON にする |
正直、この 3 つを知らない状態で UTM + Kali ARM64 を始めると、「動かない」と挫折する人が大量に出そうな構造になっています(既に Issue/Bug Tracker でも頻発しています)。誰かの遠回り防止に貢献できれば幸いです。
🔭 次回予告
今回 airodump-ng で観察していて、自宅ルーターに SSID 長さ 0 バイトの OPN(無暗号)AP が混ざっているのを発見しました。BSSID の先頭 3 バイト(OUI)から製造元を引いて、その正体を突き止める話を別記事で書きます。
→ airodump-ng で見つけた『SSID 長さ 0 バイト』の謎を OUI から解いた話 〜会社ルーターに眠っていた Fon 共有 Wi-Fi の残骸〜