OSCPにTry harderした話 in 2023

## OSCPとは
・米国のOffsec社が提供するペネトレーションテストの認定試験
・完全実技の試験で試験時間は23時間45分
・試験終了後24時間以内に英語のレポートを提出
・SQLmapなどの自動エクスプロイトツールの利用不可
・Metasploitは1台のマシンに対してのみ利用可能

## Try harder開始時のスキルレベル

■資格関連
　・情報処理安全確保支援士
　・CISSP
　・CISA

■技術スキル
　・CTFはビギナーのものを1,2問解けるか解けないかくらいのよわよわレベル
　（それ以降CTFはやっていないので、未だによわよわレベルだと思います）
　・Linux：最低限の操作ができるくらい
　・Windows：業務利用＋αで触れる程度、PowerShellは使用経験なし
LinuxやWindowsの知識はほとんどありませんでしたが、当時からセキュリティ関連の技術書が好きで、Burp SuiteやMetasploit等の有名どころは少しだけ触ったことがありました。

■英語力
　・不明（得意ではない）
10年ちょっと前（学生の頃）はTOEIC400点台のよわよわレベルでした。それ以来、TOEICは受けていないため現在どのくらいのレベルかは不明です。
得意ではないものの、英語に対してそこまで抵抗感はなくセキュリティ関連の技術書や記事は翻訳機能を活用しつつも英語のものを読むこともあります。


## OSCPに挑戦した背景
上述の通り、セキュリティ認定資格はいくつか持っているものの技術スキルがほとんどない頭でっかちな状態だったため、技術スキル醸成のためにOSCPに挑戦しました。


## OSCP合格までの道のり

#### 2022年9月　PEN-200 開始！

Offsecのトレーニングには、教育コンテンツが90日利用できるコースと1年間利用できるコース（Learn One）の2つがあります。
私のスキルレベル的に90日では合格はおろか目的である技術スキルの醸成すらままならないと想像し、OSCPのトレーニングコースであるPEN-200のLearn Oneを申し込みました。

まずは全モジュールのテキストを一通り読み、その後にエクササイズ（モジュールの途中や末尾にある課題のようなもの）に取り掛かりました。
当時のコースはLinuxのコマンドラインやbashスクリプトのモジュールがあり、Linuxに詳しくない私にとって非常に勉強になりました。
※後述しますが2023年にPEN-200に大幅アップデートがあり、現在はLinuxの基礎のモジュールはPEN-200からは無くなっています。

エクササイズの答えはどこにも記載されていませんが、OffsecのDiscordにヒントが記載されているため、そこでヒントを検索しながら全てのエクササイズを完了しました。
自らDiscordでヘルプを求めることもできますが、検索すれば知りたいことは大体出てきたため投稿することはしませんでした。

期間については、おおよそ2ヶ月の期間をかけて取り組んだと記憶しています。

#### ラボ開始！
一通りモジュールの学習が終わり、ラボに取り組みました。
2022年のラボはいくつかに分割されたネットワークの中に約70台のマシンがありました。
単独で攻略できるものもありますが、中には横展開や他マシンで入手したクレデンシャルを利用しながら攻略するマシンも存在しており、一筋縄ではいきませんでした。

ラボについても答えはどこにも記載されておらず、Discordでヒントを検索しながら取り組みました。
（ラボについても自らDiscordへの投稿はしませんでした）

2022年のラボは最終的に47台のフラグを提出しましたが、ほとんどがヒントを見ながらの攻略となりました。

余談ですが、この期間中にeJPT（eLearnSecurity Junior Penetration Tester）というペネトレーションテスターの入門試験のバウチャーがブラックフライデーセールで50%オフで販売されていたため、こちらを購入して腕試しをしました。（無事に合格！）


#### Try Harder、中断。
年明け頃からラボの攻略が思い通りに進まなくなり、合格の見通しが立たない状況が続いたことからモチベーションがやや低下していました。
加えて業務でCEHの取得を求められ、そちらの勉強も並行して行っていたため結果的に2ヶ月ほどラボへの取り組みを中断していました。
（またまた余談ですが、CEHも無事に合格しました！）
※途中、Offsec社から「しばらく不在にしているみたいだけどトレーニングを再開しませんか？」といった内容のメールが来ました。


中断はしていたものの試験を諦めたわけではなく、Hacking ArticlesやHackTricksを活用して自身の理解が不足している部分を読み込んでいました。
振り返ると、この中断期間も自身の頭を整理するための大切な期間だったと感じています。

