OSCP合格体験記

セキュリティ初学者がOSCPに合格するまで

2024年1月20日 OffSec Certified Professional (OSCP) に合格しました。OSCP を取得しようと思ったきっかけから、合格するまでの道のりなどを書いていこうと思います。

OSCP とは

OffSec が提供するペネトレーションテストの入門資格です。PEN-200 と呼ばれるトレーニング教材でペネトレーションテストの方法論を学び、OSCP 試験に合格することで OffSec から認定を受けることができます。

PEN-200 はダウンロード可能な PDF 形式のコース資料と、OffSec ポータルサイトからアクセス可能な Web 版のコース資料が提供されています。内容は同じですが、私はブラウザでの見やすさや翻訳のしやすさから Web 版を使っていました。また、コマンドの実行などの手順が解説されている動画のコース資料もあります。テキストの内容だけでは理解しづらい場合に、動画で手順を確認できるので重宝しました。

ラボで手詰まりになった際など助けを求めたい場合は、OffSec 公式の Discord から質問ができます。親切な生徒が教えてくれたり、OffSec のメンターが答えに導いてくれたりと、手厚いサポートが受けられます。また、ラボを解いているとマシンが壊れていてうまくいかないという事態に遭遇することがありますが、Discord でエラーなどを検索すると同じ現象が報告されていたり、OffSec が壊れていることを認めているやり取りがあったりします。手詰まりやマシンが壊れていると感じたら Discord を確認すると良いでしょう。

OSCP 試験は100点中70点合格の試験です。試験マシンはスタンドアロンが3台、3台から成る Active Directory セットが1セットです。点数はスタンドアロンのユーザーフラグが10点、ルートフラグが10点、Active Directory の Domain Controller フラグが40点です。また、PEN-200 のラボを一定以上攻略するとボーナスポイントとして10点が追加で貰えます。この時点でお気づきの方も居ると思いますが、合格の70点に達するには Active Directory の攻略がほぼ必須です。ボーナスポイントとスタンドアロン3台で70点を取得することは可能ですが、Active Directory を解くほうが簡単だと思います。

試験マシンにアクセスできる23時間45分の間にマシンを攻略し、合格点以上のフラグを提出する必要があります。試験終了後24時間以内に脆弱性の概要、脆弱性の修正方法、マシンへの侵入手順を含むレポートを提出することでレポートの採点が行われます。レポートに不備があると減点されるため、私は合格点に達した時点で一度レポートを完成させ、残った時間で追加のフラグ取得に挑戦しました。

OSCP を取得しようと思ったきっかけ

この章は私の心境に関する話なので興味のない方は読み飛ばしてください。

OSCP に挑戦しようと思ったのは2022年頃です。当時私は情報工学専攻の修士1年生で、専門は深層学習を使った画像処理(物体検出、画像生成)でした。アルバイトでは自動運転などで使われる車載カメラからの物体認識の研究を手伝っていたりして、なんとなく就職は画像処理や深層学習関連の仕事になるだろうと思っていました。

ある日、他の研究室の同期と将来について話していたのですが、漠然とハッカーってかっこいいよね、将来はハッカーになりたいよねという考えが浮かび、2人でセキュリティ関係の企業を調べ始めました。色々な企業の説明会に参加したり、募集要項に書かれている資格を調べたりしていました。私が思い浮かべているハッカー像に最も近い職業がペネトレーションテスター、レッドチーマーだった事と、第一希望の企業が OSCP を評価しているという理由から就活までに OSCP を取得しようと考えました。

OSCP 合格までの道のり

PEN-200 開始

2022年6月7日から PEN-200 を3ヶ月コースで開始しました。

Note: PEN-200 は 2023 年に大幅な更新があり、資料やラボの内容が変わりました。試験に合格したのは 2024 年なので PEN-200 の更新後ですが、私が購入した PEN-200 は 2022 年の更新前のトレーニングになります。更新後の資料は Active Directory の章が充実したことが大きな変更点ですが、全体的に使うツールが新しくなったり古い説明が削除されたりしたようです。更新前のラボは、「75台のマシンから成る企業活動を模したネットワーク」と説明されていましたが、実際はスタンドアロンのマシンが多く、たまに別のマシンで取得した認証情報が必要になったりするくらいで Active Directory に関する脆弱性が少なかったです。更新後は7,8台のマシンセットが7セットほどあるようで、より OSCP 試験に近い形になっており良い体験ができそうだと感じました。(実際に更新後のラボを解いた訳ではないので情報が間違っていたらすみません。)

この時点でのスキル感は Hack The Box (HTB) Noob ランクで Walkthrough を見ながらリタイヤマシンを10台ほど見様見真似で解きました。正直ほとんど理解できていなかったと思います。研究で使っていた基本的な Linux コマンド, Python3, Git, Docker の知識はありましたが、Windows の cmd, PowerShell を触った経験は無く、Python3 以外の言語もほぼ読み書きの経験がありませんでした。

事前に読んだ様々な OSCP 合格体験記から、コース資料に時間を掛けずにラボを中心に取り組んだ方が良いと理解していましたが、セキュリティ分野の初学者の私にとっては思いの外コース資料の内容が面白く、隅々までじっくり読んでいました。

私が取った勉強方法は、コース資料を最初から最後まで順に読み進め、エクササイズと呼ばれる練習問題を全て解いていきました。その後、ラボを解きながらチートシートにコマンドをまとめていきました。初学者でなければコース資料を読み飛ばしても良いと思いますが、ボーナスポイントの条件にエクササイズを解くことが含まれているため、ボーナスポイントが欲しい場合はコース資料を読むことが必要になりそうです。

