Kali Linux2022.1 でハッキングラボをつくってみる9 無線LANへのハッキング1無線LANアダプタモード切り替え

# はじめに
[前回]()、MIMTfとBeEfを使用してのハッキングを予告しておりましたが、どうにも導入がうまくいかないので、飛ばすことにしました。試してみてうまくいくようでしたら、後日取り上げます。インストールまではうまくいったのですが、実際にarpspoof攻撃を実行しようとすると、エラーが発生しました。pipのパッケージに関するエラーでした。

無線LANの上でのパケットキャプチャやパスワードの解析を行っていきたいと思います。
「ハッキング・ラボのつくりかた」p.509-533を参考にして、KaliLinux2022.1上で、AP（アクセスポイント）スキャンと無線LANアダプタのモードの切り替えまでを実験していきます。

:::note alert
注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。
:::
# managedモードとmonitorモード
- managedモード

自身あての通信のみをキャプチャして、そうでない通信はキャプチャしない。
キャプチャされるデータは、復号化されたデータとなる。
デフォルトはこれ。

- monitorモード

データの送受信を行わず、無線LANネットワークを飛び交うパケットを監視する。ゆえに、monitorモードの使用中は、monitorモードにしている無線LANアダプタを経由してインターネットは利用できない。別に無線LANアダプタや有線LANがあればインターネットが利用可能。
キャプチャされるデータは、暗号化されたままのデータ（MACヘッダ+データ部+FCS)となる。
他、入手可能な情報として、受信した電波の強さや伝送速度がある。
monitorモードは、高い負荷がかかる。そのため、パケットの取りこぼしや無線LANアダプタの故障につながるリスクがある。
<hr>

:::note
**monitorモードにできる**無線LANアダプタを入手してから、以下の項目を実行してください。そのような無線LANアダプタはかなり限られているそうです。また、ドライバは各自で用意してください。私は、githubで適当に転がっているLinux用のドライバを使用しました。ここでは、私が使っている機器やそのドライバの詳細やKaliLinuxにドライバをインストール方法の記述は割愛します。**
:::

:::note warn
読者の方が、ネットに適当に転がっているドライバを使用して、何かしらの損害があわれても、私は責任をとりません。また、他人が管理しているAPや電波にむやみにアクセスしないでください。電波法に触れるような機器の使用や改造も慎んでください。
:::

# 無線LANの接続確認
USB接続の無線LANなら
```
lsusb
```
PCI接続の無線LANなら
```
lspci
```
を実行して、出力をたしかめる。該当するデバイス名があれば、無線LANアダプタが接続できている。該当するデバイス名がなければ、機器の故障が疑われる。

無線LANアダプタの状態を確認するには、次のコマンドを実行して、"wl"からはじまるインターフェース名（例・wlan0)が存在することを確認する。
```
ifconfig
```
また、無線LANの状態を確認するコマンドを実行する。
```
iwconfig wlan0
```
デフォルトでは、出力の「Mode」の値が"Managed"となっている。

同書p.518より
>iwconfigでwlan0が表示されれば、そのデバイスが認識されています。
また、ifconfigコマンドでwlan0が表示されれば、そのデバイスがネットワーク的に有効になっています。

微妙な違いだが、この違いを認識しておく。
例えば、iwconfigで何かしら表示されて、ifconfigで何も表示されなければ、少なくともデバイスはOSに認識されていると言うことができる。どちらも表示がなければ、デバイスがまったくOSに認識されていない。

# ドライバ名やチップセットの確認
```
sudo airmon-ng
```
何しかしらの出力があるかを確認する。
![VirtualBox_kali-linux-2022.1-airmon.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/f7f048c8-ddcc-2f79-ce00-b9a87fcecd55.png)

# AP（アクセスポイント）をスキャンする
```
iwlist wlan0 scan
//出力が大量にあって読みづらいので、grepしてもよい
iwlist wlan0 scan | grep ESSID
```
アクセスポイントが出力される。

# monitorモードに切り替える
- airmon-ngコマンドを利用する

```
sudo airmon-ng check
//Monitorモード切り替えを妨害するプロセスを表示
sudo airmon-ng check kill
//そうしたプロセスをkillする
sudo airmon-ng start wlan0
//wlan0をMonitorモードに切り替え
iwconfig
```
`iwconfig`の出力、「Mode」の値が"Monitor"であることを確認する。

- iwcofingコマンドを利用する

```
sudo ifconfig wlan0 down
//wlan0を落とす
sudo iwconfig wlan0 mode monitor
//wlan0をMonitorモードに切り替え
sudo ifconfig wlan0 up
//wlan0を立ち上げ
iwconfig
```
`iwconfig`の出力、「Mode」の値が"Monitor"であることを確認する。
一度、wlan0を落としてから、モードをmonitorに切り替えて、再度wlan0を立ち上げる。

- iwコマンドを利用する

