LoginSignup
3
2

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-02-12

はじめに

「詳解 セキュリティコンテスト」(以降、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

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

3
2
3

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
  3. You can use dark theme
What you can do with signing up
3
2