マシンのメモやチートシートは全てマークダウン形式でまとめて GitHub にプライベートリポジトリとしてバックアップしていました。私のチートシートは少し変わっていて、Nmap のスキャン結果に表示されるサービス名毎にまとめています。例えば、139, 445番の SMB は Nmap では netbios-ssn, microsoft-ds というサービス名で検出されます。そのため、netbios-ssn.md, microsoft-ds.md というファイルに SMB に関する列挙やコマンドをまとめるといった感じです。このようにサービス名毎の md ファイルを作成することで、マシンを解く際のメモを動的に作成することができます。具体例を挙げると、Nmap のスキャン結果が下記だったとします。

image-20240818175608018

この結果を Nmap の -oG オプションでファイルに保存し、ファイルをパースすることでサービス名を抽出します。抽出したサービス名に .md を付けたチートシートファイルを連結することで、スキャンしたマシン上で稼働しているサービスのみのチートシートがまとまったメモが出来上がります。

image-20240818181015503

自分の IP アドレスやマシンの IP アドレス・ポート番号の置換も行っているため、基本的にはコピペでコマンドを実行することができます。Nmap のスキャン結果からメモを作成する部分はスクリプトを書いて自動化しているので、マシン毎にメモを作る手間はありません。さらに、マシンを攻略している途中で内部サービスを発見した場合に、任意のサービスをチートシートを追記するスクリプトなどもあったりします。

OSCP 1回目(PEN-200 開始から5ヶ月)

2022年11月11日に1回目の OSCP を受験しました。

PEN-200 を3ヶ月コースで開始しましたが、コース資料を読み終わるのに2ヶ月要してしまい、ボーナスポイントの条件達成に必要なラボを解く時間が1ヶ月では足りなかったので1ヶ月延長しました。この時点でラボを38台解き、HTB のランクは Script Kiddie でした。

試験はスタンドアロンのユーザーフラグ2つの20点とボーナスポイントで30点という結果でした。

試験の詳細は書けませんが、初期侵入、権限昇格共に列挙力が足りないと感じました。

OSCP 2回目(PEN-200 開始から9ヶ月)

2023年3月6日に2回目の OSCP を受験しました。

PEN-200 をさらに1ヶ月延長し、ラボを53台解きました。OffSec が提供している HTB に似たサービスに Proving Grounds というものがあり、これを2ヶ月契約して Linux マシンを20台、Windows マシンを10台解きました。

試験はスタンドアロンのユーザーフラグ3つとルートフラグ1つの40点とボーナスポイントで50点という結果でした。

Active Directory セットは2台目の権限昇格ができず、スタンドアロンも Windows マシンの権限昇格ができなかったため Windows の権限昇格が弱いと感じました。

OSCP 3回目(PEN-200 開始から1年7ヶ月)

2024年1月20日に3回目の OSCP を受験しました。

Windows の権限昇格が弱いと感じたため、Proving Grounds で Windows マシンを10台解きました。HTB は Hacker ランクでした。

試験開始から10時間時点で、スタンドアロンのユーザーフラグ1つとルートフラグ1つの20点、Active Directory セットの Domain Controller フラグ1つの40点、ボーナスポイントの10点で合格点である70点を取ることができました。ただ、PEN-200 のコースが新しくなってしまったので、古いコースで取得したボーナスポイントが本当に有効なのかどうか確認する手段がありませんでした。そこで、試験監督ツールのチャット機能を使って、私がボーナスポイントの条件を満たしているか聞いてみました。最初の回答は、試験ガイドに書いてある通りです。というテンプレ回答でしたが、コースが変わってしまって自分で確認することができない旨を伝えると調べてくれました。

合格点に達していることを確認したので、レポートを書きました。試験開始から18時間時点でレポートが完成し、時刻も午前6時で眠かったので一度睡眠を取りました。就寝後3時間半で目が覚めてしまったので、試験終了までの2時間半を使って残りのマシンに取り掛かりました。結果として、スタンドアロンのユーザーフラグ1つとルートフラグ1つの20点を追加で取ることができました。試験終了後、追加で取ったフラグ分のレポートを書いて提出しました。減点が無ければ90点なので、余程のミスがなければ合格しているであろうと思っていました。

しかし、試験結果のメールがなかなか届かないので、だんだん自信がなくなっていったのを覚えています。試験を解いている時よりよっぽどドキドキしました。

レポート提出から5日後

合格通知を受け取ることができました!やったね!

image-20240819190303686

これから挑戦しようと考えている人へ

HTB と OSCP のマシンは傾向が異なりますが、HTB の Hacker ランク程度の実力があれば OSCP に合格できると感じました。私自身も Hacker ランクになってすぐに合格したので、1つの目安になるかと思います。

ただ、先述した通り HTB と OSCP のマシンは傾向が異なるので、PEN-200 を受講しようか迷っている、または PEN-200 に備えて準備がしたいという方には Proving Grounds をお勧めします。Proving Grounds は OffSec が作成しているマシンも多く存在し、OSCP の過去問を解くこともできます。難易度も HTB の Easy より優しめな問題が多いので、HTB が難しいと感じる方にもお勧めです。

最後に、一緒に OSCP に挑戦する仲間が欲しいという方は、私と友人で運営している Discord のコミュニティがあるので Twitter で連絡ください!

最後まで読んでいただきありがとうございました。

Tags: offsec pentest