🐲

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

2024/08/24に公開

はじめに

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

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

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

  1. 簡単なKali Linux環境の構築
    • Dockerの詳しい知識がなくても、コピー&ペーストだけでKali Linuxの環境を用意できます。
  2. Kali Linuxの柔軟な利用
    • コマンドライン(CUI)環境でサクサク作業
    • 必要に応じてグラフィカル(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:

環境の構築と起動

ターミナルで以下のコマンドを実行します:

# イメージを作成
docker compose build 

# コンテナを起動
docker compose up -d

Kali Linuxへの接続

docker compose exec kali /bin/bash

接続が完了すると、kaliユーザでターミナルが開きます。

VPN接続の確立

Kali Linux内で以下のコマンドを実行:

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