ラック・セキュリティごった煮ブログ

セキュリティエンジニアがエンジニアの方に向けて、 セキュリティやIT技術に関する情報を発信していくアカウントです。

【お知らせ】2021年5月10日~リニューアルオープン!今後はこちらで新しい記事を公開します。

株式会社ラックのセキュリティエンジニアが、 エンジニアの方向けにセキュリティやIT技術に関する情報を発信するブログです。(編集:株式会社ラック・デジタルペンテスト部)
当ウェブサイトをご利用の際には、こちらの「サイトのご利用条件」をご確認ください。

デジタルペンテスト部提供サービス:ペネトレーションテスト

OSCP受験記~マウス不調でもTry Harder!?~

デジタルペンテスト部の渡邉です。 普段はプラットフォーム診断を担当しています。
先日、OSCP(Offsec Certified Professional)を受験・合格しました。OSCP挑戦を考えている方に役立つ情報として下記についてブログにまとめてみました。

  • OSCP(Offsec Certified Professional)とは、試験内容
  • 業務知識(プラットフォーム診断)との比較
  • Learn Oneを利用しての試験勉強、期間
  • 試験当日の準備、攻略内容
  • 試験レポートについて
  • 試験時のトラブルと対処方法

OSCP(Offsec Certified Professional)とは

OSCP(Offsec Certified Professional)とはOffsec社(旧Offensive Security社)が提供している資格試験で、ペネトレーションテストの基礎的な知識・考え方が問われる試験となっています。
試験を受けるにはPEN-200というコースを受講する必要があります。

PEN-200 コース内容

コースの中では試験に問われるペネトレーションテストの基礎知識をテキスト+ビデオ+ハンズオンで学ぶことができます。(詳細はシラバスをご確認ください。)
コンテンツは全て英語ですが、テキストに関してはブラウザ上で読むことができ翻訳もできるため、英語力に不安のある方でも問題なく取り組めるかと思います。
PEN-200コースは現在90日プランと1年プランが選べて、私は1年プランのLearn Oneを購入しました。(以前は30日、60日が選べたようですが現在は選べないみたいです。)
プランによって試験回数なども変わってくるため、興味のある方はOffsecのホームページをご確認ください。

試験内容

  • 約48時間

    • 実技試験:23時間45分
    • レポート作成:24時間
  • 攻略対象

    • 独立マシン:3台
      • ユーザー権限でのシェル奪取で10pt、管理者権限で10pt
    • ADセット:クライアント2台、ドメインコントローラー1台
      • ネットワーク全体を侵害することで40pt

試験での点数に加えてPEN-200の演習を進めることでボーナスポイントとして10ptを獲得でき、ボーナスポイント含めて試験全体で70pt以上獲得すると合格になります。
ただここで注意が必要なのは、レポートでの減点もあり得るということです。
マシンの攻略だけで満足せずレポートもきちんと仕上げて70ptを目指す必要があります。
また、ボーナスポイントがあると独立マシン3台で合格など、合格パターンも増えるためボーナスポイントは狙いに行った方が良いと思います。

業務知識との比較

普段プラットフォーム診断では初期侵入の手前までを基本的には検査しますが、OSCPでは実際に侵入を行い、マシンによっては横展開までを行います。
そのため初期侵入の調査フェーズにおいては、新たに多くの知識・視点を得ることもできつつ、プラットフォーム診断をしていく中で得られた知識を活かせる部分も要所要所にありました。

例えば、対象マシンにポートスキャンをかけてサービスを特定し、バージョン情報等を頼りにExploitを刺すという流れはプラットフォーム診断に近しいですし、HTTPサービスが見つかった際はディレクトリスキャンをかけたり、管理画面やRDP、SSHへのパスワードクラックなどに関してはそのまま診断でも実施しているテクニックを活かすことができました。

一方で侵入後のテクニックについてはどうかというと、プラットフォーム診断では通常触れられない範囲なので新鮮味がありとても面白かったです。
DLL HijackingやUnquoted Service Pathを利用した権限昇格やMimikatzを利用してメモリから別のユーザーの資格情報を窃取し、それを基にPass The Hashして他のマシンへの侵入を試みるテクニックなどは普段診断で扱うことがない技術領域のため勉強になりました。

侵入後のテクニックに関しては、主にOSCPの演習を基本として、足りない部分はHackTheBox等の学習コンテンツを利用することで技術習得を行いました。

侵入後、権限昇格を試せるコンテンツは多くあると思いますが、横展開までできるコンテンツはそう多くないと思います(段々と試せる場所は増えてきていますが)。そういった意味でもハンズオンで演習を行えるOSCPを受験して良かったと感じました。

試験準備

(うろ覚えのため多少の誤差があります)

12月 12月28日にセールを利用して20%オフでLearn Oneを購入

