OSCP合格体験記

2024/06/15(土)にOSCPの試験を受けて、無事に合格しました。合格体験記です。

OSCP Certificate

目次

OSCPとは

OffSec Certified Professionalの略称です。セキュリティトレーニングで有名な会社のOffSecが提供するペネトレーションテストの資格です。
高難易度な資格に分類されます(OffSec社の資格の中ではエントリーレベルですが…)。

LinuxやWindowsのマシン(VM)とそのIPアドレスが与えられるので、マシンに侵入して権限昇格までを行う実技試験です。
PEN-200というトレーニングコースが付随しており、それでみっちり座学と実技を学んでから試験を受けます。
試験は24時間のペネトレーションテストを行い、そのレポートを提出する形式です。

“OSCP 体験” などで検索すると大量に先人の記事が出てくるので、より詳しくはそちらをご参照ください。

配点

100点満点の試験で70点以上で合格です。

  • (40点) Active Directoryを成す3台のWindowsマシンに侵入し、ドメインコントローラーの制御を奪う。部分点なし
  • (20点 x 3) 3台の独立したWindowsまたはLinuxのマシンに侵入。それぞれ独立に権限昇格する(Administrator or rootを取る)。侵入で10点、権限昇格で20点のポイント。

この他、PEN-200で座学と実技を一定以上やると10点のボーナスポイントが下駄としてもらえます。

戦略

よほどペネトレーションテストに慣れていない限りはボーナスポイントの獲得はしておいたほうが良いと思われます。
ボーナスポイント自体の価値だけではなく、その獲得過程で良質な学習ができます。

それを前提とすると、合格最低点に達するための戦略としては

  • 選択肢1: Active Directoryセット(ADセット)で40点、独立マシンで20点、ボーナスポイントで10点
  • 選択肢2: 独立マシンで20点 x 3、ボーナスポイントで10点

の2通りになります。私がPEN-200でやってきた感覚としては

  • ADセットは丁寧に諦めずにやればなんとかなる難易度に設定されてる
  • 独立マシンはたまに鬼難易度の初期侵入や権限昇格が混ざっている

というものでしたので、選択肢1を戦略としました。

結果

  • ADセット攻略 (40点)
  • 独立マシン2台権限昇格 (40点)
  • 独立マシン1台初期侵入 (10点)
  • ボーナスポイント (10点)

ということで、一応満点の100点が取れたかと思います。
本当は独立マシン3台とも権限昇格して下駄なしの100点と行きたかったところですが、学習の成果は出し切れたかと思います。

レポートの採点や最終得点は受験者に通知されないため点数に確証はないのですが、他の方の体験を読んでいればレポートでの細かい減点はなさそう(不備があれば無慈悲に不合格にされることはありそう)ということで、受かっていたからにはこの点数なのでしょう。

経過

規約につき詳しくは書けないやつなのでぼんやりと書きます。

  • 前日: PEN-200のトレーニングを通じOSCP合格レベルに達したと自己評価し、急遽翌日朝6時からの試験をスケジュール。家族から引きこもり許可を得る。感謝。
  • 当日02:00: 興奮で目が覚める。二度寝失敗。やり残していたOSCPの模擬テスト(OSCP-C)の続きをやる。初期侵入やら横展開やらに失敗してテンションが下がる。
  • 当日05:45: 規定に従い監視ツールやVPNの準備開始。監視ツールの画面共有でトラブル発生。ブラウザをChromeからFirefoxに切り替えて対応完了。監視ツールでのトラブルは他の人の体験記でも見ていたのでそんなに慌てなかった。
  • 当日06:15: 15分遅れで試験開始。
  • 当日07:00: ポートスキャンざっくり完了。まずはADセットからやることは決めていたが、その後に攻略する独立マシンの目星をなんとなくつける。
  • 当日08:00: ADセットの1台目に初期侵入成功。
  • 当日09:00~10:30: 予定されていた子どものお世話散歩。
  • 当日11:30: ADセットの攻略完了。
  • 当日13:30: 独立マシン1台目の初期侵入成功。
  • 当日14:00: 独立マシン1台目の権限昇格成功。最低合格点到達。
  • 当日14:00~14:30: 昼寝。
  • 当日16:30: 独立マシン2台目、3台目の初期侵入成功。この2台は権限昇格が難しく長い時間悩むことに。
  • 当日17:30~19:00: 予定外の夕食外出。はま寿司1時間待ちで発狂。別の店でそこそこおいしい思いをし帰宅。
  • 当日21:30: 独立マシン2台目の権限昇格成功。これは気持ちよかった。
  • 当日22:30: 独立マシン3台目の権限昇格を一旦諦め就寝。試験終了の6時まで寝ちゃっても良い気持ちで寝る。
  • 翌日04:00: 興奮で目が覚める。いい歳して情けない。独立マシン3台目の権限昇格を粘る。
  • 翌日05:30: 独立マシン3台目は諦め、レポート執筆に移る。
  • 翌日07:30: レポート作成・提出完了。

