概要
2021年の6月18日にOSCPを受けて見事合格することが出来たので、僕の体験をシェアしたいと思います。
この記事を読んでくれている人は、OSCPを受けようか悩んでいる人や申し込んで試験を控えている人がほとんどだと思います。
今回は僕がどのようにしてOSCPに合格することが出来たのか、反省点なども踏まえて細かくシェアしていきます。
この記事は2021年の6月23日に書かれたものです。
OSCPについて
まずは簡単にOSCPとはどのような資格・試験なのか、お伝えしたいと思います。
情報はアップデートされていく可能性があるので最新の正確な情報が欲しい方は、公式のホームページを訪れることをお勧めします。
OSCPとはペネトレーションテスターやホワイトハッカーなどを目指す人にとっての資格になります。
OSCPはこの領域では有名で強い資格と言っていいと思います。
試験時間は48時間で、初めの約24時間で5つのマシンへのペネトレーションテスト(ハッキング)をして、後半の24時間でそれについてのレポートをまとめて提出するというなかなかしんどい試験となっています。
タフな試験ですが、試験は実技的な能力を測っているので、OSCPは価値の高い資格の1つであると言っていいでしょう。
5つのマシンは難易度が違って、それぞれにポイントが振り分られています。1番簡単なマシンは10ポイント。次に20ポイントのマシンが2つ。そして25ポイントのマシンが2つで合計100ポイントになります。
100ポイントのうち70ポイントを取ることが出来たら、晴れて合格となります。つまり全てのマシンを解けなくても合格することはできるということです。
僕の場合は20ポイントのマシンが1つ解けなかったので80ポイントで合格したということになります。
さらにOSCPには部分点なるものが存在して、5つのマシンの中には"Privilege Escalation"をすることでrootユーザーにならなければいけないマシンがあります。
この場合はもし、ユーザーレベルのシェルを獲得できていた場合(local.txtを獲得できた場合)、部分点がもらえます。
Offensive Security社は部分点を具体的に何ポイント与えるかについては公表していません。(半分点より少し少ないくらいの認識でいいと思います。)
CTFを経験したことがある人は想像しやすいと思います。基本的にはCTF(HackTheBoxなど)をイメージして貰えばOSCPの試験もイメージできるはずです。
レポートは前半の24時間で解いたマシンについて全ての過程をまとめなければいけません。このテストは始めにも言ったようにペネトレーションテスターを想定しているので、レポートを書くということも必要な能力なのです。(もちろん英語で書きます。詳しい話は後ほど。)
以上でOSCPの試験の説明について終わりたいと思います。僕が紹介したのはあくまで一部なので必ず公式ホームページから確認してください。
自分のレベルについて
皆さんの中には自分にとってOSCPが難しいのか、それとも受けるだけの実力があるのか分からないという人も多いと思います。
なので僕が今まで勉強してきたことや期間などをお伝えして、皆さんはOSCPを受けられるレベルなのか感覚で掴んで欲しいです。
まず僕が初めてCTFやハッキングの勉強を始めたのは去年の10月頃です。つまりOSCPを受ける9ヶ月前に勉強をはじめたという事になります。初めてCTFをやった時は文字通り右も左も分からない状態でした。
HTTPってなんだ?Linuxってなんだ?というようなレベルでした。
僕はいきなりHackTheBoxから始めました。後から聞くと初めはTryHackMeの方が良かったんじゃないかと言われましたが、その通りだと思います😃
TryHackMeにはチュートリアル的なものがたくさんあるので、もし皆さんがCTFやハッキングの勉強を始めたいならTryHackMeから始めることをお勧めします。
とにかくOSCPを受ける9ヶ月前にHackTheBoxを初めて、1日1マシンやっていこうと出発しました。(結果的に途中で他の勉強もしたのでそのペースは続きませんでしたが)
初めはWriteup(答えや解き方のようなもの)を見ながらいろんなことを勉強していきました。
HackTheBoxとTryHackMeなどでやったCTFは100いかないくらいかなといった感じです。
また、OSCPを受ける人は基本的にPWKのラボでペネトレーションテストの練習をすることが出来ます。(詳しいことは公式でチェックしてください。)
それを合わせると150くらいのCTFをやった事になります。
肝心の僕のCTFのレベルですが、なかなか言葉に表すのは難しいですが、はっきり言うと自分では高いとは全く思えないです。
HackTheBoxでは"easy"と評価されているマシンを解けたり解けなかったりというようなレベルです。
そもそもHackTheBoxとOSCPでは少しベクトルが違うので一概に比べることは出来ませんが、基本的にOSCPの方が難易度的には優しいと思います。
OSCPは難関な資格であるとよく言われたりもしますが、それはおそらく実技的な試験であるところが大きいでしょう。
そもそもOSCPは24時間で5つのマシンを解かなければならないので1つ1つのマシンが難しいと時間が足りません。
なので僕はCTFの経験がある程度ある人はチャレンジしてもいいのではないかと思います。OSCPを受ける前にPWKのラボでレベルアップもできます😃
とても難しいと聞いてためらっている人はぜひ挑戦してみることをお勧めします。
OSCPのレベルを体験してみたい人は、このリンクに飛んでもらうと、OSCPに似たHackTheBoxのマシンのリストを見ることができます。
このマシンを是非やってみてください。
OSCPより簡単だったり難しかったりしますが、大体の難易度のイメージを掴めると思います。
解けなくても焦らないでください。僕もやってみた時に完全に詰まってよく答えを見ていました😃
当日について
当日の心境やスケジュールなどについてお話ししたいと思います。
僕は大学生でこの試験を受けた時に、金曜日は授業がなく土曜にはオンデマンド型の授業、そして日曜日が休みといったような授業の取り方をしていました。なので土曜日の授業を試験が終わってから受けることを決めて試験のスケジュールを立てました。
僕は金曜日の午後1時から日曜日の午後1時で試験の申し込みをしました。
ちなみに試験を受けている時(前半の24時間)は基本的にカメラで自分を常に写していなければいけません。
なのでトイレに行くときや休憩を取る時、また寝る時には試験官にチャットで伝える必要があります。
試験は午後1時から始まりました。
試験官とチャットで注意点を確認し、ポートスキャンを始めました。
僕は普段しないようなコマンドのミスをして20分くらい無駄な時間を過ごしたので、皆さんは落ち着いていつも通りにリラックスしてください😃
OSCPでは、このブログを書いている時点では25ポイントの1つのマシンはWindowsの"Buffer Overflow"と決まっています。
このマシンは25ポイントでありながら、事前に準備することができる唯一のマシンと言えるでしょう。
TryHackMeで練習が出来るので、必ずこのマシンは逃さないようにしてください。
僕ももちろん練習をして臨んだので、特に大きなトラブルもなく解くことが出来ました。
僕は開始3時間ちょっとで10ポイントの簡単なマシンと25ポイントのBuffer Overflowのマシンを攻略しました。
この時点ではなかなかいいペースだと感じていたんですが、ここから地獄が訪れました。
このあと午後9時(開始から8時間後)まで何1つ解けませんでした。この時凄まじい焦燥感を感じたのを覚えています。
なんとか20ポイントの1つのマシンのlocal.txtを取ることが出来ましたが、rootにはなれませんでした。その上もう1つの20ポイントのマシンは手も足も出ない状態でした。
結局この時点でのポイントは10ポイント+25ポイント+10ポイント(部分点)で45ポイントという状況です。
合格するのに必要な点数70点の半分以上は取っていましたが、問題は、残っているマシンを解ける気がしなかったということです。
結局このまま仮眠を取る午前の1時まで進歩なく時間だけが進んでいきます。
ちなみに夕食やお風呂休憩など割とガッツリ休憩を挟みながらやっていました。
正直寝る前に僕は99%諦めました。残っているマシンは全く正解がわからない20ポイントのマシン、途中までしか出来ていない20ポイントのマシン、そして1番難しいので手をつけていなかった25ポイントのマシン。
これは無理だなと思い、ほぼ諦めた状態で5時間ほど睡眠を取りました。
そして午前6時に起床。この時開始からすでに17時間が経っているでしょうか。
諦めて、やめても良かったのですが、2人の友達にテストを受けると言った手前カッコ悪い報告は出来ないと思い、一応椅子に座りパソコンと睨めっこをしていました。
すると奇跡が起きます。
手をつけていなかった25ポイントのマシンを解くことが出来ました。
ポイントが高いので難しいんだろうなと勝手に思い込んでいましたが、ユーザのシェルは割とあっさりと取れました。
その後のPrivilege Escalationは少し苦戦しましたが、午前9時には(終了まで後約4時間)、ついにrootを取ることが出来ました。
この時点でもし、20ポイントのマシンの部分点が半分点(10点)であったと仮定した場合、ピッタリ70ポイントを取れた事になります。
しかしこの点数は全く安心できるものではありません。
そもそもこの点数は部分点が10ポイント貰えることをあくまで仮定しているものですし、レポートで減点されれば合格することが出来ません。
そこで20ポイントのマシンのどちらをやるのか迷いました。
結果的に途中まで解けていた方のマシンを選択しPrivilege Escalationを頑張る事にしました。
しかし、全く見当がつかなくどうしようかなと思っていると、試験終了15分前に奇跡的に頭に1つのアイデアが浮かび上がりました。
ダメもとで試してみるとなんと成功😃
これで80ポイントを取ることができ、合格点の70ポイントをなんとか超えることが出来ました。
この時は安堵に包まれたのを覚えています。
レポートについて
試験でなんとか80ポイントを取ることが出来た僕はレポートを書き始めました。
レポートを書く練習はしていたので、練習通りに進めていきました。
基本的にOffensive Security社が出しているレポートの例と同じように書けば問題ないと思います。
見てもらえれば分かるように、どうやってハッキングをしたか(rootを取ったか)説明する部分にはたくさんの画像が使われていることがわかると思います。
これはOffensive Security社の非英語ネイティブに対する配慮のようなもので、たくさんの説明を英語で書くのは僕たちのような英語が第1言語ではない人には厳しいから、画像で説明していくというスタイルが認められています。
僕は全ての過程におけるスクリーンショットを撮っており、その画像をベースにして説明を英語で書いていくというようにまとめました。
実際僕のレポートにどれくらい減点があったのか知る術はありませんが、合格できたということは少なからず大きな減点はなかったと考えていいでしょう。
別に文字で説明を書かなくてもいいと言っているわけでありません。詳しく書くに越したことはありませんが、全てを文字で説明する必要はないということです。
詳しくは先ほどのリンクに飛んで確認してもらうのが一番早いと思います。
その代わり必ずスクリーンショットは忘れずに撮るようにしましょう。僕は試験中何度も焦りましたが、ここだけは欠かさないようにしました。
せっかく解けた問題をレポートで点数を落とすのはとても勿体無いです。
最後に
以上でOSCP合格記を締めたいと思います。
まだまだ話していないこともたくさんありますが、もし気になる方がいればぜひコメントか、tkelliot@protonmail.comに連絡していただければ、可能な限りお答えします。
ここまで読んでくださってありがとうございました。
皆さんの合格を祈っています😃