search
LoginSignup
1

posted at

updated at

Apple Silicon Mac(M1 Mac)で「詳解 セキュリティコンテスト」の実習環境(もどき)を動かす

はじめに

「詳解 セキュリティコンテスト」(以降、CTF本)の実習環境はvagrantを使用してデプロイすることとなっていますが、x86_64アーキテクチャを前提とした構成となっており、アーキテクチャが異なるApple Silicon Macではそのまま動かすことができません。
...この手の実習系はASM民には辛いですね。
今回、Mac向けの仮想化環境であるUTMを使って何とか動かすことができましたので、備忘として公開します。
なお、CTF本の手順通りに構成した場合はUbuntu Server 20.04 vagrant could imageをベースに構成したものが出来上がりますが、この記事ではcloud imageではないUbuntu Server上に同等の環境を再現するという方針で構成します。完全に同等の環境となるものではなく、動作の保証は出来かねる点は予めご留意ください。

想定する読者

  • CTF本を買って実習しようとワクテカしてたけど、Apple Silicon Macしか持ってなくてつまづいてしまった方

なぜ動かない?

CTF本の実習環境はx86_64アーキテクチャのvagrant+VirtualBox環境を前提としていますが、Apple SiliconのCPUはARMアーキテクチャであり互換性がないためです。

使うもの

Apple Silicon Mac
言わずもがなですね。本記事の執筆にあたってはMacBook Air(M1, 2020)で確認しています。
Homebrew
サードパーティのパッケージマネージャーです。UTMを導入するのに使用します。
UTM
Mac向けの仮想化環境ソフトウェアです。同一アーキテクチャのハイパーバイザーに加えて、異なるアーキテクチャのエミュレーションにも対応しています。遅くなりますが。
実態としてはQEMUにGUIのフロントエンドが付いたものです。本記事ではHomebrew経由でインストールしますが、App Storeの有償版(App Storeから更新できる以外には機能差異無し)や、サイト上のdmgイメージからの導入でもOKです。
Ubuntu Server 20.04
実習環境を構成するベースのOSとして、x86_64向けのUbuntu Server 20.04を使用します。Manual Installation用のISOイメージをダウンロードしておきましょう。

手順1. 各種ソフトウェアの導入

まずはHomebrewをインストールします。ターミナル上でHomebrewのトップページに記載されているインストールコマンドを実行します。

# Homebrewインストールコマンドの実行
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
==> Checking for `sudo` access (which may request your password).
Password: (パスワードを入力)
==> This script will install:
/opt/homebrew/bin/brew
/opt/homebrew/share/doc/homebrew
/opt/homebrew/share/man/man1/brew.1
/opt/homebrew/share/zsh/site-functions/_brew
/opt/homebrew/etc/bash_completion.d/brew
/opt/homebrew
==> The following new directories will be created:
/opt/homebrew/Cellar
/opt/homebrew/Caskroom

Press RETURN to continue or any other key to abort (Enterを入力)
==> /usr/bin/sudo /bin/mkdir -p /opt/homebrew/Cellar /opt/homebrew/Caskroom

(中略)

==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics
No analytics data has been sent yet (or will be during this `install` run).

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations

==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/kumaneko/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
- Run `brew help` to get started
- Further documentation: 
    https://docs.brew.sh
%
# Next stepsとして指示されたコマンドを実行
% echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/kumaneko/.zprofile
% eval "$(/opt/homebrew/bin/brew shellenv)"
% rehash        

続いてUTMをインストールします。

% brew install UTM
(中略)
% rehash

これで必要なソフトウェアのインストールは完了しました。

手順2. Vagrantfileのダウンロードと内容確認

実習環境を構成するにあたり参考とするため、Vagrantfileをダウンロードし内容を確認します。

# 作業用ディレクトリの作成・移動
% mkdir ~/ctfbook2
% cd ~/ctfbook2
# Vagrantfileのダウンロード
% curl (CTF本記載のURL) -o Vagrantfile 
# Vagrantfileの内容確認
% less Vagrantfile

Vagrantfileの内容から、主に以下の3点を確認しておきます。


  • 仮想マシンの構成情報
  • rootユーザーで実行するコマンド群
  • vagrantユーザーで実行するコマンド群

