NFLabs. エンジニアブログ

セキュリティやソフトウェア開発に関する情報を発信する技術者向けのブログです。

OSCP合格体験記(2024/03)

はじめに

こんにちは、教育ソリューション担当の吉浦です。
2024年3月にOffSec社のOSCPを取得したので、合格までの記録を書きたいと思います。

OSCPとは?

OSCP (OffSec Certified Professional) とは、OffSec社が提供する実技重視のペネトレーションテスト資格です。

OSCP試験

OSCP資格を取得するには、試験に合格する必要があります。
試験は約48時間連続(長い!)で実施され、「試験環境内の標的端末へ侵入し、その手順についてレポートを書く」という内容となっています。
試験中に好きに休んでよい、試験中にインターネットを利用した調査ができる、など座学系の資格試験とはルールが異なります。細かい上に重要なルールが多いので、あらかじめ試験ガイドを参照することを強く推奨します。

試験スケジュール

試験は2部構成です。

  • 実技試験
    • 時間:23時間45分
    • 内容:試験環境内の標的端末へのペネトレーションテスト
    • 備考:画面共有とカメラによる監視あり
  • レポート作成
    • 時間:24時間
    • 内容:実技試験での侵入手順についてレポートを書く
    • 備考:監視なし、試験環境へのアクセスは不可

合格基準とボーナスポイント

100点満点中70点以上獲得することで合格できます。
標的端末は計6台で、権限に応じたフラグを獲得することで得点をもらえます。

  • independ target(独立マシン)
    • 台数:3台
    • 得点:60点 = 20点(低権限10点+高権限10点) * 3台
  • Active Directory set(ADセット)
    • 台数:1セット(クライアント2台、ドメインコントローラ1台)
    • 得点:40点(ドメインコントローラの管理者権限)

これに加えて、侵入手順に関するレポートを作成して提出します。
レポートに内容不備があれば減点されますが、加点されることはありません。

また、OffSecの演習環境を攻略することで10点のボーナスポイントが貰えます。
このボーナスポイントは貰っておいて損はないです!
僕は今回この10点のおかげで命拾いしました。

学習について

取得のきっかけ

NFLabs.には2023年11月に入社しました。
弊社はOffSec社の資格取得を推奨しており、自分も入社時点から勉強させてもらえることになりました。
LearnOneという1年学習コースを選択しましたが、費用は会社に出していただいています。安くない額なので、このように支援していただけるのは本当にありがたいです。

学習開始時点のスキルレベル

  • 資格
    • 応用情報技術者
    • 情報処理安全確保支援士
    • CISSP(試験に合格しただけで認定はまだまだ先です)
  • 業務経験
    • ソフトウェア開発エンジニア:6年(C++, Python)

情報セキュリティは座学系の知識ばかりで、実務経験も皆無でした。
Linuxはほぼ触ったことがない状態でのスタートです。

学習コンテンツ① TRAINING MATERIAL

TRAINING MATERIALは、OffSecが提供する教科書(PDF換算で約850ページ)です。
練習問題もかなりの量があり、手を動かしながら学ぶことができます。
僕は2023/11 ~ 2023/12の2か月間(100時間程度)で読みました。

学習コンテンツ② CHALLENGE LABS

CHALLENGE LABSは、OffSecが提供する演習環境です。
2024年3月時点では環境全体で全57台の標的端末があります。
僕は2024/1 ~ 2024/2の2か月間(150~200時間程度)で52台を攻略しました。
OffSecが運営しているDiscordサーバーがあり、困ったときはここでヒントを発見できます。攻略できたマシンのうち、半分以上はヒントを見て解いた気がします。

その他

学習した内容などはチートシートとして自分用メモに記載していきました。
コマンドを調べる時間の短縮や、知識を整理できるという点で非常に有用かと思います。
僕はOffSec提供の学習コンテンツを中心に学習しましたが、Hack The Boxなどの活用も有効なようです。

