先日、約1年ほどかけて準備した OffSec Certified Professional (OSCP)を受験したが、結果は30ポイント(自己採点)で落ちてしまった。
結果こそ残念だったものの、貴重な体験ができたので、(戒めも込めて)メモを残しておく。
受験を決意するまで
OSCPの存在自体は何年も前から知っていて、面白そうとは思っていたが、「試験時間が24時間って、しんどそう。。」とか「受験するなら相当勉強しないとダメそう。。」などと、長らく見送っていた。
しかし、試験内容にActive Directoryへの攻撃が含まれるようになったと知って、興味が跳ね上がった。
Active Directoryへの攻撃方法を勉強して、実践してみたいという思いに後押しされて、とうとう受験を決意した。
自分のセキュリティ経験について
自分のセキュリティ分野での経験は、以下の通り。
- ネットワーク監視からセキュリティの世界へ入門 (SguilとかSnortとかPCAPの世界)
- 徐々にEDRを使用したエンドポイント解析もするように
- 現在の主な業務はフォレンジック調査と脅威ハンティング
脆弱性診断やRed Teamingの経験は皆無。たまにCTFでそれっぽいことをして、キャッキャッする程度。
勉強計画
ネットで受験者の体験談を見てみると、TryHackMeとかHack The Boxで経験を積んでから、PEN-200を受講するというのが一般的なようだったので、自分もそれに倣うことにした。
2024年2月~6月末 TryHackMe で基礎トレ
TryHackMeで基本的な攻撃方法やツールの使い方を勉強した。
自分が取り組んだRoomの一覧はこちらから確認できる。(Internalもやったが、作問者がwriteupの公開を禁止しているため、記事は非公開)
6月の頭に用事で一週間ほど日本に一時帰国しており、その間は勉強はお休み。
2024年7月~8月下旬(?) PEN-200 PDFおよびエクササイズ
当初はTryHackMeのあとにHack The Boxで勉強するつもりだったが、すでに7月に入っており、時間が足りなくなりそうだったので、PEN-200 90日間コースを申し込むことにした。。。が最終的に30日間 x 2回分、 延長することになった。
この頃は以下の条件を満たすと、OSCP受験に際してボーナスポイントが10点貰えた。
- 各エクササイズを80%以上こなす
- Challenge Lab よりproof.txtを30台分取得する
が、のちに触れるが試験内容が改定されてボーナスポイント制度は廃止されてしまった。
以下のようなペースで勉強を進めた。
- 仕事終わりの夜に1~2時間ほど
- 土日、祝日の朝、昼、夜に各1~2時間ほど
最初は「全エクササイズ 100%達成するぞ~」と意気込んでいたが、ほどなくして時間が足りなくなりそうだと感じ、以降は達成率が80%に到達したら、すぐに次のエクササイズに取り組むようにした。
ちょっと記録がないので曖昧だが、PDFとエクササイズを一通り完了するのに1か月半強かかったと思う。
2024年8月下旬~9月下旬 Challenge Lab、のちにPEN-200を30日間延長
いざ、Challenge Labに取り組んでみたが、全然すんなり解けない。スタンドアローンのマシンは何とか解けないこともないのだが、Active Directory環境が全然攻略できない。
学んだことが全然消化できていないと痛感して、Active Directoryの内容を再度復習した。(あと個人的に苦手と感じているSQLインジェクションも)
そうこうしているうちに、期限の90日間を迎えそうだったので、30日間延長。
2024年9月末~10月下旬 引き続きChallenge Lab、再度PEN-200を30日間延長
復習の甲斐あってActive Directory環境を少しずつ攻略できるようになってきた。しかし、それでもproof.txtを取れたマシンは10台にも満たない。
で、これは8月頃にOffsecからのメールで知らされていたのだが、2024年11月1日をもってOSCPの試験内容が改定されることになった。主な変更点は以下の通り。
- Active Directoryセットでは、受験者には事前に有効なADアカウントが提供されるので、そのアカウントを利用してADの攻略を開始する(つまり初期侵入が不要)
- ボーナスポイント制度の廃止
2024年11月1日以降は上記の変更が適用されるため、ボーナスポイントを保持して試験に臨みたい場合には2024年11月1日よりも前に試験日を設定する必要がある。
自分の場合、2024年11月1日までにボーナスポイントを獲得することは到底無理そうだったので、試験は11月~12月のどこかで受けようと決めた。
2024年11月~末 引き続きChallenge Lab、受験日を設定
引き続きChallegen Labに取り組む。最終的に66台中24台のマシンを攻略した。
内訳は以下の通り。
- OSCP A: すべて攻略
- OSCP B: スタンドアローンマシンを2台攻略
- OSCP C: スタンドアローンマシン1台を除いて、すべて攻略
- ADセット Secura: すべて攻略
- AD セット Medtech: すべて攻略
- ADセット Relia: 4台攻略、うち1台のみlocal.txt止まり
正直、合格の手応えは無かったが、流石にこれ以上は延長できないと思い、試験日を設定することにした。
最初は11月の最終週に設定していたのだが、直前の週に体調を崩して数日間療養したり、トイレのタンクにひびが入って水漏れを起こしたり、電子レンジが故障したりなどのトラブルが続いたため、12月の第一週に再設定した。
試験の一週間前
試験一週間前はチートシートやツールの整理をしたり、レポート作成の練習をした。
レポートは当初OSCP-Exam-Report-Template-Markdownを利用しようと思ったのだが、Dependencyが足りなかったり、いざマークダウンをPDFに変換したら、所々フォーマットが崩れていたり、指定したのと違う場所にスクリーンショットが表示されたりして、直し方もよく分からなかったので、結局OffSecの公式から提供されているサンプルレポートを使用することにした。
また受験にあたり、試験のガイダンスやFAQ、試験監督ツール (Proctoring Tool)のFAQを再読。
ガイダンスを読んでて気がかりだったのがチャットボットの制限について。自分は普段Google Chromeを使用しているのだが、最近のChromeは検索結果にAIが生成したサマリが載ることが多く、これが試験に影響があるのか心配だった。
で、OffSecに質問のメールを送ったところ、どうやら検索エンジンに表示されるAIのサマリもチャットボットの制限に抵触するらしい。
しかし、自分が調べた限り、ChromeのAIサマリ機能を完全にオフにすることはできないっぽい。
ただし、IncognitoモードにはAIサマリ機能は無いようだったので、試験当日はググる際はIncognitoモードを使用することにした。
あと、試験当日は最悪部屋から一歩も出なくても平気なように、カップ麺などの食料を備蓄しておいた。
試験当日
試験時間はシンガポール時間の午前9時に設定した。
正直、受かる自信はあまりなく、「0ポイントで終わるのだけは嫌だな~」と思いながら臨んだ。
試験監督ツールのインストール、Webカメラによる部屋確認、本人確認などは特にトラブルなく進み、スムーズに試験開始できた。
以下、タイムライン。
時間 (SGT) | 出来事 | 雑感 | ポイント | 合計ポイント |
08:45 | 試験前の諸々の確認 | 特にトラブルなし | 0 | 0 |
09:05 | 試験開始 | 0 | 0 | |
11:25 | スタンドアローンマシン1のlocal.txt | local.txtは取れたものの、権限昇格できず | 10 | 10 |
12:00~13:00 | 昼休憩 | 備蓄のカップ麺で昼食 | 0 | 10 |
16:16 | スタンドアローンマシン2のlocal.txt | 10 | 20 | |
17:20 | スタンドアローンマシン2のproof.txt | 10 | 30 | |
17:30~18:00 | 休憩 | 0 | 30 | |
18:00~19:00 | スタンドアローンマシン3に取り掛かるも、初期侵入できず | 0 | 30 | |
19:00~20:00 | 休憩 | シャワー後、備蓄のカップ麺で夕食 | 0 | 30 |
20:00~22:30 | ADセットにとりかかる | 怪しいポイントを見つけるも権限昇格できず。徐々に集中力も切れ始める | 0 | 30 |
23:00 | 就寝 | 完全に集中力が切れ、諦めモードに | 0 | 30 |
01:00 | 一旦目が覚めるも、再開する気にならず、再び就寝 | 0 | 30 | |
09:00 | 試験終了 | Try Harderの精神が足りなかった。。。 | 0 | 30 |
16:00 | レポート作成開始 | とりあえず解けた分だけでもと思い、レポートに取り掛かる | 0 | 30 |
19:00~20:00 | 休憩 | 0 | 30 | |
21:00 | レポート作成完了 | レポートが完成するもアップロードできず (多分合格ポイントに達していないせい) | 0 | 30 |
試験にはもちろん愛機で臨んだ。
Challenge Labでの経験から、スタンドアローンマシンには比較的攻略が易しいものがあるはずだと当てをつけて、まずはスタンドアローンマシンを中心に攻めることにした。
開始から2時間半ほどで1台目のスタンドアローンマシンのlocal.txtを取れたことで、「もしかしてイケるんじゃ?」と希望が湧いたが、そこまで甘くはなかった。
local.txtを取ったものの、権限昇格への取っ掛かりが一向に掴めず。。。
気を取り直して、2台目のスタンドアローンマシンに手を出す。こちらは割とスムーズにlocal.txtとproof.txtを取ることができた。
勢いそのままに3台目のスタンドアローンマシンに取り掛かるも初期侵入できず。。。集中力が切れてきたと感じたので、シャワーと夕食がてら休憩を挟む。
休憩後は、3台目のスタンドアローンマシンは一旦おいて、ADセットに取り掛かることにした。
ADアカウントが提供されているので、初期侵入は苦労せずに出来た。で、列挙を行ったところ、明らかに怪しいポイントを発見。ここを突いて権限昇格しようとしたが、上手く行かず。。。これがラビットホールで何か別の攻略法があったのか、上手く行かない原因を突き止めた上でどうにかしなければいけなかったのかは分からずじまい。
23:00を迎えたあたりで、完全に集中力と気持ちが途切れて、ベッドに入る。途中、1時くらいに目が覚めたが、どうしても再開する気になれず、再び眠りの世界へ。で、試験終了。
不合格が確定したので、レポートを作成するべきか迷ったが、ほかにすることもないし、大した作業量にもならないだろう(自虐)ということで、夕方くらいからボチボチ、解けたマシンについてのみレポートを作成した。21:00くらいにレポートが完成して、ポータルにアップロードしようとしたのだが、「You are not allowed to submit files」エラーメッセージによるお叱りを受けた。
まあ、運営側からしたら合格ポイントに達してない受験者のレポートなんて読んでも意味ないだろうし、これは完全に自分のせい。
試験を終えて
Challenge Labに取り組んでいたころから薄々感じていたが、やはり自分には難しかった。合格レベルに達していないまま試験に臨んで、案の定落ちてしまったという感じ。結果も30ポイントで、正直惜しかったとは言い難い。
あと、これはあくまでも自分の場合だが、休憩を入れたとしても集中力が持続するのは12時間が限界だと感じた。いかに集中力と気持ちを切らさずに、試験時間いっぱいまで取り組めるかかが一番の鍵だろう。
総括すると、勉強の追い込みも、Challenge Labのやり込みも足りていなかった。落ちるべくして落ちたという感じ。
ただ、落ちておいて何だが、基礎知識とスキルは結構向上したと思うので、挑戦したこと自体は無駄ではなかったと思っている。
再受験するか?
正直もうやりたくないという気持ちと、悔しいからもう一度チャレンジしたいという気持ちが混在している。
来月までには、どうしようか決めようと思う。