手順3. 仮想マシンの作成

アプリケーションにUTM.appが導入されていますので、これを起動します。
ウィンドウ上部の"+"をクリックして仮想マシンを追加します。
スクリーンショット 2022-02-12 6.55.45.png
"Emulate"をクリックします。
スクリーンショット 2022-02-12 6.55.51.png
"Linux"をクリックします。
スクリーンショット 2022-02-12 6.56.00.png
"Browse"をクリックし、予めダウンロードしてあるUbuntu ServerのISOイメージファイルを選択します。その後、"Next"をクリックします。
スクリーンショット 2022-02-12 6.56.22.png
Hardwareは既定のままで、"Next"をクリックします。 ※ CTF本に合わせるならMemory 2048MB、CPU Cores 2でも可。
スクリーンショット 2022-02-12 6.56.44.png
Storageは既定のままで"Next"をクリックします。
スクリーンショット 2022-02-12 6.56.48.png
Shared Directoryも既定のまま、"Next"をクリックします。
スクリーンショット 2022-02-12 6.56.52.png
SummaryではNameで名前を付け、"Save"をクリックします。
スクリーンショット 2022-02-12 6.57.04.png
これで仮想マシンの作成は完了です。

手順4. OSのインストール

続いて仮想マシンにOSをインストールします。
UTMの左ペインで作成した仮想マシンを選択し、ウィンドウ上部右から2番目のボタン(Run selected VM)をクリックします。
スクリーンショット 2022-02-12 6.57.12.png
仮想マシンコンソールのウィンドウが開き、Ubuntu Serverのインストールが開始されます。
スクリーンショット 2022-02-12 7.00.54.png
インストーラー上の手順は割愛します。大体言いなりで大丈夫です。
ちょっと気になった点をいくつか。

  • 言語はEnglishとする(Japaneseがない)
  • キーボードレイアウトはJapanese/Japanese
  • OpenSSH Serverは有効にする
  • インストーラーのアップデートはやる
  • ユーザー名/パスワードはCTF本に倣ってvagrant/vagrantとする
  • インストール完了まで80分ほど(initramfs更新走り過ぎ!)

インストールが完了しRebootをさせる際に、ISOイメージのマウントを外す必要があります。ウィンドウ上部右2番目をクリックして、仮想CD/DVDデバイスのメディアのEjectを行なってください。
スクリーンショット 2022-02-12 8.24.09.png

手順4. 仮想マシンの調整

Vagrantfileの記載を参考に、rootユーザーおよびvagrantユーザーで実行するコマンド群を仮想マシン上で実行させます。

# パッケージのアップデート
$ sudo apt-get update
$ sudo apt-get upgrade -y
# IPアドレスを確認(SSH経由で作業したいので)
$ ip addr

MacのターミナルからSSHでログインし直して作業続行。

% ssh vagrant@(仮想マシンのIPアドレス)
$ sudo bash
# 
(以降Vagrantfileの「inline: <<-ROOT_SHELL」から「ROOT_SHELL」までの内容を実行する)

注意点

  • 一気に複数行コピペしてもうまく通らない場合があるので、ていねいに一行ずつ気持ちを込めてコピペしましょう(笑)。
  • libc関連のパッケージにバージョン指定(=2.31-0ubuntu9)が入っており、エラーを招く。バージョン指定を外して回避する(但しあえてバージョン指定してあるので、何か影響があるかもしれない)。
  • docker-composeのバージョンが古いので、docker-composeのリリースページから最新版を確認し、URLを置き換えた方がよい(もちろん何か影響があるかもしれない)。
  • Burp Suiteもバージョンが古いので、リリースページを確認して最新版に差し替えた方が良い。また、インストーラーへの入力がインラインで記載されているが、バージョンが変わると入力内容が変わる可能性があるので、念の為手入力した方がよい。

続いてvagrantユーザーで実行するコマンド群を投入します。

# exit
$
(以降Vagrantfileの「inline: <<-USER_SHELL」から「USER_SHELL」までの内容を実行する)
$ 
# 念の為リブート
$ sudo reboot

さて、これで一通り同等の構成ができたはずです。
問題が見つかりましたら適宜アップデートします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1