🐲

【Mac&Docker】 TryHackMe用のCUI/GUIに対応したKali Linux環境を作る

に公開

はじめに - TryHackMe面白い! でも...

ある日、Youtubeをぼーっと眺めていたら、しいたまさんという方がTryHackMeの解説動画を投稿されているのを発見しました。 こちらの動画を見ながら、試しに遊んでみると、予想以上に楽しく、気づいたら3時間ほど経っていました。
https://www.youtube.com/watch?v=YckM2y6QXcY

動画ではKali LinuxというOSが利用されています。 こちらは、事前にハッキングに必要なツールが用意されている便利なOSです。 しかし、私はMacを利用しており、「あー、それインストールされてないー!」と手間に感じるときが多々有りました。

そこで、MacでTryHackMeをストレスなく楽しめるように環境構築をしてみたので、その内容を記事として残すことにしました。

この記事は、以下の人のために書かれています:

  • Macを使用している
  • TryHackMeでサイバーセキュリティの学習を始めたい
  • 簡単に学習環境を構築したい(コピペだけでできます!)

なぜこれをやるのか?

  • 既によく使うコマンドやデータが用意されている環境を使いたい

    • Kali Linuxは検証を行うのに必要なツールがダウンロードされているだけでなく
    • 「よくあるパスワードリスト」などのテキストファイルも事前に用意されています。
    • この環境を利用することができれば、自分でインストールする手間を省くことができます。
  • ブラウザでも確認できるようにしたい

    • TryHackMeで遊ぶときは、TryHackMeが用意してくれているサーバに攻撃を仕掛けます。
    • しかし、このサーバはVPNを接続していないと、開くことができません。
    • また、Webページの挙動を観察することが重要なのでブラウザ(GUI環境)が必要になります。

この記事を読むとできるようになること

  1. Kali Linux環境の構築
    • Dockerの詳しい知識がなくても、コピペだけでKali Linuxの環境を用意できます。
  2. CLIもGUIも利用できる
    • Macからコンテナにターミナルで接続することで、重いGUIを動かさずにコマンドを入力することも
    • ブラウザで確認したいときだけ、GUI環境を用いることも可能です
  3. TryHackMeへの接続
    • VPNで接続して、TryHackMeの課題にすぐに取り組めるようになります。

忙しい人向け

このセクションでは細かい話しをすべて飛ばして、コピペだけで環境を用意する方法をご説明します。

必要なファイルの準備

  1. TryHackMeのサイトからVPNファイルをダウンロードします。
  2. ダウンロードしたファイル名を tryhackme.ovpn に変更します。
  3. 新しいディレクトリを作成し、以下のファイルを配置します:
    • 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接続

  1. Finderを起動し、「移動」 > 「サーバへ接続」を選択
  2. vnc://localhost:5905 と入力
  3. パスワードを聞かれたら 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の使用方法

  1. 主な操作方法:
    • 水平分割: Ctrl+b"
    • 垂直分割: Ctrl+b%
    • ペイン間の移動: Ctrl+b → 矢印キー
    • 新しいウィンドウ作成: Ctrl+bc
    • ウィンドウ間の移動: Ctrl+b → ウィンドウ番号

また、マウスを使用してペインのサイズ変更や選択も可能です。

追加ツールのインストール

必要に応じて、さらにツールを追加インストールすることができます。

Dockerfileの更新

Dockerfile に以下のような行を追加することで、ビルド時に新しいツールをインストールできます:

RUN apt update && apt install -y \
    tool1 \
    tool2 \
    tool3

例えば、nmapgobusterなどのツールを追加する場合:

RUN apt update && apt install -y \
    nmap \
    gobuster

環境の再ビルド

新しいツールを追加した後は、環境を再ビルドする必要があります:

docker compose down
docker compose build
docker compose up -d

おわりに

夏休みの自由研究がてら、TryHackMeで勉強しようとしたら環境のセットアップに時間をむしり取られたので、誰かのお役に立てればと思い記事を書きました。

私は今、komichi という休日のプランを作ってくれるアプリを制作しています。

https://komichi.app

このアプリの制作に関する記事も書いたので、よろしければ読んでみてください!

https://note.com/zacker2010/n/n79e2e6c450fc

Discussion