1~2月 コースを購入したものの中々やる気が出ず、全く手を付けない時間が続く

3月~5月 テキストを読みつつ、各モジュールの演習を攻略

5月 チャレンジラボのMedtech, Reliaを攻略

SkylarkはOSCPの範囲を超えているということだったので、攻略は後回しにしました。(結局試験日までに攻略しませんでしたが)

6月~7月1週目

OSCP-A, OSCP-B, OSCP-Cを攻略
かなり時間がかかっていますが、集中して取り組めばそんなにかからないと思います。
OSCP-A,B,Cは本番と同様の形式になっているため、余裕がある方はこの時点で1度レポートを試し書きしてみると良いと思います。
私も最初OSCP-Cを攻略するときはレポート作成まで考えていましたが、面倒になりスクリーンショットだけ取ってレポートの作成までは行いませんでした。

~試験日(7/12)

試験日の週は意外と忙しい日が続き、マシンを攻略することが難しかったため、TjNulls ListにあるOSCP Like Machine (Windows) のWalkthroughを隙間時間で読んで試験に備えました。

試験準備まとめ

Learn One(1年間プラン)だったこともあり、全体的にゆっくり目のペースでテキストとラボは攻略していました。
ある程度時間が取れて、3か月間集中できる人であれば90日プランでもラボは完了できると思います。
勉強期間中は「土日はずっとOffsecだ!」と毎週意気込むものの大抵日曜しか取り掛からないみたいなことが多かったです。

試験当日

試験準備

12時からの試験だったので当日は朝10時に起きて、身だしなみを整えたり机の周りを片づけたりして試験時間までは過ごしました。

試験開始20分前くらいに試験サイトにログインし、監督者の方を待っていました。
監督者の方が入ってきた後は試験準備として下記を行いました。
- 画面共有 - 身分証明書の確認 - 部屋の中の確認 - 机の周り、机の下の確認 - PC上で動いているプロセス等の確認

プロセスの確認についてはOffsec Pasteを使ってコマンドを共有され、その結果をOffsec Pasteで共有することで確認してもらいました。
OffsecのDiscordで良く出てくるので初見の方は少ないかと思いますが、自分で使うのが初めてで心配という方はあらかじめ試してみても良いかもしれません。
とはいっても私は試験時に初めて使用しましたが、特に問題なく使用できたのでそこまで心配しなくても大丈夫だと思います。

試験開始

監督者の方の確認が終了した後は下記のような流れで試験を進めていきました。
攻略の方針としてはまずADセットに着手し、どれだけ時間がかかっても良いからADセットを攻略、残りの時間を使ってスタンドアロンを攻略して20ptもぎ取る、という形で考えていました。
しかし、本番はなかなかADセットが攻略できず、気分転換にスタンドアロンを攻略していたら、気が付くとスタンドアロン3台での合格ラインに到達していました。

概要 得点
試験開始
全台にポートスキャンをかける
10pt (ボーナスポイント)
ADセット着手 -
気分転換にマシンBに着手 -
マシンBの初期侵入に成功 20pt
マシンBの一般権限が取れて自信が出てきたのでADセットに再着手 -
ADセットにくじけてマシンCに着手 -
マシンCの初期侵入に成功 30pt
マシンCの権限昇格に成功 40pt
1時間半程度休憩 -
ADセットに着手 -
またもやくじけてマシンAに着手 -
マシンAの初期侵入に成功 50pt
1時間半程度休憩
ADセットに心が折れかけていたのでマシンBの権限昇格に着手 -
マシンBの権限昇格に成功 60pt
2時間休憩 -
ADセット攻略は諦めスタンドアロン3台での合格を目指すため、マシンAの権限昇格に着手 -
マシンAの権限昇格に成功 70pt

試験レポート

レポートテンプレートはOffsec公式の物を利用しましたが、4章がとても使いづらかったためそこだけ少し手を加えて作成を行いました。
基本的に文章は少なめでスクリーンショットを多用、仕方なく文章が必要な部分は翻訳機能を利用しながら進めました。

実技試験終了後すぐに睡眠をとって、起きてからレポート作成をしようと計画していたのですが、終了直後はハイだったこともあり中々寝付けず、かといってレポート作成を行うような気分ではなかったため、動画を垂れ流ししながらスクリーンショットをテンプレートに貼る作業だけを行っていました。
その後は「スクショ貼ったし、あとは翻訳しながら文章付け加えるだけだなー」とか思いながらダラダラする時間が続きました。(疲れているけど眠気はない状態でした)
その後しばらくダラダラしてようやく眠気が来たタイミングで少し睡眠をとりました。結局長くは眠れませんでしたが、そうこうしているうちにいつの間にか提出まで残り7時間程度になっていてとてもビックリしました。
そこから急いでスクショの合間に文章を埋め、体裁を整えて、何度か読み直してからレポートを提出しました。

