Mac上にTryHackMe用のKali Linux仮想環境を構築する


Tryhackme上の問題をKali Linuxで解きたかったけど色々ややこしかったので備忘録を兼ねて

環境
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.6
BuildVersion:   18G5033
$ VBoxManage --version
6.1.12r139181
$ VBoxManage list vms | grep Kali                                                                                                                                                    
"Kali-Linux-2020.3-vbox-amd64" {0ab4e32c-80e6-4a48-8a77-63ddba2ea0bf}

Kali Linux仮想環境構築編

  1. VirtualBoxのインストーラを公式ダウンロードページからDLし実行.

  2. Offencive Securityが配布しているKali LinuxのovaファイルをこのリンクからDL. (ovaファイルはメモリやディスク容量などの仮想マシンの設定とOSイメージが一緒になったファイル. インポートするだけで簡単にゲストOSを立ち上げ可能です.)

  3. VirtualBoxメニューバーのファイル > 仮想アプライアンスのインポート…から先程のovaファイルをインポート. 設定はそのままでも大丈夫です.

  4. マシン一覧からKali-Linux…を選択し起動.

起動しようとした時にimplementation of usb 2.0 ...みたいなエラーが出る場合は, 指示に従ってVirtualBox Extension Packを導入します.
MacのせいなのかDLしたファイルの拡張子が.gzになっちゃってるので, .vbox-extpackに直してダブルクリック. あとは指示に従うだけで導入できます.
古いままのVirtualBoxを使ってたりしているとVBox本体とExtension Packのバージョンが一致せずエラーが出るので忘れずにアップデートしておきましょう.

 5. 無事起動できたらuser:kali pass:kaliでログイン.

OpenVPN周りの設定

TryHackMeの問題サーバーにアクセスするにはOpenVPNを経由する必要があるため, そちらの設定を行っていきます.

TryHackMeでConfiguration Fileの発行

https://tryhackme.com/access にアクセスするとOpenVPN用の設定ファイルをDLできます.
適当にVPN Serverを選択し緑のボタンを押しましょう.

親切なことにOpenVPNのインストラクション用のRoomが存在するので, ここでソフトウェア等のセットアップをしてちゃんと接続できているか確認しておくと安心できます.

ゲストOSとファイルの共有

先程DLしたovpnファイルゲスト側に移すため, VirtualBoxの共有フォルダの設定をします.

VirtualBoxマネージャーでKali Linuxを選択し, 歯車マークの設定を開いて適当なフォルダを共有フォルダとして追加しましょう. 自動マウントはオンにしておきます. そのフォルダに先程のovpnファイルを置き, Kali Linuxを再起動します.

ファイルは/media/sf_hogehoge下にあるのですが, このままゲスト側から読み込もうとするとpermission deniedされるので, $ gpasswd -a kali vboxsfでユーザーkaliをグループvboxsfに追加し権限を付与し再び再起動. アクセスできるようになっていると思います.

参考 http://itemy.net/?p=1355

扱いやすいように適当なフォルダにコピーしておきましょう.

$ mkdir ~/tryhackme
$ cp /media/sf_hogehoge/uswest.ovpn ~/tryhackme

Kali Linux上からGUIを使ってVPNと接続する


メニューバーの□ > VPN Connections > Configure VPN…
からネットワークの設定を開き, +ボタンから新しい接続先を設定します. Connection TypeはImport a saved VPN configuration…を指定し先程のファイルを選択しましょう. あとはVPN Connectionsに表示される接続先のチェックボックスにチェックを入れるだけでVPNを経由できるようになります.
一応先程のRoomをゲストマシンのブラウザで開いて確認しておくといいでしょう.

CUIで接続する

$ sudo apt install openvpnしようとするともうopenvpnが入っていると言われますが, パスが通っていません. バイナリ本体がどこにあるのかも分からないので$ dpkg -L openvpnで探すと, 何個か出てくる内の/usr/sbin/openvpnがそれっぽいです.
実際$ sudo /usr/sbin/openvpn ~/tryhackme/xxxx.opvnで動作します.
export PATH=$PATH:/usr/sbinでパスを通しておけば$ sudo openvpn ~/tryhackme/xxxx.opvnでVPNに接続できるようになります.

以上です.

(余談)
ホストマシン上の使い慣れたターミナルでKali Linuxに接続して問題を解きたい, それに面倒だからゲストOSのウィンドウを開きたくない, という思いがあったのでCUIでOpenVPNに接続できるようしたのですが, ゲストOSのshellに接続するのが思ったより面倒そうで結局そこまでやりませんでした…