#### PEN-200(2023) 開始！
2023年3月頃にPEN-200コースが大幅にアップデートされました。
先述の通りLinuxの基礎がモジュールから無くなったことに加えて、Buffer Overflowも無くなり、Active Directoryの内容が充実化されました。
また、ラボの内容がChallenge 1～Challenge 6という形に変わり、Challenge 4～6の3つが試験さながらの環境となっていました。

Buffer Overflowは基礎的な部分は理解していたものの、試験に向けた準備には未着手だったため私にとっては嬉しいアップデートでした。

この大型アップデートの通知をきっかけにトレーニングを再開しました。
2022年から受講していたメンバーにも2023年環境は提供されたため、こちらのコースも活用させていただきました。

2023年のエクササイズは理解の浅い内容や苦手な分野を中心に部分的に取り組みました。
特にActive Directoryは合格に向けて非常に重要な内容であるめ、理解できるまで何度も確認しました。

ラボはChallenge 1を半分ほど攻略し、Challenge 4～6はほぼ全てのフラグを提出しました。
この時点でもヒントを利用しながら攻略しており、合格の兆しは見えていませんでした。

## 2023年6月 いざ、OSCPに挑戦！

#### 合格の条件
OSCPは最大100ポイントの試験で、70ポイント獲得すれば合格となります。
　・独立したマシン：3台（20ポイント/台）
　　内訳は以下
　　　- 低権限：10ポイント
　　　- 権限昇格：10ポイント
　・Active Directory：1セット（40ポイント）
　　　-ドメインコントローラ侵害でポイント獲得
　　　- 部分点は無し
　・以下の条件達成でボーナスポイント付与（10ポイント）
　　　- エクササイズで80%以上のフラグ提出
　　　- 30台以上のラボでフラグ提出

#### 試験に向けた作戦
Learn Oneは2回試験を受けられるため、1回目は試験の感触を確かめようという気持ちで受けました。
とは思いつつもあわよくば合格も狙っており、各マシンの初期侵入の糸口さえつかめれば合格できるかもしれないという気持ちでした。
（ラボ攻略時に検索したヒントのほとんどが初期侵入の部分だったため）
また、ADセットについては初期侵入と権限昇格さえできれば残りは攻略できるという感触だったこともあり、網羅的な列挙がOSCP合格の鍵だと考えていました。

合格か不合格かのきわどいラインの戦いになることが想像できたため、ボーナスポイントは必須だと考えていました。
（トレーニング受講の第一の目的が自身のスキル向上だったため、特に意識せずにボーナスポイントは獲得できました）

ボーナスポイント獲得した場合、合格に向けて以下の3つのルートがあります。
　1. 3台侵害（権限昇格まで）
　2. ADセット＋1台侵害（権限昇格まで）
　3. ADセット＋2台侵害（低権限まで）

1については現実的ではないと考えており、2か3のどちらかのルートでの合格を目指しました。
どちらで進めるかは明確に決めていませんでしたが、おそらく3が一番確率が高いと想像していたため、権限昇格よりも低権限の取得に重点を置こうと考えていました。

また、70ポイントに到達しても正確な英語のレポートが書けないと不合格になってしまうため、試験時間中にある程度までレポートを完成させたいと考えていました。

#### 試験当日
金曜日の13:00開始の試験を予約しました。
試験開始15分前に接続し、身分証明書の提示などの事前準備がスムーズに進み試験が始まりました。

まずは、各マシンに対してNmap。
そして合格の肝となるADセットの攻略からはじめました。
1時間ほど試行錯誤しましたが糸口がつかめず、別のマシンに切り替えました。

ADセットと各独立マシンを行き来しながら2.5時間ほど経過し、ようやく1台の独立マシンの低権限を取得しました。
そして、そのままの勢いで権限昇格することができました。
権限昇格には苦戦すると考えていたため、これは嬉しい誤算でした。
この時点で16:00、OSCP合格に向けて残すところはADセットのみとなりました。

10分ほど小休憩を挟んで再度ADセットの攻略に取り掛かりました。
とはいえ、自分の中では列挙し尽くした感があり、今回は不合格かという気持ちになりながら取り組んでいました。
半ば諦めムードで列挙し続けると、ふとした瞬間に初期侵入の糸口を発見しました。（当初の想像通り、列挙が合格の鍵となりました）

その糸口をもとに初期侵入が成功し、その後の権限昇格も含めてとんとん拍子で進み、初期侵入から30分ほどでドメインコントローラまで侵害が成功しました。
この時点で18:00、想定していたよりも早く合格ラインに到達しました。

