VagrantでKaliLinux環境構築(USB-Wifiの認識、NatNetworkの設定)

f:id:rasukarusan:20190321140338p:plain:w500

前回でとりあえずの環境は整ったので、今回は無線LANハックをする環境を整える。
最終的なVagrantfileなどはGithubに上げておいた。

死ぬほど参考にさせていただいたサイト

medium.com

基本的には上記のサイトのままいけば大丈夫。(タメになる記事ありがとうございます)
ただ、上記のサイトはVirtualBoxのディスプレイモードを利用した形のものなので、Vagrantで環境を構築する際は少し差異がある。
なのでこの記事ではVagrantでの設定の仕方と記事を読んでいて詰まったところを紹介していく。

vagrant upしたら「Stderr: VBoxManage: error: Implementation of the USB 3.0 controller not found!」と出る

これはVirtualboxのExtensionPackがインストールされていないからだった。
ただ一つ罠があるのが、最新のExtensionPackをインストールしてはいけないということ。 正確にはVirtualboxのバージョンと同じExtensionPackをインストールしなければならないということだ。

自分が引っかかったのは「Virtualbox > アップデートを確認」で下記画像のように最新のVirtualBoxがインストールされていることを確認し、公式サイトからExtensionPackをダウンロードしてインストールをした。

f:id:rasukarusan:20190321134651p:plain:w400
最新のVirtualBoxがインストールされていることを確認

しかし相変わらずエラーが出るのでVirtualboxのバージョンを確認したら5.2.26だった。対してダウンロードしたExtensionPackは6.0.4。これではダメだ。

f:id:rasukarusan:20190321134741p:plain:w400
インストールしたExtensionPackが6.0.4だった

下記サイトから5.2.6のExtensionPackをダウンロードしてインストールしたらエラーは出なくなった。 https://download.virtualbox.org/virtualbox/5.2.6/

ちなみにVirtualBoxを起動するたびに下記画像のようにアラートがでるが華麗に無視すること。

f:id:rasukarusan:20190321135621p:plain:w400
私達を騙しに来るアラート

VagrantでNat Networkの構築

Kali LinuxをPC/Macにインストールする – 暗号通貨 とセキュリティ – Medium

上記サイトでネットワークの設定をしているが、VirtualBoxでNatNetworkを構築してもvagrant upをすると下記画像のようにvboxnet1に戻ってしまう。

f:id:rasukarusan:20190321134915p:plain
Nat Networkにならない

VirtualBoxではなくVagrantfileに設定を記述しなければならなかった。 なのでVagrantfileに以下を記載。

config.vm.provider :virtualbox do |v|
    v.customize [ "modifyvm", :id, "--nic2","NatNetwork"]
    v.customize [ "modifyvm", :id, "--nictype2","82540EM"]
    v.customize [ "modifyvm", :id, "--nicpromisc2","allow-all"]
end

これでvagrant upをしてもNat Networkが設定されている状態になった。

f:id:rasukarusan:20190321134955p:plain
vagrant upしてもNat Networkのまま

USB認識がうまくいかない

USB-WifiをVagrant環境で認識させようとしたらかなり詰まった。
vboxusersの追加やVagrantfileにUSB認識を記述するスタイル等色々試したが、決定的だったのはUSBを指すタイミングだった。

いやそんなことないだろ馬鹿らしいと思うかもしれないが、今VagrantでUSB認識に詰まっている人は騙されたと思ってやってみてほしい。(自分も調べている時にタイミングのことを言っている記事を見つけたが、そんなことあるかッと思いスルーしていた)

・ダメなパターン(VirtualBoxにてUSBの登録は済んでいる状態)

MacにUSB-Wifiを挿す
↓
vagrant upする
↓
kaliにログインしiwconfigを打つ
↓
認識しない...

# iwconfigの実行結果
eth1      no wireless extensions.
eth0      no wireless extensions.
lo        no wireless extensions.

・正解のパターン

vagrant upする # ここ!USBを挿す前にkaliを立ち上げておく
↓
MacにUSB-Wifiを挿す
↓
kaliにログインしiwconfigを打つ
↓
認識される

# iwconfigの実行結果
eth1      no wireless extensions.
eth0      no wireless extensions.
wlan0     IEEE 802.11  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm
          Retry short  long limit:2   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
lo        no wireless extensions.

# lsusbの実行結果
Bus 001 Device 003: ID 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

認識された時は感動した。ifconfigをしてもちゃんとwlan0が増えていた。

[root@kali-linux-2018:~]$ ifconfig 
eth0:...(略)

eth1:...(略)

lo:...(略)

wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether ca:9b:b6:22:c7:88  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ちなみに使用したUSB-Wifiは記事にも紹介されていたAlfa AWUS036NEH

一応他にも試したことを書いておく。

vboxusersグループにVirtualboxを起動するユーザーを所属させる

これは結局意味があるのかわからない。が、一応今でも設定しているので書いておく。
(virtualboxを起動するユーザーって誰やねん...って感じなので合っているかわからん)

# そもそもvboxusersがいなかったので作成
[root@kali-linux-2018:~]$ groupadd vboxusers

# vagrantユーザーを所属させる
[root@kali-linux-2018:~]$ gpasswd -a vagrant vboxusers
Adding user vagrant to group vboxusers

# 一応rootも所属させてみた
[root@kali-linux-2018:~]$ sudo gpasswd -a root vboxusers
Adding user root to group vboxusers

# 確認
[root@kali-linux-2018:~]$ groups root
root : root vboxusers
[root@kali-linux-2018:~]$ groups vagrant
vagrant : vagrant vboxusers

VagrantfileにUSBの設定を記述する

下記のようにVagrantfileにUSBの設定を記述してみたが、これは結局意味がない。最終的なVagrantfileには書いていない。

Vagrantfile

config.vm.provider :virtualbox do |v|
    v.customize [ "modifyvm", :id, "--usb", "on"]
    v.customize [ "modifyvm", :id, "--usbehci", "on"]
     v.customize [
         "usbfilter", 
         "add", "0",
         "--target", :id,
         "--name", "Ralink 802.11 n WLAN [0101]",
         "--vendorid", "0x148f",
         "--productid", "0x3070",
        "--manufacturer", "Ralink"
    ]
end

また、上記をVagrantfileに記述するとvagrant upするたびに下記画像のようにUSBが増えていってしまう。(これは何か回避策があるのかな)

f:id:rasukarusan:20190325011845p:plain
vagrant upするたびに増える

まとめ

いや色々と詰まる箇所が多かったけれども道中出くわすエラーを調べている内にVagrantやLinuxについて色々知ることができたのでとっても楽しかった。
ようやく念願のMonitorモードを試せるのでワクワクしてる。