レポートの下地は予め整えていたのと、攻略手順は攻略中に文章・スクショともに大筋まとめていたので、レポート作成は比較的早期に終わりました。

使用ツールの紹介(自作チートシート含む)

[宣伝] 動的コマンドチートシート(自作)

作りました。PEN-200やりながら自分でめんどくさいなと思った部分を解消するために作ったやつなので、自分から見た使い勝手は抜群です。
是非使ってみてください!!改変して最強のチートシートにして公開してくれてもOKです(READMEのライセンス条項はお読みください)。

戦術チートシート

Notionで書いてまとめてました
これは割と自分用で、正直他の人のチートシートのほうが出来が良かったりするので自分もPEN-200やOSCP本番でも他の人のチートシートも併せて読んだりしていました。

成果物そのものというより、これをまとめる過程での学習効果が大きかったと思います。

攻略メモ・カンバン

Obsidianでまとめてました。

攻略メモは脳外メモリの用途と、レポートに転記できる材料収集を併用してました。
別途obsidian-kanbanプラグインでカンバンを作ってました。ポートスキャン結果を見たりのReconフェーズで思いついたことをひたすらTODOレーンに突っ込んでいき、Doingで試してはFailed, Succeededに分類していきました。

本当は全部Notionでやりたかったのですが、ページが長大になると動作が爆裂激重になって実用的ではなかったので…

レポート

これもObsidianでやりました。
レポートのテンプレートはPEN-200の24番目のモジュールに添付されていたものに、Methodologyセクションを付け加えたりのアレンジを加えて自分で作りました(どこまで公開してよいかわからないので非公開)。

特に、頻出の脆弱性は説明・影響・緩和策を予めまとめておき、本番レポート作成時にはピックアップするだけで事足りるようにしておきました。

NetExec

お気に入りツールその1です。これ一つでパスワードの使い回しの発見やらSMBの脆弱性発見やら侵入プロトコルの特定やらかなり広いことができます。
Reconに詰まったときに「NetExecのあの機能で確かめたいことあるな」という感じで、思考のチェックポイントになってくれました。

元々はfork元のcrackmapexecを使っていたのですが、RDPの認証チェックが壊れていそうだったのでこっちに乗り換えました。
こっちはこっちでSSHの認証チェックが壊れている気がしたので、土壇場でcrackmapexecを使ったりもしました。
PEN-200の教えにもありましたが、同目的で複数ツール使えるようにしておくのは重要ですね。

Ligolo-ng

お気に入りツールその2です。ポートフォーワーディングは大体これで解決です(少なくとも、PEN-200のポートフォーワーディング専用モジュール以外では困る箇所なかった)。

レポートの Methodology セクションに貼り付けるために自分で描いた説明図が割とわかりやすい(ほんま?)ので、よかったら適当にコピーして使ってください。

元データGoogle Slide

Ligolo-ng 説明1 Ligolo-ng 説明2

合格証明書

合格したらバッヂと合格証明書を発行してもらえます。してもらいました。

感想

難しかったです。特にWindows知識は薄弱だったので、「ADってこういうものだったんだ…」というところから学習が始まりました。
それでもやってると楽しいもので、2ヶ月弱ほぼ毎日時間を見つけて座学や実技練習に取り組んでいました。

諸々削っていたのも事実だったので、そろそろケリつけないと体力的 & 社会的にやばいぞというところで受験を即断して一発合格できたのはかなり幸運でした。
時間作ってくれた家族にも感謝です。

技能だけでなく思考も磨かれる教材・試験だと思いますので、皆様も是非トライしてみてください。

author Sho Nakatani a.k.a. laysakura

東京大学大学院 情報理工学系研究科 電子情報学専攻 修士課程で並列分散処理・ストリーム処理・データベースを研究。
2014年4月に株式会社ディー・エヌ・エーにエンジニアスペシャリストとして入社し、ソーシャルゲームのサーバサイド共通基盤の開発に従事。
2016年8月より、オンライン証券会社株式会社FOLIOに入社。バックエンドシステム開発・プロジェクトマネージメント・Engineering Managementに従事。
2020年3月よりIdein株式会社所属。デバイス・高性能計算関連の研究開発。
2021年9月よりトヨタ自動車株式会社所属。自動車データの収集〜分析基盤の研究開発に従事。
その他個人事業主として、RDBMS開発やIntel SGXを利用するためのライブラリ開発などの活動。