合格ラインには到達しましたが今まで英語で文章を書く機会がなく、レポートで減点される可能性を懸念していたため、
できればもう1台低権限を取得しておきたいと考えていました。

またまた10分ほど小休憩を挟み、引き続きマシンの攻略に挑みました。
結果的に、2時間ほどかけてもう1台の独立マシンの低権限取得＆権限昇格ができました。
この時点で20:30、食事とシャワーとために長めの休憩を取りました。

22:00頃に試験再開し、1台のマシンを残してまずはレポート作成に取り掛かりました。
日本語でレポートがまとめ終わったら寝ようと思っていたのですが想像以上に時間がかかり、就寝したのは2:30頃でした。

起床後に残りの1台の攻略も試みようと考えていましたが、アドレナリンが出てほとんど眠りにつけず翌朝は頭が回っていない状態でした。
レポートに備えて残りの1台は少しだけ着手して諦め、最後にレポートを見直して早めに試験を終了しました。

試験終了後、休憩を挟みつつレポートに取り掛かり、夕方過ぎにようやく完成しました。
想像以上にマシンを攻略できたため、想像以上にレポートに時間がかかりました。嬉しい誤算です。
スクリーンショットを多用していたため、最終的には60ページ弱のレポートとなりました。

合否の通知は10営業日以内との記載がありましたが、私の場合は2日も経たずに合格メールが届きました。

## 試験を終えて
私にとっては今まで受けた試験の中では一番難しい試験でしたが、一番達成感がありました。
元々の技術スキルが低かったことから自信が持てず、ラボ攻略時には度々Discordのヒントに頼り、最後まで試験への合格の道筋が見えない状況でしたが
試験を終えた今はOSCPに合格できるスキルが十分に醸成できていたと感じます。
（今となっては、この自信の無さが結果的に学習への意欲にもつながったとも感じます。）

OSCPに合格して何かが急に変わったわけではありませんが、OSCP合格に向けた学習によって得たスキル・知識は、様々なリソースから得られるセキュリティの情報の理解度をより深めるための一助になっていると強く感じます。

また、トレーニング開始時はOffsecの認定資格はOSCPに合格できれば十分だと考えていましたし、試験終了直後はこんな大変な思いはもうしたくない！とも感じていましたが、合格後の現在はOSCPの上位資格であるOSEP等にもチャレンジしたいと思うようになりました。
Try Harderの精神が少しは培われたのかもしれません。

## 最後に
今回がはじめての受験記ということもあり拙い文章となりましたが、ここまでお読みいただきありがとうございました。

最後に、OSCP受験前から合格までの間に私が気になっていたことを（私の主観を含めて）メモしておきます。

・Metasploitは利用した？
　　→基本的な使い方は把握していましたが、結果的には利用しませんでした。使える準備はしておくと安心だと思います。

・英語力はどれくらい必要？
　　→翻訳機能が優秀なこともあり、英語力よりも英語に抵抗がないことが大切だと感じました。（当然ながら英語力があるに越したことはないですが…）
　　-コースのコンテンツ
　　　ブラウザの自動翻訳機能で内容は理解できました。
　　-試験レポート
　　　Google翻訳やDeepL翻訳を活用して作成しました。
　　　英文がおかしくても内容がある程度理解できるよう、スクリーンショットは細かい内容を含めてたくさん貼り付けました。

・ラボのヒントは使うべき？使わないべき？
　　→意見が分かれるところかとは思いますが、私は少なくともスキルが不足している間は行き詰った場合には積極的に使うべきだと考えます。
　　1台のマシンを試行錯誤して攻略することはもちろん大切だと感じましたが、スキルが足りていない時期は侵入手法のバリエーションを増やすことも同じくらい大切だと感じたためです。
（何をもって十分なスキルと言えるかは難しいところではありますが…）

・PEN-200の前にTryHackMeとかHackTheBoxとかはやっておくべき？
　　→私はPEN-200と並行して少しだけTryHackMeをやった記憶がありますが、PEN-200のコース内容で十分に網羅できていたため必須ではなかったと感じます。
　　期間の短い90日コースであれば、やっておいた方がよいかもしれません。
　　　
・試験のレベル感は？
　　→当然ながら難易度の高い試験ではありますが、コース開始時はスキルが無くてもPEN-200の内容をみっちり勉強すれば十分に合格が狙える試験だと思います。
　　　大幅アップデートでのAD関連モジュールの充実化・Challenge 4～6の提供により、従来のコンテンツと比べてより試験に即した内容になったため、試験の敷居自体は少し下がったのではないかと感じます。