2024年4月27日にOSCP試験を受け、無事に合格したのでその記録です。
筆者の背景・受験の理由
高専から大学院まで9年間の情報系学生を経て、現在は脆弱性診断・ペネトレーションテストや研修講師対応に従事する4年目社員です。HackTheBoxは現在までに162台を攻略・writeup作成をした程度の経験値です。
OSCPはペネトレーションテスト関係の資格としては有名であり、デジタル庁の『政府情報システムにおける脆弱性診断導入ガイドライン』で推奨要件に入っていたり、経済産業省の『情報セキュリティサービスにおける技術及び品質の確保に資する取組の例示』でも専門資格として掲載されていて、資格単体としても価値があります。加えて、普段の業務を通して偏りがちな知識・技能を一度体系的に学びなおしてみたいという思いがありました。
OSCPとは
OSCPはOffSec社が提供するペネトレーションテストに関する資格です。PEN-200というトレーニングコースに対応しており、23時間45分の監視付き実技試験と24時間の報告書作成により合否が判定されます。
勉強方法
会社負担でLearn Unlimitedに加入することができたので業務の合間を縫って勉強していました。2023年7月15日から開始してOSCP試験を受けたのが2024年4月27日です。途中経過は下のポストのツリーを見ると(ちょくちょく途切れていることが)分かります。Unlimitedの割にはゆったり勉強してますが、しっかり内容を修得できたと思います。
今日からOffSecのLearn Unlimited入ります。最低限OSCPは取ります(宣言効果)。 pic.twitter.com/feWHzVk11p
— pome (@pome_11) July 15, 2023
実はしばらく前にコンプしてた pic.twitter.com/ATRT1tQx10
— pome (@pome_11) April 28, 2024
勉強はPEN-200の内容に沿って、TEXT+LABをすべて完了し、その後CHALLENGE LABで練習を行いました。
TEXT+LABに関しては一通りブラウザで翻訳をかけつつテキストを読んで内容を頭に入れた後に、演習環境にVPNで接続しKali Linuxで攻撃練習を行うというものでした。流れとしてはHTB Academyが似た形式で提供しているので、自分に向いているか確認したい人は先に安く始めるのも良いかもしれません。内容としては既知のものが多かったですがもともとHTBで鍛えていた自分にとっては体系的に学ぶ貴重な機会でした。TOPICSの中では他で得られにくい知識として報告書の書き方が好きでした。証跡の取得方法や、技術者ではない顧客に対しても分かりやすい構成にするための工夫は本当に大事だと思います。診断系は脆弱性を見つけてドヤ顔するためにしているわけではなく、システムを守る方法を探るためのものなので。
CHALLENGE LABに関しては時間をかけながら徐々にこなしていきました。全部でマシンが6セット57台あり、全台解いてwriteupを書き上げるのはとても時間がかかりました…。OSCP試験で出てきたマシンはCHALLENGE LABで見たものより難易度が高いように感じましたが、何台もあるLABを少しずつ攻略していくのは楽しかったです。なお、試験の合格だけ目指すのであればCHALLENGE LABはすべて解かなくても受かるとは思いますが、実際に手を動かす練習としてすべて解いてwriteupを書くことをおすすめします。
また、ボーナスポイントとしてLABの80%とCHALLENGE LABの30台を解くと試験における10点分が得られるので最低限ここまでは進めることを推奨します。
予約や事前準備
海外資格なのでゴールデンウィーク中は人が少ないだろうと思い、謎の自信が湧いてきた4/25夜に4/27 9:00で予約しました。ちなみにCCSPの受験に関しては新宿のテストセンターが混みそうだったのでゴールデンウィーク入る前の4/23に駆け込みました。
事前準備に関してはOSCP Exam Guide、Proctored Exams、Proctoring Tool Manualを読み通し、要件に関する記事を読み準備を進めました。まずは身分証明書としてパスポートを用意しましたが、念のため写真を撮影しいつでもディスプレイに表示できる体制を整えました。また、カメラについてはAnker PowerConf C202を購入し、顔と体の半分と実際の環境を映すという要件に従い、正面から見て右前あたりに配置していました。そういえばダイソーのスマホアームは位置の微調整にも使えて便利です。
ディスプレイに関しては最大4台までの制限があるため、私は普段使っているノートPC+27インチ4枚の環境から1枚はずす必要がありました。あとは部屋を片付けました。ワンルーム暮らしなのにワンルームからディスプレイや電子機器を追い出す必要があったので大変でした…。
前日の準備
技術要件にも記載がありますが、テストセッションの発行を依頼してOSやWebカメラ、画面共有方法の確認を行いました。リクエストを送信して1時間ほどでメールが届くので直前でも安心です。本番で焦って失敗すると怖いので事前に確認することを強く推奨します。
また、24時間の試験なので食料調達も事前に行う必要があります。私は省力のため冷凍食品とカップ麺、モンスターエナジーと緑茶、ラムネやグミや飴、シャトレーゼの和菓子・洋菓子、パンなど大量に買い込みました。買ったは良いもののほぼ食べなかったわけですが…。
あと前日は良く食べ良く寝ましょう。これに尽きます。
当日の内容
朝の9:00開始でメールには15分前に入室するように案内されていましたが、20分前くらいには入室してカメラと画面共有を準備してました。途中で試験官がチャットに入ってきたので、指示に従いパスポートや部屋を見せて準備を進めました。時間になるとVPNファイルがメールに届くので、あとは指示に従い接続を行いました。
試験の内容には触れられませんが、結果として独立マシン1台(20点)+ADセット(40点)+ボーナスポイント(10点)の70点でした。独立マシン1台は最初の数時間で解き、ADセットの最初の段階で12時間ほど溶かし、利確として証跡確保と再現手順の記載を行い、これで23時間45分が終了しました。寝てもいなければ食事もお菓子で済ませ、モンエナとラムネで眠気を消して戦いました。
メモの記載についてはVisual Studio Codeを使用していました。下記のような構成でローカルにフォルダをつくり、フォルダごとVS Codeに読み込ませる形です。他の人のブログではカメラでパスポートを上手に写せないときのためにパスポートの画像を用意しておくと良いという話があったのでpassport.pngを用意したり、あとはref配下にはHackTheBoxで使っているコマンド集やトレーニングを行いながら作成したOSCP用チートシートを入れています。世の中には便利なクラウドサービスもあり、そちらを使ってる人も多いようですが、顧客の情報を無暗にクラウドに上げて管理することはないだろうなと思い古き良きローカル管理にしました。
実技試験終了後、7時間ほど寝た後に報告書を作成しました。報告要件に付録のWord テンプレートを使用し、要件に気を使いつつ最終的には35ページになりました。上層向けのエグゼクティブサマリと、担当者が再現できるだけの詳細な手順を記載することを心掛けました。運良くレポートでは減点されなかったため、合格ラインぎりぎりの70点での合格です。
CEH Practical試験と比較して、攻撃して終わるだけでなく報告書が必要な点は好ましいと思いました。実際の業務でも叩いて終わりということはなく、しっかり推奨策を考え顧客に提示できる必要があります。ちなみに推奨策を記載する際にはIPAの『安全なウェブサイトの作り方』やMITRE ATT&CKの緩和策が役に立つと思うので、推奨策の根拠を示すという意味でもおすすめします。
合格通知
5/3 3:54にメールでOSCP合格の通知が届きました。
報告書の提出確認メールが4/29 3:30なので報告書の審査には4日間かかったことになります。ネットの情報だと数時間や2日間という意見が多かったので待ってる間はドキドキでした。
exam
|---data
|---exam
|---machine
|---pic
|---ref
|---report
感想
「たとえ不合格になろうとADセットお前だけは絶対に倒す」という気持ちが強すぎて合格ラインギリギリになったのは悔しいところですが、実際に手を動かす試験だったので楽しかったです。監視体制との調整もせず、アカウントロックや送信元制限を気にせず総当たりしたり、検証もしてない野良PoCを叩きつけたり、壊してもrevertかけられて、本番環境と比較すると気が楽に叩けるのは本当に良いですね。
あと、十分に知識・技能がないと合格できないとは感じましたが、(実際に落ちたプロを複数見ていることもあり)運次第ではプロでも落ちるとも思いました。イメージとしてはIPA試験の午後問ガチャに近い運要素があります。試験中に攻撃が全然刺さらないときも含め、諦めない気持ちが試されている気がしました。
今後
5/1にOSWA試験受けたので受験記を書きます→書きました。
あとOSWPもゴールデンウィーク中に受けたいので勉強します→受けました。