マナティ

セキュリティコンテスト旗取り日記

「Venus」-セキュリティ・キャンプ全国大会2016でのCTF 第1回

今夏開催された「セキュリティ・キャンプ全国大会2016」で行われたCTFのうち、「Venus」で出題されていた4つの問題について紹介していきます!

55903_ext_02_0.jpg

はじめに

こんにちは。「CTF for ビギナーズ」運営の新穂です。今夏8月9日から13日にかけて「セキュリティ・キャンプ全国大会2016」が開催されました。セキュリティ・キャンプ全国大会2016は、情報セキュリティ分野に関心の高い22才以下の学生・生徒を対象に行う合宿形式の講習会です。その中で行われたCTFを一部のCTF for ビギナーズの運営メンバーで運営しました。今回第3回と次回の第4回で、そのときの様子と出題された問題の一部をお伝えします。

セキュリティ・キャンプ全国大会2016でのCTF

ルール・形式

セキュリティ・キャンプ全国大会2016でのCTFは、1チームの人数を4~5名として、各チームにサーバをひとつ割り当て、そのサーバを攻略しフラグを入手する形式で行いました。

攻略していく上で、参加者に与えられた情報は以下の2点でした。

 ・ 各チームに割り当てられたサーバのIPアドレス
 ・ 各チームに割り当てられたサーバは「Raspberry Pi」である

スコアサーバ

seccampCTF_questions.png

問題一覧

上図はスコアサーバの問題一覧画面です。「Sun」「Mercury」「Venus」「Earth」「Mars」の5つにゾーン分けされていて、各問題がカード上に並んでいます。これらのゾーンは攻略対象のサーバに用意されたシナリオやサービス、問題ファイルに対応していました。
しかし、それぞれの問題に、「問題のファイルはどれか」「問題はどこで動作しているのか」等の情報は設定されておらず、サーバを攻略していく段階で入手したフラグを送信すると、そのフラグに該当する問題のカードに色がつくようになっていました。

問題紹介

それでは、どのような問題が出題されたのか、その一部を紹介します。
今回は5つのゾーンのうち、「Venus」で出題されていた4つの問題について紹介します。

なお、今回はWindows環境およびLinux環境を用いて問題を解いていきます。また、攻略対象のサーバのIPアドレスは、「192.168.11.17」とします。

「Venus」に該当する問題はどれか

まず、「venus」に該当する問題はどのような形で出題されているのかを調査します。
本来であれば、今回のCTFの形式では、各ゾーンの問題がどの問題に該当しているのかを調査する必要性は低いのですが、攻略を始めるための調査事項として併せて紹介します。

・どのポートが開いているか

調査の1つとして、攻略対象のサーバのどのポートが開いているのかを調べます。ここでは、「nmap」というポートスキャンツールを用います。

nmap -sV -p1-65535 192.168.11.17

上記のコマンドを実行すると、IPアドレスで指定したサーバのどのポートで、どのサービスが動作しているのかを調べることができます。

01.PNG

ポートスキャン結果

結果を見てみると、ssh(22番ポート)やhttp(80番ポート)などと並んで、unknownというサービスが10725番ポートと24154番ポートで動作していることがわかります。

・サービスの内容を詳しく調査したい

ポートスキャンの結果から、10725番ポートと24154番ポートでそれぞれサービスが動作していることまではわかりましたが、具体的なサービスの内容までは把握することができませんでした。
この時点で、netcatコマンドを用いて、10725番ポートもしくは24154番ポートにアクセスして、それぞれの内容を確認することはできますが、今回は、「Venus」に該当する問題はどれかを導き出すためにもう少し調査を進めてみようと思います。

サービスの内容を詳しく知るためには、サーバにログインして中で調査する必要がありそうです。

・SSHでのログイン試行

ポートスキャンの結果からsshが動作していることがわかっているので、sshでのログインを試してみます。しかし、サーバで設定されているユーザ名とパスワードがわからないため、推測できるユーザ名とパスワードの組み合わせを試したりや総当たりを行ったりする必要があります。

推測できるユーザ名とパスワードの組み合わせとしては、「ユーザ名:admin | パスワード:password」や「ユーザ名:root | パスワード:password」、「ユーザ名:admin | パスワード:admin」等が挙げられると思います。今回は攻略するサーバが「Raspberry Pi」ということがわかっているので、これの初期設定である、「ユーザ名:pi | パスワード:raspberry」も試してみることとします。

試した結果、「ユーザ名:pi | パスワード:raspberry」の組み合わせでログインできることがわかりました。

・実行中のプロセスを調査する

サーバで、どのようなプロセスが実行中なのかを調査します。

ps aux

上記のコマンドを実行すると、サーバで実行中のプロセスを調べることができます。

02.PNG

psコマンド結果(一部抜粋)

結果を見てみると、「Earth」が10725番ポートで、「Venus」が24154番ポートでそれぞれ動作していることがわかりました。ようやく、「Venus」はどの問題に該当するのかがわかったので、これから問題を解いていきます。

[Venus] Level1

netcatコマンドで「192.168.11.17」の「24154番ポート」にアクセスしてみます。

nc 192.168.11.17 24154

03.PNG

上図のように表示されました。

3 / 42 = 

算数の割り算のように見えるので、「0」と入力して送信(エンターキーを押下)してみます。

04.PNG

「Correct!」と表示され、次の計算式が表示されました。また、先ほどの出力では、「Challenge 1/100」となっていた部分が、「Challenge 2/100」に変化しました。これらのことから、サーバから送信されてきた計算式100問を正解すればクリアできるのではないかと考えられます。

[Venus] Level2

05.PNG

「Problem #1」をすべて解き終わると、「Problem #2」の問題が表示されました。「The number of the top of the pyramid?」という文字列とともに、7つの数が表示されています。

・これは何の計算か

一見、どのように計算すればよいのかわからないため、調べてみることにします。手掛かりになりそうなのは、「The number of the top of the pyramid?」です。日本語に訳すと、「ピラミッドのてっぺんの値は何?」と読めます。これらをキーワードにして、Webで検索をしてみると、「ピラミッド算(ピラミッド計算)」というものがあることがわかりました。

07.PNG

ピラミッド算とは、上図のように、隣り合うマスにある値を足して上段のマスに記入していく計算のことです。

・解答の送信

試しにピラミッド算を行ってみた結果を送信してみます。

06.PNG

「Correct!」と表示され、次の問題が表示されました。これも「Problem #1」と同様に、同じ形式の問題を100問正解すればクリアできるのではないかと考えられます。

次回は「Problem #2」をすべて解き終わってから表示される「Problem #3」の問題から取り組んでいきたいと思います。

著者プロフィール

CTF for ビギナーズ(著者)
コンピュータセキュリティ技術を競う競技であるCTF (Capture The Flag) の初心者を対象とした勉強会。CTFに必要な知識を学ぶ専門講義と実際に問題に挑戦してCTFを体験してもらう演習を行っている。
新穂隼人(著者)
CTFプレイヤー。セキュリティ・キャンプ全国大会2016にCTF専属チューターとして参加。バイナリ解析・リバースエンジニアリングを好み、CTF for ビギナーズではリバースエンジニアリング講義を担当。
URL : 11haanyan24.com