【Mac&Docker】 TryHackMe用のCUI/GUIに対応したKali Linux環境を作る
はじめに - TryHackMe面白い! でも...
ある日、Youtubeをぼーっと眺めていたら、しいたまさんという方がTryHackMeの解説動画を投稿されているのを発見しました。 こちらの動画を見ながら、試しに遊んでみると、予想以上に楽しく、気づいたら3時間ほど経っていました。
動画ではKali LinuxというOSが利用されています。 こちらは、事前にハッキングに必要なツールが用意されている便利なOSです。 しかし、私はMacを利用しており、「あー、それインストールされてないー!」と手間に感じるときが多々有りました。
そこで、MacでTryHackMeをストレスなく楽しめるように環境構築をしてみたので、その内容を記事として残すことにしました。
この記事は、以下の人のために書かれています:
- Macを使用している
- TryHackMeでサイバーセキュリティの学習を始めたい
- 簡単に学習環境を構築したい(コピペだけでできます!)
なぜこれをやるのか?
-
既によく使うコマンドやデータが用意されている環境を使いたい
- Kali Linuxは検証を行うのに必要なツールがダウンロードされているだけでなく
- 「よくあるパスワードリスト」などのテキストファイルも事前に用意されています。
- この環境を利用することができれば、自分でインストールする手間を省くことができます。
-
ブラウザでも確認できるようにしたい
- TryHackMeで遊ぶときは、TryHackMeが用意してくれているサーバに攻撃を仕掛けます。
- しかし、このサーバはVPNを接続していないと、開くことができません。
- また、Webページの挙動を観察することが重要なのでブラウザ(GUI環境)が必要になります。
この記事を読むとできるようになること
-
Kali Linux環境の構築
- Dockerの詳しい知識がなくても、コピペだけでKali Linuxの環境を用意できます。
-
CLIもGUIも利用できる
- Macからコンテナにターミナルで接続することで、重いGUIを動かさずにコマンドを入力することも
- ブラウザで確認したいときだけ、GUI環境を用いることも可能です
-
TryHackMeへの接続
- VPNで接続して、TryHackMeの課題にすぐに取り組めるようになります。
忙しい人向け
このセクションでは細かい話しをすべて飛ばして、コピペだけで環境を用意する方法をご説明します。
必要なファイルの準備
- TryHackMeのサイトからVPNファイルをダウンロードします。
- ダウンロードしたファイル名を
tryhackme.ovpn
に変更します。 - 新しいディレクトリを作成し、以下のファイルを配置します:
-
Dockerfile
(後述) -
docker-compose.yaml
(後述) -
tryhackme.ovpn
(ダウンロードしたもの)
-
Dockerfileの作成
以下の内容でDockerfile
を作成します:
FROM kalilinux/kali-rolling
RUN apt update && DEBIAN_FRONTEND=noninteractive apt install -y kali-linux-headless
RUN apt update && apt install -y \
kali-defaults \
kali-tools-web \
kali-desktop-xfce \
x11vnc \
xvfb \
novnc \
dbus-x11 \
tigervnc-standalone-server
RUN apt update && apt install -y \
neovim \
htop \
fish \
inetutils-ping
# VPN用のディレクトリを作成
RUN mkdir -p /dev/net && mknod /dev/net/tun c 10 200 && chmod 600 /dev/net/tun
# 環境変数の設定
ENV DISPLAY=:1
# ユーザーの追加
RUN useradd -m -s /bin/bash kali && \
echo "kali:kali" | chpasswd && \
usermod -aG sudo kali
# ユーザーの切り替え
USER kali
# ユーザーのホームディレクトリに移動
WORKDIR /home/kali
docker-compose.yamlの作成
以下の内容でdocker-compose.yaml
を作成します:
services:
kali:
build: .
volumes:
- kali-data:/home/kali
- ./tryhackme.ovpn:/home/kali/tryhackme.ovpn:rw
tty: true
stdin_open: true
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
ports:
- "5905:5901"
volumes:
kali-data:
環境の構築と起動
ターミナルで以下のコマンドを実行します:
sed -i 's/cipher AES-256-CBC/data-ciphers AES-256-CBC/' *.ovpn
# イメージを作成
docker compose build
# コンテナを起動
docker compose up -d
Kali Linuxへの接続
docker compose exec kali /bin/bash
接続が完了すると、kaliユーザでターミナルが開きます。
VPN接続の確立
事前に、OpenVPNの暗号化方式を新しいものに変更します。
変更せずに接続しようとすると、暗号化方式が古いと怒られることがあります。
sed -i 's/cipher AES-256-CBC/data-ciphers AES-256-CBC/' *.ovpn
Kali Linux内で以下のコマンドを実行:
# password: kali
sudo openvpn tryhackme.ovpn
"Initialization Sequence Completed" と表示されれば接続成功です。
ここまででTryHackMeを利用するための最低限のセットアップが完了しました。 これから、Kali LinuxをGUIでも利用できるようにするためのセットアップを行います。
GUI環境のセットアップ
Kali LinuxのGUI環境をMac上で表示するために、以下の手順を実行します。
VNCパスワードの設定
Kali Linuxに接続した状態で以下のコマンドを入力します:
echo -e "kalilinux\nkalilinux\n" | vncpasswd
このコマンドは、VNCパスワードを kalilinux
に設定します。
VNCサーバの起動
vncserver -localhost no
Mac側でのVNC接続
- Finderを起動し、「移動」 > 「サーバへ接続」を選択
-
vnc://localhost:5905
と入力 - パスワードを聞かれたら
kalilinux
と入力
これで、Mac上でKali LinuxのGUI環境が表示されます。
上級者向けカスタマイズ
ここからは、「あったら便利」くらいのツールを導入していきます。
Tmuxの導入と設定
Tmuxは、ターミナルセッションを管理するための強力なツールです。複数の作業を並行して行う際に特に便利です。
Tmux設定ファイルの作成
プロジェクトのルートディレクトリに .tmux.conf
ファイルを作成し、以下の内容を記述します:
# enable mouse control
set -g mouse on
# change pane border color
set -g pane-border-style fg=#0078d7
set -g pane-active-border-style fg=#0078d7
# change statusbar color
set -g status-style bg=#0078d7,fg=white
docker-compose.yamlの更新
docker-compose.yaml
ファイルを編集し、Tmux設定ファイルをコンテナにマウントします:
services:
kali:
build: .
volumes:
- kali-data:/home/kali
- ./tryhackme.ovpn:/home/kali/tryhackme.ovpn:rw
- ./.tmux.conf:/home/kali/.tmux.conf:ro # この行を追加
# ... 他の設定は変更なし
Tmuxの使用方法
- 主な操作方法:
- 水平分割:
Ctrl+b
→"
- 垂直分割:
Ctrl+b
→%
- ペイン間の移動:
Ctrl+b
→ 矢印キー - 新しいウィンドウ作成:
Ctrl+b
→c
- ウィンドウ間の移動:
Ctrl+b
→ ウィンドウ番号
- 水平分割:
また、マウスを使用してペインのサイズ変更や選択も可能です。
追加ツールのインストール
必要に応じて、さらにツールを追加インストールすることができます。
Dockerfileの更新
Dockerfile
に以下のような行を追加することで、ビルド時に新しいツールをインストールできます:
RUN apt update && apt install -y \
tool1 \
tool2 \
tool3
例えば、nmap
やgobuster
などのツールを追加する場合:
RUN apt update && apt install -y \
nmap \
gobuster
環境の再ビルド
新しいツールを追加した後は、環境を再ビルドする必要があります:
docker compose down
docker compose build
docker compose up -d
おわりに
夏休みの自由研究がてら、TryHackMeで勉強しようとしたら環境のセットアップに時間をむしり取られたので、誰かのお役に立てればと思い記事を書きました。
私は今、komichi という休日のプランを作ってくれるアプリを制作しています。
このアプリの制作に関する記事も書いたので、よろしければ読んでみてください!
Discussion