同書では触れられていないが、`iw`、`ip`コマンドでも`iwcofig`、`ifconfig`コマンドと同じことができると思い、同様の処理を遂行するコマンドを載せる。`iwcofig`、`ifconfig`コマンドは、いま現在では非推奨で、将来的に利用できなくなる可能性もあると思うので。
```
sudo ip link set wlan0 down
//wlan0を落とす
sudo iw wlan0 set monitor control
//wlan0をMonitorモードに切り替え
sudo ip link set wlan0 up
//wlan0を立ち上げ
sudo iw dev
```
`sudo iw dev`の出力、「Mode」の値が、"Monitor"であることを確認する。

# managedモードに切り替える
- airmon-ngコマンドを用いる

```
sudo airmon-ng stop wlan0
sudo systemctl restart NetworkManager
iwconfig
```
モニタリングをストップさせた後、NetworkManagerを再起動
`iwconfig`の出力、「Mode」の値が"Managed"であることを確認する。

- iwconfigコマンドを用いる

```
sudo ifconfig wlan0 down
//wlan0を落とす
sudo iwconfig mode managed
//Managedモードに切り替え
sudo ifconfig wlan up
//wlan0を立ち上げ
iwconfig
```
`iwconfig`の出力、「Mode」の値が"Managed"であることを確認する。


- iwコマンドを用いる

```
sudo ip link set wlan0 down
//wlan0を落とす
sudo iw wlan0 set type managed
//wlan0をManagedモードに切り替え
sudo ip link set wlan0 up
//wlan0を立ち上げ
sudo iw dev
```
`sudo iw dev`の出力、「Mode」の値が"Managed"であることを確認する。

<hr>
同書では、Monitorモードに切り替えると、インターフェースの名前がwlan0monのように変更される。
自身の環境では、インターフェース名はwlan0のままだった。動作には問題なかったので、このまま続ける。

#  airodump-ngでAP（アクセスポイント）をスキャンする
先程も AP（アクセスポイント）をスキャンしたが、今度は`airodump-ng`コマンドでスキャンする。
```
sudo airodump-ng wlan0
```
![VirtualBox_kali-linux-2022.1-airodump_ap_list.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535888/343f650a-449e-7336-46c2-0b7f3f001a94.png)
ESSIDの"test","test11"は、WEPのハッキングのために用意したゲストSSIDである。
BSSIDは黒塗りで隠されている日常使いのESSIDと同一。

出力画面の項目については以下通り。
同書p.527より引用

> 
>| カラム名 | 説明 |
>| :--- | :-- |
> | BSSID | APのMACアドレス |
> | PWR | シグナルの強さ。単位はdBm。数値は大きいほうがよい。 |
> | #Data | 通信されたデータの総数。 |
> | CH | チャネル番号 |
> | ENC | 暗号技術(OPN=暗号化なし、WEP、WPA、WPA2) |
> | CIPHER | 暗号化方式 (WEP、CCMP=AES、TKIP) |
> | AUTH | 認証プロトコル<BR> PSK : WPA/WPA2の事前共有鍵方式<BR>SKA : WEPの共有鍵方式<BR>MGT : 認証サーバ方式<BR>OPN : オープンシステム認証方式 |
> | ESSID | 無線LANのESSID。 |

PWRの単位dBmは、信号の強さを表すときに使う単位。一般的な携帯電話は27 dBm、IEEE 802.11b/gの実効等方輻射電力は20 dBm、一般的なノートパソコンの無線LANは15 dBmとなっている。
AUTHのMGTは、企業内LANで用いられることの多い認証方式。OPNは、特にどのデバイスからの接続も受け入れる。
ESSIDは、APの名前。
他、同書では説明されていないカラムの説明。
| カラム名 | 説明 |
| :-- | :-- |
| Beacons | ビーコンの数。APポイントが自身の存在を知らせるための信号またはそれによって創出されるパケットを指す |
| #/s | 過去10秒間の1秒あたりのデータパケット数 |
| MB | APがサポートする最大速度 |
| STATION | APに繋がれているクライアントのMACアドレス |
| Rate | Stationの受信レート、送信レートの順で表示。ネットワークで QoS が有効な場合は、各レートの後に「e」と表示されます。 |
| Lost | シーケンス番号に基づいた、過去10秒間に失われたデータパケットの数 |
| Frames | クライアントから送られたフレーム・パケットの数。Packetsと表示されることも |
| Notes | クライアントに関する追加情報 |
| Probes | クライアントが現在接続されていない場合に、クライアントが接続しようとしているネットワーク |

# おわりに
参考にしたもの

「ハッキング・ラボのつくりかた」(IPUSIRON著)

https://ja.wikipedia.org/wiki/DBm

http://iot-jp.com/iotsummary/iottech/bluetooth/beaconとは？/.html#LANBeacon

https://atmarkit.itmedia.co.jp/ait/articles/1607/01/news014.html

https://support.biglobe.ne.jp/yogo/jpn_o/jpn_o003.html

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

https://wireless.wiki.kernel.org/en/users/Documentation/iw

https://ciksiti.com/ja/chapters/4274-using-monitor-mode-in-kali-linux-2020--linux-hint