OSCP合格体験記
はじめに
この度、私はOSCPに挑戦し、幸いにも合格することができました。
その経験を振り返りつつ、合格体験記として記録を残すことにしました。
基本的な概要については日本語の記事もたくさん見つかるため、詳細には記載しません。 自分がやったことや、個人的な所感をまとめたいと思います。 どなたかのお役に立てれば幸いです。
OSCPとは
OSCPとは、Offensive Security Certified Professionalの略で、Offensive Security社が認定するペネトレーションテストの認定資格です。
試験を受けるためにはPWKというトレーニング(とはいってもテキストとハンズオン環境が連携され自分で進める形ですが)を受講する必要があり、試験ではトレーニングで学習した内容が問われます。
試験は実技部分とレポート作成部分に分かれており、それぞれ23時間45分と24時間を要する非常に長時間に及ぶハードな試験です。
このような試験内容から、「OSCPは、他のハッキング認定資格より技術的であると考えられており、実線的な侵入テストのスキルを証明する数少ない資格」(公式サイトより和訳して抜粋※1)、といわれているそうです。
※1 https://www.offsec.com/courses/pen-200/
学習について
弊社の下期の取り組みの一環として受験を決めたので、11月の終わりごろから実際に教材を使って学習をスタートし、3月末に試験を受ける想定で学習を進めました。
教材はすべて英語で書かれていますが、ペネトレーション初心者でもとても丁寧かつわかりやすく記述されている、という印象を受けました。
また教材の1単元ごとにハンズオン環境がついており、実際に手を動かして学ぶことで、テキストの内容を実体験として学ぶことができたため、理解しやすかったです。
テキストの量は結構ボリュームがあったので、年明けまでは1日1時間から2時間くらい勉強していましたが、年明け以降は平均すると3時間くらいは毎日勉強していたのではないかなと思います。
テキストをすべて読み終えた2月末ごろから、演習問題であるチャレンジラボに取り組みました。
チャレンジラボは実際の企業のネットワーク環境を模したマシン群が3つと、実際の試験の模擬試験環境が3つで、全57台からなる演習環境です。
土日含めておそらく一日平均4時間程度は取り組んでいましたが、試験日までに37台しか解くことができませんでした。
OSCP受講生のDiscordフォーラムにヒントが投稿されているので、行き詰まったときはヒントを参照しチャレンジラボ進めていました。
なるべくヒントを見ないようにしていましたが、全く知らないテクニックとかもあったので、結果的にはヒントを見ざるを得ない、といった具合でした。
試験について
3月末に朝10時開始で試験の予約を入れました。
予約は結構早く埋まるので、受験したい日にちが決まってるのであれば1か月前には予約したほうが良いと思います。
身分証明書としてパスポートを用意しました。パスポートを持っていない方は準備に最短でも2週間くらいはかかるので、早めに用意したほうがいいです。特に連休前など海外旅行に行く方が多い時期に試験を入れる方は注意してください。
肝心の試験内容についてですが、プランとしてはAD環境(40ポイント)と独立マシンの低権限2つ+ボーナスポイントで考えていたのですが、ADが難しく、初期侵入すらままなりませんでした。 なので開始2,3時間で早々に独立マシン3台を完全攻略に方針を変えました。
試験内容の詳細は書けませんが、結局、翌日の午前5時くらいに3つ目のproofを確保し、合格ラインに乗りました。
そこからADを攻略する気はなかったため、時間ギリギリまでレポート用の証跡を確保し、試験を終えました。
2時間ほど休憩をはさみ、レポート作成に取り組みました。 試験中に睡眠をとらなかったので、休憩したかったのですが、休む気になれず、さらに翌日の午前4時くらいまでレポート作成を粘り、提出してから就寝しました。
レポートは基本的にwe+過去形にしました。 公式からは配布されているテンプレはJohnになっていますが、おそらくこのあたりは特に気にしていないと思うので、よほど変な人称にしなければ好きにして問題ないと思います。
合格発表はレポート提出から4日後くらいでした。 メールで連絡が来るのですが、最初はただのお知らせメールだと思い、気付きませんでした。
合格ラインぎりぎりだったので、レポート提出後はかなりおどおどしていましたが、合格して安心しました。
これから試験を受ける人へのアドバイス
合格ラインぎりぎりの人間の言葉なので信ぴょう性はないかもしれませんが、いくつか残しておきます。
OSCPを受験するには90日プランと1年プランのどちらかの料金を支払う必要がありますが、おすすめは1年です。
90日プランは普通の社会人には短すぎます。 業務時間中も勉強時間を捻出できるとか、ペネトレーションの実務経験があるとかでないなら90日では十分に学習できないと思います。
挑戦する前にTryHackMe※2やHackTheBox※3で勉強するべきか、ということはよく議論されていると思いますが、配られる教材のクオリティが高いので必須ではない、というのが私の考えです。
もちろん試験の合格率を上げるならやっておいて損はないのかなと思います。 ただ、OSCPのテキストがすばらしいので、OSCPのトレーニングを受ける前ではなく、トレーニングを受けた後の方が効率がいいとは思います(時間に余裕があれば、ですが)。
チャレンジラボや試験を受けて感じたことですが、OSCPは配られるテキストの内容を100%暗記できるくらい読み込んでもそれだけでは合格できない類の試験だと思います。
もちろんテキストに書いてある程度のことは理解できていないとダメですが、重要なのはテキストの内容を踏まえたうえで、未知の問題に直面したときに、その問題に対してどのようにアプローチできるのか、ということだと思います。
例えば、管理者のパスワードを窃取して権限昇格します、と一言で言えば型にはまったパターンのように見えますが、実際にはパスワードを隠されている場所は無限にありえるわけで、そういう意味では教科書を丸暗記したところで無意味、ということです。(これは実際のペネトレーションテストでも同じことが言えるのだと思います。)
ではどうすればいいのか?というと答えは自分も答えは分からないのですが、初心者の立場からは、可能性をなるべく多く列挙し、それを一つ一つ試すしかないかなと思います。
また、これは自分だけかもしれませんが、どうしてもチャレンジラボや試験では、マシンに対していろいろなツールをかけたりすることに注力しがちでした。しかし、同じくらいGoogleで検索することも重要だと後から思いました。
どんな些細なことが侵入だったり権限昇格につながるのか初心者の自分にはわからないので、とりあえず調べものから入ればよかった、ということです。
そして、何に対してもバックアップを取ることの重要性を強調したいです。 今回試験中にkaliがおかしくなってaptのパッケージが全部初期化され、あらゆるツールが使えなくなりましたが、数日前にとっておいたスナップショットのおかげでなんとかなりました。
なかなかできないと思いますが、可能なら物理マシンやネットワークも冗長化しておくといいと思います。
※2 https://tryhackme.com/
※3 https://www.hackthebox.com/
おわりに
とても大変な4か月間でしたが、教材のクオリティが高く、スキルアップを実感する日々でした。
日々のWebアプリ診断も、「この脆弱性は結局、こういう脅威につながるんだよな」と実感を持って具体的に考えられるようになったと思います。
受講料は為替の影響もあり、かなり高額ですが、それに見合った価値をもたらしてくれると私は思います。
著者
秋山 桂一
TIS株式会社
IT基盤技術事業本部 IT基盤サービス事業部 セキュリティサービス部