OSCP受験記

# はじめに
OffensiveSecurityのOSCPに合格したので、勉強に参考になる点があればと記載してみました。
OSCPに関する受験記事はすでに多くの先輩方が公開いただいており大変参考にさせていただきました。その一方で、変化し続ける試験ですので、2022/09時点での参考になる部分もあるかと思い記載させていただきます。「OSCPって今日初めて聞いたんだけどどんなやつ？」って人に向けて書きました。

# 試験概要　2022/09時点
主催：Offensive Security
試験名：Offensive Security Certified Professional(OSCP)
試験内容：実技・４システムの攻略(AD1set+独立した3台)　＋脆弱性診断レポート
試験時間：実技-23時間45分、レポート-試験後24時間以内に提出
合格基準：70ポイント以上(ADsetは40,各システムは低権限10高権限10の合計1台あたり20,別途ボーナス10あり)
※試験だけ受験したい場合でもトレーニングとセット購入になります。

# コース詳細
OSCPを受験するには、PEN-200というオンライントレーニング（＋PDF）＋ラボのセットを購入する必要があります。このPEN-200は、単コースのみの90日間を購入するか、年サブスクで購入するかの選択肢があります。※2022/09現在時点では30日間60日間という選択肢は無くなっています。
年サブスク（Learn One）
OffensiveSecuirtyのレベル200以上のコースをどれか１つ選択して1年間使えるサブスクです。PEN-200も選択することができ年サブスクなので365日間使えます。試験も2回までのチャレンジが含まれます。さらに各レベル100コースやワイヤレスアタックのコースなどもついてきます。
※OSCP関連の記事を見るとよく「PWK」と書いてある場合がありますが、「PEN-200」の昔のコース名なので、OSCPに向けて参考なる情報です。

