OSEP合格体験記
はじめに
PEN300を受講し、先日、無事にOSEPに合格することができました。これを機に、OSCPとの違いに触れつつ、その記録を残しておこうと思います。
この記事がどなたかの参考になれば幸いです。
OSEPとは
OSEPはOffSec社が提供するペネトレーションテスター向けの実技試験です。
昨今、日本でも受験者が増えている印象があるOSCPもペンテスター向けの実技試験ですが、OSEPはOSCPの上位試験にあたります。
受験者はOSCPで要求される知識やスキルを前提に、以下のようなスキルセットを学習し、身に着ける必要があります。
- アンチウイルスソフト等によって、保護されたコンピュータへの侵入テクニック
- Active Directoryの委譲に対する理解とその悪用
- DevOpsやKerberosを利用したLinuxからの水平移動
- Domain間、Forest間の水平移動のテクニック
上記は一例となります。詳しくは[公式のシラバス](https://manage.offsec.com/app/uploads/2023/01/PEN300-Syllabus-Google-Docs.pdf)をご確認下さい。
学習について
受験者はOffSecが提供するテキストに沿って進めることになります。
学習内容は前述の通りシラバスに記載されているため、細かい記述については割愛しますが、OSCPと比べるとかなり自分でプログラムを作成するようなコンテンツが多かったです。とはいえ、テキストにはサンプルのスニペットが掲載されているため、それをつなぎ合わせるだけでもある程度は使えます。テキストのほとんどのサンプルはC#で書かれていますが、C#初心者の私でも詰まってしまうような部分はほとんどありませんでした。WindowsのAPIの呼び出しは今もよくわかっていませんが、このあたりは言語というよりはAPIの仕様の部分なので、WindowsのAPIと日常的に接している人以外は皆同様に苦しむ気がします。
ちなみに余談ですが、私はラボの学習も試験もM3 MacBook上の仮想環境で実施しました。多少、標準の手順とは異なりますが、x64向けのバイナリをコンパイルする作業も含めて、そこまで問題になることはありませんでした。
チャレンジラボは現時点で7つあります。最後の一つは昨年(2024年)12月くらいに追加されたばかりのものです。いずれのチャレンジラボも複数台のマシンで構成されており、なかなか歯ごたえがあり、時間がかかります。
最初の3つのラボは基礎の振り返りで、残りの4つのラボが応用編、というのが私の印象です。基本はテキストで紹介されているテクニックを駆使すれば攻略できるような難易度になっており、OSCPの時に比べるとDiscordでヒントを求めてチャットを漁る場面は少なかったように思います。
2024年の8月くらいに学習をスタートして、テキストが完了したのが11月の半ば、チャレンジラボを完遂したのが2025年3月頭くらいでした。今年は体調や健康面での問題が多かったので、それらがなければあと1カ月くらいは短縮できる気がしますが、やはりLearn Oneでなければ普通の社会人には厳しいと感じました。
試験について
例のごとく、詳細な内容には触れない範囲で記載させていただきます。
今回の試験ではだいたい、開始から15時間くらいで最終目標であるsecretフラグに到達できました。主観ですが、難易度はチャレンジラボとさほど差がない印象です。初期侵入はともかく、たいていの場面で次に悪用すべき設定不備や脆弱性がわかる、という状態であることが多かったです。OSCPの時はGoogle力が極めて重要だと感じたのですが、今回の試験ではGoogleで検索せずともあらかじめ作成しておいたチートシートで十分な場合がほとんどでした。
他の経路を試す時間は十分にあったのですが、合格を優先したかったため、secretを獲得した時点でレポート作成に切り替え、結局実技試験の時間いっぱいでレポートの作成や再現性のチェックに時間を費やしました。睡眠は48時間中合計8時間くらいは取りました。多分もっと取っても合格はできたと思うのですが、あまり睡眠が取れる気分ではありませんでした。実技試験が終わった時点でレポートは概ね完成していましたが、念には念を入れて文法や時制、体裁のチェック、サマリや結論等の実技とは関わりのない部分の調整をして、提出したのが9時間後くらいだったと思います。画像や実行したコードのコピペが大量に含まれるため、あまり参考にはならないかと思いますが100ページは超えていました。結果は10営業日以内となっていますが、提出からだいたい48時間後くらいには合格のメールをいただけました。
振り返りとアドバイス
全体を通して、要求される知識やテクニックはOSCPに比べて高度になっていることは間違いありませんが、試験の難易度は据え置きで極端に難しくなっている印象ではありません(48時間になっているとはいえ)。試験対策はテキストとチャレンジラボを定着させることが重要で、その他のコンテンツで学習する必要は少なくとも試験合格には必要ありません。私も結局OSEPのコンテンツ以外には時間を使いませんでした。
ラボやチャレンジラボでしっかりテクニックを磨くことが重要です。ラボで脆弱性を見つけると、このツールはうまくいくけど、このツールはうまくいかない、という場面が頻繁にあります。じゃあうまくいく方を使えばいいとなりがちですが、なぜうまく行かないか、とかを突き止めておくと理解が深まると思います。場合によってはパラメータを調整するだけでうまくいくこともありますし、時にはツールの不具合で、プログラムを修正しない限りそのツールが使えないこともあると思います。試験で使うツールは基本OSSで、ありがたいことにソースコードはGitHub上で読めることが大半です。またソースコードを読まないにしてもissueを見れば同じことで詰まっている人を見つけられるかもしれません。試験中にはAIを使えませんが、準備中はどれだけ使おうと何の問題もありません。方法は何であれ、こういったトラブルシューティングに時間を費やしておくと、理解が深まると感じます。
試験については良くも悪くもテキストで学習したことが中心です。行き詰ったらシンプルに考え、テキストに記載された範囲でやり残しはないかを考えると解決の糸口が見つかるかもしれません。
ありきたりな内容ばかりになってしまいましたが、自分がOSEPの学習期間に感じたことは以上です。
どなたかのお役に立てば幸いです。
著者
秋山 桂一
TIS株式会社IT基盤技術事業本部
IT基盤サービス事業部
セキュリティサービス部