『CTF形式で学ぶ Cプログラムの脆弱性』環境構築編 (演習用VMのインポートとSSH接続まで)

セキュリティ・ミニキャンプ in 北海道 2020で『CTF形式で学ぶ Cプログラムの脆弱性』という講義を担当することになりました、はいばらと申します。
これは講義中の演習に必要な環境構築について説明したものです。せっかくなので、ミニキャンプ外にも公開することにいたしました。今後、受講者が講義までに取り組む事前課題や、当日の講義資料も公開する予定ですので、よければそちらもご一緒にお読みください。
www.security-camp.or.jp

この講義は「C言語Linuxには慣れていないけど、低レイヤーなセキュリティに興味がある!」という人を対象にしたものです。講義で扱う内容は、大きく分けて以下の3つです。

  • Cプログラムの代表的な脆弱性
  • 脆弱性を攻撃するエクスプロイトコード
  • 攻撃から防御するための、OSやコンパイラのセキュリティ機構

攻撃側の視点でプログラムを観察することで、セキュアコーディングを心掛けるきっかけになればと思います。

  • 事前課題編はこちら

haibara-works.hatenablog.com

VirtualBoxのインストール

この講義の演習は、事前にある程度の環境を構築を行った仮想マシン上で行います。仮想マシン(Virtual Machine、以下VMと表記する)とは、一言でいうと「OSの上で別のOSを動かす技術」です。VMを使うことで、WindowsMacを使っている人でも簡単にLinuxの環境を使うことができます。また、この演習では、あえてOSのセキュリティ機能を無効にするなど、普段使う環境で行うと危険な操作も行うため、VM上で作業する方が安全と言えます。

さて、そのVMを扱うためのソフトウェアの1つがVirtualBoxです。演習を進めるために、まずはVirtualBoxをインストールします。VirtualBoxインストーラは以下の公式サイトからダウンロードできます。
Oracle VM VirtualBox

ダウンロードしたインストーラを実行して、インストールを進めます。詳しくは過程は以下の動画を参考にしてください。
youtu.be

また、VirtualBoxはExtesion Packというものをインストールしておくと何かと便利です。
Downloads – Oracle VM VirtualBox

こちらも以下の動画に従って、インストールを進めてください。
youtu.be

演習用VMのインポートと起動

以下のリンクから、演習に必要な環境を構築済みのVMをダウンロードできます。
mc_do_2020_ctf.ova - Google ドライブ

VMのダウンロードが済んだら、VirtualBoxを使ってVMを起動します。
VirtualBoxのメニューから「ファイル」→「仮想アプライアンスのインポート」と進み、ダウンロードしたファイルを指定して、VMをインポートします。
インポートができたら、VirtualBoxのメニューから「起動」を選択して、VMを起動してください。ログインに必要なユーザー名は「alice」、パスワードは「password」です。
こちらも詳しくは、以下の動画を見てください。
youtu.be

演習用VMへのSSH接続

今回用意した演習用VMは、ファイルサイズを削減するためにGUIをインストールしていません。そのため、VirtualBoxで起動しても、いわゆる「黒い画面」が表示されるだけです。このままでは表示された文字も読みにくいですし、フォントなどもイマイチです。また、マウスが使えないため、コピー&ペーストをする際にも大変です。
そこで、SSHという通信プロトコルを使って、ホストOS側のターミナルから、VMにログインできるようにしてみましょう。

以下の動画で、SSH接続のためのVirtualBoxの設定、コマンドプロンプトからSSH接続する方法を実演しています。
youtu.be

また、この動画ではSSHクライアントとして、Windowsコマンドプロンプトを使っていますが、使い慣れたものがあれば、そちらを使っても構いません。
私がSSHを使うときには、フォントを調整したWindows Terminalでコマンドプロンプトを開くことが多いです。他にもGoogle ChromeからSSHができる拡張機能もおススメです。
Secure Shell App - Chrome ウェブストア

環境構築は以上になります!