2
1

VirtualBox + Ubuntu24.04 + USB Wi-Fiアダプターで任意のMACアドレスを指定したAPを乱立してみた

Last updated at Posted at 2024-08-14

はじめに

前回、Windows 11で、アクセスポイント(以下AP)のBSSIDを偽装する方法を解説しました。

しかし、この方法では一部環境を除きローカルアドレスしか指定できず、ユニバーサルアドレスは指定できませんでした。
そんな中、DiscordコミュニティにてLinuxであれば両方指定できたとの情報を得たので、自分でも調べてBSSIDを偽装したAPを、同時に複数作成する手順を確立したので備忘録も込みで解説します。

かなり久しぶりにUbuntuを触り、手探り独学で作成しましたので間違い、補足情報などありましたらお気軽にどうぞ。

環境・使用するもの

私の環境を一例として紹介します。

OS

Windows 11 Home

Linux対応USB Wi-Fiアダプター

※前回使用したTP-Link Archer T2U NanoはLinux非対応のため使用しません。
Archer T2U Nanoを使用する方法が判明したので併記します。
TP-Link TL-WN725N

もしくは、

TP-Link Archer T2U Nano

上記二つで処理・手順が異なる部分は両方解説します。
また、両方併用することはできません。どちらか片方のみを使用します。

ソフトウェア

Oracle VM VirtualBox 7.0.20


(要らないと思うが念のために入れておいたもの)
TL-WN725NのWindows用ドライバー

Archer T2U NanoのWindows用ドライバー

仮想環境用OS

Ubuntu 24.04

MACアドレス確認用のスマホ or PC

前回と同じです。
解説ではAndroidスマホを使用します。周囲のWi-FiのMACアドレスを調べられるアプリ・ソフトの一例を以下に記載します。(自身の発しているWi-Fiは確認できません)

Windows

Android

iOS(所持していないので未確認)

注意事項

仮想環境を作成し、その上でUbuntuを使用する方法となり、Linuxに慣れていない方にはおすすめできない上級者向けの方法となります。
可能な限り簡単に説明はしますが、Linuxの基本中の基本まで解説してたらキリがないので、Linuxの経験が十分ある、もしくは、何かあっても大抵のことは自分で調べられる人、そして、自己責任で構わない人は先へお進みください。

1.VirtualBoxのインストール

いくつかのサイトの方法を組み合わせて行いましたがおおむねこちらのサイトと同じ方法です。

その後、VirtualBox Guest Additionsという、Windowsと仮想環境内でクリップボードを共有したり、共有フォルダを作ったりできる機能を追加するシステムをインストールします。
以下の記事の「インストール後の作業」という項から参照してください。

もしうまくいかない場合は以下の記事の「VBoxLinuxAdditions.run 実行する上で必要なもの。」という項が参考になるでしょう。

2.前準備

gitのインストール

コンソール(端末)を起動し、まずgitをインストールしておきます。
パスワードを求められたら入力してください。

Console
sudo apt install git -y

リポジトリの保存フォルダを作成

gitから必要データ(リポジトリ)のクローン(コピー)を保存するためのフォルダを作成します。
特に考えずに保存しているとフォルダで溢れるので整理のために推奨します。

Console
mkdir -p ~/src

3.Wi-Fiアダプターのドライバーをインストール

TL-WN725Nの場合

ドライバーをインストール

gitを使用して以下のドライバーをインストールします。

Console
cd ~/src
git clone https://github.com/gglluukk/rtl8188eus.git
cd rtl8188eus
make && sudo make install

類似ドライバーをブラックリスト登録

ドライバーrtl8188eusを使用するために他の類似ドライバーをブラックリストに登録します。

Console
echo 'blacklist r8188eu' | sudo tee -a '/etc/modprobe.d/realtek.conf'
echo 'blacklist rtl8xxxu' | sudo tee -a '/etc/modprobe.d/realtek.conf'

類似ドライバーの停止と、再起動

先ほどインストールしたドライバー及び類似ドライバーの停止と、このドライバーのみの再起動を行います。
※類似ドライバーが起動していなければERRORが出ますが無視していいです
Ubuntuの再起動でも可

Console
sudo rmmod r8188eu rtl8xxxu 8188eu
sudo modprobe 8188eu

Archer T2U Nanoの場合

以下のドライバーを使用します。
手順もドライバーの説明に書いてある方法を使います。
Ubuntu以外のLinuxを使用している人はリンク先に細かく説明が書いてあるのでそちらに従ってください。

依存パッケージのインストール

必要なパッケージをインストールします。既にインストール済みのパッケージもあるかもしれませんが、そのまま進めて問題ありません。

Console
sudo apt install -y build-essential dkms git iw

リポジトリのクローン

gitを使用してドライバーのリポジトリをダウンロードし、そのディレクトリに移動します。

Console
cd ~/src
git clone https://github.com/morrownr/8821au-20210708.git
cd 8821au-20210708

gccのバージョンの確認

ドライバーのコンパイルを行う前に、gccの現在のバージョンと、カーネルのコンパイル時のバージョンが一致しているか確認します。
必須ではありませんが、メジャーバージョンが一致していない場合、コンパイルに失敗する可能性があるそうです。

1行目がカーネルのコンパイル時のバージョンを取得するコマンドで、
2行目が現在のバージョンを取得するコマンドです。

Console
cat /proc/version
gcc --version
結果
$ cat /proc/version
Linux version 6.8.0-39-generic (buildd@lcy02-amd64-112) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.2.0-23ubuntu4) 13.2.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #39-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul  5 21:49:14 UTC 2024

$ gcc --version
gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

この場合はどちらも13.2.0なので問題ありません。

