こちらのチャプターでは、Envader(エンベーダー)の着想と構想について説明します。

2019年6月、当時新卒エンジニア(sleek)と大学院生(furusato)の二人組だった我々は、学生時代よりセキュリティ業界に対して強い関心を抱いていました。個人として、CTF大会に参加したり、vulnhub から脆弱なマシンをダウンロードして Virtualbox で起動するなどしていました。

sleekは、初参加のSans Netwarsで入賞したことをいまだに自慢してきます。(笑)

Progate のような素晴らしいサービスのおかげで、エンジニア業界への障壁が下がっていることを感じていましたが、セキュリティの学習はそうではありませんでした。常設CTFHack the box などの学習サイトはありますが、英語のものばかりだということ、すでに環境が構築されているためそもそも環境自体の把握できない環境構築の経験が身につかないなど、初心者にとっては、参入障壁が比較的に高いと感覚的に実感していました。

Virtual Boxがうまく作動しない経験をしたことがある人はきっと多いはずです。

そして、とあるタイミングでセキュリティ演習の準備のために、sleekが脆弱性のある環境を再現しようと試みていました。最初は、Virtual Box を利用すればいいと思い、ovaファイルを探していたのですが、とあるタイミングで、セキュリティの脆弱性を再現した CVE-XXXX-XXXX のようなコンテナの存在に気づきました。

今更ですが、1つのVMを立ち上げるのに少なくとも1分程度かかっていた時代に、コンテナを利用すると環境を10秒程度で起動するのは非常に魅力的だと感じました。特定の演習が可能なコンテナを動的に起動できたら様々な場面で演習を行うことができるなと思いました。

例えば、ユーザが使うコンテナ環境を用意し、そこから攻撃を受けるコンテナに接続できるようにして、ユーザはそれらのコンテナをボタン一つで起動できるようにすれば便利なのでは?いちいち、いろんなovadocker imageをローカルマシンに落としてこなくて済むのでは?

我々の頭の中にあったイメージはこんな感じです。
ここからEnvaderの開発がスタートしました。