🐉

OSCP受験記(合格!!)

2024/10/01に公開

先日OSCPに合格しましたので、その記録を残します。これから受験する人の参考になれば幸いです。

最初のスキルレベル

普段は機械学習関連の仕事をしていて、webアプリケーションの開発経験もちょっとだけあります。
Pythonは普通に書けます。JavaScriptとTypeScriptは少し書けます。セキュリティの知識と経験はゼロです。Windowsはほぼ使ったことがありません。

受験までの経緯

事前勉強

2023年4月、HTB Academyを登録しました。新しい趣味が欲しくて友達のおすすめでセキュリティを勉強を始めただけで、OSCPの存在は知らなかったです。

linux basics、introduction to networkingなど基礎的なモジュールから勉強しながらHTB labsのマシンを解き始めて、三ヶ月後にhackerランクになれました。その後もHTBのeasyとmediumマシンをやり続けて、基本毎seasonなるべく毎週新しく出るマシンを解きました。自分で解いた後は必ずippsecの動画と0xdfのwriteupを見て、自分の解き方と違うところをメモして勉強しました。0xdfさんのwriteupは本当にわかりやすくて、特に列挙の部分はかなり細かく記録しているのでおすすめです。

PEN200開始、OSCP合格を目指す

2023年末にOSCP受験を目指したいと思って、大晦日にoffsecのlearn one subscriptionを購入しました。クリスマスセールと比較的円高だったおかげでちょっと安く買えました(高い、、)。

2024年1月~3月はmodule labsを80%完了、4月~5月はchallenge labsを87%まで解きました。これで10点のボーナスポイントを確保できました。

PEN200各モジュールの内容はHTB academyと比べると浅いと思いましたが、最後のcapstone labsは難しかったりします。Challenge labsは慣れるまでかなり難しく感じました。特にpivotingのところ、PEN200ではchisel+proxychainを紹介したが、実際ラボで使うとinternal network上のマシンはnmap実行するだけで何時間もかかるくらい遅く、ligolo-ngという違うツールを切り替えないといけなかったです。こういったモジュールにカバーされてない小技がまあまあ多いので、慣れるまでdiscordのヒントを参考にしながら解くほうが良いと思います。

PEN200修了後の受験準備

6-7月はproving groundsとHTBのOSCP like machinesをしばらく解き続けました。試験に落ちるのが怖かったので57個も解きました。

HTBのマシンはつまらないとレビューが低かったりするので、作者も比較的に新しい脆弱性を埋めたり、少しトリッキーなことをやらないと解けないように作っていると思います。PGはCTF-likeのマシンが少なくて、ほとんどのマシンはstraightforwardだったと感じました。PGの方が試験に出る内容と似ていると思うので、時間がない人はPGだけでいいかもしれません。

8月-受験前日はPEN200のchallenge labsをもう一度やりました(一番難しいskylark以外)。
5月解いた時はよくdiscordでヒントを探しましたが、今回は自力で解くようにしました。後から自分のノートを確認したら、初回と同じやり方で解いたマシンがほぼなかったのが意外でした。

試験当日

戦略

ボーナスポイント10点があるので、試験当日は60点が取れれば合格です。

こんな感じの戦略で攻略していく予定でした↓↓
ADセット(40点)→ スタンドアロンlinuxマシンのlocal+proof(20点)→ これで合格なのでいったん寝る → 残りのスタンドアロンをできるところまでやる
windowsは比較的に苦手なので、ADが終わったらスタンドアロンのlinuxをやる作戦にしました。

タイムライン

試験は日本時間10:00に予定していました。