良い例
gcc 12.2 (コンパイル時のバージョン)
gcc 12.1 (現在のバージョン)

メジャーバージョンが一致していれば、マイナーバージョンが一致していなくてよいようです。

悪い例
gcc 12.1 (コンパイル時のバージョン)
gcc 10.3 (現在のバージョン)

メジャーバージョンが一致していない場合は合わせることが推奨されます。

gccのバージョンをそろえる方法(例)

Console
sudo apt install gcc-12

ドライバーインストール

コンソールの現在のディレクトリが~/src/8821au-2021070であることを確認してから行ってください。

Console
sudo ./install-driver.sh

インストールが完了すると、設定ファイルを今すぐ編集するかどうかを聞かれますが、Noでいいです。
その後すぐにUbuntuを再起動するかを聞かれますが、こちらもNoを選択してください。

4.MDK4をインストール

依存パッケージと、MDK4パッケージをインストールします。

Console
sudo apt install pkg-config libnl-3-dev libnl-genl-3-dev libpcap-dev -y
sudo apt install mdk4 -y

インストールが完了したら必ず再起動をかけてください。

5.UbuntuにUSB Wi-Fi アダプターを認識させる

再起動が完了したらUbuntuにアダプターを認識させます。

TL-WN725Nの場合

仮想環境画面上部のメニューバーから、
デバイスUSBRealtek 802.11n NICをクリックして✓を付けます、
これでUbuntuがTL-WN725Nを認識してくれます。

Archer T2U Nanoの場合

仮想環境画面上部のメニューバーから、
デバイスUSBRealtek 802.11ac WLAN Adapterをクリックして✓を付けます、
これでUbuntuがArcher T2U Nanoを認識してくれます。


以下のようにWi-Fiの項目が現れていればOKです。
image.png
※メニューバーに表示されるデバイスの表示名は、アダプターによって変わるかもしれません。

6.AP作成前の下準備

再度コンソール(端末)を起動し、
先ほど接続したデバイスの名前を調べます。
以下のコマンドを実行し、TL-WN725N/Archer T2U Nanoのものと思われるデバイス名をメモします。
Ubuntu 24.04ならwlx************(*はMACアドレス)
Kali Linuxとかならwlan0とかの名前で出てくると思います。

Console
iwconfig
結果
lo        no wireless extensions.

enp0s3    no wireless extensions.

wlx************  unassociated  Nickname:"<WIFI@REALTEK>"
          Mode:Auto  Frequency=2.412 GHz  Access Point: Not-Associated   
          Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

BSSID(MACアドレス)とSSIDを指定するファイルの作成します。
以下のコマンドで/home/(ユーザー名)/APList.lstが作成されます。
※中身がテキストファイルなら名前も拡張子も何でもいいです。

Console
cd ~
touch APList.lst

以下を例に作成したAPList.lstの中身を編集します。
BSSIDは:無しや、英字が小文字でも問題ありません。
リストの数も自由です。
一度に出現するキャラの数が10体までなので、多くても10個程度がいいでしょう。

APList.lst
70:77:77:77:77:77 LinuxAP_00
72:77:77:77:77:77 LinuxAP_01
74:77:77:77:77:77 LinuxAP_02
76:77:77:77:77:77 LinuxAP_03
78:77:77:77:77:77 LinuxAP_04
7A:77:77:77:77:77 LinuxAP_05
7C:77:77:77:77:77 LinuxAP_06
7E:77:77:77:77:77 LinuxAP_07

上から2桁目に指定できるのは16進数で偶数となる数字のみです。
ユニバーサルアドレスもローカルアドレスも指定可能です。
奇数のAPは存在しないはずなので指定できませんが特に問題はありません。

7.MDK4起動

MDK4を以下のコマンドで起動し、偽のアクセスポイントを作成します。
Ctrl + Cで終了できます。

Console
sudo mdk4 (デバイス名) b -w a -h -c 11 -s 80 -v '/home/(ユーザー名)/APList.lst'

各パラメータ解説

b
Beacon Floodingモード
偽のアクセスポイントを作成するモード

-w <type>
暗号化設定
n = 暗号化なし, w = WEP, t = TKIP (WPA), a = CCMP (WPA)
複数指定可 例:-w wta
暗号化なしだとiPhoneなど、フリーWi-Fiの接続提案のダイアログが出る端末に影響が出るかもしれないので念のため設定します。

-h
-cオプションで指定したチャンネル情報に合わせて電波の周波数を合わせます。
AndroidのBSSID確認アプリはこのオプションを付けないと表示されません。
switchはこのオプションが無くてもAPを掴むため、APの正確な確認が不要の場合は外しても構いません。

-c <channel>
チャンネル情報を指定値に偽装します。
-hオプションが無いと実際の周波数は変わりません。
11に設定してるのは私の自宅近くのWi-Fiで比較的空いてるチャンネルだったからです。各自で調整してください。

-s <pps>
1秒間にビーコンを飛ばす回数
デフォルトは50
リストの数に対して少なすぎると表示されたりされなかったりコロコロ変わってしまいます。
リストの数×10くらいがおすすめです。

-v <path>
ファイルの内容からBSSIDとSSIDを指定します。

8.APが稼働しているか確認する

WiFi Analyzerを起動してAPのビーコンが受信できるか確認します。
※MDK4のコマンドに-hオプションが付いていない場合、WiFi Analyzerに表示されません。
image.png

備考

  • 作成されるAPはダミーです。接続はできません
  • MDK4のログ出力が邪魔な場合はコマンドの末尾に
    1>/dev/nullを追加すれば何も出力されなくなります。ただしAPList.lstにミスがあってエラーが出ても表示されないので注意
  • BSSIDを変更したい場合は、APList.lstを変更して保存すれば即時反映されます
2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1