トラブル

ここで試験時のトラブルについて共有します。
ほとんどが私のせいなのですが、同じことが起きないように参考にしていただければと思います。

その1 試験監督の方が入室しない

20分前から試験サイトには入室して監督者の方を待っていたのですが、10分前になっても来なかったので焦ってサポートにチャットしました。
試験前の確認はスムーズにいけば15分もいらないと思うので多少の誤差は焦らなくても大丈夫なのですが、準備が伸びた場合は試験時間が削られるというのを聞いていたので、焦ってしまいました。

その2 画面共有

複数画面を共有できないというトラブル(これは完全に私が悪いです)がありました。
複数画面を共有する際、Firefox以外は専用プラグインを入れないといけないのですが、なぜか私はFirefoxの場合はプラグインを入れないといけないと勘違いしていて、Google Chromeプラグインを入れないまま画面共有を試していました。
その後サポートの方にプラグインの有無を確認され(ここで勘違いに気づく)、その場でプラグインを導入しました。
しかし、それでも画面共有が上手くいかなかったため、最終的にはサポートの方からFirefoxの使用を勧められ、画面共有をFirefoxからすることで解決しました。

監督者ツールのデモは申し込めばできるそうなので、心配な方は申し込んで一度試しておくと良いと思います。

また画面共有のトラブルが解決し、試験を始めるころには既に試験時間が30分弱経過していました。
ほとんど私のせいなので仕方ないですが、言う分には無料なので試験時間の延長を打診したところ、30分延長してくれました。(Offsec社ありがとう!)
必ずしも延長してくれるとは限らないので、これから受験される方はあらかじめ準備しておきましょう。

その3 マウスの不調

試験後半、休憩から戻ってくるとマウスの左クリックが使えないことに気づきました。
幸い試験サイトのページは開きっぱなしだったので、キーボードを駆使して再起動する旨をチャットで監督者の方に伝えて再起動しました。
再起動しても左クリックが使えない時は焦りましたが、強めに押すと反応することに気づき、事なきを得ました(?)
復帰後はまずサイドボタンに左クリックを割り当ててから、試験を再開しました。

また試験中だけでなくレポート提出時にも不具合が起き、その際は左クリックだけでなく一瞬マウスカーソルが止まるような動作がありとてもドキドキしました。
レポートの完成が提出期限の30分前だったので、ここで壊れたら買いに行っても間に合わず不合格だろうなと考えてしまい冷や汗が止まりませんでした。
ひたすら祈りを込めていたらマウスが動いてくれたので無事提出することができました。

こういうパターンは珍しいと思いますが、万全を期すタイプの方は格安でも良いので有線のマウスを一つ買っておくと良いと思います。

その4 コントロールパネルへのアクセス不可

実技試験のラスト20・30分の時間を使ってスクリーンショットとフラグの見直しを行っていたのですが、残り15分程度の時からコントロールパネル(フラグの提出等を行うページ)にアクセスできなくなりました。
フラグは何度も見直しを行っていたので特に問題なかったですが、最後にフラグの提出時間を記録しておこうと思ったらできなくなったのでそれが面倒でした。
試験終了後に「フラグの値の確認は良いから提出時間だけ教えてくれないか」とメールしたのですが、「試験終了しているのでコントロールパネルはアクセスできなくなりました。ごめんね」という内容の返信が返ってきました。
まあ仕方ないですね。
またこのトラブル分の時間は延長してもらえませんでした。
おそらく既に試験時間を延長していたこと、それに加えてバックエンド的な問題ですぐに解決できそうにないため、延長しても意味ないということもあったのかもしれません。
実際のところはわかりませんが、チャットでのやり取りでそのような雰囲気を感じました。

まとめ

OSCPは勉強していてとても楽しいコンテンツでした。
事前情報では、わからない点を質問しても「Try Harder.」と言われるだけであまり教えてもらえないという印象でしたが、実際はそんなことなくDiscordで質問すると丁寧に解答してもらえたり、よく探せば同じことを過去質問している人がいて参考にできたりと初心者の方でも学びやすい環境だと感じました。(300系になったらまた違うかもしれませんが)

OSCP合格は私にとって大きな目標だったので合格できてとても嬉しいです。
合格して気づいた点として、やはり難しいとはいえ入門者向けの資格試験だなという感じがしました。
実務で活かしていくためにはより深い知識が必要となってくるため、今後はOffsecの300系にも挑戦していこうと考えています。(300系はどれも面白そうで、何のコースにするか永遠に悩んでいます。おすすめがあれば教えてください)

この記事がOSCP挑戦を考えている人の後押しやモチベーションアップにつながると嬉しいです。