時間 出来事 得点
09:45 試験監督システムにログイン。本人確認、環境確認を行う。 10(ボーナス)
10:15 exam vpnに接続。ADの列挙を始める。 10
13:10 ADマシン1のlocalをゲット。 10
14:40 ADマシン1のproofをゲット。権限昇格のfactorはすぐわかったが、exploitを動かすのが思ったより時間かかった。 10
14:50 ADマシン2にアクセスできるcredentialsを発見 10
15:00 ADマシン2のlocalとproofをゲット。post explotationが順調で、ほぼ同時にDCのlocalとproofも取れた。これでADセット終了、40点獲得。少し休憩して食事を摂る。 50
15:30 試験再開。全てのスタンドアロンのport scanをやる。スタンドアロンマシン2(windows)のスキャン結果からヒントがあって、検索したらpublic exploitが見つけた。作戦を変えてそのマシンを攻略する 50
16:10 スタンドアロンマシン2のlocalが取れた 60
18:00 スタンドアロンマシン2の権限昇格に苦戦、そして諦める。スタンドアロン1(linux)の列挙を始める 60
21:30 スタンドアロン1のlocalをゲット。これで合格点獲得できた。VMの調子が悪くなって、host machineを変えたいと試験監督に伝えた。PCを変更することはOKだが、変更するたびに環境確認が必要だった。 70(合格!)
23:50 スタンドアロン1のproofが取れた。権限昇格が思ったより複雑で、使う手法はあるHTB hard boxとほぼ同じだった。そのHTB boxのwriteupを参考にしながら無事rootに昇格できた。いったん睡眠を取る。 80
04:00 試験再開。スタンドアロン3の列挙を始める。 80
05:00 ファイルのダウンロードがうまくいかないので、host machineをもう一度変更する 80
06:00 どうしてもスタンドアロン3からダウンロードしたファイルが破損してる。マシンをリセットしたり、kaliを再起動したり、色々試したが無理だった。諦めてレポートを書き始める。 80
08:30 試験終了をリクエスト 80

レポートの構成はGitHubにあるテンプレを参考しました。Notionで書いてPDFに変換したものを提出しました。
https://github.com/noraj/OSCP-Exam-Report-Template-Markdown

土曜の朝にレポートを提出して、月曜の夜に合格メールが届きました。思ったより早かったです。

感想

ADは簡単でした。使った手法は全部challenge labにカバーされていたと思います。
スタンドアロンのlinuxマシンの権限昇格が複雑で、HTB mediumくらいの難易度だったかも(私の解き方がintended wayじゃなかっただけかもしれませんが)。

最初からADセットを攻略する作戦は正解でした。試験開始5時間目で50点が確定していたおかげで、余裕を持ってスタンドアロンの攻略に集中できました。スタンドアロン3からファイルをダウンロードできなかったのは本当に謎でした。。。ライブチャットで問い合わせすることも考えたが、vpn接続以外の質問は答えてくれない雰囲気があったし、既に合格点を獲得できたので結局しなかったです。

Offsecのexam guideにも書いた通り、試験の24時間は睡眠・食事・休憩時間も含まれている想定で、24時間をフルで使わなくても全マシンを攻略できるように設計されています。なので、keep it simpleのマインドが大事だと思いました。難しいことをする前に、列挙をもう少し細かくやると良さそうです。

注意事項

PEN200の内容、OSCPの採点ルールは常に更新される

PEN200のコンテンツと試験の採点ルールはよくアップデートされます。受験直前に採点ルールが急に変わると焦ると思うので、offsecのdiscordで最新情報をキャッチアップすることが重要です。

特に2024年11月から採点ルールが変わります。
①ボーナスポイント制度がなくなります
②ADの構成、採点が大きく変わる
現在:ADセットを最後まで攻略できれは40点。部分点はない。ADに侵入するところは自分で探さないといけない。
11月以降:ADセットは部分点が取れるようになる、最後まで攻略できなくても多少点数を取ることができる。最初からADにアクセスできるlow privilege userのcredentialsが与えられて、自分でfootholdを獲得しなくてOK。

また、PEN200のコンテンツは常にアップデートされています。例えば、2024年8月に「Enumerating AWS Cloud Infrastructure」という新しいモジュールが追加されました。Discordでは、しばらく試験には出ない、module labsの進捗はボーナスポイントの計算に含まれないというアナウンスはされていますが、いつから試験範囲に含まれるかは未定らしいです。これから受験を控えている人は受験前に確認した方がいいです。

Exam Guideに書いてなかった試験ルール

  • VMの再起動はOK。再起動する前に試験監督に報告する
  • PCの変更はOK。変更後はもう一度環境確認される

私が使っていたコマンドチートシート

https://zenn.dev/codingotter/articles/79590426fecee5

これから受験する人、good luck!!


Special Thanks
「ハッカーになってみたいかも」とか言い出して仕事辞めたあの日から、支え続けてくれた夫に感謝😭。就活しないと、、

Discussion