試験について

試験準備

受講開始から3カ月半ほど経過し、CHALLENGE LABSも大部分を攻略できたあたりで受験することを決断しました。
実技試験は不眠不休となることもあり得るため、軽食とエナドリを準備しました。また前日は睡眠時間を多くとるなど、万全の状態で挑むことを心掛けました。
ちなみに試験当日はエナドリのみならずコーヒーも飲みまくって、カフェインだらけの一日でした。

実技試験

受験日や開始時刻はある程度自由に決められるので、土曜朝6時開始を選択しました。
試験官とはテキストチャットを通じて、コミュニケーションを取ります。画面共有や、パスポートの提示、部屋をカメラで映す作業などが必要なので事前に準備しましょう。

実技試験のタイムスケジュールはこんな感じでした。

時刻 作業 得点
05:45 試験官とチャットしながら試験準備 0
06:00 試験開始、ADに着手 0
07:30 ADの初期侵入に苦戦、独立マシンAに着手 0
08:30 独立マシンAの初期侵入に成功、独立マシンAの権限昇格に着手 10
09:30 独立マシンAの権限昇格に苦戦、独立マシンBに着手 10
09:45 独立マシンBの初期侵入に成功、独立マシンBの権限昇格に着手 20
10:00 独立マシンBの権限昇格に成功、AD攻略を再開して泥沼へ 30
15:00 AD攻略を断念、独立マシンAの権限昇格を再開 30
16:00 独立マシンAの権限昇格に成功、独立マシンCに着手 40
20:00 独立マシンCの初期侵入に成功、独立マシンCの権限昇格に着手 50
23:00 独立マシンCの権限昇格に成功、ADは諦めてレポート作成準備へ 60
03:20 試験官に終了を伝えて、実技試験終了 60
総合得点(独立マシン20点 * 3台 + ボーナスポイント10点) 70

40点のADセットが攻略できず、ボーナスポイント込みで合格点ぎりぎりの70点!
独立マシンは難易度のばらつきが激しく、完答できたのは幸いでした。
ADセットに関しては、自分の先入観による調査漏れがあったことに後日気が付きました。

レポート

少しでも減点されたら落ちる!という状況だったため、非常に丁寧に作りました。
フォーマットはOffSecが出しているテンプレートを利用しましたが、指定のフォーマットは無いようです。
実技試験で心身に大ダメージを受けたので、のろのろとレポートを書いて夜12時頃に提出しました。

試験結果

レポート提出から12時間程度でOffSecのexamページに合格の記載がありました。
また、レポート提出から36時間程度で合格通知と認定バッジ支給のメールが届きました。

実技試験の時点で合格最低点であることから、レポートの減点は無かったと思われます。
つまり僕のレポートは完璧だったということですね!
書くべき内容がきちんと記載されていれば、減点されないようです。

感想

合格点になかなか到達できず、大変な試験になってしまいました。
休憩は1時間に1度取りましたが、点数不足の焦りから長時間の休憩は取れませんでした。
また時間とともに集中力が切れてきて、結果を出せなくなって更に焦る…という悪循環も辛かったですね。

試験を通じて、特に重要な要素だと思ったのは2点です。

  • 正しく情報収集すること
  • 諦めずにトライ&エラーを続けること

当たり前の内容ではあるものの、本番では焦りや緊張で失敗しかねません。
特に情報収集は不備があると詰むことがあるので要注意です。漏れなく情報を集め、分からないことはインターネットなどできちんと調べる必要があります。
調査に関してはHacktricksに大量の情報が集約されており、試験でも活躍してくれました。

おわりに

OSCPは、勉強していて非常に楽しい資格でした。
知識をひたすら暗記するような苦行が無いので、その点もありがたかったです。
OffSec社はOSCP以外にも色々な資格があるので、今後もチャレンジしていく予定です!

OSCPに興味がある、という方に本記事の内容が参考になれば幸いです。