# 費用（実際に支払った為替レートで記載）
### 直接かかった費用
[Lean One](https://www.offensive-security.com/learn/)($1999)※・・・235,336円
パスポート取得（１０年）・・・16,000円
Webカメラ(ビックカメラ特価品)・・・657円
[pentest.ws](https://pentest.ws/)の３ヶ月サブスク($9.95)・・・1,383円
※LearnOneは2021年末まで$1999キャンペーンやってました。
※gmailでアカウント登録したのでコース開始時に政府発行の英語で記載の本人証明書が求められました。パスポートぐらいしか思いつきませんでした。受験時にも改めて提示が必要になります。

あ、ちなみに会社からの補助は０で、全部自己負担です。

### 間接的にかかった費用
試験日に家族を旅立たせるホテル代・・・6,000円
試験日に家族を旅立たせるイベントチケット代・・・6,000円
試験を言い訳に10年ぶりに交換したデスクトップPCの中身（MB(Z690)＋CPU(i9-12900)＋MEM(DDR4 64GB)）・・・116,402円
試験を言い訳に２画面あった方が効率いいだろうと思って増設したモバイルディスプレイとディスプレイアーム・・・26,119円

# きっかけ
ユーザ企業でサイバーセキュリティの仕事やっているので脆弱性診断結果の評価やTLPT企画などを担当することがあり、委託先の多くの方がOSCPを持っていたのが印象的でした。セキュリティ関係の方なら聞いたことぐらいはあるのかなと思います。ただ試験時間が24時間近くに及ぶことも知っていたので二の足を踏んでいました。
そんな中で2021年12月にLog4jの脆弱性が発見・公開され、仕事で何年かぶりの徹夜をしました。実際に徹夜をしてみるとまだまだいけるなと手応え（何の？）を感じたのでOSCPも前向きに考え始めました。
さらにLearnOneという年サブスクの仕組みができて年末まで20%offだったので、20万越えの自己負担に悩みましたが、SANSと比べるとラボで1年間遊び放題で超安いんじゃね？と最後は金銭感覚がおかしくなり大晦日のキャンペーン最終日にLearnOne申し込みました。

# 環境構築
VMware Workstationは前からデスクトップPCで使ってましたので、そこにkali linuxを新しく導入して始めました。Kali linux 2022.01を使ってて、2022.02が出たのでアップデートしたら動きが若干おかしくなりました。直すのにちょっと時間がかかったので途中からは必要時以外はアップデートは避けるようにしました。試験が終わったのでそろそろ2022.03に上げていきたいと思います。

調査記録やチートシート作成するアプリは、公式ではCherrytreeを勧めていましたが、本格的に動き出した試験の３ヶ月前からはSaaSのpentest.wsを課金して使いました。３ヶ月で$10いかないくらいなのでそれほど負担ではないかなと思います。SaaSなので試験中に止まったりすると嫌だと思ってオフライン環境もできるProも検討しましたが、一桁違う値段なので安定稼働を祈ってHobbyのままでいきました。pentest.wsはサービス毎にチェックリストやノートを作れたり、クリックするだけでコピーできるコマンドも作成できたりして、自分だけの武器を作っていく感覚で楽しめました。

他攻撃ツール以外で導入したソフトとしては、複数のマシンを同時に進めたりしたので、画面のワークスペース毎に付箋アプリ(KNotes)を使って対象のマシンを表示させていました。
こんな感じ
<img width="400" alt="ファイル名" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310933/dea5ff81-d0f6-d69f-a9f6-979cb275c022.png">

あと、VPNは公式ではターミナルからopenvpnコマンドを使う方法が案内されていますが、何度もラボしたりするので右上に表示されているKali LinuxのVPN接続に登録しておきました。クリックしていくだけでつながるし、割り当てられたIPが右上に出るので、リバースシェルやるときにこのPCのIPいくつだっけ？って時に右上見ればすぐわかって便利。
右上のアイコンからVPN構成を作成
<img width="300" alt="vpn01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310933/4b46ef9b-02fa-b99c-ac5c-a8a37daf1bde.png">

・「＋」を押してVPNの構成をインポート
<img width="300" alt="vpn02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310933/e057c34f-d6d0-1b1c-7c96-5b5a93f0656b.png">

・インポートした後、IPv4設定のタブから「ルート」ボタンを押して「この接続をそのネットワーク上のリソースのみに使用」にチェック入れると何かと便利。
<img width="300" alt="vpn03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310933/5eea0d55-bf16-fa6d-34f0-c8a25ab3e76d.png">

いろんなexploitを実行していくのでけっこう環境がぐっちゃになります。特に昔のexploitはpython2で動かすことが多いですし、逆にADを攻める時はimpacketが超強力なのでpython3とpython2の環境使い分けには注意です。いつでも壊れた時に戻れるようにVMのスナップショットやクローンはマメにやってました。


# 勉強方法
OSCP前にHackTheBox(HTB)をある程度やって、、、みたいなのが定番っぽいのですが、年サブスク買ってるのでPEN-200のトレーニング教材からゆっくり進めました。HTBは無料でできる範囲のstarting pointをやったぐらいです。技術的な範囲はこの教材とラボで十分カバーできると思います。あとはどこまでやり込めるか時間との戦い。

教材は全てWEBアプリで提供されます。過去に受験された方の記事を見ると「何百ページのPDFが・・・」みたいなのがありますが、現在は、WEBアプリで提供されており、PDF発行は1回（LeanOneの場合）請求できてその時点の最新のがもらえるようです。
WEBアプリなのでブラウザの翻訳機能が使えます。chromeの翻訳機能でどんどん日本語で読み進めていけます。DeepLも途中で有償課金者へのブラウザ翻訳機能が提供されましたので使ってみましたが、ちょっと表やコマンドが崩れたり翻訳が遅かったりするので、基本ブラウザの翻訳機能で読み進めて、よく理解したい部分などだけDeepL使って翻訳にかけてました。
あとモバイル対応は現時点では全くいけてません。PCで見るのに最適化されているようで普段は良いですが、どっかに移動中にiphone等で見ようとしてもUIが最適化されていないためストレスが溜まるだけです。またビデオも提供されるのですが、もちろん英語なので私の英語力では試聴後に頭痛を起こしてしまいましたのでほぼ見てません。
※LeanOneという年サブスクでの申し込みのため単コースと若干の違いはあるかもしれません


Kali Linuxの基本的な使い方から入っていきますので、それほど経験なくても入りやすいかと思います。年サブスクならPEN-100もついてきますのでPEN-100を軽くやってもいいと思います。
各章の終わりにはエクセサイズ問題が付いていて、実際にVPNをつないで攻撃用マシンから操作してflagを手に入れて入力するという形なのでそれなりに楽しめます。ただ、この問題何すればいいの？みたいな設問もあるので、困ったらDiscordなどを確認しながら進めるのも良いかと思います。このエクササイズ問題は試験のボーナスポイントの要件にもなりますので全部やり切りたいところです。

トレーニング教材が終わるといよいよ目玉教材の７５台(2022/09現在)のラボマシーンとの戦いです。まぁ経験者はいきなりラボから始めても良いかと思いますが。
トレーニングが終わった直後ぐらいだとまだ発想や攻撃手法の引き出しが少ないかと思いますので、公開されている[Learning Path](https://help.offensive-security.com/hc/en-us/articles/360050473812-PEN-200-Labs-Learning-Path)の順番でやっていくと良いと思います。Discordの検索やフォーラムで対象マシンのスレッドを活用しながら攻略します。フォーラムはブラウザの翻訳機能が効きますし、Discordも英語ですが、検索である程度的を絞って、DeepL等で翻訳しながら進めていくことができます。特にDiscordでのやり取りを調べるのはオススメで、トレーニング教材にはなかった便利なツールや情報がありますので、すんなり攻略したマシンでも他の人の考え方や使ったツール、躓いているところなど参考になります。
私もテキストに記載のポートフォワーディングだけだと使い勝手が悪くて困っていてchiselやsshuttleをDiscordで知り、休みの日丸一日これらのツールでラボ内実験を色々してました。（結局プロキシ先のサーバにnmap入れてスキャンするのが一番早くて正確でしたが・・・）。別解の検証が新しいツールでの攻略もこのラボの楽しみ方の一つだと思っています。
試験の３週間前ぐらいからは仕事と寝る時以外はフルコミットするTryHarderモードにしましたが、試験前までには41台しかクリアできませんでした。試験後に残りの台数をやって完クリ目指したいと思います。ちなみに[PEN-200のオンボーディング](https://help.offensive-security.com/hc/en-us/articles/360059535932-PEN-200-Onboarding-A-Student-Introduction-Guide-to-the-OSCP)見るとラボのクリア数41to50だと合格率は67%っぽいです。

・試験直前の進捗状況
<img width="300" alt="progress.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310933/39d044e3-f1d8-eb75-ba05-784dbb34d26e.png">

# 試験日設定
試験日はWEBアプリ上から簡単に設定・変更できます。時間も空いていれば１時間単位で選べます。
私の場合は、試験の時は家族に旅行とか行ってほしいとお願いすると、家族から「小学校休みたくない」「休みの最終日帰宅は次の日きついから嫌」「ホテル代出せ」とか色々条件を出されていたので、必然的に３連休以上の日の初日に限定されてしまい、ほぼ選択肢がなくなっていたので、２ヶ月前くらいに申し込んで余裕で好きな時間選べました。当日1人になれる時間などを考慮してお昼12時開始にしました。

# 試験当日
こんな感じ（ADset,Bマシン,Cマシン,Dマシンと記載します）
|時間|　|
|---|---|
|9:30 |家族が１泊２日の旅に出発 |
|10:00|Webカメラに部屋映るので片付け |
|11:00|軽く食事|
|11:40|プロクターソフトに入って試験前のIDチェックや部屋確認。試験開始時間まで待機。|
|12:00|受験パック(VPNコンフィグ)がメールで届き試験開始|
|15時ごろ|初めに思いついたアイディアを各マシン一通り試して全滅（失敗）したので休憩|
|17時ごろ|ADset完了。休憩|
|20時ごろ|Bマシンのlocal|
|21時ごろ|Bマシンのproof|
|22時ごろ|夜ご飯休憩|
|01時ごろ|Cマシンのlocal|
|03時ごろ|権限昇格うまくいかないので就寝|
|07時ごろ|いつも通りswitchでフィットボクシングやって朝風呂・朝ごはん|
|08時ごろ|再開。休憩中に思いついたアイディアを試すが失敗。特にDマシンは色々アイディア思いつくが全て失敗。糸口掴めず。|
|10時ごろ|攻撃は一旦終了し、レポート用に各マシンでレポート構成考えながらスクショ祭り。|
|11:45|実技試験終了|

長めの休憩した後14時ぐらいからレポート作成開始。
途中会社のSOCから連絡がきたり、家族が帰ってきて色々対応しながら、50ページ近くのレポート(もちろん英語)が完成。19時すぎぐらいに提出して試験終了。

ポイントとしては、試験官とのやりとりは英語だったけど全てチャットだったので、翻訳ツールで入力してそれをコピペしての対応で十分（たまに日本語の方コピペしちゃったけど）。試験中は、監視しているPCからなら音楽を流しても良いとのことで(一応試験官にも確認した)、Amazon musicでいろんなプレイリスト流してました。特に深夜は2000年代の曲プレイリスト流してて懐かしさ満載でした。(普段はケータイでうたパス使ってます)

試験での緊張感の中で、なかなかアイディアが通らずに、悩んで悩んで、ふとした瞬間に気づいた糸口からズバッっと決まった瞬間が痺れますね。この快感はたまらない。上級者の人だとあんまり悩まずに作業レベルな感じでやっちゃうのかな。ちょうどいいレベルで受験できたと思います。
Dマシンが最後までシェル取れなかったので心残り。

# 合格通知
レポート提出翌日の朝に、完クリ目指してラボ攻めるかPEN-210(OSWP)※をやろうか迷いながら、Webアプリのポータルサイトにログインして、何気にEXAMのところを押すと「CONGRATULATIONS!」と出てました。
<img width="300" alt="oscp.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310933/c45d6ab5-3a5a-7b16-31f6-1dd40fa3f402.png">
はやっ。レポート出して12時間くらいしかたってないんですが。50ページ近くの私の英語で書いた大作レポートは読んでくれたのでしょうか・・・。まぁいいです。
Eメールでの合格通知は試験レポート提出して24時間ちょっとぐらいできました。このEメールに証明書発行のリンクがついていて、登録して5分くらいでデジタルの証明書がきました。最近では物理的なカードとかは発行されなくなったようです。
※LeanOneについてくるWiFiを攻めるコースです。


# 感想
OSCPの勉強を始めてみると、OffensiveSecurity社の積極的な改善姿勢に関心しました。
今年頭にはBOFが高得点だった試験を実態に合わせてAD中心の試験に変わりましたし、試験ボーナスの条件もムダと思えるような大量のスクショを要求するものからシンプルなエクササイズのflag判定+ラボ30台になりました。さらに年サブスクだったので、クラウドのレベル100コースが追加されてそちらも楽しめました。
特に試験内容を変えることは大きな反発が予想され大きな決断だったと思いますがDiscordで意見を聞きながら時代に合わせて変化していけるのは素晴らしいことだと思います。
資格に関して言えば経験者の多くが語るようにOSCPはテスターにとっては技術的にはまだまだ入門レベルだと感じます。もっと上を目指したくなります。しかしTryHarderの心構えやちゃんと自分で調べて自分のものにしていけるマインドが身についている証明でありその点で十分に評価できる資格だと思います。
正直もう一度試験受けたくてたまらないです。残りのラボやサブスクきれたらHacktheBoxとかやっていこう思います。円高になったら上位の資格にも手をだそうかと思います。